home *** CD-ROM | disk | FTP | other *** search
/ Mega Applications / Zenta_Mega_Applications.iso / programmer < prev    next >
Text File  |  1997-10-29  |  6MB  |  52,234 lines

  1. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      Andyðð    
  2.  `PROGRAMMERI -WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     — ¤|x  Â€Wl    
  3.  
  4. Silicon valleys,
  5. Germanium hills,
  6. Digital journeys,
  7. And virtual thrills.
  8.  
  9. Greetings, O hacker,
  10. Feeling unwell?
  11. Microchip tracker,
  12. Welcome to hell.
  13.  
  14. WimpExtension    2.18 (16 Aug 1993) © Jon Ribbens of DoggySoft, 1993Desktop_WimpExtension☓ ô|WimpExtpŷÿÿ¯€€WimpExtension%,“X(t☓◰ÿt€H€The WimpExtension task makes sure tasks using WimpExtension close down properly, changes pointers,a few other fiddly bits.Do not use *.WimpExtInitialiseCloseDownSlabIconRedrawActionIconBarSpriteIconBarTextLinkWindowsOpenLinkedCloseLinkedUnLinkWindowsCurrentTaskLoadTemplatesSetIconStringOpenWindowTopSetIconGetIconGetNumberIconSetNumberIconIncNumberIconDecNumberIconSetPointerDivideColoursMenuAutoRedrawCentreWindowDragIconPutCaretIconOpenDialogueCheckWindowOpenCopyStringSetWindowTitleSetIconStringNFindLeafLimitPointerReleasePointerOpenFullSizeLoadRAMTemplateOpenRequesterCloseRequesterHideLinkUnHideLinkSendHelpSendWimpHelpCreateMenuReCreateMenuShadeEntryTickEntrySetIconColourShadeIconPlotSpriteRedrawDrawPrePollSetExtentMoveCaretGetFontMenuDecodeFontMenuControlImmediateHeapMemCopyDataSavePlotBorderCentreWindowVÀ†å—!†åRã(•ÂòfiÃ@-é  á•â ãèWimpExtension_FDon't use *Desktop_WimpExtension, you naughty person.e"À†å?[ã ñ•0>êØêê⇦êêÉêC    ê`    êF2ê 1êû1êj2ê]êŵ    êª    ê
  15. ên/ê
  16. êw0ê“0ê«0ê¾0ê
  17. ê?
  18. ê¼
  19. ê ê ê(ê: ê` êq êŵ ê… ê« ê ê ê= êR ê☓ êè êRê2ê2êýêê-ê7êUê@êá/êÚêêêIêgê”êæê êŴ*ê³#ê êHê—êÂê•âòfiãæUnknown WimpExtension operation€O-é ãx0 ã<◰ãï€O½h¹j …åÀ á ã0Sâ…çüÿÿÊ ã
  20. < ãï€O½h®jT%…å ã: ãï€O½h¨j …å ° á ã<⇧å ã@⇧å ãD⇧å  ãL⇧å ãH⇧å  ãh⇧ål⇧åp⇧å ãt⇧ånë¿0ëWë
  21.  sh•âŵŴâE sŴs   q0€•½è€O-éÀ†å†åPã—†åPãÔflÅÝÏ ã—…å ã†…å ã|•âŵŴâï †å ãï ãÔ"†åï ãT%†åï   á ãýè•â€O½èòfiãCan't kill WimpExtension module - some tasks are still using it. (This may be due to somebody trying to load a newer version of WimpExtension.))a general-purpose module designed(maketask of programming inWimp environment easier. It provides SWI calls for 3D icons, iconbar sprites, linked windows, loading templates, indirected icons, window handling, pointer changes, colour menus, dragging icons, RAM templates, requester windows, help, menu handling, sprite handling, draw- handling, caret handling, font menus, immediate windows, heap management, saving s, moving memory, sorting, loading s, keyboard handling, etc...Documents should be available from Arcade BBS.If you have any ideas for improvements or whatever, please don't hesitate(contact me.I can be contacted at:        Jon Ribbens        39 Nutkins Way        Chesham        Bucks.        HP5 2BEor on Arcade BBS.   TASK    Qã
  22. À†å@-é'Qãà —á…€ýèÀ†å ° á œåxÐ⇧âܙ◜å0ãHÅÝϠ×⇧ÅÈ ã\å´ Oâ,BâÀïo¨⇧å—⇧å ãx⇧å|⇧å¸⇧åFë•ëT•â5Ŵâ   ã’ç
  23. @âŴç RâúÿÿªÁïX⇧ux⇧rŴrŴuËàsÅ_ã ã\⇧åœåPã$
  24. \œåPã=1 ã\⇧åBï
  25.  €â ãx⇧âŴâáïPã*ëíÿÿêPã1
  26. Pã1
  27. PãPæÿÿ’åPã
  28. L flåPá3 D flåPáÝÿÿ  ãx"⇧å|"⇧å¸"⇧å ë×ÿÿêœåPãÔÿÿ—œå…åÝï ã—⇧åïÃÁ?@-é0 ãàã ã5ïà"⇧uP qB qØB⇧u@DrE⇧u s5ä"⇧u` qB qÜB⇧u@Dr E⇧u  s5 ŵr% q$%⇧u  s5 ŵr& q(%⇧u?€ýx™å?€½è@-é’åëüÿÿz€ýèB•âòfiãK•âòfiã•âòfiã•âòfiãn•âòfiãs•âòfiã •âòfiã!•âòfiã⇨•âòfiã&•âòfiãfl•âòfiã«•âòfi㺕âòfiãÅ•âòfiãË•âòfiãÒ•âòfiã6•âòfiãÛ•âòfiã•âòfiãP•â €âòfiãl•â €âòfiã´•â €âòfiãЕâ €âòfiãt•â €âòfiãà•â €âòfiãð•â €âòfiã8•â €âòfiãl•â €âòfiãЕâ €âòfiãWimpExtension is unable to claim memoryToo many applications being handled by WimpExtension. XRequest to WimpExtension from unknown application.Bad block passed to WimpExtension in R1.p)!Bad validation string.,WimpExtension has received an unknown Initialise call. Division by zero.#1Title not indirected.  WimpExtension does not support old-style window definitions.iew☓Window definition won't fit.8-    You need at least ONE button in a requester window! Text object with font reference encountered before font table8, Task is denied access to font menu routines.R0]Font menu is not available.Bad immediate window operation.Bad WimpExt_Heap operation.Heap corrupt. BDataSave in progress..Wimp$Scrap not defined.Bad heap block pointer.Transfer failed.#  DataLoad in progress.ooUnable to perform operation due to lack of memory.File too big.,RSupervisor stack overflow.tUnknown WimpExt_DrawOp operation.  Unknown WimpExt_SpriteOp operation.Couldn't set anti-alised icon's colour.Unknown WimpExt_ListOp operation.B Unknown WimpExt_BorderOp operation.Too many linked windows Window not linkedg!Bad mode  R"Icon not indirected text, or is deleted#Sprite area full   $Unknown WimpExt_MiscOp operation.%WimpExt_SpriteOp does not support the system sprite area.7,&WimpExtension library command not found.itu(Unknown WimpExt_CreateDraw operation.  )No room to create object in WimpExt_CreateDraw.þ_-éPãþ_½(6þÿ*Pã0 30 ã` áp á€ á‘ á—†åPã Oâ @âÞïþfl½hP†å2Uãþ_½þÿ
  29. PŶâŶ±…à⇧å ãH0 ã<◰âïþ_½hþÿjP…å ⇧åÜ€ŵå0 ãà0ŵåH0ŵå“0ŵå—0ŵåT0ŵå†0ŵå¼0ŵåL0ŵå0àã0ŵå(0ŵå`ŵåVãp ³$pŵåãÄâ†à‰Äâ…ä‘ŵåœåVëÚ ã0•âŴâ$à‹åã™à‹å^ãTå†%à™%þflýèþ_-éIë4{þfl½hU    ë œåœåQãþ_½æýÿ
  30. € áT†åPãÅï⇧âPá ºW_ã á ‘ áP ã$à†åã
  31. Äâœåà^âÄâ⇧倠áòë áUáþ_½¨Íýÿª ¹åPá
  32. PŶâ÷ÿÿê@ á ã −åïDâ⇧åUáþflý¨−å⇨å −å⇨å‘⇨âPŶâöÿÿêIFEM ° á å
  33. Pá
  34.  ¢œåZã±ýÿ
  35.   ãТ⇧å †å¤Âœåð°á  ãТ⇧å †åÔœ堠  Q㸅²Ŵ²ð°á[-é`åPáœý ° á ŵœåPãp  ⇧
  36. †åQã[½”ýÿ
  37. ‘ á ¹åPá
  38. Qâúÿÿ[½è™ýÿêÀ−å ⇧å¤Â⇧å áœýèþ_-éŴâ’èêþ_-éêþ_-éÇÿÿëþfl½hÐâœå^ãŴ’ $†åã ã
  39. Tã Rã“ †—0†à “à…RþflýSãR£þflý¸⇧åü!⇧å2⇧åSë—{þfl½hPãþflýgëþfl½hPãþflýcëœåPãPPþflýœåèŴœåàÜQœ‘ àQœ‘ “ …—0…‹⇧åü!œå2œå@àãL+ë  c_ã  áPáàœåÜáœåPáëþfl½hYãþflý—2œåBïþfl½h €àBïþfl½hPáûÿÿº$†åãþflý ã⇧åü!œå2œå@àãÜQœå-+ë_ãëþflýxþfl½èÿ_-é
  40.  áüœåŴåŴâŷ/⇧âÀ‹è`FâpGâ€⇦â‘⇨âÀ€èÉïÿfl½hPãÿflýdœå¹ëÊïÿfl½høÿÿê?@-é
  41.  áüœåŴåËïŴr8‘x ’u@BpPCpB⇧u R⇧u?€ýx™å?€½èþ_-éêþ_-é    Qãþ_½¸ÿüÿºCÿÿëþfl½h ’å’åü⇧åŴâø‘è ’å `Fâ pGâ €⇦â ‘⇨â@BàPCàB⇧å R⇧å`FàpGà€Hà‘Ià{⇧âÀ€èüœå⇩âd)flåd9flåÖïþfl½h ã⇧å’äpãþflý⇧åëþfl½hPã÷ÿÿ
  42. Üëþfl½hPãóÿÿ
  43. äëPãtþfl½hîÿÿêþ_-éêþ_-é
  44.  áœåŴåüœåŴåÎïþfl½hŴâ<’èŷ⇧â<€è’å⇦⇧åã  þflýã þflý ã î ààdå⇧å’å    Pã ³þflý¸☓⇧å ãþflýèþ_-é☓œåp ãëPã ³þflý¸Œ/⇧â0 ã` ãÑä Pã
  45. º;Pã
  46. ,Pã
  47. Sãflª0◰âÂä €ã`ŷàñÿÿê0 ã0Âå“b⇧å@ ãP ã Pãº;Pã
  48. ,Pã•   ã ãfië⇧j⇩@ á   ãàã⇦ëŶj☓P á…B⇧å‘R⇧å ãþflýèþ_-é☓œåh ãìëPã ³ ¡þflýèþ_-é☓œår ãäëPã ³þflý¸0àã@àãPàãàã!àã|ëij 0 áàã!àãfëcj@ áàã!àã`ë]jP ,5⇧å0E⇧å4U⇧åþflýè@-é☓œå    Qãºl ãÃëPãªL ã☓œå¾ëP㪠ã ⇧å€ýè ã ⇧å€ýè@-é☓œå    Qãºd ã°ëPãªD ã☓œå«ëP㪠ã⇧å€ýèÑä Pãùÿÿ:;Pã÷ÿÿ
  49. \PãÑä Pãòÿÿ:⇧å€ýè@-é☓œås ã„ëPã ³€ý¸  ãàã1ë€ýh€ý0 á!àãàãë€ýhïÿÿ ã    ë÷ÿÿê@-é☓œåu ãŴëPã ³€ý¸  ãàãë€ýh€ý0 á àãàãë€ýhïÿÿ ãôë÷ÿÿêþ_-é☓œåw ãlëPãªÐœåPãþflý☓œåb ãdëPãª☓œåB ã_ëPã
  50. ª☓œåz ãZëPãª☓œåZ ãUëPã ³þflý¸  ãàãðëÝjÜ"⇧å<œå@%œå0 ãDeœåLuœåufl⇧âÍ⇨è ãè⇧åHœå—⇧å  ã ãÏëÌj"è!⇧å+ ãHœåÉëÆj—"⇧å  ã<œåÃëÀjÔ!⇧å  ã@œå½ëØ!⇧å  ã ã¸ëµj Ü!⇧å  ãDœå²ë¯jà!⇧å  ãàã¬ë©jä!⇧—œåPãèœP㜀⇧ ãþflýèþ_-é☓œåi ã ëPã ³þflý¸àã¨ë”j“ %⇧åÿ ã⇧å ã⇧å ã⇧å$ ãÿ(ŵãÿ,ŵãÿ ŵã ã⇨ëŷj!%⇧å$ ãÿ(ŵãÿ,ŵãÿ ŵãÿ ã€ë}j%⇧åÑä Pãº;Pã
  51. ,Pãþ_½qûÿÑå-PãŴ@ @ $ ãÿ(ŵãÿ,ŵãÿ ŵã ãjëgjTã b%⇧å ãþflýèþ_-é  áBœå Rœåŷ⇧âÀ‘è`ŷàpà€⇦à‘⇨àœå`Æá€Èá œåpÇá‘Éá"œå â'à•âñ•àHi! êêê.ê4ê6êè(êð°áþflýèœåPã؜ԜԜ؜zê@-éÔœåØœåvë`FâpGâ€⇦â‘⇨âØœåÔœå@½ènê@-éœåPã؜ԜԜ؜fë`FâpGâ€⇦â‘⇨âäœå á_ë`FâpGâ€⇦â‘⇨âÔœåØœå@½èWê`FâpGâ€⇦â‘⇨âÔœåØœåPêÔœåØœåMê@-éœåPãԜ؜؜ԜEë`FâpGâ€⇦â‘⇨âÔœåØœå@½è=êþ_½èûúÿê†⇧åÑä0Pãº9PãAÒ    Ú,Pã
  52. ;Pã
  53.  Pãóÿÿª àãRãð á†⇧åÑå Pãøÿÿº;Pãöÿÿ
  54. ,Pã
  55. @-颠ãëRွè†"œårãð RãR¡ð á@-é0Ñå SãŴûÿÿ
  56.   ³€ý¸-SãŴ!h-Sã b€ýè@-éæï s q  qEe sHr IrE€ýè@-éÜâœå^ã:-éæï ã⇦â ⇨âEïe ãFâ      áEïe ãFâ GâEï ãFâ      áEïe ãFâ  áEï½èæï ãFâ GâEïe ã⇦â GâEïe ã⇦â ⇨âEï ã⇦â  áEïe ã á IâEï€ýè€@-é Ñä Rã+:wPãwR+
  57. Ðâœå^ãPábRãBRzRZR!
  58. pPãpR 
  59. lPãLPlRãLR 
  60. wRã Ñä Rã:Rá 
  61.  QåaRãARdRDR
  62.  Ñä Rã:;RãúÿÿÐÿÿêàã@½èð°á Ñå0Rãíÿÿ:wRã9Rêÿÿ⇩wRãŴ ãóÿÿê Ñä Rãïÿÿ:\Rã
  63. ;Rãøÿÿ»ÿÿê Ñä Rãçÿÿ:óÿÿêþ_-é-é–üÿë½xЙb€üÿ{þfl½h    Qãþ_½¸7úÿºH …åRã‘
  64. RãD
  65. Rã¾
  66.     Rã
  67. RãR
  68. Rãñ
  69. H†åþflýè
  70.  áÏïþfl½hà’å‘à…å÷ÿÿêþ_-é—œåzêÁ’åPã
  71. Pã§
  72. Pã\
  73. Pãd
  74. Pãß
  75. 8 åPá
  76. H åPááÿÿ  ãx"⇧å|"⇧å¸"⇧åÜÿÿê ’åü⇧å( †åRã
  77. Pá à  Ŵþfl½$’å⇧å+ýÿëþfl½hPãÍÿÿ
  78. zýÿëPãÊÿÿ
  79. $à†å ã— ë sþflýxþfl½èaüÿëþfl½h ’åü⇧å ’å"⇧å( †åPá_
  80. ýÿëþfl½h-é$†åã
  81. ⇦œåêâ
  82. ^ãã
  83. ’åPã
  84. ü!œå2œå@ ã='ë½èPã¤ÿÿ
  85. ’åPã¡ÿÿ
  86. ¤ýÿë¸ýÿë,þÿëPã†ÿÿ
  87. ü!œå 5œåUœå’åã„ÿÿPãPeUãªPeâEœå
  88.  ãy(ë™ÿÿzþfl½èEœå
  89.  ã`(ë⇦ÿÿzþfl½è@-é⇩⇧â ãŴå ã ŴåàãŴåü!œå ãçï q c€ýèP á
  90.  áÏïuÿÿjŴâ‘è¸âœå^á¼âœå^ámÿÿ
  91. ¸2⇧å¼B⇧åSãT£=º"⇧åü1⇧åB⇧å¿üÿëcÿÿjPã6
  92. ØÿÿëPá ‘ 
  93. ‘ á−åQã.
  94.  ¹åPá
  95. Qâúÿÿ(ê‘−å☓œå    Qã$ºQã*—!œå
  96. 0 áL ãñïj☓¢⇧åÁüÿëEÿÿjPã
  97. −åPã*¨œåKPã=ÿÿ*|œåPã:ÿÿÊ
  98. j ã ãï
  99. j âRã€R⇧å € á    À áëÀ á s|⇧u*ÿÿz|œåPã'ÿÿÊ ã|⇧åë#ÿÿêj ãï ÿÿzþ•½è@-éxœåPã€ýj ã ãïGë ãx⇧å€ýèÿA-é“œåxœåPáÿŴýîÿÿë.ëÜœåPã*Œ⇧âÐä Qãüÿÿ*på0Qã9àq"*€ á2 ãÀäÀä ãÀåI ãä†åŒ/⇧â0 ã…Bœå‘RœåŶP á` ãp ãÑ ë“œux⇧uÿŴýx_ã ãÈåI ãä†åŒ/⇧â0 ã…Bœå‘Rœå` ãp ã ë“œux⇧uÿŴýx™åÿŴ½è@-é«O⇧â ã ã/ï ☓u s/ ☓u s/ ☓u€ýx™å€½è@-é⇩⇧âŴâ«/⇧â ãÁå‹åŴå ãÁå  ãï sÁu‹uŴu sÁu  s sÁu‹uŴu sÁu  s€ýx™å€½è@-é( ã  áéh á ã5ï*2 á ã5ï*B á€ýè@½èOâ @âòfiãþ_-é    ûÿëþfl½h€ á âåÿÿëþfl½h⇩⇧â ã ŴåŴåŴå 0Ŵå@ŴåDå
  100. €áŴå  ã0ŴâØäÃä P㺠ŵâ RãøÿÿºÂïþflýxþfl½è þ_-éëúÿëþfl½h€ á‘ á âÆÿÿëþfl½h⇩⇧â Ŵå ãŴåàãŴå@☓â 0Ŵå@ŴåPå
  101. €áŴå‘ŴåÀŴ倠ã Ŵå  ã 0 áS ãÃäØäÃä P㺠ŵâ Rãøÿÿº ãÃåÂïþflýxþfl½è    Qã~øÿºþ_-éÁúÿëþfl½hp á€ á‘ á áÙïþfl½h á⇩_⇧â` ã* ãŶåÛïþfl½hVã
  102. €–åã™þfl½hãU þfl½h†åPã@‘Ŵ¥ã Áþfl½häéÿÿêÚïþflýxþfl½èþ_-éêþ_-éŒúÿëþfl½h$‘†å€‘â‘  ⇩å0⇩å
  103.  áÎïþfl½hŒåãH
  104.  ãF
  105. ãD$Œå@â ã0Œåp á€ áà ãP×ä`Øä Uã V£ºà‰âUáöÿÿê U㪠Vãþflý¸`Øä Vãà‰"ûÿÿ*^á‘ ›ŒYã
  106. Pã‘ 3@"PÔäPÃäŴâQ᪠Uãøÿÿªê ãÃäYã
  107. . ãCåÃäÃä ãÃå Œå0Œå ã⇩å ⇩å
  108.  áÍïþfl½h
  109.  áÓïþfl½h’åPáþflý’åPáF þfl½hþflýèOâ @âþ_½èòfiã@-éê@-é=úÿë⇩u
  110.  qË€½h ’å ãààŴåŶ'ë€ýx€½è@-é/úÿë ⇩u0⇩u
  111.  q s ⇩u΀½hŒåâ 0Œå€ýè@-é!úÿ뀽h|œåQã ã|⇧å…þÿ€½h    Pã€ý¸à†å^ã  30 3…"⇧å‘2⇧åŒ⇧â  ã@ ã0Ðç0Áç ŵâ S㺠0◰ã@☓à Rãöÿÿº0 ã0Áç“B⇧å~þÿë s|⇧u€ýx€½èSã½÷ÿ
  112. -é@ á¢Tá☓@ ’¢TáüÿÿŒ ãRá B  à¤@ áTáùÿÿ*½èð°áColour€,!0!1! 2!03!@4!P5!`6!p7!€8!‘9! 10!°11!À12!Ð13!à14€!ð15€!TransparentþC-é~ùÿ뀠q‘ q
  113.  qåþ◰½hÖ/⇧â(0OâNOâ“äŵäTáûÿÿºÖ/⇧â ŵâ` ã0‹åVá0◰0Ã0ŵå0‹å@’ä$D áÿPâ$D áÿpâ$D á ãŶ@☓à@☓à@☓à Tã £4Ãã0◰á0ŵå ŵâ`ŷâVãæÿÿº†åPãÖ⇧âþ◰ý¸Yãþ◰ý☓!‘倠Âã☓!€åÀ  ã €åXã†!‘ ŵ†!€þ◰ýèRáºRáÚ
  114. êTáºSẠ   SáÚêUẠãð°á ãð°áþC-é{⇧â<‘èŷ⇧âÀ‘èçÿÿëþ◰ýèþC-é    QãþC½¸äöÿº(ùÿëÈþ◰½hPãþ◰ýØùÿëÊïúÿÿzþ◰½èþC-éê    Qã×öÿºþC-éùÿëþ◰½h€ áx—èpEà—åãþC½×öÿ
  115. ã(`` àã ã5ïþ◰½h‘ á  ã5ïþ◰½h) á  áÆ Bà ⇦å ŵà ⇦åþ◰ýè>@-éê>@-éüøÿë>€½h ⇩å0⇩å
  116.  áÎï>€½h’åã
  117. ãP ã ãŴâÑä Pã:PŶâ Uãùÿÿ:ê’åÑä PãPŶ¢ûÿÿª á á@àãÒï>€ýx>€½èÄOâ @â_ã>€½è>@-éÕøÿë
  118.  qÏ>€½hààãà…åP á ’å Bà0’å0◰à áÔï>€ýx>€½è@-éê@-éÃøÿ뀽hpã
  119.  
  120.  áŴåËh ’åâ €ýè(†åpã  €ýè @-éÒä PãÃ$ûÿÿ* ãÃä á @½è@àð°á@-é¦øÿ뀽h
  121.  q ŴuÌ<’å ã@½aöÿ
  122. L’åT@’å Óä Àä@Tâ
  123.  Rãùÿÿª  ã @å ’åã€ýàã ’å 0’å@’å,@☓â’åÑï€ýx€½èþ_-éŷøÿëþfl½h$‘†å€‘â‘  ⇩å0⇩å
  124.  áÎïþfl½hŒåã4þÿ
  125.  ã2þÿ
  126. ã0þÿ$Œå ã0Œåp á€ áP×ä`Øä Uã V£ºUá÷ÿÿê U㪠Vãþflý¸` ãPÔä Uã`ŷ¢ûÿÿª0ŒåVá
  127. Ú`€âYã
  128. Pã‘ 3:`Fâ.à ãàÃäàÃäàÃä@Dà ã@âPÔäPÃäŴâQ᪠Uãøÿÿªê ãÃä Œå0Œå ã⇩å ⇩å
  129.  áÍïþfl½h
  130.  áÓïþfl½h’åPáþflý’åPá3ÿÿ þfl½hþflýè@-é á Ðä RãüÿÿªPá
  131.  på.Rãúÿÿ€â€ýè@-éê@-é"øÿë
  132.  qŴuË€½h ãÁå’åÁå  áÁå’åÁå  áÁå ’å@âÁå  áÁå’å@âÁå  áÁå ãï€ýx€½è@-éàã ã5ï0 q  s5C q s50 q  s5S q€ýx™å€½è>@-éê>@-éñ÷ÿëèÿÿ{
  133.  q sÁu sÁuÁuÁuÁu@Áu$D q@ÁuPÁu%T qPÁu s>€ýx>€½èþ_-éÛ÷ÿëÓÿÿ{
  134.  q ŴuÌþfl½h  ’åãþ_½–õÿ
  135. 0Ŵå4’å,€’å€@àã(€⇦8’å0‘’å    ‘@àã(‘⇨’å€àPá Ŵµº0Dâ 0Ŵå@à ’åBàPã ³Ŵå’å    @àPãŴ¥ª0 ã0Ŵå`â ’åŵàPáE¢Ŵåþ$ëþflýxþfl½èÀ_-ép áX` ã€–ä€Ŵä`VâûÿÿXAâ8”å ã
  136. P`”åp ãH”å€àH ŴåWáªRáNª€Ðä€Âäpâ XãöÿÿªWáªRáEªpâ€ÂäøÿÿêL”åP㺀àL ŴåRá;ª€Ðä€Âä XãùÿÿªX ŶâT°’åXÀŴâ[ã1
  137. °KâÀºèÀ¬èŒä…äã  ⇩ À…ôÿÿ ãÀºèÀ¬èïÿÿêŒä€à`Œå …äp ãWáªR᪀Ðä€Âäpâ XãöÿÿªWáªRáªpâ€ÂäøÿÿêŒäPã…´º€à …äR᪀Ðä€Âä XãùÿÿªŒä…äËÿÿêÀflýèÀ_½è õÿêþ_-éC÷ÿëe{àsÔÂ0…rÓþfl½h$ï_ã,P…å-é
  138.  áî/…âH0…â<◰â@àãØP•â\ŶâŶÿÿë½è
  139.  q þÿ{þfl½hl‘⇩â@−åH`−åp ãW᪀Òä€Àäpâ Xãøÿÿª  ã @å,−å€à€â4⇨åà−åè`−åp ãW᪀Óä€Àäpâ Xãøÿÿª @å`‘⇨â0 ãP ãSãª0◰âÔå PãºPŶâ−å`−å ‘⇨âp ãW᪀Ôä€Àäpâ Xãøÿÿª @åëÿÿê€Ôä Xãüÿÿª @åæÿÿê@☓âå€ã    å ‘⇨âàÿÿêUãþ_½´ôÿ
  140. Áï(…u` q¥üÿ{ qàs  s0 sD sP sÒ q·þÿ{þflýxþfl½è>@-éê>@-éØöÿë>€½h(†åpã>€ý àã( …å
  141.  áŴåÃïØþÿ{0…r?‘xÒ>€ýx>€½è’åPã þflý’åPã ³þflý¸Pã ÃþflýÈ@âŴåàã ŴåÜÿÿëþfl½h ãþflýè’å( †årã%
  142. Pá#’åPã
  143. Pã H…:úÿ0 ã@ ãÚöÿëÈÿÿ{þfl½h0 ã
  144. ê,0†åSãºSãÊ0◰â@ ãÎöÿë¼ÿÿëþfl½h0Câ0Ŵå’åŴå ’åŴåàã Ŵå ãŴå ãþflýè’åL ãà†å ^ã:$à†å ã⇩P☓ãPá‰☓ŒP☓ãPá•☓•P☓ã‰@☓ãPãPP?` á ’èRãS£úÿºü!⇧åzúÿë âœåPáÿùÿ2⇧åX÷ÿëþfl½hPã0
  145. ¯÷ÿëPã-
  146. Vá45œ
  147. Vá05œ
  148. ,5œåsã$
  149. ‘ á
  150.  á Ŵå0ŴåÎïþfl½h’å  áâPãP¢ëþfl½h ŴåËïþfl½hp’å’åpGà€’å’å€Hà     á’å€àŴå ’å€àŴå ãŴå  Ŵå0Ŵå ãH…åúÿê$†å ãÆùÿ
  151. ’å ’è§ëþfl½hPãþflý¿ùÿê@-éê@-é*öÿ뀽h Ŵâ0 ã@Ðä@Âä0◰â Tãúÿÿª@ ã@@å0Ãã0Ŵå  ã€âŴå’å Ŵå ’å ãçï€ýx€½è@-éöÿ뀽h
  152.  á@ŴâÒäÄä PãûÿÿªÓäÄä PãûÿÿªDà€âÀãŴå  ã  ŴåflåŴå ãçï€ýx€½èŴW@-éøõÿ뀽h…å …å 0…åÔï€ýx€½è@-éê@-éíõÿ뀽h†åQã€ý¸ †å 0†åÔï€ýx€½è    Qã‡óÿº@-éàõÿ뀽hŴâŴàŵŴà ’å$†å@â@Pã00#Sã0Â0ŵ0Ŵåâ€ýè    Qã⇨óÿº@-éÌõÿ뀽h$ŴâŴàŵŴà ’å$†å@â@Pã55#Sã5Â5ŵ0Ŵåâ   á€ýèæ@NÈÿÿÿÿ€xþÿÿhh⇦Meringue|þÿÿdüÿÿÿ¢ÿÿÿÿ“þÿÿ☓ÌÿÿÿaXY*¸ÿÿÿ6èÿÿÿ9\]!¨†þÿÿDÌþÿÿ91`a    ¨èþÿÿDÿÿÿ91de    ¨(ÿÿÿDXÿÿÿ91hi    ¨hÿÿÿD—ÿÿÿ91lm    :´þÿÿb ÿÿÿpqÇw1w6w2w0w0w0L4‘Ðÿÿÿÿ@Ô     
  153.  …ÿÿÿ†=†WimpExtd>e>@-éFõÿë>€½h
  154.  á Ŵå0ŴåÎï>€½h$†å@ã’åTãE êTã0 Tã5 Tã55#@ áâ [ áPá >€ý ã Ŵå@ŴåÍï>€½hTã >€ýÓï>€½h’åpã >€ýPá >€ý’åPá >€ýàãÒï q>€ýx>€½èÿÀãçêþ_-éõÿëþfl½h€ á ã⇩å⇩å    Vã 3⇩5 ⇩5„%⇩%„% ⇩%À—èàŒåNä áfiàFh á àŒåNä áfiàGx á`DàpEà’åà’å@à`ŷà’åà’å@àpà€ á‘ áŴâ‘èP⇩â€è ã¸⇧å áPã`² á`²⇩å áPã`² á`²⇩åëþflýxþfl½è@-é    Xá€ý(—å Pãñ•0
  155. ê êê⇦êêêêÉêÐêêêÿÿÿê—å€⇦àëÿÿê⇦â¸⇧å—å€à¼⇧åöÿÿêËëPãóÿÿ
  156.  ØåPã=
  157. ¸œå¼!œåQã@½þ_½{òÿ
  158. Qá5*0ÑäPã2
  159. Pá
  160. 0Ñä Sãüÿÿ*ôÿÿê$ —å(0 ã£úÿë@ á( —å úÿë4 á$ áàŒåNä áfiàB( á àŒåNä áfiàC8 á@ ãP ãŴïj⇩å—å —å0 ãOh4⇦â  ã,0—åàŒåNä áfiàC8 á0◰à0@—å àŒåNä áfiàDH á@☓àŷïŒuŵ³ÿÿz€½è ã,—åàŒåNä áfiàA áŴà —å àŒåNä áfiàB( á ŵàEï$—uàŒuNä qfip¡ qÿr! q(—u àŒuNä qfip! qÿr! q—u0 s@ sC4⇦r •r
  161.  sF€½hŴÿÿêSëPã{ÿÿ
  162. $—åâ  â€á0 â€á⇩å
  163.  ã⇩åÿâ  áÿ$â"€á ⇩å$⇩å@â  á0€ã(⇩å@-é€ã(`⇦„0 ⇦!ŵ` ( ⇦—åpã
  164. -é0 ã@ ãCï‡è q(Œu
  165.   q0 s½è@½h€½h—åpã@½Lÿÿ
  166. -é0 ã@ ãCï½è@½h€½h á ã
  167.   á0 ã @—åTãK☓ÂP⇩âï@½è€½h9ÿÿê-é—å‘⇦à$€⇦â"ÿÿë½è€½h1ÿÿê-é—å‘⇦à€⇦âÿÿë½è€½h)ÿÿêþC-éPà⇩â<fiè á áà⇦âÀfièàŒåNä áfiàfià àŒåNä áfiàfi        àFh áGx áH⇦ áI— á`ŷàpà€⇦à‘⇨à‘úÿëþ◰ýèþO-éÔóÿëþ•½h ã5ë$à†åã
  168. Hà†å    ^ã‘à†å^ãÕýÿëþ•½h$à†åã    
  169. T †åRã
  170. Bïþ•½hd@âà‹åPá #ºW/þ•ýxþ•½èþ_-éµóÿëþfl½h%œå0’åSã0c²0Ãá0c²0Ŵå0’å0◰àSã0c²0Ãá0c²0Ŵå %œå0’åSã0c²0Ãá0c²0Ŵå 0’å0◰àSã0c²0Ãá0c² 0Ŵå  á×ï qÌúÿ{þfl½hPãþflý
  171.  á ŴåËï ŴuÞ {þflýxþfl½èþC-éêþC-éŷóÿëþ◰½hRãS£þ◰ý¸‘ á€ áü!⇧å÷ÿë âœåPá
  172.  á ŴåÌïþ◰½hí ãà‰âYá
  173. àNâYá"
  174. à†å ^ã    :$à†å ãî ã
  175. à‰âYá
  176. àNâYá
  177.      áþ◰ýèSãX0Œ0CâSáøÿÿ
  178. \@⇩â◰B☓à“åãõÿÿãóÿÿ
  179. 
  180. â
  181. Pã
  182. Pïÿÿ¢ë sþ◰ýxþ◰½è0◰âXŒåSá0 #Sáãÿÿ
  183. \@⇩â◰B☓à“åãôÿÿãòÿÿ
  184. 
  185. â
  186. Pã
  187. Pîÿÿ™ë sþ◰ýxþ◰½èFontüC-é4óÿëü◰½h$à†åãüC½üðÿ
  188. à†å
  189. ^ã 30 á    Q#@O2  áÀœåQãü◰ýÀïLëÀœu[{ü◰½hÀœåSã$0’å5Ã5◰$0Ŵå0 ãÒäÁäàpâ0◰2 S3ùÿÿ:ÁïÀœuü◰ýxü◰½è    QãÈðÿºþ_-é óÿëþfl½h$à†åãþ_½Óðÿ
  190. À"œåRãþ_½Ñðÿ
  191. ` á0 ãsã0’à ásãà  ŵâ‰!ŵà"ŵà @ŵâPÔå(Uã
  192. PÔäPÀä Uãûÿÿ*.P ãP@å ‹åRãêÿÿÊPá@ÂP ãPÀåþflýèFontÀ,€ÿÿÿÿ!System font(Regular)þC-éÀœåP㬠ãb> ãïþ◰½h‘ á     ápOâ4 Ŵâ@€ ãà’äà€äQáûÿÿ:À‹⇧å  ãRá :@€⇦â-é ã      á#0 ã⇦1◰à2◰à0Ããï‘ á½èþ◰½hÀ‹⇧å
  193.  á0àã’ïþ◰½hrãþ◰ý     á-é# ãë½èäÿÿzþ◰½è@-éàÑå ^ã€ý8p á` á€â àÐå ^ã: 0€â@ áPÓä`Ôä.Vã V U◰ŒUá÷ÿÿ
  194. ê Uã * Vã€ý8.Vã áà‘å~ã/
  195.  áÞÿÿë€ýx€½èà‘ä€ãàÿÿ
  196. €àÎãàåàåP@àPŶâUá:-é ã  á0å=◰âï0 q™e½è€½h0ŷå@à€àp á€à ãà€åààãà€åä ã!à‰ãà€å 0€âàÑäàÃä.^ã ^úÿÿ⇩ ^ãà‘µà‰³à€µ€ý¸à ãàCå-é ãà0 ãïð€½h@ á½è@€åP á−oOâpŷâà„äàŶäVáûÿÿ:°à ãà☓åP á `€âàÖäàÅä ^ãûÿÿ*à‘åã
  197. €à ãà☓åààã à☓åä ã!à‰ã$à☓å(P☓â¥oOâàÖäàÅä ^ãûÿÿ*êààã à☓å€à ãà☓åà ã(àÄå  á áÿÿë€ýx€½èÿC-éÀœåPãÿ◰ýà ãÀâ⇧åëÿ◰ýx™åÿ◰½è0@-é@ áP€âPŶâ”å    Pãº÷ÿÿë0€½h”å€ãöÿÿ
  198.  ã  áï0€ýx0€½èþA-é àŒå€à    Pâ
  199. º0 áàãìïjPá:    €â àŒå@à ⇩åþŴýè ãþŴýèRãð°ÑPáð°:ÿ_-é(Rãø°(ø¡(( B"úÿÿ*Rã0‘$0Ŵ$ B"úÿÿ*Rã0Ð$0Á$ B"úÿÿ*ÿflýèÿ_-é€àŴàã0p0a Búÿÿ(Rãø0)ø!)( B"úÿÿ*Rã00%0!% B"úÿÿ*ÿflýèþC-éÍñÿëþ◰½h†à†å^ãþC½flïÿ¼à†å^ã
  200. ´Oâ= @â_ãþ◰½èà†å^ãP 3 0…å0◰à¤0…娠…å    Uãà⇩¢à”¨à‰¨` á0 á@ áP á⇩âÏ¿þ◰½h
  201.  á ã¬…å’åŴå ’å Ŵå$0Ŵå(PŴåVã
  202.  ã Ŵå ãŴå ã ’å0’åçïþ◰½h܆åPá þ◰ý,0Ŵâ áaùÿëþ◰½hàÐäàÃä ^ãûÿÿ* ãCå0◰â0Ãã0Cà0Ŵå ãŴå ã Ŵå ã ’å0’åçï’u†…u sþ◰ýxþ◰½è’åPã
  203. Pã»
  204. Pã
  205. Pã…
  206. Pã
  207. õÿê†à†å^ãþôÿ
  208. ’åPáûôÿ ã†…å­ê†à†å^ãõôÿ
  209. ’åPáòôÿ ã†…å8•â€âï sH…uflzœê†à†å^ãæôÿ
  210. ’åPáãôÿ ã†…å”êRemove <Wimp$Scrap>Wimp$Scrap†à†å^ãÕôÿ
  211. ’åPáÒôÿ ã†…å$’åpã ¬…‘ áUOâ,⇨â Ðä0Ñä Rã S#:ARã[àb2  ŵ2ASã[àc2 0◰2Ráòÿÿ
  212. ê Rã* Sã * ã¬…å Oâ
  213.  á àã0 ã@ ã#ïRãºôîÿëþ_½è\ê
  214.  ã,⇨⨠†å @†å¤P†åïUj     á,Ŵâø …â ŵâàÐäàÂä ^ãûÿÿ*’å Ŵå ãŴå ã ’åçïEj’内å ãH…å‰ôÿê†à†å^ã⇧ôÿ
  215. ’åPá⇦ôÿ ã†…嬆å>ê†à†å^ãŴôÿ
  216. ’åPá~ôÿ ã†…å ã¬…堆夠†å Rà@ 
  217. @’åRá@ ±‘ á܆å †å −å0−åñïj     á’å Ŵå ãŴåP’å@Ŵ堆夠†å€à …åPá:Tá* ã ’åçstuzê ã ’åçï’u†…u sH…uNôÿzÿÿÿêëþ_½èòfiãüOâA @⤅å ãêPã  Ŵå ã†…å ãŴå ã Ŵå¤flåŴå’åPã
  218. PãŴâø …â ŵâàÒäàÀä ^ãûÿÿ*à ãà@å€âÀã@àŴåꤠ†å‹äŴå ã0Òä Sã:0Áç€âÿPãøÿÿ:  ã Áç€âÀãŴå ãÜ †åçï sþflýxþfl½èŵWþC-é|ðÿëþ◰½háÐã  á⇧årã  "⇧ "⇧ü!⇧ñÿþ◰½hYñÿëþ◰½hPãþ◰ý*òÿëþ◰½hPãþ◰ýdœåÃòÿëþ◰ýxþ◰½è  á⇧årã  "⇧ "⇧ü!⇧ñÿþ◰½hø’èŷ⇧âx€è$•â☓⇧åòÿëþ◰½hPãþ◰ýr⇧åàã¬òÿëþ◰ýxþ◰½èw0?@-é
  219.  á@ á ŴåüœåŴåÎï?€ýh’åSãP SãP SãPP%àPá?€ýPŴå @ŴåÍï?€ýhTã?€ýUã?€ýÓï?€ýh’èüQœåSáTàÒ?€ýèDragASprite?@-é ãOâïj¡ ã ãïjã
  220.  ã8⇧å?€ýè ã8⇧å?€ýè ã8⇧å?€ýèþC-éðÿëþ◰½h@‘ âÿ‘    âë⇩âþ‰èà†å^ã@‘ 3$:Qã"
  221. 8åœå^ã
  222.  ã^
  223. ` á
  224.  á ŴåËïp’u’upGp€’u’u€Hp0ŴuÎŴr’x€pŴp ŵp0◰p⇩x     q q  q
  225. 0 q@ q$þ◰ýx⇩âþ’è_ã0⇩âÏï`’x ŴuËp’u’upGp€’u’u€Hp0Ar ŴxÎþ◰½h4Ŵâà á’è ã⇩åŒå€à⇩å Œå€à ⇩åŒå€à⇩åŒå€à⇩å0â
  226. Pã
  227.  Pãfièê ã  ã$5œå(Eœå@ã
  228. Øœå0CàÜœå@DàŒå@àŴà Œå@à ŵàŒå@à0◰àŒå@à@☓à⇩â€è
  229.  áÐïþ◰ýxþ◰½è( ŴâàÐä;^ã^àÂ☓úÿÿ⇩à ãàÂåE
  230.  ã€ã€ãŴåH†åþflýèX-éÀ áQã
  231. .ï—ýxà‘åŷ^ã—½êï° q  q.—ýxà‘åŷ^ã—½  á  á.ï—ýxà‘åŷ^ã—½  áì•âŴâ.ï—ýx—½è@-é ãH0 ã<◰âï@½híÿjÔ"⇧å0 ãÜ0ŵåà0ŵåH0ŵå“0ŵå—0ŵå†0ŵå0àã0ŵå(0ŵå ãŵå ã$ŵå ãäŵåÅ⇧âTŵåæìÿë€ýèþC-éê    Qã íÿºþC-éOïÿëþ◰½h€ áx—èpFà—åãþC½ íÿ
  232. ã(`` ã(`ŷàã ã5ïþ◰½h‘ á  ã5ïþ◰½h) á  áÆ Bà ⇦å ŵà  ⇦åþ◰ýè——⇦doggysoft8 ,, 1ADufv%ADsu!AD1W233Cv1VdADs5344Dd71VsADvDDCTDDu!V"!!!7AD!WDDDEE4D7dRrADAWTTTTCCDt$!!s#!1'AD2dwwwwfDDDWf"UAD2TvffeVUUvwUd#!!!W!!!qADrwgEEEUTUUUewW""W!"!BAD!CugUTTUTUUee7!"!2G"!"!'AD!eTWEffUefVe'"!"25""""VADt%!guFdgt5uf'"!"!"""""sADb6"vW""uu%2f'"""""""""R'AD1W!!!t%!"sv"2B7"""2"2"2"2dgADe"!2!""2#""3B#"""2"2"2"2St6ADs%!!!"!!""""22W222"2"22222222RWADc6"""!""""""""s%#"""#"#"######dWADc6!!!"!"!BefVE"2Bg222222222222222RgADevwf!u6"!"!""cøÿÿ⇦g""d6######3#3#3####CwADfwwwwwVf$!!!"!!"Bÿÿÿÿÿ•G22tf222222222322222BuFADQwwwwwwg#"!"!"""rvwwøÿÿÿW###43#3332323"2"2"#"#eg5ADvwwwwwww&"!"!"!""bwwwÿÿÿW222223232322"2"2"2"222BdgfDDTUfEDwwwwwwww7!"""""""Bwww÷ÿÿx&###33"333##"""""""""2#"##DTUUEeEDwguguwwwW!"!""""2"Rvŷø⇦xF222222333322"""""""2""22222233cGADwWtWtwwwg"""""""""2"CUE###3#32323#2"""""""""""""#"##cUv6ADvwwwwwww7""""2"2"2"222222222232322"2""!"!"!""""22222s5#ADvwwwwwww&"""""""2""#"####3#23233V""""""!"!""""""2#"#tADawwwwwwg""2"2""2"22222222223223CG22""""!!!!"""2""222sADvwwwww&""""2"2"#"####3#3232333SG"""""""!""""2"##sAD!fgggw2"2"2"222222222222323233t&2""!"!!!!!"!""2"bF2sAD!#a&2"2""#"####3#3#23233333v"""""!"""""2sv&vADf"222222222222223223333d7"""!!"!!!!!!""222uu&ADb&"#"####3#3#323233333Cw#"""!""!""""""3GADf32222222223232323333v6"""!"!!!!!""22BG2bADQ7###3#3#23233333333uW"""""""""""2##cW#fADuF2222323223233333ug32""!!!!"""22222uWbADs¶w%3232323333333Cuw%"""""""""""""333WggADA·»kwE32323233333cww622""""!"!2"22223b1ADs»»»kwg4333333CewguW3##"R&""""""4#233vADg»»»»»kwwfffwwwvWSw2322Sw$"""""2w423c'ADQ·»»»»»kw¶»»»»»»gCu6323TgG""""""R7f4CvADq¶»»»»»w¶»»»»»»{Edg323cGa6"2"2"2u1uVADs»»»»»{g»»»»»»»gDv53CeWs$##"#"d&ADt»»»»»{·»»»»»»{WsWTfg$r4222BuFADt»»»»»w»»»»»»»{fwVD#1fUUfg$ADt»»»»»w»»»»»»»v!3DADr»»»»»w»»»»»»»WADq¶»»»»v¶»»»»»»GAD1·»»»»»»»»»»»»'ADt»»»»»»»»»»»kADAg»»»»»»»»»»{ADQg»»»»»»»»»gADRw»»»»»»»{AD!ewfffvw5AD13D4#AD…
  233. …Üradioon
  234. ,☓    pppðpÿpðÿÿpÿpðpppððÿÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿðÿÿðÿÿÿðÿÿððÿÿ☓radiooff
  235. ,X 3ÀÀ0 0 0ÀÀ3 ?ÀÿÀÿÀÿðÿÃÿüÿÏÿÿÿÿÿüÿÏÿðÿÃÿÀÿÀÿ?Àÿ ÀÿXoptoff
  236. ,,ÿÿ?000000000ÿÿ?☓opton
  237. ,,    wwwwwððððÿðððððwwwww°yes
  238. ,, wwwwwwwwwwwwwwÿwwðÿwwÿwwðÿwwÿÿwwðÿðÿwwÿÿwwwwwwwwwwwwww°no
  239. ,, wwwwwwwwwwwwwwÿðÿwwÿðÿwwÿÿwwÿwwÿÿwwÿðÿwwÿðÿwwwwwwwwwwwwww…inc1 ,\3à 00 JoÃWi3@ExReÀÿÿ?ÀÿÿÿÀÿÿÿÃÿÿÿÏÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÃÿÿÿÀÿÿ?ÀÿÿÀÿÿ…dec1 ,\ðÌÃÀÀ0À À À0Àù¡ÀÀiÕÃ-QÌYŶðÿÿðÿÿüÿÿÿÿÿÃÿÿÿóÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÃÿÿÿÿÿÿüÿÿðddec,Hÿÿ`88à€€ã>ÿÿÿÿÿÿÿÿþÿ¿ÿøÿ•ÿàÿ◰ÿ€ÿ€ÿ>€ÿdinc,H>€ãà€88`ÿÿ>€ÿ€ÿ€ÿàÿ◰ÿøÿ•ÿþÿ¿ÿÿÿÿÿÿÿÿÿ¸
  240. ¸4radioon
  241. ,° wðw"3w"""3w""ÿ""3w""ÿÿÿ""3w""ÿÿÿÿÿ""33""ÿÿÿ""3""ÿ""3"""3"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ44radiooff
  242. ,° 03333w3w3w3w3wwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°optoff
  243. ,, PUUUUUUUUUpwwwwwwwwwW°opton
  244. ,, uwwwwwwwwwU"""""""""U"""""""""U""ÿÿÿÿÿ""U""ÿÿÿÿÿ""U""ÿÿÿÿÿ""U""ÿÿÿÿÿ""U""ÿÿÿÿÿ""U"""""""""U"""""""""°yes
  245. ,, fffffffffff"""""""""f""""""ÿ/"f"""""òÿ""f"""""ÿ/""f""""òÿ"""f"ÿ/"ÿ/"""f"òÿòÿ""""f""ÿÿ/""""f"""""""""°no
  246. ,, PUÿñÿUÿñÿUÿÿUÿUÿÿUÿñÿUÿñÿUUpwwwwwwwwwWìinc1 ,… AAAAUAURUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìdec1 ,… DDDDDDDDDDDDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔdec,€ AUAUAUAUAUTUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÔinc,€ @AAAACAUUUUUUUUUUUðÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0
  247. 0“ptr_direct ,,@@U¥ªU@ª
  248. ¥@Z
  249. PP
  250.  
  251.  
  252. U¥   UPªª
  253. ªª
  254. ¥   P
  255.  
  256.  
  257. U@Z
  258. P@ª
  259. ¥@U¥ªU@üptr_direct22,,@P“ZU¥jU©UV©i@¤−A−EFFF@Y„APdf@U“VPUZU¤ª* ªjU“VPUZPdf@@Y„AEFFF−A−i@¤©UV©U¥jU“ZP@¼ptr_hand,,UTi¤i¤iZ¤iŒT¥iŒ¤¥iŒ¤¦ªŒ¤¦ªª“ªªª‘ªªªPªªª@©ªj¥ªj“ªZ‘ªPU,ptr_hand22,,U@iTi¤i¤i¤i¤iZ¤iŒ¤iŒ¤iŒU¤iŒi¤iŒi¤iŒi¥jŒ©¥ªŒ©¥ªª¥¥ªª¤©ªª¤ªªª¤ªªª“ªªª‘ªªª‘ªªªPªªj@ªªj@©ªj@©ªZ¥ªZ¥ª¤ª¤ªTUXptr_write
  260. ,,UU©©“ZP@@@P“Z©©UU€ptr_write22,,UTi¥”YP@@@@@@@@@@@@P”Yi¥UU†ptr_menu,,@UUUUU©ªªª©j©ªªªUYUUU@−ªªiYUUUVP−ªZiYUUU−ªªUYUUU−ªUUYUUU©ªªªUUUU ptr_menu22,,PUUUU‘©ªªª‘YUUU”−−Yf©j−iff©jYUUU”©ªªª‘YUUU‘−ªjUPYUUU−ª©VYUUU−Œ¦ZYUUU−ªZUYUUU−¦UUYUUU−ªZUYUUU−ŒjUYUUU−Œ©ZYUUU−jUUYUUU©ªªªUUUUtptr_cross,,@PBª
  261. €ªBP@´ptr_cross22,,@@@@@ABT@U©* ªT@UBA@@@@@PãTÃð°ÑþG-é@ÐMâ@TãP 1 ` á`ŷâp á Aà° á  áVã:`Fℤ à á+ëê–¤ à á'ë⇩à–¤!à$ëpGâWã á⇩àë@Йâþý耠áŷ‘ áYá⇩
  262. −¤ à€àÀ áà á ð á‘⇨2 á−¤!àÀ áà á ð á*−¤ à—¤!à  áë    € á    ‘⇨àéÿÿê á—¤!à  áëÌÿÿêRãð°Ñ@-éë€ýè@-é0 á  á áã(ã-0Sâº0Sâºð-éñC±èñC¢è 0Sâûÿÿª sãð◰ýð½è0›âº0-é1@±è1@¢è0€ý0½è0Câ0›âº@±è@¢è€ý0Câ0›âº’äŵä€ý0›â€ý’åÂä  á0SâûÿÿÊ€ýèÑäÂä0Sâ€ýãùÿÿÏÿÿê-éÀâÁã…Á á °lâ’ä0  á0Sâ)º0Sâºð-éðG±è €á4L áK☓á5\ á[Ŷá6l ákŷá7| á{á8… á⇧⇦á9† áœ⇨á:¬ á«⇩áñ¢è>  á 0Sâëÿÿª sãðflýð½è0›âºp-ép@±è €á4L áK☓á5\ á[Ŷá6l ákŷáq¢èp—mép½è0Câ>  á0›â    º-é@±è €á4L áK☓á¢è—ý½è0Câ>  á0›âºà’ä €áŵä—ý0Câ>  á0›â—ýà’å €áÂä  á0SâûÿÿÊ—ýè*X executes an OS-command, ignoring errors.command>* calls a routine in a WimpExtension library.command> [<parameters>] colours used in 3D borders, andslabbing time, and sprite style. The available  styles are: 0 = 3D, 1 = flat. The defaults are 4 0 14 12 15 0.Syntax:  <top-left> <bottom-right> <in> <channel> <time> <style> tells WimpExtension to forget all about any Wimp tasks that are currently registered with it. This is not usually a good idea, but some bugged programs can sometimes manage to crash without de-registering themselves, so it can be useful. sets some of the colours of some of the sprites in the WimpExtension sprite pool. Each parameter specifies the colour of the symbol in a different sprite.Syntax:  <radioon> <opton> <yes> <no>@-é⇩ëœåPã€ýœåŴWïùÿÿz€½è@-éï€ýè@-é~ëQã
  263. Qã# á0 ã
  264.  ã
  265. €ãØ •â!‹ç!h!⇩ç0◰âSãõÿÿ:?Œè<⇧å@⇧åD%⇧åL5⇧åHE⇧å€`âPâPU⇧å ã\⇧å+뀽h€ãJ€ýx€½è ã ã  ã 0 ã@ ãP ãèÿÿê•â€â_〽èÜSyntax: Defaults <top-left> <bottom-right> <in> <channel> <time> <style>È0m g?@-éOâPœåâ‘çÔOâ!Aâ€àTœå ‘åŵòÿë< •âhP⇧â\ŶâÒå Pã?€ý80 ã@”ä  ãTœåxë™e?€ýhÒä Pãüÿÿ*ñÿÿêradioonoptonyesno@-é ã €ãTœå  ãŷcï€ýx™å€½è@-é    ëQã
  266. Qã á0 ã
  267.  ã
  268. €ã  ã!h!⇩ç0◰âSãöÿÿ:Œèh⇧ål⇧åp%⇧åt5⇧å ã\⇧å»ÿÿë€ýx€½è  ã  ã   ã0 ãñÿÿê•â€â_〽èÜSyntax: SpriteColours <radioon> <opton> <yes> <no>Defaults‘◰É€LoseTasks`◰©ŴSpriteColoursdŶŒŵ@-éàÐä ^ãüÿÿ
  269. @â`OâAâ“ Oâŷ,Bâë
  270. @½èTOâr @âòfiã’å ŵàë@½èð á@-é ãàÐä ^ã€ý8ûÿÿ
  271. ŴâàÐä ^ã€ý8ûÿÿõÿÿê?@-é  á0Ñå!Sã?€½8P á0Ñä@Òä!Sã!T#:aSãzàs" 0C"aTãzàt" @D"Sáòÿÿ
  272. 0Ñä!Sãüÿÿ* ŴâÁãçÿÿê!Sã÷ÿÿ*!Tãøÿÿ* Tã@Òüÿÿ
  273.  Bâ!Sã0Ñ$üÿÿ*ŴâÁã ™å™åà áPá?€½èýO-éàÐå ^ã€ûÿÿ
  274. ý•ý8.•â0Ðä@Òä!Sã!T#:ASãZàs" 0◰"ATãZàt" @☓"Sáòÿÿ
  275. ý•ýè!Sã!T3ý•ý( Sã$:0Ðûÿÿ
  276. @âìOâAâ  Oâ"+Bâü0•â±ÿÿë
  277. ÜOâs @âïï ãý•ýèP á` áוâ ã@ á  áDïã•r  qD”u€p  qDý•ýx€âïï ãý•ý輕â ãt •âDïj⇦Oâ @âëý•ýx€âïï ãý•ýè@-é  áÞ•â ãàÒå!^ã€ý8Dï  ™e€ýhàÒä!^ãüÿÿ*  ŵâ ÂãñÿÿêWimpExtKernel==> Help on keyword WimpExt Library is: ==> Help on keyword * <command> calls a routine in a ension library.Available commands are:Èh´l,€c|WimpExt Shadow    2.18 (16 Aug 1993) provides extra WimpExt SWIsWimpExtShadowWimpExtSortMemMoveMenuWidthDataLoadMoveCaretIconDrawOpSpriteOpIntersectBorderOpManualLinkMiscOpViewIconSubstituteArgsCreateDrawRedirectSpritesÀ†å[ã ñ•0ßÞÿê⇦üÿêÆüÿê-êUêEêfiêÆ ê?    êê'êLê
  278. êfiêÍêêÀ†å\ㆆPð°•âòfiãCan't kill the WimpExtension Shadow module@-éEêQâí^¢ …€ýè@-é ãàÐä ^ã:Ŵâ Qãùÿÿ: á€ýè@-é áòÿÿë0 á Ŵâ@ á‹å    Pã
  279. ºÿã$ÐMâ áŴåËï$Йâz_ã‹åëÿÿë‹å ã ŵÝÿÿ 
  280. ‹å ãàÑä ^ã€"ûÿÿ*Pá0 Á‹å€ã ŵàÿÿ
  281. 2 á0◰â0☓å€ýèþC-éŒâÿëþ◰½h¼à†å^ã
  282. pOâz @â_ãþ◰½è†à†å^ã
  283. øOâz @â_ãþ◰½è@ áp á,Pâso…âà–äàŷäWáûÿÿ:à ã¸à…åÐ…åPã
  284. € á´0…åÄ0…å$P’å Uã[ ³UãV ÃPŶà ã°á
  285. ºWï s  qºWzþ◰½è ã  áºWï
  286. zþ◰½è€ ã´ …åÄ …å ãÔ…å°…å◰àØ…åÔ…â0 á‘°á@Oâ{ @â0ê°‘…åø…â, ☓âÒä PãÁ$ûÿÿ* ãÁå á(’å
  287. Pã  #$ 1ÿ$ŵ3&ŵ3È …å  ãÌ …å’åPã$
  288. ’å Ŵå −åŵàŴåRã؆@àÀ…åŴå ãŴå ãŴå ã ’åçïj’å¼…å°†å‘åPã ºWþ◰ýèX〠á ã°†åºWï ã¼…å_ãþ◰½èþC½èþ_-é ã,ŴâïÚjPã   ÕjP á´ †å ŵà°†å’åPã؆åRá
  289. :TOâ @âÈê ãºWïÅjQã¬Oâ @âÀêÿ ã á° †å ‹å´0†å ŵà0 ãï·jÈ …åÌ0…å‡å’å Ŵå ãŴå ã ’åçï´†u€p°z©ê¼†åPãtåÿ
  290.  ’åPáqåÿ¸†åPãfi ã¸…å  ás?…â,@◰â›äŵäSáûÿÿ:’å Ŵå ãŴåàã$Ŵå, Ŵâ    0Oâ><CâÓäÂäPãûÿÿBà€âÀãŴå ã ’åçï’u¼…u sþflýx~꼆åPãIåÿ
  291.  ’åPáFåÿu꼆åPãBåÿ
  292.  ’åPá?åÿ ã,ŴâïmjPã   hjP á´ †å ŵà°†å’åPã؆åRá
  293. :Oâ~ @â[ê ãºWïXjQã`Oâ~ @âSêÿ ã á° †å ‹å´0†å ŵà0 ãïJjÈ …åÌ0…å0Oâ? @âï‡å’å Ŵå ãŴå ã ’åçï´†u€p=z9꼆åPãåÿ
  294.  ’åPáåÿ’å´ †å ŵà´ …åÀ0†åPá ±.º°†å‘åPã
  295. @ á ã°†å ’å å*ŵâºWïjQãDOâ @âêOâ @âê á’å Ŵå ãŴå°†å‘å´ †å0ŵà0Ŵåå@àÀ…åŴå ã ’åçï’u¼…u sþflýxêèOâ @â´…å ãê´…å ãê´…å ã
  296.  áŴå°†å‘åPã
  297.  ºW‘Oâ    @âï° †å‹åPãÄ † Ŵå  ã¼ …åE* ã-ŵã ŵã Ŵå  ã  Ŵå’åPã´ †å‹äŴå  ã0Òä Sã:0Áç€âÿPãøÿÿ:  ã Áç€âÀãŴåê@ á°†å´ †å’åPã ºWÄÿÿjĆå Bà á ŴåÈ †å  ŴåÌ †å$ Ŵå( Ŵâø0…âÓäÂäPãûÿÿ Bà ŵâ Âã Ŵå ãÜ †åçï ãþflýè-éæï ã⇦â ⇨âEïe ãFâ ⇨âEï ã⇦â ⇨âEïe ãFâ      áEïe ãFâ GâEï ãFâ      áEïe ãFâ GâEï½èæï ã á GâEïe ã⇦â GâEï ãFâ GâEïe ã⇦â GâEïe ã⇦â ⇨âEï ã⇦â  áEïe ã á IâEï€ýè~@-éê~@-é©àÿë~€½h
  298.  á ŴèÎï~€½h`Œåã6
  299. ã4(⇩âÓï~€½h(Œåpã
  300. ?’èàŒåRáºàŒåRá ª 0ŒåŒè@ ãPàãÒï~€½h$à†å ã  à¥~€ýx~€½èP ã ã⇩âÑä Pã:PŶâ Uãùÿÿ:êŒåÑä PãPŶ"ûÿÿ*Œè@àãÒï~€½h$à†å ã  à⇩~€ýx~€½è⇦OâŴ @â_ã~€½è¡ÀãZãñ•05Þÿêêgê’êöêNêÜê^êoê ê«ê´ê¿êê8ê™ê„ê¶ê@-é_뀽hX …âT …åŴâÁã ⇩åà ãà⇩åà⇩å,à⇩åà⇩å,à⇩åà⇩å à⇩â0à⇩åRã, Óŵ! á ⇩åQhL⇧åP⇧å$⇩åTOâG @â(⇩å ãSëBï⇩u€ýx€½è@-éŒåPã€ýŒå€âHëPã€ý ãŒå Œå àŒåŴà ŵàŴäQáüÿÿ: ŒåŒå @àã@½ëÝÿ àŒåŴà Bâ Ŵäà ãàŴå,à⇩å àŒåAà⇩åBï⇩u s⇩u s⇩u€ýx€½è@-é,ŒåPã€ýŒåPã€ý ã⇩å⇩åë€ýè@-é뀽hT †åZã@½ÄÝÿ
  301. ŒåPã
  302. †å    Pã @Œ%PãPŒ%àŒ%PE ¥Q !,`Œ% Œå  ã0 ãàŒå^ã
  303.  €ýà‰àå0◰àPá  !àfiåõÿÿê  ã0 ã†å    Pã@ #PãP #` #
  304.  á€ýè@-éÛë™e€½hT †åZã"
  305. „ÿÿë™e€½h°á€ýŒåàŒå Œå€àà‰à‘äQã
  306. Páúÿÿ: ã€ýè àŒå@àë™e€½h °á€ý àŒå€à !åÜ †å Ŵå  ã ⇩å,àŒåà‰â,à⇩å€ýè@½ètÝÿê@-é  ŵâ Âã Bâ0⇩â @Œå›åQã
  307. àŒåQá): àŒåQá&*ŴàåPá0 1ñÿÿ:à@à^ã’5◰5€ý8 å ŴààNâàŵäà’åàŵå Bà ◰å€ýè Œå á$àŒå€àœëPã €ý àŒåàNà @ŒåŴààNâàŴä-é#ë½èÏÿÿz™å€½èà ãTà…å@½è<ÝÿêQãð°@-és뀽hT †åZã
  308. Ŷ뀽h’åà ãàŴåàŴå°á€ýà ãà⇩åë,àŒuàNr,à⇩uKÿÿ{b{€ýx€½è@½èÝÿê@-éàâ^ã4⇩â0å0Ŵà0◰â @Œå ‘åRã'
  309. àŒåRá): àŒåRá&* ŵàRá#
  310. Rá!
  311. Rá
  312. àåàŵàà‰â^á
  313.  áèÿÿê0åàå0◰à0◰â0åà‹åà€å™å@½èÕÿÿê0åàå0◰à0◰â0å0‹å0€å ™å@½èËÿÿê0 ã0ŴåAà€å€ýèà ãTà…å@½èãÜÿê@-éë™e€½hT †åZã
  314. -ë™e€½hRãÚ ã⇩å0 á’åQã
  315. Rã: àŒå0Càë™e€½h àŒå0◰àQã◰ ëéþÿ{€ýx™å€ýè@½è¼Üÿêý@-é  ŵâ Âã Bâ pŒååRáý€ý *@à@â å0AàŴàŴä™ÿÿë pŒu◰pý€ýx™åý€½è0 á@Bà`◰à`ŷâ⇩â‘åQã8
  316. àŒåQáG: àŒåQáD*ŴàQáA
  317. PåPŶâUá 1îÿÿ:Qá
  318. àŴà^á èÿÿà’åà€å-é á å¹ìÿë½è,j åPUàý€ý`AàŴàPEâPŴä\ÿÿë pŒuŷpý€ýx™åý€½èà’åà€å åPUà ý€ý`Cà◰àPEâPŴäLÿÿë pŒuŷpý€ýx™åý€½è0Càïþÿë jQãý€ý pŒå◰à`Aà å‘ìÿëj◰à:ÿÿë pŒuŷpý€ýx™åý€½èý@½èTÜÿê@-é™뀽hT †åZã@½KÜÿ
  319. àŒå^ã€ýàŒå^ã€ý@½è>@-éBï>€½h⇩åŒåPã>€ý0⇩âAàã›åQã⇩>€ý PŒåàŒåQá_: àŒåQá\*ŴàQáY
  320. QáW
  321. @ ±  ±0 á›åQãîÿÿààá^ãN
  322.  á Œå€à@å@ŴàTáà à⇩
  323. ’åŵå Œå0Œå ŵà0◰à@☓âRá<*‹äPãúÿÿ
  324. àŒåà‰àPá5: àŒåà‰àPá1*Páðÿÿå@1å 0å ŵâ2ìÿëŴà@ŴäÜþÿë>€½h0⇩â @Œå PŒå@☓à›åQã>€ýŴàQá
  325. å€àPá0 ôÿÿàŒåà‰àQá: àŒåà‰àQá* åLãœåRá>€ý8Rá B @D ûÿÿ*Rã’◰  ŒåDà"ë>€ýèà ãTà…å>@½èÑÛÿê@-é
  326. ë™e€½hT †åZã@½ÇÛÿ
  327. àŒå^ã€ýŒåPã€ý{ÿÿëúÿÿz™å€½è@-éøë™e€½hT †åZã@½µÛÿ
  328. ëj’åPã€ý⇦Oâ™ @â™å@½èòfiã@-é  ŒåQã
  329. ãàŒå^ã
  330. àŒåà‰àQá*Œå€ààŒåà‰àQá*Qá€ý(@½èôOâ™ @âòfiã^áùÿÿ* fiäQáúÿÿNâ€ýè@-éÆë™e€½hT †åZã@½◰Ûÿ
  331. Œå€â⇩å€ýè@-éºë€½hT †åZã@½xÛÿ
  332.  ã⇩å€ýè@-é°ë€½hT †åZã@½nÛÿ
  333. ŒåPã@⇩€ýè@-é¤뀽hT †åZã@½bÛÿ
  334. ŒåQã€ýx€½èRãð°2º@-éŵ! áàŒå^ãàŒà‰à⇩€ý0 á BâÚýÿë Qâ€ý¸@ŵàŒå àŒå€à€à BàzëÿëŒå àŒåŴà ’äRãR ŵ0 5Qáøÿÿ:⇩â  Œå‘åàŴàQã^Ŵ0€5Qã öÿÿŒå €à ⇩å àŒå€à ŵà€äPáüÿÿ:€ýè ãð°á@-é`ë™e€½hT †åZã+
  335. Rã)Úýÿë™e€½h°á€ýŒåàŒå Œå€àà‰à‘äQã    
  336. Páúÿÿ:-é@  ã¬ÿÿë½èjQãîÿÿ€ýè àŒå@à™ýÿë™e€½hQã€ý àŒå€à å܆å€å ã⇩å,àŒåà‰â,à⇩å á€ýè@½èðÚÿê™å€½è@-é)ë™e€½hT †åZã%
  337.  Œå0Œå @Œå ŵà0◰àÜ@†åTã
  338. Rá*àŒå^ã
  339. @²èQã÷ÿÿ
  340. Táõÿÿ ãå àŒå Bà0Cà°ýÿë àŒu ŵp0◰p,àŒuàNr,à⇩uèÿÿz™å€½èëìüÿ{€ýx™å€½è@½è¿Úÿê?@-éŒåPã?€ý0⇩â @Œå PŒå@☓à›åQã?€ýŴàQá
  341. å€àPá0 ôÿÿ åLãœåRá?€ý8Rá B @D ûÿÿ*Rã’◰  ŒåDàëë?€ýèà ãTà…å?@½èŒÚÿê@-éÓ뀽hT†åQãX…qã T…€ýè@-éÉë™e€½hT †åZã
  342. ë€ýx™å€½è@½èŴÚÿê@-é Œå0Œå’åŴâÁãQà€ý ⇩å Œå0Œå ŵà0◰àRá€ý(à‹ä^ãà‰àøÿÿê@-é¨ë'j  á0 á  ã ãºWï!jQã€ý0⇩å’åŴâ ⇩åSã< Ó◰1 á0⇩å ã⇩å⇩å⇩å⇩å,⇩åLœå$⇩å0Œå‘åå@â ⇩å,•â€â(⇩å ãàãºWï4⇩uB⇩u
  343.  q€ýx™å€½è@-é0àã  á ã4ŒåºWïj0 á0Œå ãºWï
  344. jQã
  345. ’ååAâ ⇩å ã áºWï s€ýx ã áºWï ã€ýèPãñ•0)Úÿêê;êUꀀÿÿÿÿÿÿþC-éEÜÿëþ◰½h‰⇧â‘⇦âà’äà⇦ä    Xáûÿÿ:⇧âà ãàŴåàŴåà’å^ã à’^à à Tà Àá⇧åTãt@OÀ“è@’åP’å`FpG€H‘ID áT ád t ☓     “ @ŴåPŴå ã¸⇧åÀœåPã* ã‘î’å‘îŴ@îqŴ⇧í‘aî€!Bî‹aî‘Ŵî€!Bî‹Ŵî ’å‘îŴ@îsŴ⇧í‘qî€!Bî‹qî‘’î€!Bî‹’îëþ◰ýxþ◰½è@-éRá€ý(-
  346.  á
  347. Mà Pã:‹åOà•â    Pãñ•0êê™ê?êêêPêê&êL†å    Pãº-éN⇧âPÀ†åà•âð á½è‹u ŵpàÿÿz€½èÜOâ% @â@½èòfiã¸!⇧åð°á‹åPáð°Á ‹å    Páð°Á‹åPá𰱋åPáð°±_ã @-é0‹å0ŵà$ ŵâÆÿÿë €ýx €½è‹åPáð°Á ‹å    Páð°Á‹åPá𰱋åPáð°±_ã @-é ŵâ0‹å0ŵà²ÿÿë €ýx €½è‹åPáð°Á ‹å    Páð°Á‹åPá𰱋åPáð°±_ãþC-é‹åpã
  348. 3ëþ◰½h$àÒå@àâ0 ã®Ŵá$Òå€ã(ŵ,‹ŵ0€0 ã@ á.⇧âïþ◰½h  á‹åpãþ◰ýëþ◰½h$‹åâ0àâŴá àâŴá⇩å
  349.  ã⇩åÿâ! áÿäâ.Ŵá⇩å ⇩å€ã(ŵ` ,‹ŵ0€`ŵ8 ã0 ã @‹å
  350. P á.⇧âïþ◰ýxþ◰½è@-é0 ã@ ãCï€ýx™å€½è‹åPáð°Á ‹å    Páð°Á‹åPá𰱋åPáð°±_ãþC-é‹åqãþ◰ý ÒåPãU
  351. ¸œåPãR
  352. ` áÀœåPã( ã$ „å‘!îq’œíŴî‘îŴ@î‘!î(0„å‘1îs’œíŴî‘îŴ@î‘1îê$ „å(0 ã9áÿë-é( „å6áÿë0 á½è Ö帜å@’å@☓àŴâQá-*àÑä^á
  353. ^ã(
  354. àÑä^ãüÿÿôÿÿê@ ãP ãŴï j‘ á„å „å0 ãOïþ◰½h,0„åÀáœå^ã‘1q’œŴp1î⇧âfiå0€àC4 á0@„å‘As’œŴpAî⇧âfiå@€àDD á4ŷâ  ãŷï     áŵïþ◰ýxþ◰½è_ã  á‹å…ÿÿëЕr
  355.  q1þ◰½h` á$@„åÀáœå^ã‘Aq’œŴ‘A$D áàâœå4N á(P„å‘Qs’œŴ‘Q%T áäâœå5^ á„å‘q’œŴpî⇧âfiå€àA á „å‘!s’œŴp!î⇧âfiå €àB$ á ãEï  q0 q {þ◰½h4ŷâï_ã<Œèëþ◰ýxþ◰½è¢£¤¥ÿÿÿÿ@-éïÿr" qÿr# qÿr$ qÿr% q€ýx€½è‹åPáð°Á ‹å    Páð°Á‹åPá𰱋åPáð°±_ãþC-ép á8–å,@âÀ á Pã    ÊPãÚDâ
  356. 0 áà’äà◰äPâûÿÿ
  357.  á-ê@–å ã5ïþ◰½h ãRãRR$
  358.  áåïþ◰½hRã
  359. Rã
  360.  
  361.  á@€â ‘åÿ Âã €äPáúÿÿ:
  362.  áê
  363.  á’åÿÀãŴå’åÿÀãŴå ê
  364.  á’åÿÀãŴå’åÿÀãŴå’åÿÀãŴå’åÿÀã Ŵå@–å àã0àãL⇩â@ï⇩ sÜ•r r.þ◰½h–åà–å@àÀáœå^ã‘q’œŴ‘@ á⇩åàœå á⇩å–å à–å@à‘s’œŴ‘@ á⇩åäœå á ⇩å0–å‘1q’œŴ‘1î⇧âfiå0€àC4 á @–å‘As’œŴ‘Aî⇧âfiå@€àDD áP ãl⇩â™ ã•r â|⇩â.ïþ◰ýxþ◰½èC-éA ãQ ãaàãqàãRá◰ý(PãPPPP    P    €ŵâ—èXá@ ±Yá    P ±Zá
  365. ` Á[á p Á‹å ŵàéÿÿê@-éóÙÿëL …uP0…u€ýx€½è ° áã ¢œåZã¢×ÿ
  366.   ãТ⇧å †å¤Âœåð°á  ãТ⇧å †åÔÂœåÀãð°á(ðŒå@-éJïAà½èPá* €ý¢ë c s€ýèŶë c s€ýè@-éÐMâJïj  á á áPãœåàNâà€åààã à€åRïjà‘å^á:^á*à‘åãà à€Sjà‘åà^âà€¥îÿÿªЙâ€ýèüC-éPãÀ›<‹VáÊWáÊXáºYẠãPãü◰½è ãPãü◰½èIFEMþO-éêþO-é-éå‘ á“Ùÿë™e½è     áþ•½hqã Qãñ•0ê
  367. êÀê„êRêðê6êoêVê    QãªþO½èP×ÿêìœåPãþ•ý ã     ãï ã ãï ãì⇧åàãðœåô"œåø2œåüBœåAâ Bâ0◰â<@☓âÑïþ•ýxþ•½èì⇧åïþ•½h ãè⇧å⇧åàã⇧åÀ’èœå`Æá€⇦à€Èá œåpÇá‘⇨à‘Éáðb⇧åôr⇧åøŵ⇧åü‹⇧å@ áP’åãþO½×ÿ
  368.  ÑåÿPãX
  369. æï q q  q    0 qØâœu@p BpÜâœuApæ{þ•½hãØœ`ŷ€HÜœp‘ID
  370. ØâœåFà     á Hà(0⇨â×ëþ•½hØœå`ŷà€HàÜœåpà‘Ià!Ôuæ sØâœuFpÜâœu      q‰ ŵpEØâœue sHp( ⇨rE Ôuæþ•½h8“åã#ã!
  371.  ãH“ 
  372.  áH☓â   ãàÑäàÀä ^ã: Râùÿÿà ãàÀä
  373.  á0 á›ë á8“åŵâ 
  374. QãŵQH¡ŷ AH ã$ ⇨âEï q⇧{þ•½h#ÔåÿPã
  375. æïþ•½h ãØâœåFàÜâœå GàEïØâœue sHp      qEþ•½hØâœå€FàÜâœå‘⇨à◰⇧å›⇧åTp“å` ãVá* á¾ë`ŷrùÿÿzþ•½èTp“å` ãVáþ•ý( á”ë`ŷrùÿÿzþ•½èïþ•½hè2œåRá'
  376. è"⇧åRãR#ìbœåp ã◰œå›œåX`ŷâìâœåTàfiåWá*à„åã
  377. ã
  378. <„è ŵà    0◰à@☓à    PŶàPá ºPá    ªQáºQ᪠ᠠã
  379. ë qþ•ýxþ•½è `ŷâpâàÿÿêàãþ•ýèà ãâ⇧åŴêþO-épãœpãþ•ýp áRãààà ã⇧åìbœåT0„åPáþ•ý(X`ŷâ€bŷà„åãþ•ý ãþ•ýãþ•ý„å    Pãþ•ý¸☓⇧å9Úÿëþ•½hPãþ•½œåPãPPþ•ýRã
  380. „åÀãàáœå€áŷå ã⇧å á1ë qO{þ•½hBï—âœå €àBïPáüÿÿº ã⇧å„åÀãÜáœå€áŷå$†åãþ•ý áë q:{þ•ýxþ•½è
  381.  á ãÁåðœåÁå  áÁåôœåÁå  áÁåøœå@âÁå  áÁåüœå@âÁå  áÁå ãïþ•ýxþ•½èþO-é◰œå›œåìbœåT „åPáþ•ý(X`ŷâ€bŷà„åãþ•ý@ãþ•ýã
  382.  ã
  383. à„å☓â⇧å−ÙÿëŶÙÿëã
  384.    áâæï„xåœuÀq ŵp Âq åœuÁq0◰p0ÃqØâœu BpÜâœu0Cp€p    Ŵp ŵp    0◰p¯{þ•½h„å ã
  385. Pâ  áæïþ•½h„èåœåÀá ŵà Âá åœåÁá0◰à0ÃáUãØâœå€ B BàÜâœåŴ0C0Cà€à    Ŵà ŵà    0◰à¬ëþ•ýh„åãS
  386.  ã„ 
  387.  áŷâ   ãàÑäàÀä ^ã: Râùÿÿà ãàÀä
  388.  á ãœå^ã#0 ábë" á„åŵïâ„€    
  389. ^ãŵ^„„A¡€¢@„@@ á ã „å à„åàNà® ŵà  ŵâŴà     ŵàEï„u   qræ qI{êP á„å   áâæïj á„åà„åAà! áQ㺠 ãIëp„åà„å0Nà£0àp„å à„å@Nà¤@àB☓àA☓à0◰à    @☓à á  ã:ë„å ã6ã4
  390. ã2⇩⇧âŷâ   ãàÑä ^ã:àÀä Râùÿÿà ãàÀåìœå@’å⇩/⇧âJ ã`-ééçÿë q`½è s52 q s5B qj„åã „å à„àN® ŵ¤ Bã„åà„àN®Ŵ£A ã„AP ã    @ŵà0Ŵà⇩/⇧âìœå@’å  ãŷcïþ•ýèþO-éAâP á` ãp ã€ á‘ ã  áÕä Pã:
  391. ‘⇨âYáøÿÿ:Wã
  392. € á ⇦àëîÿÿêWã    pàp‘ ãWá  1ëÿÿ: ë
  393. P áäÿÿêWã    pàp‘ ãWá  1ë  !+ áþ•ýè`ŷâRãð°(@Dâ@-éZà€ýØ€ áCàŴâ  ☓â ãEï€ýhœå
  394. Xá€ý(ØäQã ïøÿÿz€ýèþO-é◰œå›œåìbœåT „åPáþ•ý(X`ŷâ€bŷà„åãþ•ý„åã þ•ý ã î ààdå⇧å„å    Pãþ•ý¸☓⇧å»Øÿëþ•ýhPãþ•ý„èŷï⇧â‰èŵ⇧å ‹⇧ådœåOÙÿëþ•ýèÂï$ï ãÐïüS⇩å-é⇩â+⇩â;ŵâ@àãXPOâ{\Eâ9ßÿë½è⇩rÀÝÿ{þ•½hl‘Ŵâ@−åH`−åp ãW᪀Òä€Àäpâ Xãøÿÿª  ã @å,−å€à€â4⇨åà−åè`−åp ãW᪀Óä€Àäpâ Xãøÿÿª @å`‘⇨â0 ãP ãSãª0◰âÔå PãºPŶâ−å`−å ‘⇨âp ãW᪀Ôä€Àäpâ Xãøÿÿª @åëÿÿê€Ôä Xãüÿÿª @åæÿÿê@☓âå€ã    å ‘⇨âàÿÿêUãþO½hÔÿ
  395. ýÿë sýÿ{þ•½h ãýüÿëþ•½hPãPPP@
  396. Ŵ ã¶ ãÿ  ãïþ•½hÿQã 
  397. àãÿ  ãïþ•½hÿQã 
  398. • ãÿ  ãïþ•½hÿQãáÿÿüŒå0 á€â ã  ãàýÿëþ•½h á  á ãÖüÿë{Þÿ{ qþ•ýxþ•½è@-é ãàÐä ^ãŴ"ûÿÿ* á€ýè@-é#œå áÑä Pã:Rã ïj÷ÿÿê€ýè™å€½è@-é` áP á@ á0 á ã á  áEï s q  qE s q  qE s q  qE s q  qE€ýx™å€½è@-é` áP á@ á0 á ã á  áEïe s q  qE€ýx™å€½è€ á‘ á` áûýÿêÿ âÿÐãÔÿ
  399. ñ•0Ôÿê    ê(ê4ê]êzê§êÅêñêÑêýêêþ@-éÆë    -é    €ã0àãŷcï™ePs    ½èþ€½h
  400.     -é€ã<⇩âŷcï‡x€s<⇩rŷcЙbþ€½h    ½è4€ãl⇩â|⇩âmæÿëþ€ýxþ€½è"€ãiæÿëþ€ýxþ€½è@-é€ãdæÿ뀽h0 ã @‹å,@DâÄA á Tã€ýÈTã,ŵ€ýèþ@-é−ë-é€sUæÿ{ Йbþ€½h(‹å ã5ï Йbþ€½h?Rã½è*
  401. ` áp áíïþ€ýxþ€½è ã@ á ‹å,@âÀ á PãÊPãÚ,ŵâ
  402. 0 áà’äà◰äPâûÿÿ
  403.  á(‹å àã0àã@ïþ€ýxþ€½è~@-éoë-é(€s+æÿ{½è~€½h á ã5ï@ q s5 s q◰u q◰uàs s5@ q s5 s q◰u q ◰u~€ýèVã⇦ÿÿ
  404. þ@-éOëp„åà„åWáp„ à„Wþ@½~ÿÿ
  405.     -é€ã<⇩âŷcï‡x€s<⇩rŷcЙbþ€½h ⇩â0„åà‘åfià0€å0„åà‘åfià0€å0„åà‘åfià0€å 0„å à‘åfià 0€å    ½è4€ãl⇩â|⇩âæåÿëþ€ýxþ€½è@-é#ë€ãàåÿë q;{0 q€½h ›åà›åNàà‹åPá@½¸UÓÿº-é á ›åŴà ‹åfãÿë½è‹u ›u€p ◰u›u€r◰u€ýx€½è@-éë áë q q{  q€½h ‹åà‹åNà 0’åà’å0CàPá@½¸3Óÿº-é’å€à ‹åŴà  áCãÿë½è ‹u€p ŵu’uà‹u€pŵu€ýx€½èPãPð°@-é  áêhRã €ýèþC-é×ë áñÿÿë qþ◰½h’åPãþ◰ý¸ ’å ŵà0 á @’å@☓àà›å0◰àSá:à‹å ŵà0‹å0◰àRáS1þ◰ý(@ŵâP◰â` ãpÔä€Õä Wã X#:Wáèÿÿ`ŷâ Vã
  406. ôÿÿê Wãâÿÿ* Xãàÿÿ* ã €ã.ïÖÿÿzþ◰½è¨ëþC-é€ãdåÿëp q€ q( s €s_åÿ{þ◰½h‘ á  á@ ã0 ã) ã €ãWåÿëþ◰½hUá* ã €ãP áPåÿëþ◰½h0◰â    Sáñÿÿ:@☓â
  407. Táíÿÿ:þ◰ýè~@-éê~@-éÔÔÿë~€½h` á
  408.  á Ŵå0ŴåÎï~€½h$†å@ã’åTãF êTã0 Tã0 Tã66#@ áâ Z áPá
  409.  ã Ŵå@ŴåÍï~€½hTã$† ’
  410. (⇩â -é0 á á( ãÖï ½è~€½h@ ã0’äsã
  411. SáÈÿÿùÿÿz q~€ýx~€½è@-é
  412. °á…×ÿ«ØœåÔœå“×ÿëÜœåPã:Ôœåæï ãFâ Iࢠà BâEïe ãFâ Iࢠà BâEïØœåæï ã⇦â IࢠàEïe ã⇦â Iࢠà ŵâEï€ýèÔœåæï ãFâ Iࢠà BâEïe ãFâ Iࢠà BâEï ãFâ Iࢠà BâEïe ãFâ Iࢠà BâEïØœåæï ã á IࢠàEïe ã⇦â Iࢠà ŵâEï ã⇦â Iࢠà ŵâEïe ã⇦â Iࢠà ŵâEï€ýèþC-éêþC-é@Ôÿëþ◰½h
  413.  á ŴèÎïþ◰½h`’å@ãÿdâTãDŵL ’UãRŵ^ ’@☓áTá&  þ◰ý@Ŵåÿ ã ŴåÍï&  qþ◰ýxþ◰‡èã 
  414.  ’å    QãºÑä Pã:APãZàp" €"fPã
  415. aPãdP
  416. Ñä Pã:;PãúÿÿîÿÿêÑä Pã:\Pã
  417. ;PãøÿÿæÿÿêÑä Pãôÿÿ*àOâ³ @â_ãþ◰½è`ÑåAVãZàv" `ŷ"0Vãõÿÿ:gVãóÿÿ*:Vã`àv"ðÿÿ*pÑåAWãZàw" p"0Wãêÿÿ:gWãèÿÿ*:Wã`àw"åÿÿ*:Vã0`F2W`F":Wã0pG2WpG"Tã@ !UãP !TáU
  418.  
  419. Tã0@☓27@☓"@Áå
  420. Uã0PŶ27PŶ"PÁå
  421.  á ãŴå ŴåÍïqþ◰ýxþ◰½è@-éê@-éÉÓÿ뀽hà†å ^ã
  422.  3@ á ⇩å0⇩å
  423.  áÎhŒåãvÙÿ
  424.  ãtÙÿ
  425. ãrÙÿTã$àt" !
  426.  3Œå„Öÿë q€ýx€½è~@-éê~@-é«Óÿë~€½hà†å ^ã
  427.  3P á` áPã$àp"  !
  428.   3 á⇩â.ë s  q0 qL⇩rúØÿ{~€ýx~€½è~@-éê~@-é›Óÿë~€½hà†å ^ã
  429.  3` á¿ÿÿë~€½hà á@€àTá~€ýÈ áÖÿÿë q~€ýx~€½è~@-éê~@-éÓÿë~€½hà†å ^ã
  430.  3` á«ÿÿë~€½hà á@@àTá~€ý¸ áÂÿÿë q~€ýx~€½èPã
  431. @-é
  432. RãPã-à ³àÁ´`²0 áL⇩â °á
  433. bÙÿë
  434. Rã0 ŵ27 ŵ" Ää÷ÿÿê,⇩âTátŶÁ☓ûÿÿ⇩ ãÁä€ýè0 ãÁå ãÁåð°áÀ†å ° á †åàãð°á@-éLãœåàNâ €à Âá ã\ï jQá€ý(aà ã*ïjJhAàQá ⇩%hùÿ+€ý(ØOâ· @â_〽è@-éLãœåàNâ €à Âá ã\ï€ýhQá€ý—aà ã*ïJïAp ⇩uRùÿ{€ýèD-éů⇧â ã⇩å⇩å⇩å ⇩å⇩å⇩å⇩å⇩å,⇩å ⇩â0⇩åQïL⇧åP⇧åJï⇩å€â⇩å☓ýèWimpExt RamFSWimpExtension RamFS module not installed>@-é ãHOâï
  435. j›åQãÚŴàlOâ Ðä Rã>€ý80ÑäRáùÿÿ
  436. xOâ_ã>€½èPãñ•0ÇÐÿêêêê!ê@-éÝÒÿëÆÓÿ{€½hPãà€ý„Ôÿ뀽hPãàœ€ýèRã #•2Ð7ð°á @-éÉÒÿë s⇦c  q s⇦c<’x Bp0Cp@☓pPŶp€ýx€½è|@-é»Òÿë s⇦c  q s⇦cx’x0Cp@DpPŶp`ŷp ‡uxŵx|€ýx|€½èþ@-éê    QãdÐÿºþ@-é§Òÿëþ€½h-z ázMàIWãL:àp†å~o…â ’åWãD
  437. „åPá
  438. `ŷâpGâ÷ÿÿê„åã;p ã0„å@’å0Ŵå  á$ÐMâ á0ŴåËï$Йbþ€½h@Ŵåà„å‹åP„å€àP áã
  439. @‹åUáP ±PŴåP„å€àã
  440. P‹åPá Á Ŵå‹å P„å@àP áã
  441. @‹åUáP ÁPŴåP„å@àã
  442. P‹åPá ±Ŵå´ÿÿë$Йâ qÅþ€½hWãþ€ýp ãËïÅÿÿzþ€½èÅïþ€ýxþ€½è Oâ» @â_ãþ€½è@-éê    QãÐÿº@-éKÒÿ뀽hÆhà@†å~?…â ’åTã€ý›åPá
  443. 0◰â@Dâ÷ÿÿê›åã€ý-ê áêMàA^ã:ÐMâ á›åŴåßÿÿëЙâ€ýx€½è¨Oâ» @â_〽è@-é(Òÿ뀽hà@†å~?…âTã@½Ðÿ
  444.  ›åPá
  445. 0◰â@Dâöÿÿê›å€ã◰å€ýè@-éÒÿ뀽hà@†å~?…âTã@½ýÏÿ
  446.  ›åPá
  447. 0◰â@Dâöÿÿê›åÀã◰å€ýèþA-éÒÿëþŴ½hà†åPãþA½¨éÏÿªà†å^ã
  448. @ 3`€â⇩⇧â~_…â€RŶàQEà Ŷä0Ŷä ŴåËïp’u€’u0ŴuË ’uBpŶt0’uHpŶt ’u@pŶt’uCpŶt@Ŷuà`…uþŴýxþŴ½èþC-éÝÑÿëþ◰½hà‘†å~•…âp ã    Wáþ◰½¨ÃÏÿª—åPá
  449. €⇦âpâöÿÿê‘Iâ    Wá
  450. €⇦â—è€Hâ¨èpâ    Wáøÿÿºà‘…åþ◰ýèþA-éÂÑÿëþŴ½hà†åPãþA½¨§ÏÿªP⇩å`⇩å`€â⇩⇧â~_…â€RŶàQEà Ŷä0Ŷä ŴåËïp’u€’u0ŴuË ’uŒuŶt0’uŒuŶt ’u@pŶt’uCpŶt@Ŷuà`…uþŴýxþŴ½èPãñ•0ŵÏÿêêê@-éHþÿë<œåŴå@œåŴåDœåŴåLœå ŴåHœåŴåPœåŴå€ýè@-é9þÿë$ÐMâ áXœåŴåàï’yËà’u Np à’u0Cpà’u@Dp$Йâ€ýx€½è’åŴåE
  451.  ãy€ãŴå  ã  Ŵå ãŴå ãçïÉÎÿê’åE* ãy.ŵãPá
  452.  ŵâPá
  453. ÀÎÿê’åÜï½Îÿêë»Îÿê@-éx⇧âŴâE
  454.  ãy€ã€ãŴå ãŴå ã Ŵå ã  ãçï€ýè@-éàãàã)àã9 ãI ãÑï€ýè>@-éöýÿë áüÿë q qüÿ{0 q>€½h ’å ŵàÐMâŵâ@ á P ãàÐä ^ã:àÄäPUâùÿÿà ãàÄä-é ã €ã á ™â.ïùÿÿz½è_ã ã €ãŷcïЙb>€½h‹å ŵà ’å€àRáàÿÿ:Йâ>€ýè~@-é@ ã€ãŷáÿë~€½h(`‹å ‹å,@â PãÊPãÚ@☓ã ê á ã5ï~€½h!*P á á5ï~€½h*Rá@☓ á ã5ï~€½h*P á á5ï~€½h*Rá@☓  á ã5ï~€½h*P á á5ï~€½h*Rá@☓ á~€ýè~@½è°Oâ¿ @âòfiãþC-éêþC-éÝÐÿëþ◰½h`⇧å0ÐMâ árãs Óïŷj ’èrãsŵ
  455. ü!⇧å×Ôÿëj âœåPá| ŴèÎï-é sŴr  q s⇦c½èð’x qËoj@DâPEâ`ŷâp‒åà’å€Hà‘’åà’å‘Ià0 ã’å@àTá0◰Ó’å    @àUá0◰Ó ’å@àVá0◰£’å    @àWá0◰£SãR
  456. `œåPãñ•0Nêêê&ê ãFÀ@☓ ’à’@À@D@ŴãGÀPŶ’à’@ÀPŶPŴ ŴåÙýÿë8êã@Ŵã ’à’@FŴã’à’@ŶŴãpŴÅýÿë$ê ããà’àNNã à’àNF à’å-é ’åàNà½èÎà áPáÆÿÿª ããà’    àNNãà’    àNGà’å-é ’åàNà½èÎà áPá´ÿÿªÆÿÿê0Йâþ◰ýxþ◰½èŵA-épÐä Wã:%WãpÁùÿÿpÐä%WãpÁõÿÿ
  457. 0pWâàw¢ñ• ê€ áꀠáꀠáꀠáꀠᠠ  XãºpØä WãpÁ$ûÿÿ*áÿÿêp ãpÁå áŵŴýè•â_ãŵŴ½è'Bad WimpExt_SubstituteArgs call.Pã€ð•0Îÿêê ê@-éÐÿ뀽hè…åð …å(àŴâ^áìà…”à ›ôà…”€ý—@½è#ê@-éÐÿ뀽hì †åð0†åCàP㺠ãŵäÑäPã
  458. Rá*ÂäRá*Ñä PãÂ$ùÿÿ* ãÂäöÿÿêã
  459. Rá*Âäùÿÿê
  460. Bà⇩åì …å€ýè@½è—Oâ @âòfiã@-éT ’åXŴâŵ"ŴàQá€ý(à’å ã
  461. ã
  462. ãŴ Ŵâôÿÿêrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!dHackerGýÿÿ®²Ùà8CheatModsGýÿÿÏ´Ùà8TechDocsGýÿÿ0·Ùà8!dHackerGýÿÿ®²Ùà8CheatModsGýÿÿÏ´Ùà8TechDocsGýÿÿ0·Ùà8HackerHackerNick^WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $Nick!BootEëÿÿd~þ/!HelpFÿÿÿ‡:…1)3!RunEëÿÿfl'~þ[!RunImageFúÿÿDÜ⇧Êã!SpritesEùÿÿþgì…
  463.     !Sprites22Eùÿÿfioì8AnnounceFøÿÿ¤ÊD «ChoicesEÿÿÿ±¤~þ†SpritesEùÿÿÅ⇨s—S    SWIVe26Füÿÿ¢Ü⇧,-
  464. SWIVe32FüÿÿöÜ⇧, UKGýÿÿ½´Ùà !BootEëÿÿd~þ/!HelpFÿÿÿ‡:…1)3!RunEëÿÿfl'~þ[!RunImageFúÿÿDÜ⇧Êã!SpritesEùÿÿþgì…
  465.     !Sprites22Eùÿÿfioì8AnnounceFøÿÿ¤ÊD «ChoicesEÿÿÿ±¤~þ†SpritesEùÿÿÅ⇨s—S    SWIVe26Füÿÿ¢Ü⇧,-
  466. SWIVe32FüÿÿöÜ⇧, UKGýÿÿ½´Ùà !dHacker!dHacker$NickTSet Alias$RMClear Set dHacker$RMClear Stopped
  467. IconSprites <Obey$Dir>.!Sprites
  468. Set File$Type_3F7 GamePos
  469. Set File$Type_B6E AddrList
  470. Set Alias$@RunType_3F7 Run <Obey$Dir>.!Run %%*0
  471. If "<Alias$@RunType_B6E>"="" Then Set Alias$@RunType_0D1 Run <Obey$Dir>.!Run %%*0
  472. Set Alias$@PrintType_3F7 Error Saved game files may not be printed!|M||
  473. If "<Alias$@PrintType_B6E>"="" Then Set Alias$@PrintType_0D1 Run <Obey$Dir>.!Run *%%*0
  474.  
  475. | If there's nothing wrong with me... maybe there's something wrong with the
  476. | universe!
  477. | And... anything below here is probably a virus. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Set File$Type_3F7 GamePos
  478. Set File$Type_B6E AddrList
  479. Set Alias$@RunType_3F7 Run <Obey$Dir>.!Run %%*0
  480. Set Alias$@RunType_B6E Run <Obey$Dir>.!Run %%*0
  481. Set Alias$@PrintType_3F7 Error Saved game files may not be printed|M||
  482. Set Alias$@PrintType_B6E Run <Obey$Dir>.!Run *%%*0
  483. Set dHacker$Temp Stop
  484. RMEnsure DesktopHacker 0 Set dHacker$Temp OK
  485. If "<dHacker$Temp>"="Stop" Then Error 0 Desktop Hacker is already loaded.
  486. UnSet dHacker$Temp
  487. WimpSlot -min 128K -max 128K
  488. Run <Obey$Dir>.Announce
  489. IconSprites <Obey$Dir>.!Sprites
  490. Set dHacker$Path <Obey$Dir>.
  491. WimpSlot -min 64K -max 64K
  492. %RMRun <Obey$Dir>.!RunImage %*0     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks         ‘
  493. Ô!dhacker,€ »»»»RevgV%»»»»»»»»»»»»»[wW2vwwwwwwwwµ»»»»»{t!G!!B·»»»»»[wG"twwwwwwwwµ»»»»»»u!BW»»»»»»»»»»»»»{!"R·»»»»»»»»»wwwwwwwwwwwwwwwwwwww......>>>~wwwwwwwwwwwwwwwwwwww»çråW"2uät~»»~^nwwwwF>~àácgãás»»çsåäääääããs>>>>>>~»»~NNNN>>>>~wwwwwww»»çsääääãããâr~»»~wwwwwwwwwàácgãás»»çs»»»»»»»»{>>>>>>~»»ww»»»»»»»»{wwwwwww»ÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ€file_3f7,, vwwwwwwwwwwwwwwwgw1wwCww!!!RW#!!S5!!!4wwB0u5rCww!!uSgVeV!!4ww"tCww!!!!!!""t!!4ww"u"TgVeVCww!!A'Bu5!t!!!4wwSWsCww!!!!!!!!t!!!4ww'sCww!!!!!!!!uW!!!4wwCww144444444444444wvwwwwwwwwwwwwwwwg¨`€file_b6e,, vwwwwwwwwwwwwwwwgw1wwCww!!!!wwwwwwww!4wwÇÌÌÌÌÌÌ|Cww!!!!ÇwwÇwÇw|!4wwÇÌÌÌÌÌÌ|Cww!!!!Çw|ww|w|!4ww2wwÇÌÌÌÌÌÌ|Cww1GsÌÇww||Çw|!4wwrÃ|wÇÌÌÌÌÌÌsCwwqÃÌs3w|ww7<7!4ww2G37ÌÌÌÌÌ<tCww!1wwwwwwww#!!4wwCww144444444444444wvwwwwwwwwwwwwwwwg¨`†ptr_menu,,@UUUUU©ªªª©j©ªªªUYUUU@−ªªiYUUUVP−ªZiYUUU−ªªUYUUU−ªUUYUUU©ªªªUUUU\ptr_write ,,TT©©TV@@@@@@TV©©TTsm!dhacker ,— Aww2wwwwwtCG!'CtwwwwwwwwwqreUTt"0rqrUTDtwwwqrwwww"0rqwqwwwðÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿðÿÿ—small_3f7,, wwwwwwwwwrw!AW$u%qwV2e7rw!''qwV2erw!AW$'qwrwwwwwww—small_b6e,, wwwwwwwwwrw!!www'qwÇÌÌrw!dÇÌÌ'qwÆÇÌÌrw!dwwg$qwrwwwwwwww€ic_dhacker,, vwwwwwwwwwwwwwwwgw1ss1ww1DCt1DDDDDDt1Dwwwwwwwwwwwwwwwwwwwq1wwq1DwwtGqwwwwq'swwwwq33wwA7tqs7wwqwwwwwwwwwqwwww'WVEE'#qww'WEEDwwwqwwww'wwww'#q33wwwwwwqwwwwq1wwq1Dwvwwwwwwwwwwwwwwwg    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks         <|!dhacker!,Ô»»»»»»»»»»»»»»»»»»»»»»»»»RwW²»»»»»»»»»»»»»»»;G#C7»»»»»»»»»»»»»»»{"t»»»»»»»»»»»»»»»+!!'»»»»»»»»»»»»»»»KGBwwwwwwwwW»»»»»»»kTQr²»»»»»»kTRDCCCCCCCs²»»»»»»KG AwwwwwwwwW»»»»»»»»"·»»»»»»»»»»»»»»»+!!'»»»»»»»»»»»»»»»["S»»»»»»»»»»»»»»»r !r²»»»»»»»»»»»»»+'"2'»»»»»»»»»»wwwwwwwwwwwwwwwwwwww.....>>>>~çàáàááááâáâââããããããswwwwwwwwwwwwwwwwwwww»'~u!"råt>>>>>>~»»çs^wrGN~àâcgãás»»~ååwwwçäät..~»»çs^NNNNNNN~âãããããs»»~åäääääããswwwwwww»»çsNNNN>>>>~~»»~äääãããããsàâcgãás»»çsN>>>>>>>~..~»»~äããããããârâãããããs»»çs>>>>>>..~wwwwwww»»~wwwwwwwww~»»çs»»»»»»»»{àâcgãás»»~»»»»»»»»{..~»»çs»»»»»»»»{âãããããs»»ww»»»»»»»»{wwwwwww»ðÿÿðÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÔfile_3f7!,,wwwwwwwwwwwwwwwwwr t !!!!!!!!!!!!!AsS2t !!1F&!!!!!!!!Asst2t !!715!!!!!!!As2%bBf$52t !QtuDwP"!AsbCUP2t !q1%!Asr!!!!"2t !q2%!Asr""DU$R2t !Q#!!"uuDwR"!As2%cr0'52t !!7"25!q@'!!!Ass$tr02t !!1F&!!q0'!!!AsSr@2t !!!!!!!q0'!!!Asr@2t !!!!!!!q0'!!!Asr@2t !!!!!!!q0'!!!Asr@2t !!!!!!!q2'!!!AsRw2t !!!!!!!!3!!!!As2tBCCCCCCCCCCCCCCs'444444444444444twwwwwwwwwwwwwwwwwÔÔfile_b6e!,,wwwwwwwwwwwwwwwwwr t !!!!!!!!!!!!!As2t !!!!wwwwwwww'AsÇÌÌÌÌÌÌÌ2t !!!!ÇÌÌÌÌÌÌÌ'AsÇwww|w|Ç2t !!!!ÇÌÌÌÌÌÌÌ'AsÇÌÌÌÌÌÌÌ2t !!!!ÇwÇww|wÇ'AsÇÌÌÌÌÌÌÌ2t !!!!ÇÌÌÌÌÌÌÌ'AsÇwww|wÇÇ2t !!!!ÇÌÌÌÌÌÌÌ'AsÇÌÌÌÌÌÌÌ2t !!TwÇwÇwwÇwÇ'AssTÂÇÌÌÌÌÌÌÌ2t !7LÄÇÌÌÌÌÌÌÌ'AsBÄ<ÅÇwÇww|wÇ2t QÂ,ÆÇÌÌÌÌÌÌÌ'AsrÌÌwÇÌÌÌÌÌÌÌ2t qÌÌ,Æwww|wwÇ'AsRÂÌLÅÌÌÌÌÌÌ,2t AÄÌ\ÃÌÌÌÌÌÌL$As7ÌCLww|ÇwÄs2t !sTÄÌÌÌÌÌÌB7!AsTwwwwwwwE2t !!!!!!!!!!!!!As2tBCCCCCCCCCCCCCCs'444444444444444twwwwwwwwwwwwwwwwwÔ|ptr_write,,TT©©“Z@@@@@@@@@@@@@@“Z©©TTptr_menu,,@UUUU@©ªªª@ifffUZ−−−−©jifff©j©ªªªUZYUUU@−”fU@Y¦¥V@YUUU−−¦e−„fVYUUU−iVU−fZUYUUU−¦ªU−©iUYUUUY¦−V−©¥UYUUUY¦¦U−iYVYUUU©ªªªUUUUÄsm!dhacker ,øAuETtwwWe%U!T$twwWS"c5!C!23'wwwwwwwww'#3344DTTwwwwwwwwwqrewwurqrVUUt23sqrUUEuwwwqrUUTtrqrUEEt!"sqrwwww23sqwqwwwðÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿðÿÿøsmall_3f7,,wwwwwwww !!!!!!At5d2!'d$6&AB0eWs2q!qAr!!""r2A$BeWtA"7e'2!t5!''A'2!!!!7'Ad2!!!!!!A'4444444wwwwwwwwøsmall_b6e,,wwwwwwww B!!wwww1ÇÌÌ|B!!ÇÇw|1ÇÌÌ|B!!Çww|1ÇÌÌ|B!!Çw||1BVÇÌÌ|BaÌÇÇç|1b|ÌÌÌGBAvwww$1B'4444444wwwwwwwwÔic_dhacker!,,wwwwwwwwwwwwwwwww  rrBB"""""""""t t'D'D'DDDDDDDDDtBtwwwwwwwwwwwwwwwwwqrq tqBtTWqwwAEAwwwEq3sQVRRqssAEBwwwEqss%2qvvQ2Tqqr!3sqrqwwwwwwwwwqrq223CCCDEuqrqwwwwwwwwwqr'WvwW!q!r'gUUE'33qvv'WUUTwwwqss'WUEE!qss'WUTD"2qss'wwww'33qsswwwwq3sqwwqrq tqBtwwwwwwwwwwwwwwwww 73s73srrB7ww!wws t t'D73s!""""73sBtBtwwwwwwwwwwwwwwwwwrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Country=UK
  494. 3DStyle=2
  495. StdFont=Trinity.Medium
  496. ItlFont=Trinity.Medium.Italic
  497. SzeFont=200
  498. HotKeys=00008885
  499. RegName=1
  500. DisCase=UU
  501. ResMemK=512
  502. Reserve=N
  503. NScreen=N
  504.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     =============================================================================
  505.                                  Desktop Hacker
  506.                               PD Demo Version 1.08
  507.                      © 1992-1995 Andrew Clover of DoggySoft
  508. =============================================================================
  509.  
  510.  
  511.  Desktop Hacker has been tested and is compatible with Archimedes computers
  512. running RISC OS 3.1, and with Risc PC computers running RISC OS 3.5. It
  513. should also be compatible with RISC OS 2 and 3.0.
  514.  
  515.  2 megabytes of memory or more is recommended to use Desktop Hacker -
  516. essentially, you need a little more memory than you you need to run a game in
  517. order to hack it, and most games are a tight squeeze in one megabyte if they
  518. run at all. If there's not enough memory to hack a game, and you try, a
  519. warning message will appear when you quit the game and return to the desktop.
  520. You can save memory by going to the Choices window and selecting "Don't keep
  521. screen display over interrupt". If the warning message keeps appearing even
  522. when you've left lots of free memory, try selecting the Reserve option, which
  523. keeps a portion of memory aside for hacking. This is required for games that
  524. try to claim any free memory in the computer, for example Wolfenstein 3D and
  525. Dune 2.
  526.  
  527.  Some games will fail to hack properly. This is just life: games authors
  528. always try to use illegal or otherwise dodgy techniques, to squeeze more
  529. performance out of the computer. Desktop Hacker anticipates this as much as
  530. possible, but there will always be some games that can't be hacked. See the
  531. 'Games' document for details of which games have been tested, and whether
  532. they worked.
  533.  
  534.  The full Desktop Hacker package includes an application that creates stand-
  535. alone cheat modules, that can be run on any computer, without Desktop Hacker.
  536. Some examples of these cheat modules can be found in the CheatMods directory.
  537.  
  538.  
  539.  How to use Desktop Hacker
  540.  =========================
  541.  
  542.  Double-click on the !dHacker icon or drag it to the icon bar to load Desktop
  543. Hacker. To begin hacking a game, drag the game's icon to the Desktop Hacker
  544. icon on the icon bar. The game will load and run as normal.
  545.  
  546.  To interrupt the game, press down both Alt keys simultaneously. The
  547. computer will return to the desktop environment and bring up two windows, one
  548. showing a disassembly of the game itself, and one showing the what the ARM
  549. processor's registers contained when you interrupted, along with other
  550. information. Desktop Hacker disables the sound system whilst hacking a game,
  551. to prevent some nasty crashes. You can turn the sound system back on by
  552. pressing F12 and entering '*Audio On', but this will often crash the machine.
  553.  
  554.  On top of the disassembly window there is a small button bar of some useful
  555. features. The other features are to be found in the main menu. This can be
  556. opened by clicking Menu on the disassembly window.
  557.  
  558.  Choosing 'Continue', clicking on the button bar 'Continue' button, or
  559. clicking Select on the icon bar icon makes the game continue playing as when
  560. it was interrupted. Choosing 'Kill game' or quitting the game from the Task
  561. Manager removes the game from memory as far as possible. This will not be as
  562. effective as using a game's built-in quit feature, so you should use that
  563. in preference, if possible. 'Kill game' will also leave the sound system
  564. disabled.
  565.  
  566.  
  567.  Hacking games
  568.  =============
  569.  
  570.  This demo version of Desktop Hacker is limited in its features, but some of
  571. the most basic hacking features are there for you to try. Double click on
  572. !dHacker, then drag a game to the Desktop Hacker icon. The game should load
  573. and run as normal. Start the game and see how many lives you've got (or cash,
  574. or time, or anything else you wish to change). Press both Alt keys to return
  575. to the desktop. If the desktop seems really slow, that'll be because the game
  576. is one of those naughty ones that removes the font cache. You can use the
  577. Task Manager to reserve some more memory, or get DoggySoft's PD !FontSafe
  578. utility - this stops games from behaving so antisocially.
  579.  
  580.  You'll now have a window showing a disassembly of the game's memory, with
  581. some buttons on the top. Click Menu on this window to get Desktop Hacker's
  582. main menu. You want to find the place where the game stores the number of
  583. lives you have, so move the pointer over the 'Search' item to open the
  584. Search window. Type the number of lives you have into the writable icon at
  585. the top of the window - by 'Word', which is the type of search you want, a
  586. simple search-for-number. Then choose a list to send the results of
  587. this search to at the bottom of the window, by the 'Send results to list'
  588. text: there are ninety-nine lists, and the default is fine: choose number
  589. one. Click on 'Search' to start searching.
  590.  
  591.  After a short delay, a window will appear, showing all the addresses (places
  592. in memory) where the number four was found. There will be lots of numbers,
  593. and you don't know which is the right one, so go back to the game by clicking
  594. on the 'Continue' button (or choosing 'Continue' from the main menu, or
  595. clicking Select on the Desktop Hacker icon).
  596.  
  597.  Lose a life in the game so that you have one less, and then press Alt-Alt
  598. again. Open the Search window and replace the number with a new number of
  599. lives. Now you want to tell Desktop Hacker to look for places which used to
  600. hold the old number of lives but now hold one less: they are very likely to
  601. be the lives counter. You already have a list, number one, that records all
  602. the places that used to hold four. Tell Desktop Hacker to use that list by
  603. choosing it in the icon by the 'Only addresses in' text, and selecting this
  604. option. Then choose a list to send the results to - say, number two, and
  605. click on Search.
  606.  
  607.  Now you'll have a list that contains a few addresses. Ideally it should only
  608. contain one. If you have more numbers, try returning to the game, losing
  609. another life, and repeating the second search process. Once you've got the
  610. address, click Select on it in the list window, and the disassembler will
  611. move to it. Now click Select on the same address in the disassembler window,
  612. and a small editing window will appear, containing the number of lives you
  613. have. You can alter the number in this window and press Return (or click on
  614. 'OK'), and this will alter the number of lives you have.
  615.  
  616.  Change the number in the editing window to a larger number, and continue
  617. with the game. Although initially you might not see your new lives, they're
  618. there, and they'll most likely appear when you lose a life again.
  619.  
  620.  This is a simple way to cheat, that can be repeated, with different numbers,
  621. for many Acorn games. With the full version of Desktop Hacker, there are many
  622. more, different ways to cheat.
  623.  
  624.  
  625.  What is this demo version missing?
  626.  ==================================
  627.  
  628.  With this demo version of Desktop Hacker, you can use the simplest of brute-
  629. force hacking methods, and for many games that'll be enough. The full version
  630. of Desktop Hacker, though, has many more sophisticated features, along with
  631. lots of useful gaming utilities. For example...
  632.  
  633. * The full Desktop Hacker package allows you to create your own cheat modules
  634.   - so once you've found a way to cheat at a game, you can build it into a
  635.   module that will work alone, without needing Desktop Hacker. You can give
  636.   cheat modules to friends, PD libraries, and anyone else, freely.
  637. * The full package also includes a large collection of cheat modules written
  638.   by other people. At the time of writing, this includes 682 cheats, in 195
  639.   modules, for 176 different games.
  640. * The full version of Desktop Hacker also has many different types of
  641.   searches, not just the simple search-for-number search Word. You can
  642.   find passwords, particular instructions, and ARM code that alters certain
  643.   address - for example, to find infinite lives or more complex cheats.
  644. * Desktop Hacker can slow down games. Just choose how much to slow down, and
  645.   watch as it becomes slower and much easier to play. Speed-up is now
  646.   possible too.
  647. * Desktop Hacker can save the entire game position to disc. You can then
  648.   load it back in later to continue playing from where you saved. This adds
  649.   a save game feature for games that don't have one, and allows you to
  650.   attempt a difficult part of a level many times without having to play
  651.   back up to it every time you die.
  652. * Desktop Hacker can save screen-shots of the game for you to look at,
  653.   include in DTP documents, and show to prove that you've visited a certain
  654.   level.
  655. * Desktop Hacker can rip graphics out of games. It turns raw data into
  656.   sprites which you can edit in Paint. This and the screen-shot saver both
  657.   work with the Risc PC's new format sprites too, although few games use
  658.   32,768+ colours!
  659. * Desktop Hacker can compare the contents of memory with an old state saved
  660.   in a file. In conjuction with the list features that are removed from the
  661.   demon, this is useful for finding cheats when you can't easily count what
  662.   you're looking for. For example, invulnerability.
  663. * Desktop Hacker can also be activated by BreakPoints, SWI traps, SWI Group
  664.   traps and delayed traps, which will be appreciated by the more technical
  665.   user.
  666. * The Desktop Hacker package also includes several extras, such as program to
  667.   find and save music files from hacked games.
  668. * You also get a little paper guide that goes into a bit more detail than
  669.   these instructions can.
  670.  
  671.  
  672.  OK - How do I get the full version of Desktop Hacker?
  673.  =====================================================
  674.  
  675.  Desktop Hacker costs £10; no VAT to add. You can send a cheque to us at the
  676. address below, or get your credit card number and expiry to us via mail, fax,
  677. phone, e-mail (*), or through our support BBS, Furzefield Hq. For the plastic
  678. option, you'll have to pay 50p extra, I'm afraid: that's just what the credit
  679. card companies charge. Upgrades to later versions of Desktop Hacker are free,
  680. and can also be downloaded from Furzefield Hq. The latest version of Desktop
  681. Hacker is 1.07 (release 1.07.01).
  682.  
  683.  Snail-mail: Andrew Clover,
  684.              DoggySoft,
  685.              7, Blackhorse Crescent,
  686.              Amersham,
  687.              Buckinghamshire,
  688.              HP6 6HP.
  689.              United Kingdom.
  690.      E-mail: ajc@doggysft.demon.co.uk
  691.       Phone: 01494-431916
  692.         Fax: 01494-675878
  693.        Data: 01494-681711 (Furzefield Hq; ANSI, 8N1; all speeds, all hours)
  694.       Telex: 83675 Brit G
  695.  
  696. (*) Sending credit card numbers by e-mail is not recommended as it is not
  697.     secure. Use it only if you trust all machines between you and us!
  698. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     P) !0'8(Jt@',
  699.  
  700. He has revolted. Resisted. Fought. Held fast. Maintained. Destroyed
  701. resistance. Overcome coercion. The right to be a person, Someone or
  702. Individual. We applaud his private war and concede that despite materialistic
  703. efforts he has survived intact and secure.
  704. You will see that your home is being made ready. Above and beyond this we
  705. have the means for you to desert us and go anywhere. And petty cash.
  706. You are free to go.
  707.  
  708. ÿÿÿÿðÿÿÿxX⇧1ø        s!dHacker;f17IBarN1=IBarN2=IBarN3=ÈŶ⇦UKTrinity.MediumTrinity.Medium.ItalicC'{'x'y'Desktop_Hackerì(DesktopHacker âÿ JìáSetHackPoint ÜkÒClearHackPoint ß‘    ListHackPoints☓Þº¨Do not use *Desktop_Hacker, use *Desktop instead.Syntax: *DesktopHacker <command>Syntax: *SetHackPoint <type> <value>Syntax: *ClearHackPoint [<type>[<value>]]Syntax: *ListHackPoints*SetHackPoint adds a condition to the list of those that will make Desktop Hacker interrupt. Types currently defined are:SWI <SWI name/number> - trap a single SWISWIGroup <SWI chunk name/number> - trap a group of SWIsDelay <centiseconds> - wait for a time after the game starts or continues, then interrupt.*ClearHackPoint with a type and value clears one condition. With a type only, all conditions of that type are removed. On its own, all conditions are removed.*ListHackPoints shows all interrupt conditions currently set up.SWIGroupSWIDelay centisecondsDesktopHackerReadStateMemoryAccessReadListBreakPointDesktop Hacker    1.08 (04 Jun 1995)dHacker$PathSpritesSWIVe26SWIVe32Choices:dHacker<Choices$Write>.dHackerChoices$WriteChoices.Messages.TemplatesWimp$ScrapDelete <Wimp$Scrap>SquashoptoffError03=Error3B=Error39=Error38=@'Internal error: Not enough memory to start up Desktop Hacker.A'Internal error: Desktop Hacker must be run from its application.E'Internal error: The Choices file is incomplete, or corrupted. Get the original back from the original Desktop Hacker disc, or repair it using a text editor.2?02?12?22?32?42?42?42?32?22?12?0B6EListFF9ScreenShot3F7SavedGameFF8GameAppFFFCodeDumpFF9GraphicsDesktop Hacker Reservedh_reserveprinter:$.dHacker.!RunDesktopHacker Run Error22=VictoriaMode=ProgAuthor=NoDriver=ListHead1=ListHead2=WhichKey=ColMenu=FntMenu=LngMenu=HackType=Country=StdFont=ItlFont=SzeFont=HotKeys=Reserve=NScreen=ResMemK=Error1E=^'Error10=P'Error20=`'Error1F=^'L'Error0C=G'Error07=M'Error0D=æUnknown Desktop Hacker operation €Created by dHacker3DStyle=RegName=DisCase=24_pu24_pd24_pl24_pr24_pa24_pz22_pa22_pz22_pu22_pd22_pl22_pr*R0  R1  R2  R3  R4  R5  R6  R7  R8  R9  R10 R11 R12 R13 R14 R15 R0  R1  R2  R3  R4  R5  R6  R7  R8  R9  R10 R11 R12 R13 R14 PC  R0  R1  R2  R3  R4  R5  R6  R7  R8  R9  R10 R11 WK  SP  LK  PC  A1  A2  A3  A4  V1  V2  V3  V4  V5  V6  SL  FP  IP  SP  LR  PC  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r10 r11 r12 r13 r14 r15 r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r10 r11 r12 r13 r14 pc  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r10 r11 wk  sp  lk  pc  a1  a2  a3  a4  v1  v2  v3  v4  v5  v6  sl  fp  ip  sp  lr  pc  CPSR    cpsr    SPSR    spsr    C F CP  c f cp  B Swi And Eor Sub Rsb Add Adc Sbc Rsc Tst Teq Cmp Cmn Orr Mov Bic Mvn Lsl Lsr Asr Ror Rrx Adf Mvf Muf Mnf Suf Abs Rsf Rnd Dvf Sqt Rdf Log Pow Lgn Rpw Exp Rmf Sin Fml Cos Fdv Tan Frd Asn Pol Acs     Atn     Urd     Nrm Flt Fix Wfs Rfs Wfc Rfc             Cmf     Cnf     CmfE    CnfE Stf Ldf Sfm Lfm 0.0 1.0 2.0 3.0 4.0 5.0 0.5 10.0 Swp Str Ldr Stm Ldm Msr Mrs Mul Mla Stc Ldc Cdp Mcr Mrc Adr Eq  Ne  Cs  Cc  Mi  Pl  Vs  Vc  Hi  Ls  Ge  Lt  Gt  Le      Nv Ed  Ea  Fd  Fa  Da  Ia  Db  Ib S D E ? S D E P   P M Z B T E S l L P F E & # [ ] { } ! ^ , -   Undefined Instruction Error05=E'Internal error: There's a token missing from the Messages file, and the token missing error message is missing too. It is likely the whole Messages file is corrupted. Replace it with that from the original Desktop Hacker disc.ErrorXX=HelpIBN=HelpIBG=HelpIBH=HelpDW=HelpLW=HelpIMX=HelpDMX=HelpLMX=HelpSMX=HelpCM=HelpFM=HelpGM=HelpKM=HelpXXX=WindowX=dhackerListGameD100D101NoneSqshdhacker_dumpErrorFrom=WarnFrom=WButton1=EButton1=EButton2=TASK☓ÿÿ€ÿÿ ÿÿÿÿ◰ÿ›ÿ£ÿÿÿÿÿMenu’? ? ? ? LShift LCtrl LAlt RShift RCtrl RAlt Select Menu Adjust ? ? ? ? Q 3 4 5 F4 8 F7 - 6 Left Pad6 Pad7 F11 F12 F10 ScrLk Print W E T 7 I 9 0 - Down Pad8 Pad9 Break ` £ Back 1 2 D R 6 U O P [ Up Pad+ Pad- Enter Insert Home PgUp CapsLk A X F Y J K 2 ; Return Pad/ ? Pad. NumLk PgDn ' ? S C G H N L ; ] Delete Pad# Pad* ? = \ ? Tab Z Space V B M , . / Copy Pad0 Pad1 Pad3 ? ? ? Escape F1 F2 F3 F5 F6 F8 F9 \ Right Pad4 Pad5 Pad2 ? ? ? SysFont=BadFont=Desktop Hacker internal errorDesktop Hacker has suffered the following internal error whilst handling another error, and must exit immediately:
  709.  
  710. Internal error: Desktop Hacker has run out of file to compare. This should never happen.‘‘‘'‘7‘@‘P‘`‘p‘€‘–‘§‘°‘ǑБç‘÷[@ [@ [@     [@  µ@ µ@ µ@  µ@  µ€µ€µ€µ€ ÿÿÿÿFA'B'C'@'ÁÀÌBGDE
  711. ÷n øùÿ?òÿ®'Ch``~Thas+'6>>5®'Ch``~Thas+'6>>4®'Ch``~Thas+'6>>3®'Ch``~Thas+'6>>2Sofilt'fub'crb'sh=Mfjbt'WhicbuTsbqbi'OfuunthiEbi'ChhltSnj'@kfccni`@fubso'Khi`Shj'DhhwbuPnkknfj'DhhlbSni`'LrbnTsbqbi'JrjahucUrtt'MrdlbtMhi'UneebitKfrunb'SufssDount'UrssbuWfrk'DknaahucEbi'DfusbuJdDkhrcWnbutJfss'EuhpibWfrk'Pobfskb~Cfqnc'Wnkkni`Cfqb'Wfntkb~Ibnk'FicbusofkTsbwobi'OnkkDhkni'JdBpfiJful'AhucMrknfi'Wndlbuni`Cfqb'EhibUheni'FebdftntJful'fic'Kfuc&  ÿÀÀÀ  ÿ                                     ÿ 
  712.   ÀÀÀÀÀÀÀÀ    pÀ  î8  `À€  à€  àpx  pà  ðx0  <9  À€qŴ  àà  8ÿàà  €  À  €àp  ~  €þ  Àà  ????????  €€€€€€ÿÿ  ÿÿ  ðððððððð  ?ü  þÿfl  Àðð  ?  ÿÿÿ◰  àøø  ????????  ?  üøà€  ?  ÿÿÇ  àøü    ◰flÿø  ◰◰◰   
  713.   ÀÀÀÀÀÀÀÀ  8xðð{?  3à 8ðààÂÌðÀ  <<<  øð  ð€Ì  ðx>ü  ŴÁà vlðÿÇÃŴ  ~€◰á~  ÁŴ‰  ÀÀ€ À  <xpp8  ø  888pàÀ  88pðààß  <à  ððàÀ€  ????????  ÿ€€€€€€€  ÿ  ððððññðð  þøÿÿ  ÿÿÿûÁ  ðððððððø  ~üüþ?  ◰ÿÿþ  üüøðÀ  ????????  þÿÿfl  €Ààøüþ  ~ÿÿ|~?  ÿÿÃÿÿ  |þþøð    À€€€€€€€     
  714.   ÀÀÀÀÀÀÀÀ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÷ÿ  €¿à  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ    ÿÏ  ÿŴ•ŷ   ◰◰◰   
  715.   ÀÀÀÿÀÀÀÀ  ÿ                                     ÿ 
  716.   ÀÀÀÀÀÀÀÀ  © Andrew Clover of DoggySoft, 1995   
  717.   ÀÀÀÀÀÀÀÀ  The last word in cheating for RISC   
  718.   ÀÀÀÀÀÀÀÀ   OS machines, now on the desktop!    
  719.   ÀÀÀÿÀÀÀÀ  ÿ                                     ÿ 
  720.   ÀÀÀÀÀÀÀÀ    Please do NOT share and enjoy.     
  721.   ÀÀÀÿ  ÿ                                     ÿ  
  722. IýÿÿÿD    ÿþSŵ ÿÿÿÿÿL 
  723.  
  724. À†å[ã ñ•@êê?êêê0Oâ @âòfiãð°áÀ†åã ã ã ⇦†ð°áPãJdPãZ@-éІåŴâPâ
  725. -éÐMâ†å †å0 á@ ãñïjà‡ä½èŴàñÿÿê-éÐMâ†å †å0 á@ ãñïjà‡ä½è  á†å€ýè@-é †å€â,†åP Oâ,Bâú.ëTàOâìNâàfiåà å@½èòfiãЙ‽è-éÀ†åã½è
  726. Pãñ•@ê+ê5êPêbê☓êŷê@-é †å€â,†å¬ Oâ,BâÝ.ë°àOâìNâàfiåà å@½èòfiã@-é †å€â,†åì Oâ,BâÐ.ëðàOâìNâàfiåà å@½èòfiã@-é †å€â,†å Oâ,BâÃ.ë àOâìNâàfiåà å@½èòfiã@-é    QãJ☓á†åé‰âQáZ áæ ë á€ýè@-é    Qã
  727. J☓á†åé‰âQáZ á áø ë áà ã|à…å€ýè@½è@-é †å€â,†å¤ Oâ,Bâ†.ë¨àOâìNâàfiåà å@½èòfiã@-é    Qã$J☓á†åé‰âQá ZŴà@â    PãJPáZPáJ á áê ë€ýè@-é    QãJ☓á†åé‰âQáZŴà@â    Pã    JPáZPáÚ á0 á ëà ã|à…å€ýè@½è@-é †å€â,†å| Oâ,Bâf.ë€àOâìNâàfiåà å@½èòfiã@-éŷ ë€ýè☓†åð°áH-é ã9 ãï☓Ob @b⇦½h …å° áå⇧âD⇧åŴâL⇧å€Ŵâ⇧åŴâ ⇧åŴâ⇧å Oâ  @â@  ã0‘ä0Ŵä RâûÿÿÊ⇧åœå$ €â €å, €â €å¼Oâ @â+ ã#ï2ãÄO @4
  728. Ŵà ŴãŴâ$⇧å ããOâAâ$ œå ŵâ0 ã@OâLDâï&j$œå@☓â@ŴæŴâÁã(⇧åŴ ã ãÿ  ãï¥Qã"ZêïF ã® Oâ,Bâ.ïzB ã$œå.ï@◰â@Tâ
  729.  ã €â ÐMâ  á0 ã.ïÒå30ã Ð™óÿÿ0ŵâ2 ã0ãÃäòûÿÿ ã €â  á0ŵâ.ï Ð™âæÿÿê ã¯OâAâïj0ãÿ ÇOA
  730.  ã¡OâAâ@OâLDâ( œå0 ãïäj(œåŴàà ãàÀå€âÀã,⇧å°⇧â(œå Oâ,Bâ×-ëøOb @bÕj œå(œå< Oâ,BâÏ-ëOb @bÍj Bâp á0Oâ<CâÓäÂä1ãûÿÿ á ã, œå0 ã¨@OâLDâï½j,œåŴàà ãàÀå€âÀã0⇧åŴ ã ãÿ  ãï£QãZ,œåÑå0ã    
  731. “0ã" ”0ã" ‘0ã' ’0ã' Áäòÿÿê  á»0Oâ<CâÓäÂä1ãûÿÿ œå ã0 œå0 ãP@OâLDâï›j0œåŴà€âÀã4⇧å8⇧å0`œåp„åwã&
  732. pà œå(œåh Oâ,Bâŵ-ëâ Ðä Áä RãûÿÿZ œå(œå⇦ Oâ,Bâx-ë8â Ðä Áä RãûÿÿZ œå(œå¨ Oâ,Bân-ë á
  733.  ã!ïkj áâìëâêë0âèë4âæë4œå€â8⇧å0œåŴâ ’ä2ã€ûÿÿ  á`!⇧åŴ ã ãÿ  ãïRj¥QãKORAR[OBAB ã`!œå0 ã☓@OâLDâïFj`œå€à 0@à9Câ   á ãï …å° á ã; ãïüOb @b7j ⇧å ã; ãïOb @b+j ãŵåd!⇧å ã⇧å¬⇧å°⇧å¸⇧å4⇧å0⇧åÀ⇧å`œåà áð€âj ã<⇧åÚå Pã⇦ýH ã<⇧å œå €â
  734.  á Ñä Àä RãûÿÿZ⇦ýè œå,œåØ Oâ,Bâ0‹ä0€ä
  735. -ë@âÿÿÿê@ á ãd!œåï á@ á ã œåï á@ á ã   áï áH½èòfiãH-é°†åy ã ãïÿ1ã
  736. Àœåã œT O,B‹€,œç,@H½òfiœå0ãp œ⇦ O,B‹€,œÚ,@H½òfi-é À á ã$…å/,ë½è`œå0ã
  737. à áð€â j ã œå2ã ãd!œå2ã ã   áï⇦ýè œå Oâ,Bâ‹ä€ä,œå¸,ë@âH½èòfiãI1ãJ1'1ð°@-éÀ†åI1ã
  738. J1ã
  739. '1ã
  740. €ýèà†å>ãààà…O& @ €ýèà†å~ãà à…€ýèà ãà…åÀá…å$á…å4á…å`á…åà…ådá…å@-é •âÀOâ"AâTï€ýè@-é ã  áï€ýè ãèOâ"Aâ  áï@-éÑä Ñä€á Ñä€á Ñä €á€ýè @-éÿ0 ã à Áå`$à Áå`(à Áå`,à Áå €ýèÀ†å†å0ãpdOA’ÝŴ ã ãÿ  ãï¤QãÈ ãn€R“OâAâ’å“ Oâ#,Bâø0Oâ<CâÀïØ…å…åІå ãÀ…å⇦…å4€†åàã⇦å⇦å0p†å–å0ã#
  741. pàâ…åÑå á¿ÿÿë  áâ¼ÿÿëâ0 á1…å*0ã
  742. @ ãP ãŴï⇦u0pââ …åÑå*0ã
  743.  á«ÿÿë  áâ¨ÿÿëâ0 á@ ãP ãŴï⇦u0pâàã …å4†å’åpã’p
  744.  ã€ï2ã  …Ŵ ã ãÿ  ãï£QãJ†ï" á†åPá Ã …ņå’å4 †å ‹årã@€ÿÀ €ŴÂïL…å*ëàã
  745.  ãìï  cä+j
  746. Pã  Cá+J8 †å00†å0◰ây ã ã …å@›ä4ã=
  747. 0†å@☓à`›ä›ä0ãöÿÿ †å0ãp… SåF0ã So0
  748. Sr0    Sk0Si0Sn0Sg0p†p†   …åY ãXŶâÔäTå€áTå€áTå €áŶä`VâõÿÿÊY ãXŶâ$†å@Ŷå8ŶâHŶâ>ëT`”å6ã
  749. XPŶâŶâŶâ7ë PŶâ`Vâùÿÿ ãŴâÁïŵä¾ÿÿêp†åpâpÇãÈp…åzâÌp…åzâÐp…åàã    Gâ2€âìïІåd ãŴâ€äc ãH Oâ",Bâ 0 ã@Òä@Àä0SâûÿÿQâöÿÿàã ã5ïd …åàã ã5ïh …å †å(†åt Oâ",Bâ⇩+ëÐå0AâAQã7ARaQãWARR1ãr1àl…åpã     € á †å(†å´ Oâ",Bâx+ëÐå0@âX…å †å(†åÌ Oâ",Bâp+ëÐå  ãU1ã  L1ã  \!…åÐåL1ãX†ŴX… †å(†åÜ Oâ#,Bâ_+ë á ã!ï¤!…å$†å( Oâ#,BâJ ã.ïp á€â0Câ@Dâ.ï5ãP €.@0Sâ÷ÿÿZ0Gâ@TâôÿÿZÒä0ãüÿÿÒå0ãèÿÿ †å(†å` Oâ$,Bâd+ë c$…e c(…ej †å(†å⇦ Oâ$,Bâ2+ëÐåY0ãy0  $…å †å(†å¤ Oâ$,Bâ'+ë
  750.  ã †å!ï á(…å~*ë †å(†åØ Oâ$,BâD+ë c,…e
  751. j †å(†åø Oâ$,Bâ+ëÐåY0ãy0  ,…åëë⇦ë ã<…å ãÄ…å ãØ•âŴâ   á 0†å@å☓ …å⇦0…å…Ð…å ãè…åì…åô…åø…å…åü…å…åP…嬅尅帅å|…åp…åàã…å ã…åP…å…å †å8 †å(‹åŴå ãŴå ãŴå ŴåÍï ‹åŴå ãŴå ãŴå ŴåÍï ‹åŴå     ãŴå ãŴå ŴåÍï ‹åŴå  ãŴå ãŴå ŴåÍï ‹åŴå ãŴå ãŴå ŴåÍï ‹åŴå ãŴå ãŴå ŴåÍï8‹åŴå     ãŴå ãŴå ŴåÍï‹åŴå
  752.  ãŴå ãŴå ŴåÍï4ë<†å0ãw
  753. †åÑå*0ãŴâŴâ ãx…å6 ã …ålê ãŴåàãŴåŴâ ãï ãÿŴâ
  754. à
  755. Pá
  756.     †å(Ŵå,Ŵâ,ŴâÒäÁä PãûÿÿZ †åÙ(ꀑåd’flå    8áŶ⇦€€ð ãð @ã.
  757. ÿ“âÿ☓Èã“YâJYãZ4 †å)œŒçyã
  758.     …⇦á"ê@€Èã ã‘ 
  759. °’å¹⇧â¸⇧â Ûä Zã‘ CJF:ãf:
  760.  Ûä Zã‘ CJ;:ãùÿÿñÿÿê Ûä0‘JâAZã7‘JRaZãW‘JR Ûä0°JâAZã7°JRaZãW°JR    ‹⇧à    …⇦ကå ãð°ãð°‘’å¹ ã¸⇧â ‘⇨à  á Ŵå°Ùä°Êä [ãûÿÿZ‘’å    pàã
  761. ‘’åYãð°A¹ ã¸⇧â ‘⇨àpŴå°Ùä°Çä [ãûÿÿZð°á ãŴåð°á`
  762. »0ã ãÄ…åŴOâ @âïïoOâ @âï †å€â ãDïï ãïïâ)ê †å8†å4‘åŴå ãŴå ãŴå ã ŴåÍï ãŴåÎï’å,†å. Oâ",Bâÿ)ë †å ãŴåÎï’å,†åI Oâ",Bâö)ë †å ãŴå ãŴå ã ŴåÍï †å †å ÐMâ á@0Oâ#<Câ0›å0ŴåL0Oâ#<Câ0›å0ŴåŴâ  ãÑï  á= ãÂå †å †åà•â§ì‰âàfiåŴà€â€ä,†åÒ)ë Йâ;ê0…ІåĆå0ã¦ÿÿå ã ã  ãï| ãïÂï †å’åÀŴâ8†å4‘åŴå ãŴå  ãŴå ã ŴåÍï ãŴåÎï’å,†åx Oâ#,Bâ¯)ë †åÀŴâ ãŴåÎï’å,†å☓ Oâ#,Bâ¥)ë †åÀŴâ ãŴå ãŴå ã ŴåÍï ãŴåÎï’å,†å¿ Oâ#,Bâ“)ëàã …å ãÄ…å  †åÀŵâ8†å4‘åŴå ãŴåÎï’å¾0 ã ŵâÒä0ã3 Áäùÿÿ †å8†å4‘åŴåÌï, ’å00’å4@’å8P’å@DàPEààã  ã5ï0ŵâ  ã5ï ŵâd†åh†å  á1 á †åËïàãŴåRà  á€CŴå€à ŴåSà  á€CŴå€àŴåÅï¡ ãÅ ãïã“…âÓï †å’åàã àã0àãD ãPàãÒï †åàï ’å0’å @’åP’åPEâ@Dâÿ` ã ãÁåàÁå"àÁåàÁå#àÁåàÁå$àÁåàÁå%àÁå ãï…Іåè†å0ãR è…ì†å0ã€( ì…ô†å0ã ô…ȆÔ<†å0ã
  763. †åÏï  ’å0’å’å@@†åDP†å2á3
  764. ëê0ãþ †åpãĆ0òþÿ|†å0ã
  765.  ã|…å †å ãŴå ã ŴåxOâ" @â‘åŴå ã  ãçïBï†åqã< €â…å †åáïPãñ•@¼ÿÿêÑê<ê!ê!ê·ÿÿê¶ÿÿêê¿êüêÝêê°ÿÿê¯ÿÿê®ÿÿê­ÿÿê¬ÿÿê«ÿÿê%ê$ê[ê@-é@'ïPã¼ OB5,BB½ O5,B¾ OÂ5,B†å‘å,†åÈ(ë †åàãŴåL†åŴå ãŴå ŴåÍï€ýè-éÄ ã ãÿ  ãï …å"…å½èëBï †å1ãL ◰ÿÿ
  766. €àX…å€ÿÿê@-é’åT…å ’å\…å0ã$’å`…å0ãÅï€ýèpã0
  767. 0ã’å € @Ŵåð°á0ã ’å ’å @à’å€@Ŵå@-éë€ýèpã0
  768. 0ã’å € @Ŵåð°á0ã’å ’å @àL Bâ’å€@Ŵå@-éë€ýè@-é(ÐMâ áŴâ ãÁå ãï’uà sàÁuŴuŴu s(Й⠠ãP …å€ýè?@-éïë(ÐMâ á sÁu sÁuÁuÁuÁu@Áu$D q@ÁuPÁu%T qPÁu s ãP…å(Йâ?€ýè@-éàã ã5ï0 q  s5C q s50 q  s5S q€ýx™å€½è †åÏï’å0ãÑÿÿ ÿÿ
  769. BïX†åPáÿÿJ†å1ãÉÿÿ ÿÿ
  770. €àX…å †åT†åŴåËï\†å Ŵå`†å$ŴåtÿÿëôþÿêÏï  ’å0’åP’å`’å8†å‘åŴå ãŴåÎï’å@ áÐä.1ã@  QãúÿÿZ †å,ŴâÔäÁä PãûÿÿZ@Ŵâ@Äã †åDàŴå ã Ŵå ãŴå Ŵå0ŴåPŴå `Ŵå  ã$Ŵå,ÐMâ á8†å‘åŴå ãŴåÎï’åÑä_0ãüÿÿ ã!ï á,Йâ †å(Ŵå ã ’å0’åçï¶þÿê,ÐMâ ’å0’å@’åÀ†åã
  771. †0Oâ*<Câ›äpã
  772. 0áúÿÿ0CâÓäÔ…å †åÓäÿ0ãàŴåÓäÿ0ãàŴåÓäÿ0ãàŴåÈê ’å0’å@’åsãU
  773. 8†å ãà‘ä>á
  774. Qâúÿÿ áÜï⇦þÿê á Ŵå0ŴåÎï’å ãC
  775.  ’å•à ãì‰â ã
  776. €â  ã4ãR  4ãE  4á4U  àNâ@â4á4D  2ã/
  777. Ñä Pã,J¤0ãÑåaPãzàpR @R0á
  778. Ñä Pã!J;0ãúÿÿîÿÿêñå-0ã0 0 Ŵ-éU2ã0c
  779.  ã!ï3ã b †åà’å’å@-é0€à ’å™â Ŵå0ŴåÎï’åêâ
  780. >ã
  781.  
  782. >ã*
  783. <Йâ á◰ê,Й⠆堒å@’å0’å8†å4’å0áK
  784. ’å0á
  785. (’å0á4J
  786. ’å0á4[
  787.  áÜï%þÿê‹ë áÜï!þÿê’å ãàÐä ^ãŴRûÿÿZP á á á@àãÒï<Йâþÿê@ áP á’åâ
  788. 4ÐMâ( ã0 á á áÖï` á,ÐMâ á@Ŵå ã Ŵå„ä0áæ à àŴåpãŴÜöÿÿ`Й⠆å½è €å€å½èŷÿÿê@ŴåPŴå ãŴå ŴåÎë †å½è €å€å½èzÿÿê3ã +
  789. 3ãâýÿ,ÐMâ á8†å4‘åŴå ãŴåÎï’åã,Йâ  ê€MâÏï’å1ãô… †åÔ †å2ã⇨
  790. 2ãœ
  791. 2ã›
  792. 2ã
  793. 2ã 
  794. 2ã 
  795. 2ãd
  796. ¼ýÿêÑå áŴå ã Ŵå) ãŴå8†å‘åŴåÍï°ýÿê †å€ŴâŴå8†å‘åŴåÎï’å †åÈ †å0’åsã
  797. 0’åB á◰A☓à @☓â0‹çsã
  798. à ãàŴåààãàŴåÈ†å  †å0 áÕïàÓä ^ãJ.>ãúÿÿPÐMâ á,†å% Oâ-,Bâ¶&ëPЙâ@CâÐä Óä Qã C Rã  C1á ãÄå †å€Ŵâ ãŴå Ŵå ’å0’åÍï †åÓï’å0ápýÿ’å0ámýÿ ’å0’å€Ŵâ Ŵå0ŴåÎïP ã’å ã w&
  799. ’åÐä QãPŶRûÿÿZ †å’èÒïXýÿê †å€Ŵâ8†å‘åŴå# ãŴåÎï0’å  †åȆåÕï †å8†å‘åŴå# ãŴå ãŴå ŴåÍïAýÿêÑå0ãÑ
  800. 0ã 
  801. 0ã
  802. 0ãJ
  803. 0ãJ
  804. 0ãL
  805. 3ýÿêÑå0ãJ
  806. 0ãJ
  807. -ýÿêÑå0ã 
  808. 0ã
  809. 0ã
  810. 0ã
  811. 0ã4
  812. 0ã
  813. 0ã3
  814. 0ãf
  815. 0ã¡
  816. ýÿê’åpã Ŵ0ã-é ãÈë1ã½èýÿ
  817. àãŴå ãÇê ã^ëýÿê ãÂê  ãÀê ãWëÿüÿê4ãýüÿ
  818. íë8†å8‘å †åŴåqëöüÿê4ãôüÿ
  819.  
  820. 3ãòÿÿ
  821. 3ãðüÿ6 ã …åíüÿê
  822.  ãBëêüÿê ã?ëçüÿê ã£ê  ã¡ê ãflêëßüÿê@-é †å8 †å( ‹å0 ãZë c…å8†å,‘åŴåËï ãŴå ’åãÅ.ë€ýè †å8 †å ‹å0 ãHë c…å †å8†å‘åŴåËï’å@’åP’å`’å`Fà Dà ã= ãÑï¶üÿê@-éë-é†å†å0á€ý$ÐMâ á8†å‘åŴåËï’å@’åP’å`’å`Fà Dà ã= ãÑï$Йâ€ýè@-é†å0ãŴ‘$ÐMâ á€ á€âwPãw C`âŴå ãŴå Ŵ帠ãŴå8†å,‘å×ï á8†å,‘åŴåËï ’åã-é’å@’å’å¸0Ŵâw/Dâѽè$Йâ€ýè †å ãŴå ã ŴåŴå ãÀ1†åã⇦!†åçlüÿê ãŴå ã ŴåŴå ãÀ1†åã⇦!†åç ãŴå ã ŴåŴå ã †åçïYüÿê@-é †å€Ŵâ Ŵå0Ŵå@ …åD0…å ãŴå ŴåÍï ã<…å€ýè@-é ã<…å@ …åD0…å@ÐMâ á Ŵå0ŴåÎï’åã@ã 
  823. !ÐMâ á Ŵå0Ŵål†åpã  áŴå ã Ŵå-é ãï½èÍïЙâ á’å@âŴå ’å@âŴå’å€â Ŵå’å€âŴåÉï ë@Йâ€ýè ’å0ãp
  824. Ðä QãJf1ãF1
  825. Ðä Qã    J;1ãôÿÿ
  826. ùÿÿêl†åqã3 
  827. Qã0ŴB7ŴRÀå á’å@âŴå ’å@âŴå’å€â Ŵå’å€âŴå-é ãï½èÉïtë@Йâ€ýè@-é †å€Ŵâ@ †åD0†å Ŵå0Ŵå ãŴå ã ŴåÍï ã<…å€ýèBïH†åŴâPáð A<†å0ã
  828. 0ãæÿÿ
  829. ð°á@-é ã<…å@ †åD0†å@ÐMâ á Ŵå0ŴåÎï’åã@ã 
  830. ÐMâ á Ŵå0Ŵå ãŴå ã Ŵå-é ãï½èÍïЙâ á’å@âŴå ’å@âŴå’å€â Ŵå’å€âŴåÉï+ë@Йâ€ýè ’å0ãp
  831. Ðä Qã
  832. Jf1ãF1
  833. Ðä QãJ;1ãôÿÿ
  834. ùÿÿê1 ãÀå á’å@âŴå ’å@âŴå’å€â Ŵå’å€âŴå-é ãï½èÉïë@Йâ€ýèÈïëzûÿê@-é ’å80†å0ã€ý ë›å0áU ,›å0á 4›å0á Êïñÿÿê€ÿO-é ’å’å Jà°’å’å°Kà`’åp’å €’å‘’å
  835. `Fà
  836. €Hà pGà ‘Ià@’å áÜMâ át…å` å`0åÖïtP†å”ätP…åpãÜ™ÿ•ý(ÐMâ á@ŴåŴåÎï à’åŴâ’è(Йâ@âAâ ŵâ0◰âPá    QQVQWQçÿÿZ€âŴâ Bâ0Câ>ã~àÿÿ
  837. PÞä UãÝÿÿJ¤5ãPÞb5
  838. ;5ãöÿÿ
  839. PÞä UãÔÿÿJùÿÿêàÞå0à^âÐÿÿJ^ãÎÿÿÊð-é
  840. @ۈ
  841. `ŵà PŴà p◰à0 ád †å ã áAâ@Äá`Æáh †å ã áAâPÅápÇáñ•àêêsêêiê`êoê0êêð½è°ÿÿê @Dâ PEâ `ŷâ pâ  ã0 ãyë@☓âPŶâ`FâpGâ   ã 0 ãrë@☓âPŶâ`FâpGâ<†å0ã
  842. ‡å@†å0á t†ååD†å0á@DâPEâ`ŷâpâ  ã0 ã[ë×ÿÿê@DâPEâ`ŷâpâ  ã0 ãSëÏÿÿêl †årãÌÿÿ
  843. @DâPEâ`ŷâpâ  ã0 ãHë0Gà£0Ŷàh †å ã" á Bâ0Ãá ãæï ã á CâEï ã á CâEïU ã☓â CâEï ãæï ãFâ  áEï ãFâ ◰âEïU ãFâ  áEï¡ÿÿê@DâPEâ`ŷâpâ  ã0 ãë−ÿÿê@DâPEâ`ŷâpâ  ã0 ãë’ÿÿê@DâPEâ`ŷâpâ  ãl0†åsã0 0 
  844. ë@DâPEâ`ŷâpâl †årã    0 ãë|ÿÿê@-é á0 áæï ã á ŶâEïe ãFâ  áEïe ãFâ GâEï áæï ãFâ GâEïU ãFâ GâEïe ã á GâEïe ã☓â ŶâEï ã á ŶâEïU ã á ŶâEï€ýè@-é ã  ãóï€ýè@-é†å0ã€ý0’å@’å’å’å0Cà@Dà‡å(’å ’åDàDà@âAâŴâÀ áÁ áAàPã[€âQâúÿÿZ€ýè@-é€"Dà Bâ◰â ãEï ãæï ‡å†åë‘åRá€ýX €â‘ç-é ÐMâ    €â á   ãÔïï Йâ½è€ýè@-éÀ†åã€ý☓†åQã€ýH@½è@-é0’å@’å’å’å0Cà@Dà‡å(’å ’åDàDàŴâÀ áÁ áAàPã[€âQâúÿÿZ€ýè@-é€"Dà◰â ãEï ãæï‡å á    €âQë-é ™âàrå ^ã~à~R.à CàÂE2áøÿÿ-é™â ãFï½èЙâ ï-é ãæï½è-é ÐMâ á á   ãÔïï Йâ½è ï ï-é á†å0ãS0ã   æï‡è ÐMâ á   ãÔïï ï ï Йâ ãæï‡è@â    Pã C[  á½è8-éPÐMâ0 á”O…âÀPOâD\EâXá†åSŶàBë áïPЙâ8½è€ýè@-éààãHá…åD†å ãà ãà€äQâüÿÿÊ€ýè@-éH†åqã
  845. PáJêŴâPáZ@àD†å’ç€ýèQë‡åH†å@àD†å’ç€ýè@-ééaâD†å0‰à☓†åŴâ⇦†å@ ãñï€ýè@-é    0ã0 ☓1†9◰†å⇦!†å™â@ ãñï‡èH!†årã€ýPà€ýH
  846. Pã€ýXDá†å€à€å€½è@-é€àH1†åsã$
  847. J◰âQá!JPáZPáTAJ-éPá AQá ÁAàà‡å@@à à‡å@☓àHá†å0@àDá†å0◰ààÓäàÄäQâûÿÿ½èH1†åJ◰âPáTQ€ýXTáPA AQÁ ÁëÕÿÿê@-é☓á†åé‰â*€â Rà@À á⇦†å †åD1†åJ ãñïH…åé ãà‰âQá¢ÿÿK€ýè@-éŴÿÿësã0†é ãà‰âQáK@ á  á á0 á á⇦!†åñï‡èH1†åsã€ýJ◰â ŴàQá€ýXRá€ýHQá ARá  Q Bàà‡åàAà€àD†åŴà0Ðä0Áä Râ€ýè@-éé ãà‰â@Nà á á⇦!†å☓1†å9◰â0◰â0Càñï½èé ãà‰âàNàŴà Bà€ýè?@-é$†åB ã.ï@ áh†åPã4P S2P C ã €â  †å< ã.ïÒå20ãÒ_0Ò0  €0ŵ.@Tâîÿÿ?€ýè?@-é$†åB ã.ï@ áh†åPã4P S2P C  †å2 ãÂåPÂå_ ãÂå ã €â  †å ŵâü0 ã.ïÒå20ã30Ò_0  €0B.@Tâîÿÿ?€ýè †åŴå’å Ŵå ãŴåÿÿÿê<†å 0’å@’åP’å0ã
  848. @†åD †å0á2.
  849. Ëüÿë †å€Ŵâ0Ŵå@ŴåÎï’åã%
  850.  ã#
  851.  ’åQã JÑä PãJ¤0ãúÿÿÑä5ã
  852. s0ãS0 †  ’0’0üÿ 
  853. b0ãB0íÿÿÑä5ã70
  854. 5ã
  855. 00ã2070 †  ’0’-üÿ BïH…å5ã?
  856. †å  ’å0’å@’å,ÐMâ á Ŵå0ŴåÎï’å ã,Й
  857.  ’å,ЙâÑä PãJ¤0ãÑå-0ã+0
  858. Ñä PãJ;0ãúÿÿðÿÿê-0ã0◰ 0Càã`@ áÎë c‘à ÓÝë †å  ’å0’å,ÐMâ á Ŵå0ŴåÎï’åã,Й
  859. ã,Й ãŴå ŴåÍï,Йâ †å  ’å0’å@’å8†å4‘å0á%
  860. 8†å‘å0á=
  861. 8†å‘å0á²
  862. 8†å‘å0á#
  863. 8†å‘å0áñ
  864. 8†å‘å0áL
  865. 8†å ‘å0áÖ
  866. 8†å ‘å0áª
  867. 8†å$‘å0á…
  868. 8†å‘å0á
  869. 8†å0‘å0á
  870. 8†å,‘å0á|    
  871. 8†å(‘å0áb    
  872. 8†å8‘å0áûÿ
  873. rãL†08
  874. ô÷ÿê4ãò÷ÿ
  875. 3ãð÷ÿ6 ã …åí÷ÿêãàÔ⇧ê    3ãç÷ÿ4ãå÷ÿ
  876. 4ãàÔ8 †å0 ‹å0 ã_ë c …eÛ÷ÿjx…åÔ†å0ã
  877. 0ã"
  878. Ô÷ÿêOë †å ã ŴåTOâB @â‘åŴåàãŴåŴåŴå Ŵå ã$ŴåLOâB @â‘å(ŴåÈOâN @â, ŴâàÐäàÂä>ãûÿÿBà€âÀãŴå ã  ãçï²÷ÿêÖ OâN,Bâ€Mâ8†å‘åŴå ãŴåÎï’åÐä_1ãüÿÿÒä1ãÀûÿÿ †å ã ŴåOâC @â‘åŴåàãŴåŴåŴå Ŵå ã$ŴåOâC @â‘å(Ŵå^OâO @â, ŴâàÐäàÂä>ãûÿÿBà€âÀãŴå ã  ãçï€÷ÿê3ã~÷ÿãàÔ0 ãÓë c …ev÷ÿj áT†åðýÿëà ã|à…åI@âDA á☓B á@dâ8†å‘å ã< ã@ DâÑïf÷ÿê4ãd÷ÿ
  879. 3ãK
  880. 3ã`÷ÿ6 ã …å]÷ÿê †å0 ã0ŴåÎï’åã ⇩€ ° B
  881. 8 †å  ‹å 0 ã8㨠Πc …eJ÷ÿj° á8 †å  ‹å0 ã8ãfi Ä c …e@÷ÿj€ á-ê ⇩ã †å0 ã0ŴåÎï’åã ⇩€ ° "
  882. 8 †å  ‹å0 ã8ã⇦ ® c …e*÷ÿj° á€ ãê ⇩ã †å0 ã0ŴåÎï’åã ⇩€ ° 
  883. 8 †å  ‹å0 ã8ãq – c …e÷ÿj° á€ ãÿÿÿêã
  884.  Xã S …U
  885. ÷ÿZ [ã S …U÷ÿZXã C …E÷ÿJ[ã C …EþöÿJ     á ãï* c …eøöÿj0ã*  …ôöÿ☓a†å6ã+  …ïöÿ
  886. Vá` Á`ÆãiŷâY ãy ã8 †å  ‹å0 ãfë, c …eâöÿjPã, C …EÞöÿJcPã, Ã …ÅÚöÿÊ0 áDëL ã     áï á4    ë@àã@☓â?ãY     dà•â
  887. ñ•à áaêgê_êeêoêyêmêwêŶê‰êœê¤êµêÂêÐêÚêìêõêê êê)ê7êAê@☓âãPŶPŶUáÚÿÿJ ãïT    ë á8 †å( ‹å0 ã9ëÄùÿëìùÿë †å8†å(‘åŴåËï둆åãŒöÿ
  888. 8†å †å ‘åŴåë“öÿê@-é á áºë€ýx½è  á ãï á+ï@-é
  889. ï‡O"H @"*jà á
  890. ïµO"H @"*jä‰á
  891. ïÍO"H @"*jè‰á
  892. ïåO"H @"*j ‰á€ýè-é ãï    ë½è+ï@-éÝÿÿë  á áÃüÿë1ွè@-é
  893. ï  áÅã¼üÿë†á1 áÿâ1ွè@-éËÿÿë  á á±üÿë RáQ  0〽è@-é
  894. ï  áÅã¦üÿë†á1 áÿâ RáQ  0〽è@-é±ÿÿë  á á–üÿëQá ã ◰0〽è@-é
  895. ï  áÅã™üÿë†á1 áÿâQá ã Ã0〽è@-é−ÿÿë  á áüÿëQá ã Ã0〽è@-é
  896. ï  áÅãuüÿë†á1 áÿâ áA á, áB, áQá ã Ã0〽è@-é}ÿÿë  á ácüÿëqãrÒ¡ÚAà 1á  0〽è@-é
  897. ï  áÅãUüÿë†á1 áÿâAà 1á  0〽è@-é`ÿÿë  á áFüÿëAà 1á  0〽è@-é
  898. ï  áÅã;üÿë†á1 áÿâ áA á, áB, áAà 1á  0〽è@-éBÿÿë  á á(üÿëQá ã 30〽è@-é
  899. ï  áÅãüÿë†á1 áÿâQá ã C0〽è@-é*ÿÿë  á áüÿëQá ã C0〽è@-é
  900. ï  áÅãüÿë†á1 áÿâ áA á, áB, áQá ã C0〽è@-éÿÿë  á áôûÿërãqÒ2ÚBà 1á  0〽è@-é
  901. ï  áÅãæûÿë†á1 áÿâBà 1á  0〽è@-éñþÿë  á á×ûÿëBà 1á  0〽è@-é
  902. ï  áÅãÌûÿë†á1 áÿâ áA á, áB, áBà 1á  0〽è0ွè ã°…å¸…å †å8 †å ‹å Ŵå0 ã0ŴåÎï’åã ¬…Nõÿ Ŵå0 ãÌë c¬…åHõÿj0 ã0ŴåÎï’åãBõÿ
  903. ¬†å`⬅å>õÿê3ã<õÿ° á †å Ŵå0 ã0ŴåÎï’åã@ 
  904. 0 ã±ë c …e-õÿjPã C …E)õÿJcPã Ã …Å%õÿÊ@ á0 ã£ë c …eõÿjPã C …EõÿJcPã Ã …ÅõÿÊP áãàÔy ã0 ã †å Ŵå0ŴåÎï’åã° ° 0 ã Ŵå0ŴåÎï’åã°⇧0 ã Ŵå0ŴåÎï’åã°⇧ÐMâ á á( ã8 ã&ŵâ6◰âÖï½è0ã
  905. 6 ãê0ã
  906. 0ã3
  907. 0ãN
  908. 0ã›
  909. 0ã§
  910.  ãøê‘ ãÜ •â¬⇩â †å8 †å  ‹å0 ã Ŵå0ŴåÎï’åã0 ãU - c …eÐôÿj` á‡ê‘ ã  •â¬⇩â †å8 †å  ‹å0 ã Ŵå0ŴåÎï’åã    0 ãA  c …e¼ôÿj Pã S …U¸ôÿZ` áŶê‘ ã †å8 †å  ‹å
  911. 0 ã Ŵå0ŴåÎï`’å0 áÓä Pã¸⇧RûÿÿZ[ã C …E¤ôÿJ0 ã Ŵå0ŴåÎï’åãp •¬⇩ •¬⇩hê‘ ãl •â¬⇩â †å8 †å  ‹å 0 ã Ŵå0ŴåÎï`’åÖä Pã J_0ãúÿÿÖå PãJ’å9ï c …eŴôÿjhÀã¸ËãMê 0 ãÖë c …eyôÿjhÀã¸ËãEê`’å ã  ã0-é  ãï c …e0½hlôÿj›å0ãöÿÿ
  912. ¬àOâOìNâàfiåàñÿÿ-é$›å◰à  áÒäàÑä_0ã 0á½æÿÿ0ãöÿÿ½è0½è`›å¸⇧ã!ꑠ〠•â¬⇩â †å8 †å  ‹å 0 ã Ŵå0ŴåÎï`’å0 áÓä Pã¸⇧RûÿÿZ[ã C …E>ôÿJ°Ëã ê‘ ãl •â¬⇩â8 †å  ‹å0 ã•ë c …e2ôÿj` áÿÿÿê4áZ
  913.  á—ë4ã,☓†å0ã
  914. ë€àã€⇦â?ãà-éP áy ã☓a†å`ŷà⇨ëà½èà•â
  915. ð á  ã`0ã       pà☓†å    €âWáæÿÿJµë á8 †å( ‹å0 ãŒë%÷ÿëM÷ÿë †å8†å(‘åŴåËïcëýóÿê áâ뀑å8ãp€âXëpâ€XâçÿÿJ?ãà-é áÖë‘åP@à` áp ãWëà½è–å☓†åQáØÿÿZIâàêÿÿ€-éyŴâà•â
  916. ð á€½è  ã`0ã –ŴÑ Ûÿÿê á¸ë€‘å8ãp€â.ëpâ€Xâ½ÿÿJ?ãà-é á¬ë‘åP@à` áp ã-ëà½è–å☓†åQá®ÿÿZIâàêÿÿ€-éyŴâà•â
  917. ð á€½è  ã`0ã –ŴöpGÚÿÿê á0 áúÿë1áð áÇã0 áÿùÿëàâ‰á á1 áÿâ1áð á@-é+( áŵà☓†åŴâPá5ÊÐMà áÐÍã á0àã úÿëÐŴà0ÖåÑä0#à á BâàÐåà.ààÀä Râúÿÿŷâê@-é+( áŵà☓†åŴâPáÊÐMà áÐÍã á0àãúÿëÐŴà á0Ðä SãJ#Sã&àsRàÑäZãa^ãz ~R àNRaSãz sR 0CR3áîÿÿ
  918. €½è0ွè ã0〽èãíÿÿ
  919. 3á$3óÿÿ
  920. #3ã
  921. %3ã
  922.  
  923. >ã>ìÿÿê0^ã9 ~R  S  C2ãæÿÿêA^ãZ ~RJ0ááÿÿêa^ãz ~R  S  C2ãÛÿÿêÿ?ÿ á0 á–ùÿëâ0ãð ã,,Áá1áð á0@-éïGâ    Pã C⇦ùÿ[  á áŶùÿë 0†å”O…âPOâ_\EâXá†åSŶà²ë0½è á †åAâ ŵâ+(Bà-é½èŴâ Râ
  924. -é0Ðä Sãüÿÿ
  925. J#Sã&àsRàÑä >ãüÿÿ
  926. Za^ãz ~R àNRaSãz sR 0CR3áíÿÿ
  927. çÿÿê0ွè ã0〽èãïÿÿ
  928. 3á$3óÿÿ
  929. #3ã
  930. %3ã
  931.  
  932. >ã>ìÿÿê0^ã9 ~R  S  C2ãæÿÿêA^ãZ ~RJ0ááÿÿêa^ãz ~R  S  C2ãÛÿÿê0@-éGâ    Pã C8ùÿ[  á á5ùÿë 0†å”O…â@POâ`\EâXá†åSŶàbë0@½è0áð á3ãŒ
  933. )3ã
  934. *3ãÑ
  935. 3ãè
  936. $3ãÿ
  937. 4ãÀòÿ
  938. &3ã‡
  939.     3ãC
  940. '3ã
  941. (3ãg
  942. %3ã&
  943. µòÿê4ãP 4ãPà4¯òÿ8†å‘å †åŴå) ãŴåÎï’å€àâŴå ã ŴåÍï òÿê †å8†å‘åŴåã⇧  ° ãÄOâi @â°…â Ðä Áä RãûÿÿZÝOâi @â†å Ðä0Ñå Áä Rã  C Sã0 C2á° 2ãôÿÿOâj @â †å Ðä0Ñå Áä Rã  C Sã0 C2á° 2ãôÿÿdOâj @â‘ål†ål…åpãq0á° ☓Oâj @â‘夅å—Oâj @â‘å†å…å0á° ¬Oâj @â‘åX…å¸Oâj @â‘å\…å ã$…å ã(…å ã,…å,ëÈê †å8†å‘åŴåã; à 8ëOâf @â †å, ã0 ã@ ã#ï»OrfArzüOâf @â †åÿ  ã0 ã@ ã#ïŴàÁOâf @â Ðä Áä RãûÿÿZ †å… ãï á Oâd @âõë°…âêë
  944.  ã ïÍ jdOâc @âíël†åpãR 0€:Pã?àpR€R ïÁ j
  945.  ã ï¾ jtOâd @âÞë†åàÐå*>ãà àÀÏë
  946.  ã ï² j†Oâd @âÒë †åàÐå*>ãà àÀÃë
  947.  ã ï¦ jÄOâd @âÆë-é†å †å, ãØï‡ j½èµë
  948.  ã ï— jôOâd @â¸ë-é¤†å †å, ãÔï• j½è§ë
  949.  ã ï⇩ jhOâd @âªëX†åâ0€â ïŵ j
  950.  ã ï j…Oâd @âflë\†å0ãM 0ãU 0ãL  ïs jX†åÐãU L  ïm j
  951.  ã ïj j“Oâe @â⇩ë-é(†å †å, ãØïa j½èyë
  952.  ã ïØOâe @â}ë$†å0ãY N  ï
  953.  ã ïøOâe @âsë,†å0ãY N  ï
  954.  ã ï ãï;ã†ñÿ
  955. 8P†å` ã”äàã!àã1 ãA ãÑï`Vâ÷ÿÿ;ã_
  956. •ñÿê †å8†å‘åŴåãz  wë;ãŶñÿ
  957. 8P†å` ã”äàã!àã1 ãA ãÑï`Vâ÷ÿÿ;ãH
  958. xñÿêï2ãüÿÿ8†å‘å †åŴå ãŴåÎï’å,†åJ Oâg,Bâ„ë †å ãŴå ŴåÍï0 ã@ ãP ã◰` ãy ã áïÿ1ãà áÇ6ã±à ´6ã—à ¨6ã–à ×6ãÈà ÿâ0á
  959. ÿ â0á
  960. ÿâ0á
  961. ☓ á0◰á@☓â4ã
  962. 4ãBP `ŷâ Vã◰` S4ãÛÿÿ
  963. Bï@àPã×ÿÿJ¨1…å(ë ã ãï ã     ãï/ñÿê ãÔ…åȆå,†åE Oâh,BâUëȆå Ŵâ☓Oâ` @â‘åŴäP ãŴä, ãŴä ãŴä ã0〠    Ŵä àã Ŵä  Oâ^,Bâ!‹ç Ŵä0 á   ãÕï €â◰â0ãîÿÿ †å8†å‘åŴå ãŴåÎï@’åP’åËï ’å0’å’å Bà ŵâ’å0Cà ŵà0◰àȆåÔïôðÿê ãÔ…å–ë †å8†å‘åŴå* ãŴåÎï@’åP’åËï ’å0’å’å Bà ŵâ’å0Cà ŵà0◰àȆåÔïÛðÿê ãÔ…å~ë †å8†å‘åŴå ãŴåÎï@’åP’åËï ’å0’å’å Bà ŵâ’å0Cà ŵà0◰àȆåÔïÂðÿêìOâl @â †å4Ŵâÿ  ã0 ã@ ã#ï ã BâÁç ãÔ…å4`†å‘„åØ`†åVã‘àÃȆå,†å) Oâj,BâØë    ` áaëp áÈ€†å €⇦â☓Oâb @â‘å⇦ä á⇦ä, ã⇦ä ã⇦ä@ ã ã⇦äàã⇦äÀOâb @â‘å Àãyã@€ÿÀ     €⇦ä
  964.  ã  †å4ŵâ0 ã P ão`OâilFâ ïtã
  965. ‹å0ãòÿÿŵâ    ` á6ëPáp Á áŵâ   ã0Ñä0Àä3ã Rúÿÿ €⇦âÖÿÿꀠã$å †å8†å‘åŴå$ ãŴåÎï@’åP’åËï ’å0’å’å Bà ŵâ’å0Cà ŵà0◰àȆåpŴåÔïYðÿê@-é4°†å°œå؆åPã°àÃÈ †åŒ⇩âÌ€†å
  966.  á,†å± Oâk,Bâxë ` áëp á  ⇩âOâd @â‘å⇩ä á⇩ä, ã⇩ä ã⇩ä ã⇩äàã⇩ä8Oâd @â‘å{ã@€ÿÀ €⇩ä€⇩äWOâo @â⇩ä  ã⇩ä á,†å¹ Oâb,BâSë ` áÜ ëPáp Á€ á  ãȆå
  967. €â@âZáÛZ̆å
  968. €âè@âXáÖZ ã⇩äàã⇩äÔOâd @â‘å{ã@€ÿÀ €⇩ä€⇩äóOâo @â⇩ä  ã⇩ä †å< ã’ïrã J¹
  969. ` á áË ëPáp Á á †åàÐäàÈä ^ãÒÿÿJ.>ãùÿÿà ãàHå‘
  970. åŴ-ép á †å     á ‘⇨â 0 ãàÐä.>ãà àÁä0Sùÿÿ“Oâe @â‘å⇨äp⇨ä, ã⇨ä ã⇨ä-é Râ4J€ÐMâ á< ã’ï †å á Ðä0Ñä.2ã   Sã0 C2á€Ð™%2ãôÿÿ€Ð™âJâ ãà:åà åQâûÿÿ ã⇨äàã⇨ä4Oâf @â‘å{ã@€ÿÀ €⇨ä€⇨äSOâq @â⇨ä  ã⇨ä á,†å­ Oâd,BâÔë á€ á ` á[ ëPáp Á½è ã⇨äàã⇨ä¬Oâf @â‘å{ã@€ÿÀ €⇨ä€⇨äËOâq @â⇨ä  ã⇨ä‡å áàÐäàÈä ^ãûÿÿZ á ` á= ëPáp ÁȆå
  971. €â@âYá>Z̆å
  972. €âè@âXá9Z ã⇨äàã⇨äHOâg @â‘å{ã@€ÿÀ €⇨ä€⇨ägOâr @â⇨ä  ã⇨ä‡å< ã’ïrã‘I
  973. ‡å †å0ÐäàÑä3á‘I .3ãøÿÿ ` á á ëPáp Á áàÐäàÈä ^ãûÿÿZÉÿÿꀠã    å áŴ@½è‰årã
  974.  Bâ#ÿÿꀠã
  975. åȆåp€å€ýè- ã …å<ïÿêâÎã@-éà áÞä Pã€ýH ïÝjùÿÿê@-éà áÞä ï×j=0ãúÿÿ€ýè4ã)ïÿ
  976. 3ã8A…
  977. 3ã$ïÿ †å8†å‘åŴå ãŴåÎï’åEê ãx…å †å8†å‘åŴåËïP’å`’åà’åPEàà’å`Fà ãŴåÎï0Ŵâ›å€à◰å›å€à◰å›å€à◰å ›å€à ◰å ’åE ã ã$ïùîÿz@MâÏïp’倒åàã  ã5ïPŵâ  ã5ï`ŵâ ã5ïR á ã5ïb á †å’å‘@à’å @à’åp@à ’å€@à ãŴåpŴå€Ŵå    PŶà
  978. `ŷà PŴå$`ŴåÐïÕîÿê0 áàÐä ^ã3J.>ãúÿÿãàÔ †å8†å‘åŴå ãŴåÎï’åÑä_0ãüÿÿ ã!ï á  ã@ ãP ãï0 áÌ ãï á⇦ Oâf,Bâ ‹å2á   Oâf,Bâ ‹å2á& ¬ Oâf,Bâ ‹å2áÓ ¼ Oâf,Bâ ‹å2á  ã    ï ãï‡îÿê/ ã …åŒîÿê4ãÂ
  979. 3ã3³ñÿ
  980. 3ãX
  981. 3ãD
  982. 3ã<
  983. 3ã‘
  984. 3ã,
  985. 3ã-
  986. 3ã.
  987. 3ã/
  988. ☓îÿê4ã¬
  989. P’å ŴåËï’åà’å@àP@àPUâyîÿJ†å0ãvîÿ
  990. \ë‘åŴ áUáqîÿZ¥R á €â‘çŴâã n
  991. †å´ë°ñÿë †å8†å,‘åŴåËï’åãÅ^îÿê6 ã …å[îÿê6 ã …åXîÿê6 ã …åUîÿê6 ã …åRîÿê6 ã …åOîÿêÐMâ á á( ã8 ã&ŵâ6◰âÖï½è0ã0 X0ã@ @  †å8 †å( ‹å0 ã“    ë c …e7îÿj    Pã C …E3îÿJPã S …U/îÿZ4ã  …*îÿP á8 †å( ‹å0 ã    ë c …e"îÿj    Pã C …EîÿJPã S …UîÿZ4ã  …îÿ` á1†å3ã  …îÿ
  992. Uáp Á` ÁP Áp ájë€àã€⇦â@ãr  á áÿëPŶàUáöÿÿÚ¨ëFñÿëüíÿê6 ã …åùíÿêÐMâ á á( ã8 ã&ŵâ6◰âÖï½è0ã0 0ã@ @  †å8 †å( ‹å0 ã>    ë c …eáíÿj    Pã C …EÝíÿJPã S …UÙíÿZ4ã  …ÔíÿP á8 †å( ‹å0 ã)    ë c …eÌíÿj    Pã C …EÈíÿJPã S …UÄíÿZ4ã  …¿íÿ` á1†å3ã  …¹íÿ
  993. Uáp Á` ÁP Áp áë€àã€⇦â@ã  á áøëPŶàUáöÿÿÚRëððÿë †å8†å,‘åŴåËï’åãÅfiíÿê@-é ãÃï ãÄï| ãïå ã ã  ãï€ýè@-éVà  Eà áŵ€à€à  ãPà ŵRüÿÿZ áÄï,ï€ý8~ ãïå ã ã  ãï| ãïÁï
  994.  ã …åÀðÿë@½èuíÿê@-éVà  Eà áŵ€à€à  ãPà ŵRüÿÿZ áÄï,ï€ý8~ ãïå ã ã  ãï| ãïÁï‡å ãï
  995.  ã …å ðÿë@½èUíÿê@-éÁïå ã ã  ãï| ãï€ýè†å0ã  …Gíÿ
  996. ²ë †å8†å,‘åŴåËï ãŴå ’åãÅ☓ðÿë:íÿê8 †å( ‹å0 ã‘ë c …e3íÿj    Pã C …E/íÿJPã S …U+íÿZ á†å0ã  …%íÿ
  997. !ë # …%jðÿ; íÿê †å8†å‘åŴåã › ãî íÿê †å8†å ‘åŴåã ⇨ íÿê@-éH†åŴâBïPáüÿÿJ€ýè4ãíÿ
  998. 3ã4íÿòÿÿëë3ãû
  999. ýìÿê4ã
  1000. ü†0 Ŵ ŴÐôìÿê†åpãñìÿ    3ãB… …ëìÿê4ã
  1001.     
  1002. 3ã1
  1003. 3ã3ðÿ
  1004. 3ã
  1005.     3ã
  1006. 3ã!
  1007. 3ã=
  1008. 3ãW
  1009. ×ìÿê8 †å ‹å0 ã-ë c …eÐìÿjÓê†å0ãÌìÿ
  1010. ²ë‘å1ãÈìÿ
  1011.  ‘å    €âÉê†å0ãÂìÿ
  1012. ¨ë‘å1ã¾ìÿ
  1013. €â‘ç    €â¾ê †å8†å‘åŴåËï’åT@â`â  á! á†å0ã­ìÿ
  1014. ›ë‘å1ã©ìÿ
  1015.  0°åSá¦ìÿZQâ‘    €¦
  1016. 0°åSáøÿÿJå    €â ê †å8†å‘åŴåËï’åT@â`â  á! á ŵâ†å0ã‰ìÿ
  1017. të‘å1ã⇩ìÿ
  1018. €â1‘çSáŷìÿÚ0°åSáüÿÿÚ‘å    €â☓êL1†åPA†å@Tâ|ìÿJPA…å ›ç †å8†å‘åŴåËï ŴåØërìÿê4ã’
  1019. P’å ŴåËï’å`’å@àPPàhìÿJÅR áQ á☓á†åUácìÿZYŶâã!
  1020. †å áMë0ã†å áV ¤¸ïÿë †å8†å,‘åŴåËï ’åãÅ8†å‘åŴå  ãŴå ã Ŵå    Eâ@ á€ á`âŴå @âŴåÉïÄðÿë>ìÿêy ã€ ãïÿ1ã#Eâ    Pã C“òÿ[  á á’òÿë 0†å”O…âÐPOâz\EâXá†åSŶà¾ë    Pã)ìÿJ☓†åŴâPá%ìÿZL†åP!†å€2ã`Ŵ ŵP!…"0 á@BâP›åP◰ä@TâûÿÿÊŴà`åê áròÿë á      ã0 ã|ë †å8 †å ‹å ŴåËï ’å0’å Bà9EâC1 á◰2 á0Bà0CâTQ…å ’å~ ŵâ Ŵå0Ŵå    @ ãà   êÀá†åãøëÿ
  1021.     PãöëÿJ☓†åŴâPá Q    @⠠ဠáT `â †å8†å‘åŴåËï ŴåLëæëÿê@-éàã  ã5ï0ŵâ  ã5ï ŵâd†åh†å@ áQ á †å ãÁå ãÁåÁåÁåÁåÿ` ãàÁå$àÁåàÁå%àÁå ãï“`…â?„èÒï †å8†å4‘åŴåÆï ãÄ…å€ýè4ãÍ
  1022. 4ã
  1023. ·ëÿ
  1024. 4ãµëÿÀ1†å    0â    3ã±ëÿë ãfë jP á”o…âp ã†å á⇦!†å0 á@ ãñïPŶâ`ŷâpWâõÿÿ †å ãŴå ã ŴåLOâs @â‘åŴå ãÀ1†åã⇦!†åç’ëÿê?@-é@ ã    0 ã8 †å ‹å”_…âäë cŶä0◰â@Tâùÿÿ?€ýè’å0ã~
  1025. 0ãïÿ
  1026. 0ã²
  1027. 0ã¤
  1028.  
  1029. 0ãp
  1030. È Oâs,Bâ ‹å0á0
  1031. Ô Oâs,Bâ ‹å0áN
  1032. à Oâs,Bâ ‹å0áC
  1033.  Oât,Bâ ‹å0á)
  1034. ø Oâs,Bâ ‹å0á@
  1035.  Oât,Bâ ‹å0áB
  1036. $ Oât,Bâ ‹å0á H Oât,Bâ ‹å0áÐ
  1037. 0ã²
  1038. 0ãv
  1039. Lëÿê’åh Oât,Bâ ‹å0áN
  1040. Eëÿêÿ@-é@
  1041. ïj †å8 †å0 ‹å0 ã Ŵå0ŴåÎï0’åÔäÃä0ãûÿÿ ãŴå ŴåÍïÿ€ýè †å8 †å0 ‹å0 ã Ŵå0ŴåÎï’å,†åw Oâ€,BâRë †å ãŴå ŴåÍïÿ€ýè’å0ã0  …ëÿ
  1042. Ŵâ.êx†å0ã8†åãàÔ †å(’å$ Oâu,Bâ ‹å0á
  1043. ëÿ6 ã …åëÿêFOâŴAâ… ãï á†åç ëœë ãï¥jå ã ã  ãï÷êÿê6 ã …åôêÿêÿO-造áx°†å;ã° -é8 †å0 ‹å0 ãDë c …e{jàâ  …w    Pã1 C …EsJ☓á†åé‰âPá1 S …UmZ  á8 †å0 ‹å0 ã.ë c …eejàâ  …a    Pã1 C …E]J☓á†åé‰âPá1 S …UWZ° á Zá  *À °*À  *Àå ã ã  ãï
  1044. ‘ áPÐMâ     áñÿëÿ ã à!4à!Dà!Tà` á á á9ë á7ë á5ë á3ë  ã ïMj á áP  ãÔï á á`ûÿë  ã ïCj     á áP  ãÔï á áVûÿë  ã ï9jIâ    Pã Cëðÿ[  á     á á0 á”O…âtPOâŴ\EâXá†åSŶàë á áBûÿë
  1045.  ã ï%j‘⇨â YáÀÿÿÚPЙâ½è°[â-¹ÿÿÿ•ýè@-é Pã. CPã. S ïj€ýè ã áïgêÿê ã áïcêÿêÿ@-éx`†å6ã` @ áP áå ã ã  ãï@‡åPÐMâ“å áP  ãØï á áûÿë á,†åÖ Oâ◰,Bâxë á á ûÿë
  1046.  ã á ïíj á,†åü Oâ◰,Bâlë á áÿúÿë“å áP  ãÔï á áøúÿë
  1047.  ã á ïÚj ☓â áñúÿë
  1048.  ã á ïÓj0“åp“å @☓âpWâJ& ã á ïÊj“ä€à áP  ãÔï á áÜúÿë
  1049.  ã á ï¾jìÿÿêå ã ã  ãïPЙâ`Vâ¯ÿÿ  ã á ï²jÿ€ýè’åR ã ï(ju ã ï%jn ã ï"j  ã ïjOâ⇦ @â †å(Ŵâÿ  ã0 ã@ ã#ïj0 á  á †å’å ã ïj! ã ï jR ã ï    ju ã ïjn ã ïj
  1050.  ã ïjÛéÿê  á ãï á+ï’åÀá†å0áÒéÿ
  1051. (’å  Oâz,Bâ$0Oâz<Câ@‹åP›å0á0Èéÿ`’åvã
  1052. 0áÃéÿ
  1053. 8 †å(0‹å,@‹å6á6½éÿ’å Ŵå ãŴåàã$Ŵå Oâ⇦ @â,Ŵâ, ã0 ã@ ã#ïj †å, Ŵâ¶0Oâ⇦<CâÓäÂä0ãûÿÿBà€âÀãŴå ã ’åçïfléÿê) ã …å†éÿê8†åãàÔ6 ã …å”éÿê@-é ãd Oâ,Bâ0 ã ï7j†ås ë0‘ä0Câ  á ã ï/j€ýèÿO-éØïÿë` á ã¨ Oâ,Bâ0 ã ï%j ã2ë1ã ã áÈ O,BÔ O,B0 ã ïj ã¡Oâ⇨AâïP á5z ã á Oâ€,Bâ0 ã ï ji ã⇦†å á †åD1†å@ ãñïj0›å3ã`ŷôÿÿiFâ`ŷây ã
  1054. VãÚ⇦†å á †åD1†åJ ãñïôj ã áD!†å: ã ïîjzâjFâíÿÿê⇦†å á †åD1†å@ áñïäj ã áD!†å0 á ïÞjÿ•ýè° á ãàã'ïÄÿÿj0 á ãïÀÿÿj@!…åÀï ã  á OâŴ,Bâ0 ã ïÃj© ã€ ãY ã-é⇦†å á †å0 á@ ãñï½è¶j0ãPŶóÿÿ‘Ŷâ    Iâ-é ã  á  á0 ã ïªj½è    JâIâd  ã‹à  ãPà ŵÂüÿÿÊ áÄï⇦†å
  1055.  á †åD1†å
  1056. @Ià
  1057. TãJ Ã€ÈÓñï”j ⇩àD!†å0 á á@†åDA†åJ☓âZ ã'ï⇧j€⇦ãP á` áp á ã  áD!†å*ŵâ0Dà ï€j5ã
  1058. 5ãÒÿÿ
  1059.   á0 áæÿÿêÁï ã@!†åï P áÿ•ýèÿ@-é☓a†å6ãÿ€ý#ïÿëP áŷâ⇦†å †åD1†å@ ãñïoj ã áD!†å0 ã ïij`Fây ãpâ
  1060. VãÚ⇦†å á †åD1†åJ ãñï]j ã áD!†å: ã ïWjzâjFâíÿÿê⇦†å á †åD1†å@ áñïMj ã áD!†å0 á ïGjÿ€ýèÿO-éP áïîÿë,ÐMâ á8†å‘åŴå
  1061.  ãŴåÎï°’å,Йâ ãFë j1ã    
  1062. ` á‘ á ã?ëj1ã
  1063. p á ã9ëX€â⇦†å †åD1†å@ ãñï#j›åpà ã.ëój€ áã° °  [㰠àãÓë ãÑë9ãŴ
  1064. ⇦†å á †åD1†å    @ áñïàj@ á á ã5ïÛj  á<⇩âÀë,⇩â¾ë-é ã áD Oâ☓,Bâ 0 ã ïùj½è á ã5ïŵâ  á@â®ë á  ã5ï á©ë ã§ë ã¥ë, ã£ë¢ë á     ã5ï0ŵâ◰= á0◰ã á ã5ï´ ã0 á€0◰à á ã5ï´ ã0 á◰à•ë| OâŴ,Bâ@‹ätãŴ
  1065. 0áúÿÿ@å ã á    ï0 Bâ ã    ï⇦†å á †åD1†å` á    @ áñï’j@ á á ã5ï…j  á<⇩â €àpë,⇩â €àmë-é ã á⇦ OâŶ,Bâ 0 ã ï¨j½è á ã5ïŵâ  á@â]ë á  ã5ï áXë ãVë ãTë, ã €àQëPë áNë2ê⇦†å á †åD1†å    @ áñï^j@›å€@Äã á ã5ïXj  á<⇩â €à<ë,⇩â €à9ë-é ã áX Oâŷ,Bâ 0 ã ïtj½è á ã5ïŵâ  á@â)ë á  ã5ï á$ë ã"ë ã ë, ã €àëë áë;ã
  1066. ⇦†å á⇦!†åD1†å @ áñïTjD!†å  ŵà«1 á2å ë‹å
  1067. ë0Sâùÿÿ
  1068. ` á
  1069. VãÚ⇦†å á †åD1†åJ ãñïAj ã áD!†å: ã ï;jzâjFâíÿÿê⇦†å á †åD1†å@ áñï1j ã áD!†å0 á ï+jÿ•ýè ãï( ã …å|çÿêÿO-éÏíÿëP á8 †å ‹åD†å Ŵå
  1070. 0 ã0ŴåÎï aj  á ã%ëÜ…åà…å‹åãp =
  1071.  ãëp c9jQãp C6Jp á܆åà†å1ã1
  1072. ( C …EðüÿJ@ á á⇦†å †åD1†åñï aùj4㛀À–
  1073. D†å0 ã ã5ï aïj´ ã1 áŴ0◰á ã5ï aèj´ ã1 á7◰á     ã5ï aáj ŵâŵ=◰áH OâŶ,Bâ‹äpã
  1074. 0áúÿÿ0åä0…åä…âÜ…å ãà…å8 †å ‹å0 ã¦ë c …eºüÿj° á…†å á‘†å’à“†åœ à☓†åŴâPá7 S …U­üÿZ  áyë ãwë…†å á‘†å’à€à,€âœà€ânë“¡†å‘ ã°[âÿ•ýH…†å á‘†å’p à,€âdë     áD†å  ã Ŵå Ŵå Ŵå  ãØï‘⇨â a†jD†å’åVë’åTë’åRë…†å@âO둆å@âLë ãJë ãHë܆åà†åQã( C …EtüÿJ@ á á⇦†å †åD1†åñï a}j4㛀À
  1075. D†å, ã3ë2ëD†å0 ã ã5ï aoj´ ã1 áŴ0◰á ã5ï ahj´ ã1 á7◰á     ã5ï aaj ŵâŵ◰áë!ê` á7ã@ 
  1076.  ãfë@ c
  1077. jQã@ CJ@ á á⇦†å †åD1†åñï aJj,☓âëë áëD1†å@TâJ›çýë@☓â›çúë@Dâöÿÿê…†å á‘†å’à    :ã ⇦†å☓†åŴâ †åD1†å@ ãñï a,j›åçë ⇩â€Hâ
  1078. XãÚ⇦†å
  1079.  á †åD1†åJ ã ⇩à€Hàñï aj›ä×ë@TâûÿÿÊîÿÿê⇦†å
  1080.  á †åD1†å@ á ⇩à€Hàñï aj›äÈë@TâûÿÿÊXÿÿê  á0 á@ áÁï ã@!†åï á á0 á@ á,ï~ #/å ã ã  ãïï ã áï á+ïâÎã<@-éP á—ìÿë ãPUâ
  1081. ⇦†å †åD1†å@ ãñï›å0ãŴôÿÿ<@½èòfiã⇦†å †åD1†å@ ãñï›å0ã<@½òfi@âŴâ à à à<€ýè@'ï †åPã OB™ @B O™ @ O™ @  ’å$0’årãL@†3ŵ
  1082. 8†å@ ã’ä0á>
  1083. @Tâúÿÿ ã€ÐMâ áôï€Ð™b
  1084. æÿj àãà á’äpã  ûÿÿrãæÿ
  1085. 10ŵâ9Sã0◰ÂÔ†å0ãO‰ @0ãO‰ @àfi>O‰ @0ã*O‰ @0ã&O‰ @X
  1086. 0ã/O‰ @T
  1087. 0ã8O‰ @P
  1088. 0ãAO‰ @L
  1089. 0ãßåÿ
  1090. €Ð™âÜ…â ÐäX2ã   Áä=2ãùÿÿÜ…â@êÿÿÿÿ`⇩»@dâ4ãÐO‰ @9
  1091. 4ãÙO‰ @5
  1092. @ á€MâŴåËï ’å’å Bà0’å’å0Cà †å’å@àŴå’å@àŴå á€M†å€0åÖï€PMâ ”ärã°åÿ
  1093. @Mâ@Ŵå ŴåÎï `†å„å0’åPáóÿÿJ0’åPáðÿÿZ„å 0’åPáìÿÿJ0’åPáéÿÿZŴâÜ…â Ðä Rã=  C ÁäúÿÿZÜ…âÿÿÿê  á †åŴâ,†å¼ë ŵâ Âã †åBàŴåpOâ⇧ @â‘åŴå ’å’å Ŵå ãçï€åÿ꺠Oâ•,Bâ0ŴâÒäÃä0ãûÿÿA0 ã8 †å’å‹ä0á
  1094. 0◰âQ3ãùÿÿoåÿêOâ‘ @âÜ…â ÐäX2ã   Áä=2ãùÿÿÜ …â †å$Ŵâ,†å‰ë †å Bà ŵâ Âã Ŵå’å Ŵå ’å ãçïVåÿê ãï Rãð …Eð A¥…âð…å ã0‹ä0ŴäPâûÿÿ0‹ä0Ŵäsã0‹0Ŵùÿÿð á−åÿë„ëÿëÀ†åã⇨
  1095.   ã    0 ã@ ã”_…â”ä¥ë0◰â@Tâúÿÿ0ÐMâ á8 †å ‹å Ŵå+0 ã0ŴåÎï’å,†åh!†å0 á5@Oâ—LDâàÔä=>ãàÃûÿÿ0 ŵâ ÃäàÃä  áKë0ЙâÐMâ⇦†å ã †å0 á@ ãñï½è0Aâ☓1…å#5 á †å8†å‘åŴå% ãŴåÎï’å á  ã×ïjK ãÁäb ãÁä ãÁä †å8†å‘åŴå% ãŴå ãŴå ŴåÎï †å8†å‘åŴå# ãŴåÎïP’å ã¤þÿëj1ã  á⇦†å †å0Mâ@ ãñïå€Àã á  ãÖïê á,†åàOâ−,Bâë †å8†å‘åŴå# ãŴå ãŴå ŴåÎïÐMâ8†å‘å á  ã Ŵå☓1†å◰1°á€0 0câ0Ŵå+ ãÒ ŵâ ŴåT  ã  Ŵå×ï8†å‘å ã!àã1 ã@ ãÑï}ë´äÿê †å8 †å‹åŴå)ë‹åŴå&ë ‹åŴå#ë8‹åŴå ë¥äÿê@-é,ÐMâ á Ŵå0ŴåÎï’åã 
  1096. ’å ã!ï àc á,Йâ@½hòfic€ýè@-é@ á8†å!‘ç †å Ŵå0ŴåÎï’åã
  1097.  ã
  1098. ’å á      ãÔï€ýè ã“ê@-é,ÐMâ á Ŵå0ŴåÎï’åã óÿÿ
  1099. ’å
  1100.  ã!ï àc á,Йâ@½hòfic€ýè@-é,ÐMâ á Ŵå0Ŵå  áÎï’åã ßÿÿ
  1101. $’å ã
  1102. à ãPâfiüÿÿRá AR á‡å$ ‡å×ïàAà á ãŴå ŴåÍï ’åÓï’å0á’0,Й€ý?-éP á@’å 0’å ’å’å’åÒï?½è,Йâ€ýèãþÿë_ëÿëàã ã5ïd …åàã ã5ïh …å;ëÿë4€†å4†å€â0á/
  1103. —äpãøÿÿ
  1104. †å◰ï` áŵï4à†åà‰â>áq† q†à×å*>ã !†1†@ ãP ãŴï8 †åP áPåp ãpWâáÿÿJ°Œä  á †å@Ŵâÿ$ ã@ ŵã< á@0◰ãÖï †å@ Ŵâ°Ŵå‹äpãîÿÿ
  1105. Ŵå  áŴåÿ ã ŴåÍïôÿÿê4†å‘åpã÷ãÿ
  1106. †å àã ŴåL †å Ŵå  áÿ$ ãŴå  ŴåÍïìãÿê ’å@ Bâ0àã°Oâ⇦Aâë ãÔ…å ã…åàã…åXëÞãÿê ’åF Bâ0’åàOâ⇦Aâ ë ãÔ…åÕãÿê ’åF Bâ0’åôOâ⇦Aâë ãÔ…åÌãÿê@-éÈ0†åÌ@†åë‡èsãÑ, `0 ‘1#ȆåÔï€ýèïG-éÑ墠အ⇩à ⇩â ⇩àPÑä`à〠á ÐMâHOâ„ @â‘å™å ™âPÂåP áT ãÂå= ãÂå á,†åÔ ë^ëp á 0◰â…Oâ„ @â‘å◰ä ã◰ä, ã◰ä ã◰äØ`†åVã`àÃ4`†E`„E‘Õä1 ãÍå á,†å ™â» ë @◰å@ áCëPáp Á9ã⇦  ◰åOâ– @â‘åvã@€ÿÀ €◰å ã◰åÿ ã◰åàã◰åÕäŵ0ãý0ý0ã
  1107. €@â-é ã%ýÿë1ã½èêÀá†åãà›åå‰ãà◰åÿ0ãý0
  1108. þ0ã8à†áfià◰ áàÕåPŶàPŶâ ◰å-é
  1109. 0 á“ÿÿë½èÝå€â:0ãA Íå0◰â‘Yâ¸ÿÿ Йâ 0‡åp◰åïýè@-évã
  1110. @ á á⇩ï á–ïCà Dà⇦ïŴâ á€ýè á Ñä RãüÿÿZAàAâ áŴâ á€ýè@-é áàÑä.>ã
  1111.  ^ãúÿÿZßÿÿë€ýèà ãàaåÛÿÿë.à ãàÁå€ýè’å Ŵâ8 †å0‹å0áÎ 8 †å00‹å0á 8 †å0‹å0á] 8 †å0‹å0á⇩   Aâ ’å0’å’å` áèï؆åPããÿZ †åÓï?’è0áÿâÿ-é  †åŵåŵå áÎïP ã’å ã     
  1112. ’åÐä QãPŶRûÿÿZ½èÒïëâÿê ã§êP†å0ã×ãÿ
  1113. ø†å0ã †å8†å‘åŴåËï ’åã ø…ü…= Øâÿ
  1114. Bïø†å€@à XãJ†å Pã S…UB_ø…UZ€â…å-ë †å8†å‘åŴå     ãŴåÎï’äŴåÉïCçÿë †å8†å‘åŴåËïðXã·âÿJ †å ’å ’å @à½Rã Sü…U¯âÿZ0€âàã  ã5ï ŵâd†å! á †å Sà0CÀ 0Ŵå0’Å0CÀ0ŴÅÅï ãü…å ãÐïœâÿê@-éA†å Tã@ S 0Oâ£<CâA◰à@Mâ8†å‘åŴå     ãŴåÎï ’å€âÔäÀä1ãûÿÿ€ýè@-éBï†å@à  á†åqã 0á€ý…å °á
  1115. hOâ–AâÑä â0ã
  1116. 0ãùÿÿ Râ÷ÿÿ †å Ñä "â Àä RãúÿÿZ  †å    ê ã…åàã…å †å,†åfi Oâ£,Bâ⇧ ë  †å,ÐMâ á8†å‘åŴå ãŴåÎï’å,ЙâÒä Qã CÀäúÿÿZ,ÐMâ á8†å‘åŴå ãŴå ãŴå ŴåÍï,Йâ€ýè@ á4ãò 4ã( 4㶠K †åÏï ’å0’åP Bâ(0◰â8†å’ç` áÔï؆åPã,âÿZ †åÓï?’è0á'âÿ-é  †åŵåŵå áÎïP ã’å ã 1
  1117. ’åÐä QãPŶRûÿÿZ½èÒïâÿê@-éÔ†å0ã
  1118. €Mâ8†å0‘åŴåËï ãŴå’å@âŴå؆åKPãàSàCŴåÅï€ýè€Mâ8†å0‘åŴåËï◰àãŴå’å“€âŴå؆åKPãàSàCŴåÅï€ýè@-éÔ†å0ã
  1119. 0ã
  1120. 0ã€ý’å0ã
  1121. ê€Mâ8†å‘åŴåËï’å@âŴå؆åKPãàSàCŴåÅï€ýè€Mâ8†å‘åŴåËï’å°@âŴå؆åKPãàSàCŴåÅï€ýè€Mâ8†å‘åŴåËï’åä@âŴå؆åKPãàSàCŴåÅï€ýè@-é0ÐMâ¬1†åS㠠㠠à C0cB0  á8†å‘åŴå ãŴåRá  Ŵå ã Ŵåë ãŴåRá  Ŵå ã Ŵåvë ãŴåRá  Ŵå ã Ŵåmë ãŴåÎï’å$ ’å áÕï0Йâ€ýè@-éÔ†å0ãÐO§ @
  1122. 0ã¡O§ @
  1123. 0ã€ý’å0ãäO§ @
  1124. 0ãæO§ @
  1125. 0ãO¨ @
  1126. €ýè  á€Mâ8†å‘åŴå ãŴåÎï’åÐä_1ãüÿÿÒä1ãÀûÿÿ€Mâ ãŴå ŴåÍï ãŴåÎï’åÒäÀä1ãûÿÿ€ýè@-é€Mâ8†å‘åŴåËï’å’€â Ŵå؆åKPãàSàCŴåÅïBïø…å ã…å€ýèÀ†åã ⇩ ⇦áÿê †å8†å‘åŴåËï ’åã(áÿë ã|ë$áÿêH-餆娅åë †å8†å‘åŴåX†å⠀Ⱐá †å,Ŵâ8†å‘å( ã8 ãÖï †å, Ŵâ8†å‘åŴå ã Ŵå‹ä 0áà æ àŴåpãŴãöÿÿl†åpã° °  †å,Ŵâ8†å‘å( ã8 ãÖï †å, Ŵâ8†å‘åŴå ã Ŵå‹ä 0áæ à àŴåpãŴÈöÿÿ\†åPã.° C° ° Ã †å,Ŵâ8†å‘å( ã8 ãÖï †å, Ŵâ8†å‘åŴå ã Ŵå‹ä 0áæ à àŴåpãŴ¬öÿÿ ãŴåX†åã  Ŵå ã Ŵå¡ël†åpã  áŴå ã Ŵå) ãŴå–ë ãŴåÎï’å!†åÒå*0ã    -é(ÐMâ á,†åµ Oâ ,BâÔ    ë  á(Йâ½è° ãÒäàÑåÁä Pã C ^ãà C0á° 0ãôÿÿ †å ãŴå Ŵå;ãÍ ãŴåÎï’å !†åÒå*0ã    -é(ÐMâ á,†åE Oâ¡,Bâ°    ë  á(Йâ½è° ãÒäàÑåÁä Pã C ^ãà C0á° 0ãôÿÿ †å ãŴå Ŵå;ãÍ ãŴåÎï’å†å  ãÖï †å ãŴå ŴåÍï# ãŴåÎï’å° …â° ãÒäàÑåÁä Pã C ^ãà C0á° 0ãôÿÿ †å ãŴå Ŵå;ãÍ †å8†å‘åŴå, ãŴåÎï’å(†å  ãØï †å ãŴå ŴåÍï †å8†å‘åŴå ã Ŵå ãŴå$†å0ã  Ŵåë †å8†å‘åŴå ã Ŵå8 ãŴå,†å0ã  Ŵåë⇦ýè@-é’åà’å,MâŴåàŴåÎï’å‡å à’åàà’å0áÍ€ýè@-é° ã †å8†å‘åŴå ãŴåÎï’åãà) ãŴåÎï’åâ  ál†ål…åpãq0á° ÐMâ8†å‘å á( ã8 ã&ŵâ6◰âÖï½è @â  á †å ãŴåÎï’åã ŵX†åX!…å0á
  1127. 8†å‘åàã!àã1 ãA ãÑïÐMâ8†å‘å á( ã8 ã&ŵâ6◰âÖï½è  ã0ã  0ã  \†å\!…å0á
  1128. 8†å‘åàã!àã1 ãA ãÑ暴夅å8 †å ‹å0 ã8ûÿë c …ej†å…å0á°  †å8†å‘åŴå ãŴåÎï0’å †å,†åÅ Oâ¤,BâÐë á ÐäàÑä Rã  C ^ãà C2á2ãõÿÿ†å* ãÀåê` á á!†å1†å@ ãP ãŴï. c …ejŵï†å á Ðä0Ñä Rã  C Sã0 C2á2ãõÿÿê†åÖäÀä QãûÿÿZ° ã †å8†å‘åŴå ãŴåÎï0’å †å,†å­ Oâ¥,Bâ„ë á ÐäàÑä Rã  C ^ãà C2á2ãõÿÿ †å* ãÀåê` á á!†å1†å@ ãP ãŴï. c …ejŵï †å á Ðä0Ñä Rã  C Sã0 C2á2ãõÿÿê †åÖäÀä QãûÿÿZ° ã †å8†å‘åŴå# ãŴåÎï’å°…â Ñä Àä RãûÿÿZ †å8†å‘åŴå ãŴåÎï’åã  $…å, ãŴåÎï’å
  1129.  ã!ï  c(!…å¤ë †å8†å‘åŴå8 ãŴåÎï’åã  ,…å€ýèL-é° ã,ÐMâ á8†å‘åŴå ãŴåÎï’å,Йâ¨!†åÿâ€PâŴBCJ 0Oâ©<CâàÓä >ãüÿÿPâúÿÿZàÓä Ñå:á° àÁä >ãøÿÿÿ â    Pâ2J  áh0Oâ©<CâàÓä >ãüÿÿPâúÿÿZàÓä Ñå:á° àÁä >ãøÿÿÿâPâ J  á°0Oâ©<CâàÓä >ãüÿÿPâúÿÿZàÓä Ñå:á° àÁä >ãøÿÿÿâPâJ   áø0Oâ©<CâàÓä >ãüÿÿPâúÿÿZàÓä Ñå:á° àÁä >ãøÿÿ ãAå,ÐMâ á8†å‘åŴå ãŴå ãŴå Ŵå;ãÍï,Йâ…ýè@-é8†å!’ç †å ŴåËïàãŴåë€ýèë†ÞÿêëŒÞÿê@-é’å8 †å0‹å3á
  1130. (0‹å3áA
  1131. 0‹å3á
  1132. 0‹å3á€ýÅï€ýèü†å0ãÅ€ýè@-é’å8 †å0‹å3áZ
  1133. (0‹å3á]
  1134. 0‹å3á€ý,0‹å3á€ýÆï€ýèÀ!†åã€ý ’å80†å›å2á › Ŵ-é@ÐMâ á80†å0›å0ŴåËï ŴåÅï@Йâ½è ’å0ŴåÅïrã€ý Ŵå8 †å ‹å Ŵå ’åL Bâ Ŵå  ã Ŵå ŴåÅï€ýè ’å80†å(›å2á, › Ŵ-é@ÐMâ á80†å,0›å0ŴåËï ŴåÅï@Йâ½èà’å0ŴåÅï~ã€ý ’å0’å’å Bà’å0Cà ŵâ0Câ8†å,‘åŴåËïàŴå Ŵå0Ŵ帠ŵâw?Câ  Ŵå0ŴåÅï€ýèÆï8†å‘åŴåÆï€ýèÆï8†å,‘åŴåÆï€ýè@-éІåŴâPâ €ýà’åŴàùÿÿê@-éAâóÿÿë ‘å€â Râ C€ýHà°å^áùÿÿJ Ã€ýè@-é  áïÿÿë0ã@½òfiAâІåà‘åà‰â@-é€à    @âàã0 áìïPá" CJ@½èà€å áÒÿÿëà‘åà‰âà€ä ‘åàŵâà€ä RâJà‘ä^áúÿÿJ@âР†åà‹å ŵàà‘å€ä áPáúÿÿJ@½èòÞãâÎã@-é  áÁÿÿë0ã@½òfiAâІåà‘åà‰â@-é€à    @âàã0 áìï jPáÑÿÿZ †åP•âŴâ’å"Ŵâ€ä,†åO Oâ¶,Bâäë †åЙâ@½èòfiã@-é0 á ÿÿë0ã@½òfi€âР†åà‹å ŵàQáà’Dà€DûÿÿJ á⇩ÿÿë‘åAâ€ä‘åAâ€åІå’å@âŴå€à    @âàãìï@½èòÞã@-éxÿÿë ã€å  ãà‘å€å€à €âР†åà‹å ŵàQáà’Dà€DûÿÿJ AàІåà’åàNààŴæ    Aâàãìï€ýè@-éAâ^ÿÿë ‘å€â Râ C€ýHà°åàÎã^áøÿÿJ Ã€ýèÀ@-ép á`àãäâ>ã>¸
  1135. >ã>
  1136. >ãS
  1137.  
  1138. >ã2
  1139. >ãÕ
  1140. ã>ã 
  1141. Eêp áâOâ± @â_ëVê@-é!î á>ã€ý Oâ² @â€à`ë€ýè@-éGà`â à ãPãàÇÄ@ÂûÿÿÊ€ýè@-é ÐMâ á   ãÔï  ãÁå ‡å
  1142. PãtOR² @R@[Mâðå01ãüÿÿ
  1143.  1ã@9ë Йâ€ýèÿdÁãd áFc€à`ŷâÄOâ´ @â:ëãÎO² @6ÌÿÿëÔÿÿë áÛÿÿëêòOâ´ @â.ëÄÿÿëÌÿÿë-éÿÁã á GàO bâ8ïpàpGâ½èê-éÜOâ³ @ââ!    €àë½è±ÿÿë-é™Oâ³ @â(â2ã€%âã%"¢
  1144. €àë­ÿÿëâ ŶàëãxO³ @ü€Oâ³ @âùë“Oâ³ @âöë  ãà ãá  ŵâ2ãùÿÿ"ê ŵâ2ã
  1145. à ãáùÿÿ
  1146. ÐOâ³ @âåëŶàãë ŵâ2ã
  1147. à ãáîÿÿ
  1148.  ŵâ2ãà  Bîÿÿ
  1149. Oâ´ @âÔë ŵâ2ãà úÿÿ BâŶàÌëÜÿÿêJOâ´ @âÈëãVO´ @Ľèºê‘°‘‘À‘ð¿ð(ÿ¿ðÿ¿ð)-éå€åà0á)
  1150. 8å8€åà0á9
  1151. DåD€åà0á
  1152. 
  1153. påp€åà0áÀ
  1154. |å|€åà0áÛ
  1155. ŷâ8ã8KãI
  1156. ⇦â8ã.
  1157. ŷâ8ã8Bã@
  1158. ⇦â8ã=⇩ââ0á9ìOâµ @â•ë%ÿÿëxOâµ @â⇧ë*ÿÿë
  1159. â Ŷà}ë|Oâµ @âzëÿ`â…â¨◰ ávh á‡å€âã`@`€ÿâ…â¨◰ áp⇦ áã`F`ŷ áÿÿë½è^êtOⶠ@âmëÿÿë ÿÿë
  1160. â Ŷà^ëøOâµ @â[ëÿ`â…â¨◰ ávh á‡å€âã`@`€ áÿÿë½èFêRO⸠@âŷ⨠   €àSëéþÿëŶâ8ãxO¶ @L8ã⇩
  1161. 8⇩O¶ @F åþÿëŶâ8ãê.Ŷ6—O¶ @3ŷâ8ãè.Ŷ.¸O¶ @+ã
  1162. ÚOⶠ@â&ëÿ€â â  áx€ áæâ>ã>hâ6ã`€&g“>ã`F`ŷ áÈþÿë½è êâŶàëÿ‰â8ã½
  1163. @Oâ· @â    ë`8ãO¹ @ ½û
  1164. `€âBOâ¹ @⨀àëtOâ· @âûëãŒOâ· @âöë>â °á  -é á GàO bâÕïp á½è½èâê€ã½◰þÿ â Ŷàäë½èÚê¼O⸠@âéëþÿëãO¸ @ä◰þÿë⇩â(ŶàÖëO⸠@âÓë€âŶàÐë0O⸠@âÍëHO⸠@âÊë⇦â(ŶàÇë^O⸠@âÄë½èºê Oâ¹ @âã€Çë]þÿëã O¸ @Âaþÿë⇦â(Ŷà´ë O⸠@â±ë€âŶà®ë¸O⸠@â«ë…â(Ŷà¨ë㽇
  1165. ÜO⸠@â¢ë⇩â(Ŷàflë½è”ê¸Oâ¹ @â¤ë:þÿëBþÿë
  1166. â Ŷà”ëOâ¹ @â‹ëxOâ» @âã€Xá†å^ã€R⇩ë½è€êO⺠@â•ë%þÿë-þÿë´Oâ» @âã€Xá†å^ã€R{ë☓Oâ¹ @âxëâŶàuë½èkêdO⺠@âzëþÿëÈOâ¹ @âvëþÿëOâ¼ @âã€Xá†å^ã€RcëäOâ¹ @â`ëãâŶà[ë½èQêO⺠@âVëÿâìâ®ã áp áþÿë½èGê-éOâ» @âã€SëéýÿëãvOº @Nâ0ã⇦Oº @I èýÿë
  1167. â Ŷà;ë☓O⺠@â8ëã
  1168. "ãâ0ã ÿ`â â`ŷá‡å€âã`@`€ áÚýÿë½èêèO⺠@â"ëâ Ŷàëã)Oâ» @âëã
  1169. ã½±ýÿOâ» @âëã*O» @ âŶà ëVë½èêÿàâ â‘á½û
  1170. dOâ» @âë~Oâ» @âýëã~O» @ù ÿàâ â‘á¨ýÿë½èëêã
  1171. ã½⇩ýÿ¸Oâ» @âëëãÆO» @ç âŶàäë/ëîOâ» @âàëãøO» @ܽèÒê`‡å`ŷââ0ã g“ÿâìâ‘á2O¼ @Ï ½Å
  1172. <Oâ¼ @âÊëVOâ¼ @âÇëãVO¼ @à ÿâìâ€áã`F`ŷoýÿë⇩Oâ¼ @â¹ëã“O¼ @µ½è«êA-éþ‰âŴý°Oâ¼ @â­ë`8ã⇩O¾ @³ Ŵý`€â®Oâ¾ @⨀à­ëàOâ¼ @â ëþOâ¼ @â‡ë>â °á  -é á GàO bâÕïp á½èŴýè-é â 0ã=
  1173.  0ã\
  1174. ðOâ½ @â〒ë'ýÿëãtO½ @…+ýÿëë Oâ¿ @âXá†å^ã€Rzë
  1175. â  áë“Oâ½ @âtëãÿÁÿâÿÁãÁãŴá4ÿÿê@-éìOâ¿ @âXá†å^ã€Rfë â  áëäOâ½ @â`ë€ýè@-é á GàO bâÕïp q€ýè-é â 0ãm
  1176. ÈOâ¾ @â[ëñüÿëùüÿëàÿÿëâ 
  1177.  áëÿÿëDOâ¾ @âHë€OâÀ @âXá†å^ã€RBë
  1178. â  áßÿÿëtOâ¾ @â<ë°OâÀ @âXá†å^ã€R6ëâ  áÓÿÿë¤Oâ¾ @â0ëàOâÀ @âXá†å^ã€R*ëâÈÿÿëàâ½
  1179. ÜOâ¾ @â"ëàâ  á¿ÿÿë½èê-é â 0ãz
  1180. °Oâ¿ @âã€ë´üÿë¼üÿë£ÿÿëâ 
  1181.  á®ÿÿë8Oâ¿ @â ë
  1182. â ŶàëPOâ¿ @âë…OâÁ @âXá†å^ã€Rÿëâ  á†ÿÿë€Oâ¿ @âùë¼OâÁ @âXá†å^ã€Róëâ’ÿÿëàâ½æ
  1183. ¸Oâ¿ @âëëàâ  á⇦ÿÿë½èÞêæâ    ââ‰àªOâÁ @⮀ààÐå >ã⇦ÿÿ
  1184. æë|üÿëçâ€â€å‰àJOâÀ @⮀àÞë`àâNOâÀ @â.€ÙxüÿëfOâ @âXá†å^ã€RÈë
  1185. â  áeÿÿë\OâÀ @âÂë    ã fiOâ @âXá†å^ã€Rºëâ  áWÿÿë“OâÀ @â´ëã    
  1186. ¶OâÀ @â¯ëàâ­OâÁ @â€àªë½è êþOâ @âXá†å^ã€R¢ëâ@ÿÿë½è„êãê
  1187. >€ÿÿæâROâ @â.    €ààÐå >ãyÿÿ
  1188. †ë2üÿëæâ>ã>
  1189. çâ€â€å‰àŵOâÁ @⮀à‘ë`àâŷOâÁ @â.€⇧*üÿëãâ
  1190. 0ã
  1191. 
  1192. â Ŷàwë½èmêÊOâà @âXá†å^ã€Roëâ  á ÿÿëÀOâÁ @âië³ÿÿê
  1193. â ŶàeëÜOâÁ @âbë¬ÿÿêOâÄ @âXá†å^ã€R[ëâ  áøþÿëOâ @âUë
  1194. â ŶàRë½èHê5Oâà @âã€Uëëûÿëåâ    âã‰àŷOâ @â.
  1195. €àMëìûÿë„OâÄ @âXá†å^ã€R<ë
  1196. â  áÙþÿë…Oâ @â6ëãÿÁÿâÿÁãÁãŴáöýÿê±Oâà @âã€4ëÊûÿëÒûÿëþOâÄ @âXá†å^ã€R"ë
  1197. â  á¿þÿëôOâ @âëâéâ‘àà ãà 0ãà 0ãà  á±þÿë,Oâà @âëãÿÁÿâÿÁãÁãŴáÎýÿêvã   á Gàà ãàÇåÀ€ýè@-é GàO bâÐä 1ã2Ç Bùÿÿ€ýè@-é Gà\1†åO bâÐäSãaQSzàqR ARSãAQSZàqR ŴR 1ã2Ç Bñÿÿ€ýè(’å àOâ¾ìNâàfiå0á»
  1198. $àOâ¾ìNâàfiå0á•
  1199. ÊØÿê ’å0’årãD
  1200. 8@†å(“å0á,“0
  1201.  “0
  1202. ¼Øÿê(’åtàOâ¾ìNâàfiå0á¶Øÿ’å Ŵå ãŴå ’å ãçï⇩ê(’娠Oâ¾,Bâ ‹å0á¨Øÿ’å Ŵå ãŴå ’å ãçï8 †å  ‹å Ŵå0 ã0ŴåÎï’å,Ŵâ` ã Ñä Àä Rã`ŷRúÿÿZ †å ãŴå ŴåÍï,ŴâÓïp á?’èà–å>áØÿà–å>á☓ØÿP áÒïŴØÿê’å Ŵå ãŴå ’å ãçï(°’å|àOâ¿ìNâàfiå;ád
  1203. “àOâ¿ìNâàfiå;á:
  1204. À†åã  …jØÿ(’å
  1205. 0ã  …eØÿ
  1206. µ OâÒ,Bâ†å‘å,†å…ë †åàãŴåL†åŴå ãŴå ŴåÍï áö OâË,Bâ0Òä3ã0Áûÿÿ, €â0Òä3ã0Áûÿÿ
  1207. ;ã0 OâÌ,Bâ0Òä0Áä3ãûÿÿAâ0 ã0ÁåÞï ãè…å;Øÿê †å’å Ŵå ã ’åçïÿÿÿêÀ†å-â    0ã2  ….ØÿüOâÀ @â‘å †åŴå ã Ŵå⇦!†å ãçï#Øÿê#ë †å,Ŵâê OâÎ,Bâ0Ñä@Òä3áØÿ3ãùÿÿOâÏ @âïØÿê ’å  Ŵå ’å ãçïë
  1208.  ãcùÿë †å,ŴâB OâÏ,Bâ0Ñä@Òä3áØÿ3ãùÿÿiOâÏ @âïþ×ÿêÿ@-é†å ááùÿëà‘å>ã
  1209.  ã áÛùÿëà‘å>ã
  1210. Ŵâd1ã÷ÿÿ     ã …åë×ÿê` áp á †å,ŴâL ãï á7ë$àOâÆìNâàfiå0áU1ëP á/ë    0ãY@ áР†å0‹å1◰àŵà    @âàã-éìï@½è½èRjPáGJІ堑å0€å ŵà0◰à„åŴàŴàŷåRá2Å#ÅûÿÿÊ ã á ŷâ1 á0◰â@ ã ï;j,* ãï á8 †å( ‹å0 ãBóÿëÍÚÿëõÚÿëÿ€ýè@-é
  1211. ï*jà á
  1212. ï*jä‰á
  1213. ï*jè‰á
  1214. ï*j ‰á€ýè@-é áà áÿ  ãà ï;ñÿj.à ï8ñÿj.à ï5ñÿj. à ï2ñÿj€ýè ãï ã …å◰×ÿê ãï" ã”ê ãï! ã …åz×ÿê  á ãï á+ï@-éŴ ã ãÿ  ãï¥Qãà Sà C$†å(†åÀ!†å01†åQã C0ã3€ýã3€ý>ã "€ýèÿA-é ã4†å1ãf 0…‡å0ãÿŴýàãàãìï"5 á ãàã ‡åRá:à Ã á…Å  Á% á0àã@ ãPàã` ãp ã|€OâÐ…Hâfï s0…u4…uÿŴýèÿA-é0†å0ã
  1215. ( ã ã− OâÐ,Bâ.ï j ã ã± OâÐ,Bâ.ï á,Ŵâ ãaâ*ï ã0…å‡å0ãÿŴý ã\ï1ãP P àãàãìï‡å áQá Á:  Ã !…Å5ãP áŴ ã*ï,PEâ%Q á ã ãA OâÑ,Bâ0 ã @ ã` ã.ï ã0…åÿŴýèÀ†åã  …ýÖÿ4†å’äpãŵ’äpãŵÞÿë†å…OâÉAâ’åÝï ã…å—OâÔ @â0 áPï@' †å“0OâÊ<Câ0›å0Ŵå 0OâÊ<Câ0›å0Ŵå00å0◰à0ŴåŴâ  ãÑï  †å= ãÂå ŵâ,†åë@â+ï{@-é0 á@ áPÑä5ã
  1216.  
  1217. 5ãøÿÿ
  1218. `Ôä5á=5ãõÿÿ Ñä
  1219. 2ã2   Àäùÿÿ  á{€ýè{@½è4OâÌAâÑä0Òä0á Ëÿÿ=0ãøÿÿPOâÌ @â+ïPÑä5ãïÿÿ
  1220.  
  1221. 5ãúÿÿØÿÿêâÎã@-é0 á@ áPÑä5ã@½òfi
  1222. 5ã÷ÿÿ
  1223. `Ôä5á=5ãôÿÿ€ýèPÑä5ã@½òfi
  1224. 5ãùÿÿêÿÿê@-éÀ†å3OâÖAâ@Ñä4ãz
  1225. ‡å Ðä0ÑäaRãzàrR  BRaSãzàsR 0CR Rã  Ó2á3ã0 
  1226. ïÿÿê0Ñä3ãüÿÿçÿÿêd†å‘å1ã€ûÿÿd†å@à, ãô ŵãQáhZ  áTã
  1227. Tã
  1228. TãD
  1229. Rê á@ á9ïz ã€ã!ïJj áÀã☓å  ã☓å ã☓å ã ☓å€ýè,-é ã  ã  ãï,½h!j›å0ãøÿÿ
  1230. 0àOâÈìNâàfiåàóÿÿ-é$›å◰à  ‡åÒäàÑä Pã Ó0á½èÿÿ0ãöÿÿ½è›å,½è à ãàŵåà ãàŵå?ÀãÀãŵå ã ŵå€ýè@ á ã€â á!ïj á  áìÿÿê@ á
  1231.  ã á!ï    j á  á à ãàŵåà ãàŵåŵå ã ŵå€ýè †å€â,†å  Oâ×,Bâ8ÿÿë@âÐOâÛAâ’å€åЙâ@½èòfiã †å€â,†å< Oâ×,Bâ*ÿÿë@âOâÜAâ’å€åЙâ@½èòfiã@-éÀ†ådA†å0“å3ã€ý“å0ã
  1232. 0ã
  1233. 0ã'
  1234. @☓àóÿÿêÔOâØ @âï ï“å@ÐMâ á@  ã8ï q@Йâ
  1235. ïï@☓àãÿÿêOâÙ @âï ï“å@ÐMâ á@  ã8ïÑä Pã C_0ã 0ã÷ÿÿ@Йâ
  1236. ïï@☓àÍÿÿêgOâÙ @âï ï“å ÐMâ á   ãØï Йâ…OâÙ @âï
  1237. ïï@☓à»ÿÿê@-éÀ†å1ãd†à à€€ýÛOâÙAâ@Ñä4ã‘ÿÿ
  1238. ‡å Ðä0ÑäaRãzàrR  BRaSãzàsR 0CR Rã  Ó2á3ãñÿÿ0 á‡å0ã0àD
  1239. 4ã
  1240. 4ã
  1241. 4ã8
  1242. uÿÿê0Ñä3ãüÿÿÝÿÿê á9ïz ã€ã!ïjÿÿj á8Àã/ê,-é ã  ã  ãï,½hj›å0ãøÿÿ
  1243. “àOâËìNâàfiåàóÿÿ-é$›å◰à  ‡åÒäàÑä Pã Ó0á½èÿÿ0ãöÿÿ½è›å,½è?0Àã8Ãã@ ã ê ã€â á!ï?ÿÿj áôÿÿê
  1244.  ã á!ï9ÿÿj0 áÿÿÿê  ãd†åà’å>ã
  1245. ’å0áŴøÿÿsã’0ŴóÿÿŴà  ã-éà‘äàŴä>ã½ëÿÿ
  1246. -éà^â½öÿÿ
  1247.  ‘ä Ŵäùÿÿê2ã
  1248. €ýè †å€â,†å† OâÚ,BâPþÿë@âlOâßAâ’å€åЙâ@½èòfiã@-éOâË @â- ãŴâFï ã€ýè@-éÀ†åÀ†åã>@ á ã’åÄ…åBï@…åŴ ã ãÿ  ãï¥QãZ2 ã ÑåÌ!…å( ÑåÔ!…å ã ’åÜ!…å ’åä!…å ’åì!…å  ’åô!…å ’åü!…å ’å"…åÄ ã ãÿ  ãï …å"…å  ã—•â   á0 ã@ï…å("…å,2…å á ãÀ…å ã8…å †åŵå …åïЙb€½h ãÀ…å  ã†å("…å,2…å@ï€ýè †å€â,†å OâÜ,Bâöýÿë@âÜOâàAâ’å€åЙâ@½èòfiã ãÀ…å  ã†å("…å,2…å@ï ãè…å ãì…åï
  1249.  
  1250. Oooh! That was fun!
  1251. And... anything below here is probably a virus.
  1252. s     WonderWorks     WonderWorks     WonderWorks     ïРáëï
  1253.  
  1254. Announcer, by Andrew Clover of DoggySoft.
  1255.  
  1256.   0TASK%dy%mnAnnouncer24ÿO-éÈ ã(å! OâÀïï ãY•â  ã ŴåïU•âV•â  ãT0OâÁïJ sS•r-•r.N•rzàã ã5ï0 ã" á0 ŵâ!Ïå ã5ï0 ã" á0 ŵâ!Ïå ãúÏåJ ãø•âì •â.ïä•r³Ob-éàã  ã5 á  ã5 á ã5ïŵ á ã5ï‹ áJ ã¨•â‡è.ï á ã5á ã5ï² á  ã|•â‡èD`•âPp•âíï4 ã €â`•â½èª0Hà«@IàP ã.ïàãªHà« Iàª0⇦à«@⇨àÑïÝïÿ•ý詼j25126{,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwsCtADtADtADtADtADtADtAADtqe13e!eADtqqvRV#SGvQvADtUq!fGvQWvvADtuqbvR3TV!UE5v!5S!DD51%ACuvB4D415$BDTR3e1%ACAADev3dV!DD5DT&!E4!DCDS!5CCUADttw$1CvA6q%q's7QGtQw1wvQgu'&wvQ7a&wQa'us7gu'&a'Vva7vQav1ufu1WQGADttªfvgf}rWqaEDTws!g!gw1WAg33SGr!&fQwvt1Wrct633usr!&fQa'v5v1WAg33SGaW#a'bAWsu1WRWADtwªªªªª}v}qFts!g1gw1WAW17brUtvt1W!gts17brUa'!Svv1WAW2eG!w&AWsu1W!U#AWADts¦ªªªªªvs5s¦jW1T&qQQgs!guAw1WvuWAgAgva'q'sfa7!suWAga'Av1Wv!drfvwtQWqAWADtbffvÖªªªªªªvrvgDCugªªjvfvwWqcecV!eD#e1F!eVEaV1eD3D$eBDD4AFRfU4caVQUD4e1G!eVEQED1W!DDD!e5CG!eF#DADt1ugªªªªªªªªz6a¦ªff¦ªªªªªªªgqaADts§ªªªªªªªªmgE3a¦ªªªªªªªªªªª7qVADtt­ªªªªªªªªªmvs­ªªªªªªªªªªªGqQADtQ§ªªªªªªªªªªgagEDDeתªªªªªªªªªªª}qADtQ§ªªªªªªªªªz!t×ff­ªªªªªªªªªªªªªÚGqBvwwwFuwQwwADtt­ªªªªªªªªªg!vªªªªªªªªªªªªªªjffw'qtwwwwwwgvw'awwswGADtc§ªªªªªªªªªªWa§ªªªªªªªªªªªªvF33qswwF#1Swwgvw'!33swWADtcw¦ªªªªªªªªªª}1תªªªªªªªªªªzq3!13!#!##!1ww6Qwwvw'!CE3!33!DAUU1TU42uwg323CECU41TU51TU4ADtBDTvתªªªªªªªÚgA§ªªªªªªªªªªª}qBvW1ew'dwwBEAw1vw1ww1vw1wwuwrgqwwTUvwgwwwwWawwSwgawwtwwwww%uwwwwvwGvwww5vwwwWtwwwww&twwwww%ADtb§ªªªªªªªªªvFBDTvªªªªªªªªªªªªvqAtG15r7U1wsGv15ag!6Ag25ag!6AgRrWqgswgvwwgUvwwawwwwgawwrww53tww2uwg3vwwWUwwwwUuwwaww4!twwrww53twwADt!תªªªªªªªªªvugÖªªªªªªªªjfwfÖvq!w'Et7TQwbW!w2t'T2t'Taw17uwWvwW!vw'awwGawwuwWvwswWvwGqwwww'sw6AwwuwWvwADt1§ªªªªªªªªª}6u¦ªªªªªªªjW2SfqQwUwWsW1w!uWwVwVQwatwgvw'uw'awwawwswwwwgEswWvw'awwvw'BUwwwwwswwwwgEADta¦ªªªªªªªªÚ7vªªªªªªªwqrwAw7wrw3Tf$Aw&Aw&AwTrww!vwvw'uw'awwawwdwwwwwwswWvw'awwvw'bwwgUUwwdwwwwwwADtumvww¦ªªªªza§ªfÖªªj'qvgswawug3rwrw1wbQww&bwwvw'uw'awwaww1SwwswWvw'awwvw'vw&1ww1SwwADtaw5!t¦ªªªzaggDDeg}qAwv't7TuWAv'v'1wA%uwwF#2dwwWvw'uw'awwawwvwWvwswWvw'awwvw'ww7twwvwWvwADt1A§ªªªzrG1eqqWAww&TawS%1w1w1w2%!uwwwwwwWvw'uw'awwawwrwwwwwwgrwwgvw'awwvw'uwwwwwwwrwwwwwwgADtQ§mwfwg1wfE$qsagwgcwgVQGQGQw6Swwww5uwtwQwwQwwBvwwwV!vwguwQwguw!vwwWvwBvwwwVADtrw5!uwwf%Rw¶»»vGqqGADt11v¶»»»v71g»»»»»{&qUADtt¶»»»»»{u»»»»»»»wq1BADt!·»»»»»»»w»»»»»»»{qtg4DADtQ·»»»»»»»w»»»»»»»{q3ADt1·»»»»»»»w»»»»»»»wqADtw»»»»»»{7g»»»»»{&qADtQ·»»»»»WRw¶»»vFqADtSwgfwW1DfE$qADt!34#qADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqC!CCDDADD$1DDADtq1evg1fwgtwwqww7awwADtq1w7w7twwqww7awwADtqQwQwAD!#twwqww7awwADtqrwswsWrWtwwqww7!TvwwfESfwwf$awwdffTfwgV$!ff6SvADtq33v723#!333vG3w33v'33#twwqww71vwwwwwwW!uwwwwww7awwtww6!uwwwwww%1wwGtwwADtq!SV43ewRV33v&Q63dw7AwBfvwdvwffSg43S61dwE43Tg%twwgfffffvww7rwwF33uwwswwwVfwwwawwcww6swwgDdwww1wwwwwwADtq1u6qwdGqw1wR7qwR%!w7rgugr'!4bwbwtwwwwwwwwwww7uwWqww!wwwRwwawwcwwG!wwWQww71wwwWADtq1v6vGbgswQw&uWRAwv7bwQwu7Awtwwgfffffvww72CTvwwAwwG!DD$awwWwwWQww73333wwW1wwwADtquWaw1wRw%!vw!wG&!vg1wvW1w!wQwtwwqww7!Tvwwwwwwawwawwwwwwawwwwwwwwwg1wwWADtqbw1vwrw3eV#AwwawWCvVawAwAwawrwtwwqww7uwwgfDdwwawwawwwwww7qwwgfffffff1wwGADtqvWUtWvgDD4AwgswgfED#tGawqgtWvgtwwqww7AwwGawwQww7!DD$awwg#wwwQww1wwGADtqAwdw'%!wGbwwG1wW2!w$awv'!wQwtwwqww7awwtww!wwgbwwawwawwg1wwWAff&1wwGADtqawc%Qwcvgc!WvQwrwv'QwbAwsGQw!vGtwwqww7AwwgEDuwwwswwgDTwwgawwuww&swwWDTvww1wwGADtq1wG3u%rweawF3Ce%1wG1Wrw!vgAqwe%uG!cFsw!tWtwwqww7uwwwwwUww'1vwwwwwwaww1www!uwwwwww%1wwGADtUqRfVQVBefE2dFDEC41eVEQVdfEE#v7UE4U4cffaff&1ewwV!ffV!TvwgFQffcff&TfwfF!ff6ADtu!WsqQwADtVA'qrwADt1715DE13D&1ETd6bDTV15DEqv7ADtQ!fs!WfvA'uusfq3dwW4R!2D!34ADtrqsBDc7avafuc%S&q!DD3DD!Rc!'VrADttq!W17aaQWr17!WS##!2q!7AS#SfDA"41B#Ra6C7Ta1'!7T35ADteDT&!E3D!U4S%!UC3&dA1&ufv%1FbfqVaGDd"7t5QQArFsaARFADtr17qsCqAR&qqad'VaaeGADtr42TqQ!U4Q!53S!42$51A!&T!D3B4CADt1qADtaADtADtADtADtADtADtADtCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww“Ó226õ,,wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwr tBt DtADtADtADtADtADtADtADtADtADtADtADtADtADtqADtqADtqADtqADtqADt!qADtQw6qADteDuqADtQ&"27q11aff&1ffV!ff6ADtq322tu%q1vDTwqww7Awwg1wwGADtt333catq!eww!vwwqww7Awwg1wwGADtV2CCC7V!1qTwwuwqww7Awwg1wwGADtG344DfQ5qvWugqww7Awwg1wwGADt1GCCDDtU!!!bqv7vGqww7Awwg1wwGADtA6DDD4T6bbq!w!w'!f"qww7Awwg1wwGADtQFTTDCCg!!s!1qAwAwQw1wqww7Awwg1DD#341wwGC41ADtqEEE5DDFV'qawawqwQwqww7AwwgRwwwwF1vwww&1wwGbff&AvwwwfffAwADtswwwECD'!!F!!5qqwqwrgqgqww7AwwgQwwwwww'1vwwwww1wwG!www!wwwwwwwww!vwADt1ugffvwET7"Sq!3sg3sw1uGsGqww7AwwguwwwwwwwswwwwwwW1wwGawwGrwwwwww7wwwawwADtSwVTTTUuwu!!!7!!aqRvw7uW!uwwQvww6uWAvgADvWDSvwVugfww5qww7Awwg1wwwgwwww!wwwwwwww1wwGvww1wwwwwwwwwwwuwwADtagFEEUUUUfG"2'""bqAw5sw'1v$uW!fcwww7!wvw'bfwgf&Qw6BWRwW43Sw7qwwwwwwwwwwwgawwW!tww'awwwgvwww1wwGQwwWawwwEdwwwwwwwwwADtQwfTTTTTee7!!1'!"Qq1w&Qwu&awrsw1ws!wG1w1vGsRWwrwqwwwwwwwwwwwgqwwQww7swwWsww71wwGuwwsww'bww7wwwwgUADt1vFEEUUUU'"2'""BqsGAwagQwv1WQw1&ugQwrwaWFAwAwqwwwwwwwwwwwgsww1ww7uww1wwG1wwGQwwguww!wwgwwwwADt1WgTeTeVe'!!1&"""q1wawv'Qw!w#awsuGqwvG1waw!w7qwwwwwwwwwwwgBDDQww7vwwvwW1wwGswwwwWuwwwww'ADtrfewWuvU'"""""""qtWswAwqw!w7rw1'w7sgQw!wrgwGqwwwwwwwwwwwg!Tvww7wwgCD41wwgwww1ww7twwwwwADtV!dv1fuBg'!"!""""&qQwvWsgtwwwtgrQwuGrwwsWwGqwwG33333SwwgAewwwww7!wwW1wwwwww1wwwwwwwwwwwwwADtQe7"sv"u'"""""""dqsw1w7v71w7uwuG6swv'twwu'wGqww7AwwgRwwwwwww71wwG1wwwwwwAwwwwwwwwwwwwwADts"!s&!qv"R7""""""2rqvGqw1wtwawgwgAw7!wuWww1w'qww7Awwg1wwwwwwww7AwwG1wwwwww'AwwwwwwwwwwwwwADt!Gs$"bW""F"""""""2vqAwewQwdw!ww1ww!vgAww7w1wQwqww7AwwgrwwwwV4ww7AwwG1wwwwwwgAwwwwwwwwwwwwwADta%!!A!!2#2"R"2"2"222Rgqqw1Vwrw4Tvg$rwWQwG1vwQw1w!wQwqwqww7Awwgvww61ww71wwG1wwwWwww1ww'wwwADtd""""""C""""""""#"C7qswrrwtwVD3!wwawgwfDqw1wQwqwswqww7Awwgwwg1ww7wwWCD41wwwuww1ww7wwwADt17!!!!!!"""t22222222222rqvW!Grgvwsw'rwTw&sW1wagsgugqww7Awwg!wwG1ww7vwwwwW1wwWrwwWwwGwwwADtr""""""""r%""""""####3Wqw7auWcvwAw7twuwu7A1wsGuG1w'qww7Awwg1wwGaww7vww1wwG1wwGAwwwvwwvwgwwwADt!G!!!!!"!""2B722222222222cq!w7vv'!7uwU3vGvWrws&wF1wwv'awqww7Awwg!wwg!vww7tww7rww1wwGvwwsww&Qww7wwwADtr"""Bfg$""W"#"#"#####"#fq1w7Q'!watwQ'us7!w7Qw'tW!wAwQw!wugqww7AwwgwwwVCuwwwGqwwwETwww1wwGrwwGawwwETwwwwwwADtBf6AG!!!!!1v⇦⇦w42s322222222222bq1w7!v1weqwuw't1w!wgQWAwtu'u'Qw1w'qww7AwwgvwwwwwwwwGAwwwwwwwg1wwGQwww1wwwwwwwwwwwADt!wwwv""""søÿÿ•G"R&#####3#3#"""uqwgt'QwV'Awg!u7wgvQwtwFQwf'sgQgawrwqww7AwwgswwwwwGwwWuwwwwww'1wwGwwwuwwwwww'wwwADtcwwwgs6!!!!!"ŷÿÿÿÿx22v422222222222RWqtwwgawwtwwwWsw6R7qwaw71Qww1wFSvrwW1w&qww7AwwgAwwwwwwwwQwwwwww1wwGsww71wwwwwgwwwADtwwwwwG"""""÷⇦øÿÿ$#B#3#3""""""s6q1wg1g1uwVdwfWQVdwg1wRwwVtWcWef6aff&1ffVdwwgdffRwwwg!ff6QffVQwwwgfffADtAwwwww7!!!!!!1wwÿÿo522222222"2"2"222u6q!!#v7343D1C4!C3ADtawwwwwg"""""2wwwÿÿo%###33333#""""""""uW42Cdq!wADtcwwwwww!!!!"!"wwwÿÿ322222232""""""2222TvwgfqAwADtswwwwww"""""""uwÿÿW"##3#33#"""""""""""##33cqQwADtugvfwww#!!""""Bgÿÿx622222232""""""""2222222uqqwADtvGr$www$"""""""cww6"###33#"#"""""""""""###c7qsgADtuWuUwww#!""""2"2B3222222232"""!"!"!""222Rfgqvg!ADtswwwwww""""""""""#"##3#333#""""""""""""#cFq!cww$1!%dvAVFADtcwwwwww"""""222222222222232""!!!!!!""222bqvwwww71faAerADtawwwwwg"""""""""#"####3337"""""""""""""cqT433DAd!'7rADtQwwwww7""2"2"22222222222B7""""!!!!!""222bq11AV5Ds4UFa1UeAEv'!a7!76eADtvwwww&""""""""#"##3#333C'""""""""""#cq!7QVav#bseQa7Gvq1!7cUADtswwww#"2"22222222222222S&"""!!!!!!""222bqG2AaGdd1'AqV3rQ!'1617ADt1vwwG""""""""#####33333c%"""""""""""2"cqVagff"'sGUaAr7saArfADtRvVu"2"222222222222223t4""!!!!!!!""2s6bqeAr1!u&FqQs'eaaeVADtq#""""#"#"##3#33333v""""""""""sVtqsDqQ177qqe!VQaf7ADtQ62222222222222223CW""!!!!!!!!"22erWqrQ'3a!Q1QUV117S1!&tQADt!7"""#"####3333333s'""""""""""F1qQcVQ!f%1SD61Q!&ecF1f5ADtf2222222222223233u$"!"!!!!!""2"B'qADtr$"#"##3#33333333w""""""""B#RqADtA722222222222233c7""!!!!!!"22r5rqADtW######33333333v%"""""""""t%tqADts3222222223233cg2""!!!!!2222t5FqADts73#3#33333333v'"""""""""##v5'qADt1gg22222223233cw3""!!!!"22222WwqAADtq¶{&333333333CvG#"""""""#3SVq!33#!UDADtt»kw322323233uw522""!!!22222bq13Q73cGd2V!ADt·»»{W333333Cvgw#""2$"""""333tqA435Qr!'A!&ADt!·»»»wg4233dwwd7222s%"!""s323Vq%"1QA1'aA'ADtQ·»»»»vwwwww{Gt6##Bw#""""u63C'qA4!#Q!7decTVcTVC!$gAVVtWagADta»»»»»w¶»»»»vDv222tW""""2VW3cqAAAQ!WQE!7U!7U!7QsGUQa1'ADtq»»»»{·»»»»»gTG33CG7"""""7rVWq2aAQ!Gsr1's1'sVR!uG1'!a1'ADts»»»»{¶»»»»kGs632t372222b!fq3bAQ17dq#'e!'esE!wA7a1'ADtt»»»»w»»»»»{Fv33d7A&""""tq2aAQQeqdT%dT%a$tR7a1'ADtt»»»»g»»»»»{Dg3SWQ5222B7qA1AQrss44AWt1'1a1'ADtt»»»»·»»»»»vdGewA&###uq1B4$QAWa6f3f3g1!FVaa!7ADte»»»k·»»»»»wwwWf2Be&qDAAgfVSTsfwsfwEug1E5QdADtf»»»{·»»»»»GDaww5q!UU%1Q4QADte»»»{·»»»»»'2qQ1T1AADtt»»»{·»»»»»qAQAQaADts»»»k·»»»»kqdU$dU$SADts»»»k·»»»»kqADtq»»»»¶»»»»{qADtA·»»»»»»»»{qADt!·»»»»»»»»{q±»»±±ADtu»»»»»»»»{q±»»±±ADta¶»»»»»»»kq±±ADtg»»»»»»»Gq±±ADtr·»»»»»»q±±»»»»»±»»»±»»»»»»»»±»»±±»»±»»»»»»±»»ADtu»»»»»{q±±»»»»»±»»»±»»»»»»»»±»»±±»»±»»»»»»±»»ADtAw¶»»v7q±»»±»±±±±±±»±±»±±±±±±±±»»»±±±±±±±»±±±±±±±ADt2ewwFq±»»±»±±±±±±»±±»±±±±±±±±»»»±±±±±±±»±±±±±±±ADt!q±±±»»±»»±»»»±±»»±±±»»±»±±±±±»»±»»±±±±±ADtq±±±»»±»»±»»»±±»»±±±»»±»±±±±±»»±»»±±±±±ADtq±±±±±»»»±±±±±±±±»±±»»±±±±±±±±ADtq±±±±±»»»±±±±±±±±»±±»»±±±±±±±±ADtq±±»»»»»±»»±»»»»»»±»»»±»»±±»»»»»»±±ADtq±±»»»»»±»»±»»»»»»±»»»±»»±±»»»»»»±±ADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADt2qŴ⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦ADtf!qŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtcWsqŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦ADtu1GcqAŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦ADtfA7qSRR1sR#1Ŵ⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦ADtWQqc#VSSAdS177UAŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADt1GSfRVTVaFa$d%ReU&q!'bb!QU1!'FQŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtA7a6fAQGa6Bu!GseSwA7!6qAUUQaFQ17aŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦ADtQus!Wuv17tvrfqA7QT5TeQCUSUDsDgSe&TdwBgdUA4GAd7!UutV&cCAV5qTvdU75TecC&Ad7QQ!AV5q5TeŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦ADta1Gs!G!WvAuutVq!w6qVgaq&VQUv#6!1vq6aa7ds!a1rVasA7a1gar1dQawwwwVasgaŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqasCu7Q'vafut17qAws7!7QrestG!'AAGa%'t6qS!7rAq!Aat!7t6A!7Qq!ASQqQAad!7QŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtrqtc5B'afqWfa6eqbd'1asfVt!'11wQ!'q3vff&r!CWQcQaAagffU1vff&Q1aaAQ!CWAraagffU1aŴ⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADtsqw!Waq1Wr1GWQ4q1U!Qqe7e1ARga1qB!7s!F!6aTaQ4rFA&7aQqQ4a!F!6!sqrFQqŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADtua17A7baaGs17!GU5ASqAVAarf!G7QQsqQrQGUa!7aUq1Gq7aGqar1Gqa!7esq7arŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtvff&1Ws1gCu&!g3E7tQ17uwfAWrwq&eusq&16gceQaaB5sacau1Fqb'17"Vs!wQ'31qu1sq&16!wsqb'!GVdQ'31q&16Ŵ⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADtDDDBUc%1#B51$C11eEu'!%QDqugbFRrSV!7e51E$Q1VbVSaC1V1f5%1f4RVcS5cV1a1f5SrSV5S1f4!%5DcV1rSVŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADta1Gqc1ccŴ⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦ADts1'qUQUUŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtsaqEQEEŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtaFS6q6a66Ŵ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtB#qŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqADtqADt1ADtADtADtADtADtADtADtADtADtADtADtADtADtBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDt DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDt'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww¼j246{,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwsCtADtADtADtADtADtADtAADtqADtqADt1T$qADt1VCT&q!1133!33#33#ADts##3sAFUqCTw!efwqww7Awwg1wwGADtG333CVA5!!&q3vgugqww7Awwg1wwGADt174CDDT%&Bbqw7w73qww7Awwg1wwGADtaFETDCCV!!d!!qQwQwawQwqww7Awwg2TffE4!DefE1wwGADD$1DfVDDDD1TADt1TvwvwWCT7DqrwswsWrWqww7AwwgcwwwwwwWRvwwwww61wwGAwwgBwwwwww%wwwAwwADtAffUTUTUewf!!"7"!rq1eUDUv7!TDDv6!TDewVvG!dwwbfwgf&1eVDU51vWUTfV$qwwWDDDDDdwwgQwwgEDvww'Awwwwwwww1wwG1vwgQwwwfvwwwwwwvwwADtAewFEEUTeU7!"1'!"AqSgQw1v$QwtSg1w1UvWAwQw%r6STwbwqwwwwwwwwwwwgrwwAww7tww7Qww71wwG1vwgswwAwwGwwwwE3ADtQ6gdfVefe'""2%"""qcgrw1w&aw!w'"qw#VvGrg1w71wawwGqwwwwwwwwwwwg1333dww7wwgefF1wwWvww!wwGtwwwwwADt1FuV1uu2f'!""""""Vqbw!wGuW!vWvwuWdbwu7swwu7wGqwwG33333Swwg1dvwwwww7!wwW1wwwwww1wwwwwwwwwwwwwADte"!s%"bf"BF""""""2RVq1w7swQwCvFAwg!wgcw51wvGw!wAw'qww7AwwgQwwwwgVww7AwwG1wwwwwwGAwwwwwwwwwwwwwADtc1"!2#23R#2"2"2"2Bd%qrwRdwswFDU4AwgawWDTeEaw1w1wawrwqww7Awwgvwg#1ww7!wwW23#1www6vww1ww'wwwADtb6!"!"!""""s#2"2"2"2"22R6qwGA6sWBvwbw7sw3vWtG11wrWtW!vWqww7Awwg!wwGQww7vww!wwG1wwWQwwgwwWDDDwwwADtR6"!2TE#22W#2#########TFq1w'1Vw'A&tw1ETuGvGaws7!w16!w1w!wswqww7Awwg!www43Svww7rwwW33uww1wwGtww'rwwW33dww'wwwADt!fffd5!!!"!Rŷøÿh62s5"2222323"2"RVq!wWSWAw5VQwFCVwGuAwvg1GQw5VtG1f%QwRwqww7AwwgtwwwwwgwwG!vwwwwwwG1wwG1www!vwwwwwwWwwwADtfwwwgf$!"!"•ÿÿÿ##e&##2#23"2"2"Bv$qRwwFQwFSvwg5CvWCU%afAuWT1wF!egEEFsge43TVqww7Awwg1uwwwFvww1ewwwgE1wwGbwwW!ewwwg5wwwADtawwwwwW!"!"!"2wwgÿÿo4"2232323#""""""2TfD323Cqv71#233#3ADtswwwwwg"!"!"""vwÿÿh####332#""!""""2""#4UUUeqQwADtuWtEwww#""""""Bfŷhf$2222332""""!""""2"2"32SVqrwADttgvfwww#!""""2"22#####3323#"""!"!"!""2"#SgEq3wgR2!C$2CADtrwwwwwg"""""""2"2"22223235"""!"!"!""""22bqefEef&"u1&ra!'ADt!wwwww&""2"2"2"2######23B7"""""!""2""cqr$152aF$B1!4"Ef3tAVsrA5SADtcvwwW#"""""2"2"22223232c&"""!"!"!""""B"bqaAvDD&rAWQet!7a17Vd!EaADt2U5s#2"2"2######3#2323u#""!""!""2sGsq17Gd!eqGFAqaV&QqADt16"2"2"22223232333cG""""!!!"!""""UQGqERE35R3SB#CQSTbAB43!D3$ADtc3"#######3323233v#"!""!2"B#B'qADt1722223232323233u7"""!"!""""2r5sqADts&####32323233uW2""!"""2"##v57qADtQ·w5323233333Cvg3""""!""2"22C7gqAADte»»wF323233Ceww%#22#"!"##33rq3#3AFDD4BD5!ADt1·»»»vwgfffwwgd7222u$"!""t43CFq"!"1QQ!'Q1'ADtq»»»»kw»»»»»gTg2#3fG""""2FeEfq!%Q!G1535E!eE!e"&1e5S3Ss6QGADts»»»»{»»»»»{Fu63SfC6"2"2c!Dq!Q!Gtq"7e!7eeCBgA'a1'ADtt»»»»g»»»»»{TWTf6Q&###T6q22#1QbtrD"D"QFtA!a1'ADte»»»k·»»»»»gvV4dUef$q##3AFDD$!42eDDeDDV!UDB#CQEADtu»»»{·»»»»»2qAADA1ADts»»»k·»»»»kqC43C43RADta¶»»»»»»»»{qADt·»»»»»»»»{qADtA·»»»»»»»fq»»»»»ADtRf»»»»»{q»»ADt1efgwf5q»»±±»±»»±±»»±±»±»»±»±»±»»»±»»±±»»±»±»»»ADt!q»»»»»»»»»±±»»»»»»»»»»»»»»»»»»»»»»»»»»ADtq»»»»»»»»»±±±»»»»»»»»»»»»±±»»»»»»»»±»»»»»»ADtq»»»»»»»»»»»»»»»±±»»±»»»»»»»»»ADtq»»±»±»±»±»»»±»±»»±»»±±»»±»»»»±»±»»»ADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtqŴ⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦ADtUqŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtu!Wsq!Ŵ⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦ADtVA'qBC5RRAdR!&%4AŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADt1715DE13D&1ETd6bDTV15DEq1ddA&aFA1'6aŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦ADtQ!fs!WfvA'uusfq1g$qFW"bq%"6!4"EfD2W$B1f3t3W152aF$""ER$Bs51r$S#Sr$S&152!'W"br$1""EQQ733CS#SrW"bŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtrqsBDc7avafuc%S&q!dt'A'Qteet!71AWQ!7a4vDD&r"U1'sQaAaGDde!vDD&QA'QaAQ"UAraaGDdUA'QŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADttq!W17aaQWr17!WS##!2qAV1arf!GFAQ!eqAqRGdQ!7aUq17q7QGqar17qQ!7!drq7arŴ⇦⇦⇦⇦€⇦⇦⇦⇦⇦ADteDT&!E3D!U4S%!UC3&dA1&ufv%1FbfqTD#c4Sr4D!GCDB#CQA%R3SQSA%RE35AE3$T4TSE!U41aRE3Sr4DESAE3$!&5D!U41r4DŴ⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦ADtr17qdAddŴ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADtr42Tq5Q55Ŵ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ADt1qADtaADtADtADtADtADtADtADtCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ,†SÔ24_u,€   "!"!"!"!"BDDDDDDDDD4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ24_d,€  "14"14"14"14"24CDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ24_pu,€ 4C3"Cãî."Cãîîî."Cãîîîîî."Cãîîîîîîî." îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ24_pd,€ CDDDDDDDDD$"âîîîîîîî"âîîîîî"âîîî"âî"Dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì24_l ,… 2DDDDD"D"D"D"D"D"Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì24_r ,… "!"!"!"!"!"A5A5A5A5A515ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì24_pl ,… SSäSäîSäîîSäîîîSäîîîî"âîîîî"âîîî"âîî"âî"â"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì24_pr ,… 4"D."Dî."Dîî."Dîîî."Dîîîî."DîîîîDîîîDîîDîD#€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL24_a ,¼ 1 DADADADAA4"AD!"AD!"AD!"AD!"A1D!2ÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿL24_z ,¼ "!"@!"@!"@!"@!@A%AA5@A5@A5@A5@15CÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿL24_pa ,¼ D15D1ED1EîD1EîîD1EîîîD!EîîîîD"îîîîD!"îîîD!"îîD!"îD!"!ÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿL24_pz ,¼ 4"A4D."ADî."ADîî."ADîîî."ADîîîî.2DîîîîDîîîADîîADîADA#1ÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿ☓24_drag,X qwwwwwwwqpqpqpqpqpuwwwwpwwwwW1u@W1u@W1u@W1u@W1u@W1u@W1uDW1Uðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿd24_logo,H 1"#!"!eb'"!sG1ws713F!2#23sC2F!3d5#sG1w!dV$1eVs71UBfEb6TS$Q1EfARV4bb%AFc2FbswwwwbWTw"vFeGsGv6!wEe7swVa&es4S%AWAG2eerbTasW"2wBffwCw"swwQwffWsGeBV#v#!R7bU62!FddbfsG1wu&Aw3wA6sGtGQgR&s7cE#VRF3!U3ddD16A5Cf4CbG!vswffcwwb&1vtwwb&1&"""!d6ðÿÿðÿððÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿððÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿðÿÿÿÿðÿÿÿðÿÿðÿÿÿ|22_d,Ô!"D"A$!"D"A4!"D"A4!"D"A4!"D"B4!B2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿ|22_u,Ô   ""!""!""!""!""1DDDDDDDDD4DDDDDDDDDDDÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|22_pd,ÔDDDDDDDDDDDCDDDDDDDDD"îîîîîîîîî"âîîîîîîî!"îîîîîîî"âîîîîî!"îîîîî"âîîî!"îîî"âî!"î"!@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿ|22_pu,Ô#1$C$"1Dî"Cäî."1Dîîî"Cäîîî."1Dîîîîî"Cäîîîîî."1Dîîîîîîî"Bäîîîîîîî."Dîîîîîîîîî" ÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬22_l,ìACDDDDDDDDDD"D""D!"D""D!"D""D!"D""D!"D""D!"C"Cðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿ¬22_r,ì""""!"""!"""!"""!"""!"ADD4ADDDADDDADDDADDDD 4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¬22_pl,ìDADDDADäDDîADäîDDîîADäîîDDîîîADäîîîCDîîîîDäîîîî"âîîîî""îîîî!"âîîî""îîî!"âîî""îî!"âî""î!"â""!""ðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿ¬22_pr,ì4#D3D3#D>3Dî3#Dî>3Dîî3#Dîî>3Dîîî3#Dîîî>3Dîîîî3#Dîîîî>3DîîîîDîîîîDîîîDîîîDîîDîîDîDîDD4$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl22_a,L B0D@DADADADADADADA$AA#"A4"AD""AD!"AD""AD!"AD""AD!"AD""AD!"B D"BBD!2ÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿl22_z,L"" ""@!"@""@!"@""@!"@""@!"@"@!"AADBD$@AD@DD@AD@DD@AD@DD@AD@DD@DB 4!Dÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿl22_pa,LD$1$DDDADDDDDADäDDDîDADäîDDDîîDADäîîDDDîîîD DäîîîDBDîîîîD!"îîîîD"âîîîD""îîîD!"âîîD""îîD!"âîD""îD!"âD""D!"$"!€ÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿl22_pz,L4"ADD"A$D""AD."ADî""ADî."ADîî""ADîî."ADîîî""ADîîî."BDîîîî"2Dîîîî."DîîîîDîîîî Dîîî@DîîîADîîADîîADîADîADADA4A$!PŶÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÜ22_drag,☓ÝÝÝÝ}wwwwwww×ÝÝÝÝÝÝÝÝ}UUUUUUU×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝÝÝÝÝ}P×ÝÝÝÝwwwwwPwwwwwtVUUUPUUUvGMw wÔÝt'rGÝÝMw wÔÝÝÝt'rGÝÝÝÝMw wÔÝÝÝÝÝt'rGÝÝÝÝÝÝMw wÔÝÝÝÝÝÝÝt'rGÝÝÝÝÝÝÝÝMw wÔÝÝÝÝÝÝÝÝÝt'rGÝÝÝÝÝÝÝÝÝÝMw wÔÝÝÝÝÝÝÝÝÝÝÝt'rGÝÝÝÝÝÝÝÝÝÝÝÝMw"wÔÝÝÝÝÝÝÝÝÝÝÝÝÝtwGÝÝÝÝÝÝÝÝÝÝÝÝÝÝMwÔÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝDÝÝÝÝÝÝÝÝðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿ†22_logo,ä!#2!#d1faGvaGeVaGvaGU7CaGv!#2#aG22#!#!'16AaGv1ww7QwwaGwQwwAgsCd1TAtQc&RWQE%bETagffwqWcgsgv7aGaWtWu7AwwaQ!1Ca471Va!sQawwwwb1wwaWaWvwQgAw$FraAdr$!'QAac1agDDvTvww#aww!wffwAgAuddrtsqaaE1aGvrwfw1waww1wwwwAgr1UVD!WeV$rqq'QaGvt1ww14ags7!wAgtB6F1!s7e!U"qd1saGvuawvaGaGagvQWAgs2We%qR1q$Va!Q6aGvtwwwswwaG!wswwAgQ6!6QVA5$11EE!U3qETQ6eQvf1uVQ6d1vF1VsU1WBDðÿÿðÿðÿÿðÿðÿÿðÿðÿÿÿðÿÿðÿðÿÿÿÿðÿÿðÿÿÿðÿÿÿÿðÿðÿÿÿðÿððÿÿðÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿÿÿðÿðÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿððððÿðÿÿðÿððÿððÿÿÿÿÿðÿÿðÿðÿÿÿðÿðÿÿðÿÿÿððÿÿÿðÿðððÿððÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿðÿðÿðÿÿÿÿÿÿðððÿððÿÿÿÿÿÿðÿðÿÿðÿÿÿÿðÿðÿÿðÿÿÿðÿÿÿÿÿððÿððÿÿÿðÿÿðÿðÿÿÿðÿðÿðÿÿÿÿÿððÿÿÿðÿÿðÿðÿðÿÿÿðÿÿðÿðÿðÿÿðÿðÿðÿÿÿÿÿÿðÿððÿÿðððÿðÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿðÿðÿðÿðÿðÿÿððÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿðÿÿðÿÿðÿðÿðÿÿÿðÿ¬24_ptr_froz,,@UU@UªjUTªªªj@¥ªªªªVPªªªªªj“ªªªªªª¥jUUUUª¥Z@©¥Z@©¥jUUUUª“ªªªªªªPªªªªªj@¥ªªªªVTªªªj@UªjU@UU,22_ptr_froz,,TTUU@U©jUP©ªªj“ªªªª¥ªªªªZ@©ªªªªjPªªªªªªPªªªªªª“ªªªªªª“ªªªªªª“ªªªªªª“jUUUU©¥ZUUUU¥Z¥V”Z¥“Z¥“Z¥V”Z¥ZUUUU¥Z“jUUUU©“ªªªªªª“ªªªªªª“ªªªªªªPªªªªªªPªªªªªª@©ªªªªj¥ªªªªZ“ªªªªP©ªªj@U©jUTUUTì2?_dog
  1257. ' ,  dFc$2f21733C6S4Uq54DCdQ"&rDTTDCV%!c!a1vffVCDU6"!SffeefvgU%!!7"!&QwfEEUTeUv"1'!"QAfVdVUffF"!2&""b1FWGdf7eV!"!"""Be""v#!w&2f"""""""e5b3!"2"2B$""2"2"2SVR6!!"!""""""""2"2"2222eR6"!""""""2"#########3fRfgfc5"!"!"""""22""22222222"2"e%Qvwwwg"!"!""""""##"####"2"2""#TFuwwwwg$!"!""""""#"2222322"###"""2"BefUUefvwwwww&"!"!"""2""########3"""#"""2"##3DCUv6Wtww&!"""""""2222232322"""""""""2"2RUfvwwwww&"!""2"2"######32##2""!"!"!2""#s4rwwwwg#"""""2"22223232C'"""""!"!""2"2r!vwww&"""2"2"######323R6""!""!2"2#s1efe%""2"2"2"22323233t#"""!"!!!"""sFsV"2"2"######3232SG"!"!"!"!2"eb7a5"2"22223232333u$""!"!"!"""#B&e########32323dG""!"!2""S7rRV22223232333dW""""!""2"22t'61·{F32323232Cvw$2""""2"#33Fer»»{g52333Dfgw52"B%""""423c¶»»»»vwgvwfgdG##Sw#"2"Bg43V1·»»»{·»»»»{Ev32SFG"2"2c3ffQ¶»»»w»»»»»gc6CeEA&###S6a»»»»·»»»»»gwfV!VCDe5a»»»k·»»»»{1DDQ¶»»»·»»»»{!·»»»¶»»»»ks»»»»»»»»71f»»»»»»»1v»»»»»{SfvfVÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿ…2?0,, "!""""B&""!"SUE3"d"#"uøÿÿh3BW2Qwvøÿÿ'#C&Rwwÿÿ7222"ug÷•f$###""TeU#2232"2""#####3…2?1,, "!"""w""#"!"SU7"w""#"uøÿ•G"w22Awvøÿ$#w"2uwÿÿ7222"Sg÷•f$###""SeU#2232"2""#####3…2?2,, "!""T""2""!"SuBW2"##"uøÿXBG#22Qwvø•'Bw#""uwÿx3222"2e÷•F####""BeU#2232"2""#####3…2?3,, "!"""""2""!"SwE"2"##"U$"TwE"22AwwW$"T##""Tww52222""T•F####"""TU#2232"2""#####3…2?4,, "!"""""2""!"""""2"##"BwwE"""22!u"Buw'##""RwW"22222""BŶx&####"""2D#2232"2""#####3434_radiooff
  1258. ,° ÿÿ!ÿÿÿ1#ÿ2ô!DT"!E?#Rôÿ3#BEÿÿÿ2DDE5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ434_radioon
  1259. ,° ÿÿSTD4$ÿÿÿT4"""34ÿO5"""""3óT#"²»+"""E""»»»""!D""²»+""O#"""""ðÿ2#"""ÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°34_opton
  1260. ,, DDDDDDDDDDD"""""""""D"""""""""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D"""""""""D"""""""""434_optoff
  1261. ,° 1DDDDDDDDD1DDDDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<32_radiooff,4!!""!32!#!33CC4!!41$ "C21D0#"C333D4 3D3ÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿ<32_radioon,4 3D3CD333@4#""2#D#""""#04""»"""B#"»»»"""C#²»»»+""C"²»»»+"!4"»»»»»"4"»»»»»"3"²»»»+"3"²»»»+2""»»»" 0#""»""3""""""""" "ÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿ432_opton,,DDDDDDDDDD$DDDDDDDDDDD"""""""""D"""""""""D"""""""""D"""""""""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D""»»»»»""D"""""""""D"""""""""D"""""""""D"""""""""$432_optoff,, BDDDDDDDDDDDDDDDDDD DDDDDDDDDDBDDDDDDDDDDrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $ê/êjê
  1262.  
  1263. dHacker SWIVe26 2.19 (04 Jun 1995)
  1264. SWI hardware vector claimant and Desktop Hacker tasker suitable for ARM2,
  1265. ARM3, ARM250 processors.
  1266.  
  1267. @-éïdHacker_SWIVe26: not for running!€ýè@-é ã‘åp⇧åÀãâ0ãâ
  1268. 0ã!
  1269. flåà flå0á#
  1270. Йâ@½èòfiãðð ã|⇧墕Ⰰå @â  áê€ã ãŴål⇧å ã[•â   áï ã°⇧å ã ãï ã†•â   áï€ýèÿÁã á€âx⇧å^⇧ât⇧åàÿÿêflåàã € `t!⇧åÙÿÿêÿ@-é ã’ål!œå0ápœŴ
  1271. @½èòfiã ã ãï ãÄ•â   á ï ã•â   á ï€ýè?@-éÀ†å-â0ã?€ýP áÅãð0ã á@-é¤1†åÿ@ ãày ãïÿ1ã#à
  1272. y ãïÿ1ã#à    
  1273. y ãïÿ1ã    #à
  1274. y ãïÿ1ã ãp…å ãh…å@½èð5ã á?€ýè0ãð°@-éÀ†å-â0ã€ý€ýè-造á€â€(âð8á á@-éBï@½èð8á á½è€ýh¸†å1㸅€ý@à¬á†åànâfià€à¸…å8†å€à8…å€ý謆尅å@½è½è´…å•âÀ€ä€ã-é ãð°áWorkÐ-éÀå´†å™åBï@ á°†å0ãüÿÿBï@à8B†å@Dà8B…åÐýèWork?P-éÀåÀ†åâ0ãn|†å0ãk ã|…å‡åÿÀãå—…åÿÀãÀã\flå0á p… h…d†å ’å2ã$
  1275. 0’å3ã
  1276. 3ã
  1277. 3ã
  1278. Ŵàóÿÿê0’å0á0 p0…0 h1…öÿÿê0’å?àÀã>á0 p0…0 h1…îÿÿê-éBï0 á@â†å’åà‰à½èSá0 Sp0…U0 Sh1…Uáÿÿê•â ±èrã&
  1279. 0áúÿÿ•âðŴàBt…àKhLìáhÇhÀÝ€´G$ |;Ø<€=@ Þ¬ ÿÿÿÿC'0ã000
  1280. p†å0ã
  1281.  ã|…åtá†åàfiåà•å?P½èð引â& €â    ê‡åÃã |…?‘ýð?ãÀ†å €ãÀ…å ãp…åŴ ã ãÿ  ãï¥Qã&Z  ã‘åÄ!†å €åÈ…å2 ãÐåÌ!†å ÀåÐ…å(ÐåÔ!†å( ÀåØ…å ã‘åà…å܆å€å‘åè…åä†å€å‘åð…åì†å€å ‘åø…åô†å €å‘å…åü†å€å‘å…å†å€å”…â‡ä€ä‡ä€ä‡ä€ä‡ä€ä‡ä€ä‡ä€äÀ è‡ä€ä‡ä€åÏãð1ã á`€è ІåÜ™â6ïBï8†å€à<…å ãAï4…å0†å`›å6ã
  1282. p›å7ã7› › › 0◰àóÿÿê0†å0ã( ã ã< •â,ŵâ.ï j ã ã$ •â,ŵâ.ï á,Ŵâ ãaâ*ï ã0…åïP á    Aâ€âàãæë     ã‘åŶäEà€åDŶâ    @âàãÓëD ãŶä”…â ã ‘ä ŶäQâûÿÿ€ïzŶâ    @âàãÅë ãŶäêDŶâ    @âàã¾ëD ãŶäŴ¥ì’¥ì¡¥ì±¥ìÁ¥ìÑ¥ìá¥ìñ¥ì ãï RãëKó[,†å0ã    Ŷâ    @âàã¨ë ãŶä ã\ïŶäê ã\ï` á0Ŵâ◰à    @âàãŒë0Ŷä0Câ „ä Ŷä0Sâûÿÿ(Ŷâ    @âàã‘ë( ãŶäj ã ãïŶäï¥èÈ ã ã  ãïŶäÐMâ á ãÁåÿ ãÁåÁå ãÁåÁå ãï ãï á ãÁå ãïÑåàÑåЙâ€à á@ áPãUŴSŶUå ã ã  ãï1ãŴÉ ã ã  ãïŶäÜ ã ã  ãïŶä<†åŶäĠ㠆堠ãïŶäÅ ã†å  ãïŶäxŶâ    @âàãDëx ãŶå‘•â €âŶâ1ïu ãïTŶåã€ã¥ ãïLŶåP Ŷå ã\ïX”å\ ”åAà BàXŶå\ Ŷåú ã ãÿ  ãïT”åã
  1283.      ãà‘å€àà‘å€àà‘å€àà‘å>ãà‘€à‰à€1ãT”åã  2ãT”åã    `Ŷåd Ŷå ã ã/ïh Ŷå ã ã/ïl Ŷå ã ã/ïp Ŷå ã ã/ït Ŷå”åPŶààã ã5ïÿRã  Ã?2ã  0 áŶâ ŵâŵ€à    @âàãêë°á Ŷ
  1284. ◰âŴ áŴâŶä ã/ï ¥èPâûÿÿZ@†å0†åDà€â€à    @âàãÕë@Ŷâ`›å6ã
  1285. p›å7ã› › ›¤0◰àôÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1286. p›å7ã7›å ›å ›åLï    z á◰â †åà’äà€äQáûÿÿÚ@â…åéÿÿê7ã¤0◰àåÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1287. p›å7ã7 ››=7ã› › ›¤0◰àïÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1288. p›å7ã70◰÷ÿÿ›å<†åPá    Ê á◰â †åà’äà€äQáûÿÿÚ@â…åéÿÿê ›å›å=ïñÿÿj7ã› › ›¤0◰àÞÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã"
  1289. p›å    7ã
  1290. 70◰÷ÿÿ›å ‘å  ›å1á    
  1291.  á◰â †åà’äà€äQáûÿÿÚ@â…åèÿÿê
  1292. 7ã
  1293. p ã p€å0◰àâÿÿê☓å‘åŴà ãïéÿÿj@☓â0◰àÙÿÿê@Dà@ŶæŶâ    @âàãìï ãŶåÈ ã•âŴâ’å •â,ŵâÀ1†åãÀ⇦…ð†åãï•â €âï ã ãïÀ†å ÀãÀ…åÀ†å€ãÀ…å â㤕 €ö †å ãŴå ã Ŵ倕â €â‘åŴå ã  ãçït•â €â‘å †åÇïPãñ•@÷ÿÿêöÿÿêêôÿÿêóÿÿêlê]êðÿÿêïÿÿê
  1294. êíÿÿêìÿÿêëÿÿêêÿÿêéÿÿêèÿÿêçÿÿêæÿÿêjêiêãÿÿê’åÜïàÿÿêÈï0ãÝÿÿ
  1295. Êïûÿÿêptr_frozœ†fl −Œ‡fi–—☓Ŷŷ⇦⇨⇩⇧“”ÿÿÿÿŶâ    @âàã0 áìï ãŶä0Ŷäð°áŵâ` á’äpãüÿÿ0Aà◰à    @âàãìï0Ŷä0Sâ„ÄŶÄûÿÿÊð°á$ ã €â$†åM/Oâ0 ã@ ãhP†åUãP SP C` ãp ã.ïŶÿÿê$ ã €â$†å[/Oâ10 ã@ ãP ã` ãp ã.ïzÿÿꀒåL•âŴâ’åŴâ8á«
  1296. 4•âŴâ’åŴâ8á
  1297. 8ãy
  1298. jÿÿêGameD100NoneSqsh ãï4 ã …å †åÜŴâ_ÿÿê †åÜŴâ,ŴâL ãïôÿÿj á ãÐMâ  á0 ã@ ã ïêÿÿj½èh å0á
  1299.  ãÐMâ  á0 ã @ ã ïßÿÿj ½è ãï
  1300.  ãP€åê ãï †å,Ŵâ ãïÔÿÿj PDâïiAâ áàãìïPá{J †å,Ŵâ~ësjP†å`”å6ã
  1301. ”å0ã000PŶõÿÿ@ á`Ŷàp†å„äŶäVáûÿÿÚPEâP…åP áêÿÿêP ãi ã„å`ŷàPUâûÿÿP†å@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê ãŶåP…å     ã‘å    €â”…â  ã0°å0Ŵä Râûÿÿ †å ãŴå ã ŴådflåŴå ã  ãçï¹þÿê áàãìïµþÿê áàãìï3 ã …å¯þÿê@-éL ãï4 c …e€½h á Oâ,Bâ
  1302. ï¬jàÒä0á5 ©
  1303. ï¦jàÒä0á5 £
  1304. ï jàÒä0á5 ‡
  1305. ïŒjàÒä0á5 –
  1306. ï“jàÒä0á# ’
  1307. ï‰jàÒä0á$ ⇧
  1308. ï⇦jàÒä0á$ Ŷ
  1309. ïŵjàÒä0á$   ã
  1310. ï{j ŵá
  1311. ïxj$ŵá
  1312. ïuj(ŵá
  1313. ïrj,ŵáOâ @â‘å0á
  1314. Oâ @â‘å0áX
  1315. % ãfêà-é  á ãàã'ï' cà½h^j0 á ãï3 cà½hXj@!…åÀï
  1316.  á
  1317. ïààãHá…å− ã€ ãp ãj ã ã
  1318.  á    ïà½hAj@ á ã    ïà½h<j0DàJgâSá0 Á€ÈÓ ã
  1319.  áD!†å ŵàP◰à ïà½h/jï    @Aà á@†åD!†å0 áP á    @ á'ïà½h$j€⇦ã‘ á0ãà½
  1320. 0ã    
  1321. p áD†å0SâÒTÁTûÿÿZãÎÿÿà½èê ã
  1322.  áï ã@!†åïÁïà½è€ýè ã    ï j 0Bâ ã) ã ïj ãï€ýè ã@!†åïÁï4 ã …å ãï@½èòfiãhëÀ†åã 0flÝ ãÀ…å|…åï@-éìï jà‡åPá€ÝX@½èà ã á…å    ê@-éìïøÿÿjà‡åPá€ÝX@½èà ã á…å ê     ãP‘åEâä…å5ãPŶà  €ä†åàãìïÿê>ëÀ†å €ãÀ…åÀ•â     €âïBï@…å     ãP‘åEâä…å5ãPŶà  €PŶâ”O…â0 ã ”ä ☓ä0Sâûÿÿ ”åRãPŶÐ
  1323. ÁJ€ïPŶ`jPŶâŴµì’µì¡µì±µìÁµìѵìáµìñµì`àã”åPã±J
  1324. PãÊï”å€ã` ïêŶâ ãeï6ï”åPŶà ã\ï ”åRã‡J
  1325. 2ã    ”å@à ã*ïvã 6ê BâRà ã*ïvã 6 ã\ï@ á“äAâ “ä €äQâûÿÿÊ”åPŶà”åPãG
  1326. xJj ã”åï”åã ÐMâ á ãÁå ãÁ倠ãÁå ãÁ倠ãÁåÿ ãÁå ãÁåÿ ãÁå ãÁå ãï ЙâÜ…â ”å 0”åÿ ãÿ€ã Âá0Ãá ã€à €àŴå# áŴå ãïÈ ã”å  ãï”å¡ áå ã  ãïÉ ã”å  ãïÜ ã”å  ãïĠ㠔堠ãïÅ ã$”å  ãï”å<…å”åPŶà”åPã,JÒ
  1327. ”å@Pã”E@PC”E@PC”E@PC J@ ã”åaïP ã”åaï ”å”åaï ã”åaï=êï”åïïïï ”åïïïïïïïï”倀âïïïï”åïïïïïïïï$”åï”åïïïï”åïïïïïïïï(”åï”倀âïïïï ”åïïïïïïïï,”åï0”åï4”åï8”åïï<”å@ ”åÿ0 ãàï!àïàï"àï ãD”åH ”åEïïL”åïP”åïàã ã5ï0 á ã\ï`à”åà^âà C›à  áX”åŴàAà ã€àÜ…å! áà…åÜ…â ãïdà”åà^âà C›à\”åŴàAà ã€àÜ…åA áà…åÜ…â ãïp ã`”åïq ãd”åïïïïÿ ãh ”å"àï"àï" àïïïïÿ ãl ”å"àï"àï" àïïïïÿ ãp ”å"àï"àï" àïïïïÿ ãt ”å"àï"àï" àïT0”åã ãã€ã”åPŶà”åPã
  1328. RJ@@â¤A á`Ŷâÿ  ãïDâïï0„ä#àï#àï# àïïDâïï0„ä#àï#àï# àï@Tâçÿÿ”åPŶà”å0ã1
  1329. @”ä@Dâ4ãµ @Dúÿÿ”å0ã'
  1330. @”ä@Dâ4ãµK @Dúÿÿ”å0ã
  1331. @”ä@Dâ4ãµ< @Dúÿÿ”å0ã
  1332. @”ä@Dâ4ãµ<â†@; @Døÿÿ”å0ã
  1333. @”ä@Dâ4ãµ
  1334.  @Dùÿÿä†åàãìïP†å”è3ã
  1335.     4ã
  1336. 4ã444PŶôÿÿPŶâµè4ã4ãK4ã<4ãêÿÿ<â†å@à;ïæÿÿêPŶâµè €åâÿÿêBï<†åAà8…å ã¸…å”…â€âÀ±èŴâ`±èïŴ ã ãÿ  ãï¥QãZ  ãȆå€å2 ãІåÀå؆å(Àå ãà†å€åè†å€åð†å€åø†å €å†å€å†å€å4†åAïÀ†å ÀãÀ…å”…â<‘å-å0‘å-å‘å-å‘å-å ‘å-å‘å-å‘å-å‘å-å ã|…å?‘ýèÀ†å âãx•÷⇦q†åÀ†åã ⇦… †å ãŴå ã ŴåHflåŴå ã  ãçïàã ã  ã1 ãA ãÑïÀ†åã $flÝÀ†åÀãÀ…åð°á@'A'B'TASKDesktop Hacker GameSet dHacker$Obey$Dir <Obey$Dir>Set Obey$Dir <dHacker$Obey$Dir>dh_reserveDesktopHacker ‡å0ãïøÿ¬†åpâìøÿÚ°†åŴâQá S°…åæøÿZ ã|…å?‘ýèÀ†EÀCÀ…E‡åKPã    Jí ã
  1337. àNâPáJ ‡åpã
  1338. À†å€ãÀ…å—•â     €âðêÀ†å€ãÀ…å“•â     €âêê—•â     €âçê‡å 0ãÌ• €â
  1339.  
  1340. 0ã\• €Þ
  1341. ½øÿêP†å ‡å0‡å@‡å”è0ã
  1342. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åãÿÿêP†å†å €âŶâQáœøÿZï ‡å0‡å@‡å    Sã”øÿJ ãŶäSá S C¥è ãŶåP…å⇧øÿêP†å ‡å0‡å@‡å”è0ã☓øÿ
  1343. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åoøÿêP†å ‡å0‡å@‡å2ã2høÿ
  1344. ”è0ãeøÿ
  1345. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åPøÿêÀ•â €âmêt•â €âjêP†å†å €âŶâQáDøÿZï ‡å0‡å@‡å    Sã>øÿJ ãŶäSá S C¥è ãŶåP…å4øÿêBï8B†å@€àP†å†å €âŶâQá+øÿZï ‡å ŵà0‡å@‡å    Sã$øÿJ ãŶäSá S C¥è ãŶåP…åøÿêP†å0‡å@‡å”è0ãøÿ
  1346. 1ã111PŶöÿÿ ”åà”å1á>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åÿ÷ÿêb…år…å ŵ…å$‹…åŴ ã ãÿ  ãï¤QãëJ ãòï0ãçÀ†åãä
  1347. 8†å<‘å †åŴåÌï,0’å0@’å4P’å8`’åPEà`Fààã  ã5ï0ŵâàã  ã5ï@ŵâàã ã5ï2 áàã ã5ïB á †åSàÀ áŴå€à ŴåTàÀ áŴå€àŴåŴâ^Ŵâ ‡å0‘å0Câ‘åàÒä ^ãà CàÀä0SRùÿÿZà ãàÀäÁï!åàãŴåÅïÈï0ãÊüÿÿ †åàï ’å0’å @’åP’å€ŴâPEâ@Dâÿ` ã ãÁåàÁå"àÁåàÁå#àÁåàÁå$àÁåàÁå%àÁå ãïj ã ãï‘ áŴ ã ã  ãï2ã1.
  1348. 2ã~ -
  1349. 2ã1*
  1350. ï Òãîÿÿ
  1351.   á0 á †åËïP’å`’åp’倒åPEà`Fà Bà0Cà ãŴåÎï@’å P’å`’åp’åRáVQSQWQ Z ãŴåÎï@’å P’å`’åp’åRáVQSQWQZÉÿÿê ãM•âê ãk•âÿÿÿêp á€ á †åpŴåÎï ’åàÐäf>ãF>ûÿÿlà†å~ãà 0à‰â9^ãà‰ÂàÀå  á ’åàÐär>ãR>ûÿÿ2à ãàÀå0 á  ãŴå ŴåÍï1 ãÂåÃåj ã     áïàã  ã5ï@ŵâ  ã5ï0ŵâàã ã5ï2 á ã5ïB áÿ` ã †å€Ŵâ ãÁå ãÁåÁåÁåÁåàÁå#àÁåàÁå$àÁå ãï †åÆïÃïð áb†år†å ŵ†å$‹†å‡å †åÕ Oâ,BâàÒä>ãàÁûÿÿ. ã Râ
  1352. àÐäàÁä ^ãùÿÿZ‡å0…å †å™å ãÀ…å  ã†å("†å,2†å@ï ãè…åèöÿêb†år†å ŵ†å$‹†åÀ†å€ãÀ…åk•âÿÿÿꆅ唅âà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€ä”ï…â?fiè—á†åãè‰ã à•åà à €á…åtá†åàfiåà•åà•âðå á á ñ…åïÂó?ã á á†åã€á†>-é†á†å †åâÎãâà‰áÂã‰ã½èð°áà ã|á…å+ï`jÿ@-éP†å†å €âŶâQáXZ ã0‡å    SãTJ ãŶäSá     S
  1353.  C    ¥è ›åŶä ãŶåP…åHêGjÿ@-é’å€à ãïjP†å†å €âŶâQá;Z ã    Sã8J ãŶäSá     S
  1354.  C    ¥è ›åŶä ãŶåP…å,êÀá†åàÎãÀá…å)ê_ã&ê8â†u€p$êÀá†uà‰sÀá…u⇦…uêÀá†åàÎãÀá…åêÀá†uàÎsÀá…uêÿ@-éjP á` áp á@†å†å €â☓âQá Zï    SãJ ã☓äSá S Cá¤è ã☓å@…åÿ@½è”ï…â?‰èfiå †åâÀã€á-åfiå-åfiå-åfiå-å fiå-åfiå-åfiå-åfiå-åp†å0ãÀ†05öÿ
  1355.  ã|…å?‘ýè
  1356.  
  1357.  
  1358. Do I not like that.
  1359. And... anything below here is probably a virus.
  1360.  
  1361.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     %ê0êLê
  1362.  
  1363. dHacker SWIVe32 2.19 (04 Jun 1995)
  1364. SWI hardware vector claimant and Desktop Hacker tasker suitable for ARM610,
  1365. ARM700, ARM7500 processors.
  1366.  
  1367. @-éïdHacker_SWIVe32: not for running!€ýè@-é ã|⇧å%•â°Ŵäl⇧å ã €âiïp⇧åx⇧å^⇧ât⇧å ã|⇧å ã•â   áï ã°⇧å ã ãï ãP•â   áï€ýè@-é ãpœål!œåih ã ãï ãÄ•â   á ï ã•â   á ï€ýè?@-éÀ†å-â0ã?€ýP áÅãð0ã á@-é¤1†åÿ@ ãày ãïÿ1ã#à
  1368. y ãïÿ1ã#à    
  1369. y ãïÿ1ã    #à
  1370. y ãïÿ1ã ãp…å ãh…å@½èð5ã á?€ýè0ãð°@-éÀ†å-â0ã€ý€ýè-造á€â€(âð8á á@-éBï@½èð8á á½è€ýh¸†å1㸅€ý@à¬á†åànâfià€à¸…å8†å€à8…å€ý謆å@â°…å@½è½è´…å•âÀ€ä€ã-é ãð°áWorkÐ-éÀå´†å™åBï@ á°†å0ãüÿÿBï@à8B†å@Dà8B…åÐýèWork?P-éÀåOáD…å?âà‰áÀâê‰áà™åáH…åÀã€ãð)áÀ†åâ0ã{|†å0ãxD†åP…åH†åL…å ã|…å‡åÿÀãå—…åÿÀãÀã\flå0á p… h…d†å ’å2ã$
  1371. 0’å3ã
  1372. 3ã
  1373. 3ã
  1374. Ŵàóÿÿê0’å0á0 p0…0 h1…öÿÿê0’å?àÀã>á0 p0…0 h1…îÿÿê-éBï0 á@â†å’åà‰à½èSá0 Sp0…U0 Sh1…Uáÿÿê•â ±èrã&
  1375. 0áúÿÿ•âðŴàBH`´K<LÀá<Ç<ÀðÝT⇦Gø P;¬<T=¸Þ$ÿÿÿÿC'0ã000
  1376. p†å0ã
  1377.  ã|…åtá†åàfiå8à•åP†åðiáL†åð)á?P½è ðflåtá†åàfiåà•åD†åðiáH†åð)á?P½èðå‘•â% €â¥ê‡åÃã |…?‘ýð?ãÀ†å €ãÀ…å ãp…å  ã‘åÄ!†å €åÈ…å”…â‡ä€ä‡ä€ä‡ä€ä‡ä€ä‡ä€ä‡ä€äÀ è‡ä€ä‡ä€åÏãð1ã á`€è ІåÜ™â6ïBï8†å€à<…å ãAï4…å0†å`›å6ã
  1378. p›å7ã7› › › 0◰àóÿÿê0†å0ã 4†f 0…4…ïP á    Aâ€âàãÞë     ã‘åŶäEà€åDŶâ    @âàãËëD ãŶä”…â ã ‘ä ŶäQâûÿÿ€ïzŶâ    @âàã½ë ãŶäêDŶâ    @âàã¶ëD ãŶäŴ¥ì’¥ì¡¥ì±¥ìÁ¥ìÑ¥ìá¥ìñ¥ì ãï RãçKï[,†å0ã    Ŷâ    @âàã ë ãŶä ã\ïŶäê ã\ï` á0Ŵâ◰à    @âàã‹ë0Ŷä0Câ „ä Ŷä0Sâûÿÿ(Ŷâ    @âàã⇦ë( ãŶäj ã ãïŶäï¥èÈ ã ã  ãïŶäÐMâ á ãÁåÿ ãÁå ãÁåÁåÁå ãï ãï á ãÁå ãïÑå€ãЙâŴå ã ã  ãï1ãŴÉ ã ã  ãïŶäÜ ã ã  ãïŶä<†åŶäĠ㠆堠ãïŶäÅ ã†å  ãïŶäxŶâ    @âàã@ëx ãŶå‘•â €âŶâ1ïu ãïTŶåã€ã¥ ãïLŶåP Ŷå ã\ïX”å\ ”åAà BàXŶå\ Ŷåú ã ãÿ  ãïT”åã
  1379.      ãà‘å€àà‘å€àà‘å€àà‘å>ãà‘€à‰à€1ãT”åã  2ãT”åã    `Ŷåd Ŷå ã ã/ïh Ŷå ã ã/ïl Ŷå ã ã/ïp Ŷå ã ã/ït Ŷå”åPŶààã ã5ïÿRã  Ã?2ã  0 áŶâ ŵâŵ€à    @âàãæë°á Ŷ
  1380. ◰âŴ áŴâŶä ã/ï ¥èPâûÿÿZ@†å0†åDà€â€à    @âàãÑë@Ŷâ`›å6ã
  1381. p›å7ã› › ›¤0◰àôÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1382. p›å7ã7›å ›å ›åLï    z á◰â †åà’äà€äQáûÿÿÚ@â…åéÿÿê7ã¤0◰àåÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1383. p›å7ã7 ››=7ã› › ›¤0◰àïÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã
  1384. p›å7ã70◰÷ÿÿ›å<†åPá    Ê á◰â †åà’äà€äQáûÿÿÚ@â…åéÿÿê ›å›å=ïñÿÿj7ã› › ›¤0◰àÞÿÿê@Dà@Ŷæ0†å@Ŷâ`›å6ã"
  1385. p›å    7ã
  1386. 70◰÷ÿÿ›å ‘å  ›å1á    
  1387.  á◰â †åà’äà€äQáûÿÿÚ@â…åèÿÿê
  1388. 7ã
  1389. p ã p€å0◰àâÿÿê☓å‘åŴà ãïéÿÿj@☓â0◰àÙÿÿê@Dà@ŶæŶâ    @âàãìï ãŶåȠ㨕âŴâ’å  •â,ŵâÀ1†åãÀ⇦…ð†åãï“•â €âï ã ãïÀ†å ÀãÀ…åÀ†å€ãÀ…å âã4• €ö †å ãŴå ã Ŵå•â €â‘åŴå ã  ãçï•â €â‘å †åÇïPãñ•@÷ÿÿêöÿÿêêôÿÿêóÿÿêlê]êðÿÿêïÿÿê
  1390. êíÿÿêìÿÿêëÿÿêêÿÿêéÿÿêèÿÿêçÿÿêæÿÿêjêiêãÿÿê’åÜïàÿÿêÈï0ãÝÿÿ
  1391. Êïûÿÿêptr_frozœ†fl −Œ‡fi–—☓Ŷŷ⇦⇨⇩⇧“”ÿÿÿÿŶâ    @âàã0 áìï ãŶä0Ŷäð°áŵâ` á’äpãüÿÿ0Aà◰à    @âàãìï0Ŷä0Sâ„ÄŶÄûÿÿÊð°á$ ã €â$†åM/Oâ0 ã@ ãhP†åUãP SP C` ãp ã.ïŶÿÿê$ ã €â$†å[/Oâ10 ã@ ãP ã` ãp ã.ïzÿÿꀒåÜflåŴâ8á©
  1392. ÌflåŴâ8á
  1393. 8ãy
  1394. nÿÿêGameD100NoneSqsh ãï4 ã …å †åÜŴâcÿÿê †åÜŴâ,ŴâL ãïôÿÿj á ãÐMâ  á0 ã@ ã ïêÿÿj½èh å0á
  1395.  ãÐMâ  á0 ã @ ã ïßÿÿj ½è ãï
  1396.  ãP€åê ãï †å,Ŵâ ãïÔÿÿj PDâïiAâ áàãìïPá{J †å,Ŵâ~ësjP†å`”å6ã
  1397. ”å0ã000PŶõÿÿ@ á`Ŷàp†å„äŶäVáûÿÿÚPEâP…åP áêÿÿêP ãi ã„å`ŷàPUâûÿÿP†å@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê@„ä@DâTã Ú ãŶä ãŶä„äŶä„äŶä„äŶä @Dâñÿÿê ãŶåP…å     ã‘å    €â”…â  ã0°å0Ŵä Râûÿÿ †å ãŴå ã ŴåflåŴå ã  ãçï½þÿê áàãìï¹þÿê áàãìï3 ã …å³þÿê@-éL ãï4 c …e€½h á Oâ,Bâ
  1398. ï¬jàÒä0á5 ©
  1399. ï¦jàÒä0á5 £
  1400. ï jàÒä0á5 ‡
  1401. ïŒjàÒä0á5 –
  1402. ï“jàÒä0á# ’
  1403. ï‰jàÒä0á$ ⇧
  1404. ï⇦jàÒä0á$ Ŷ
  1405. ïŵjàÒä0á$   ã
  1406. ï{j ŵá
  1407. ïxj$ŵá
  1408. ïuj(ŵá
  1409. ïrj,ŵáOâ @â‘å0á
  1410. Oâ @â‘å0áX
  1411. % ãfêà-é  á ãàã'ï' cà½h^j0 á ãï3 cà½hXj@!…åÀï
  1412.  á
  1413. ïààãHá…å− ã€ ãp ãj ã ã
  1414.  á    ïà½hAj@ á ã    ïà½h<j0DàJgâSá0 Á€ÈÓ ã
  1415.  áD!†å ŵàP◰à ïà½h/jï    @Aà á@†åD!†å0 áP á    @ á'ïà½h$j€⇦ã‘ á0ãà½
  1416. 0ã    
  1417. p áD†å0SâÒTÁTûÿÿZãÎÿÿà½èê ã
  1418.  áï ã@!†åïÁïà½è€ýè ã    ï j 0Bâ ã) ã ïj ãï€ýè ã@!†åïÁï4 ã …å ãï@½èòfiãPëÀ†åã ÐflÝ ãÀ…å|…åï@-éìï jà‡åPá€ÝX@½èà ã á…å    ê@-éìïøÿÿjà‡åPá€ÝX@½èà ã á…å ê     ãP‘åEâä…å5ãPŶà  €ä†åàãìïÿê&ëÀ†å €ãÀ…å`•â     €âïBï@…å     ãP‘åEâä…å5ãPŶà  €PŶâ”O…â0 ã ”ä ☓ä0Sâûÿÿ ”åRãPŶÐ
  1419. ÁJ€ïPŶ`jPŶâŴµì’µì¡µì±µìÁµìѵìáµìñµì`àã”åPã±J
  1420. PãÊï”å€ã` ïêŶâ ãeï6ï”åPŶà ã\ï ”åRã‡J
  1421. 2ã    ”å@à ã*ïvã 6ê BâRà ã*ïvã 6 ã\ï@ á“äAâ “ä €äQâûÿÿÊ”åPŶà”åPãG
  1422. xJj ã”åï”åã ÐMâ á ãÁå ãÁ倠ãÁå ãÁ倠ãÁåÿ ãÁå ãÁåÿ ãÁå ãÁå ãï ЙâÜ…â ”å 0”åÿ ãÿ€ã Âá0Ãá ã€à €àŴå# áŴå ãïÈ ã”å  ãï”å¡ áå ã  ãïÉ ã”å  ãïÜ ã”å  ãïĠ㠔堠ãïÅ ã$”å  ãï”å<…å”åPŶà”åPã,JÒ
  1423. ”å@Pã”E@PC”E@PC”E@PC J@ ã”åaïP ã”åaï ”å”åaï ã”åaï=êï”åïïïï ”åïïïïïïïï”倀âïïïï”åïïïïïïïï$”åï”åïïïï”åïïïïïïïï(”åï”倀âïïïï ”åïïïïïïïï,”åï0”åï4”åï8”åïï<”å@ ”åÿ0 ãàï!àïàï"àï ãD”åH ”åEïïL”åïP”åïàã ã5ï0 á ã\ï`à”åà^âà C›à  áX”åŴàAà ã€àÜ…å! áà…åÜ…â ãïdà”åà^âà C›à\”åŴàAà ã€àÜ…åA áà…åÜ…â ãïp ã`”åïq ãd”åïïïïÿ ãh ”å"àï"àï" àïïïïÿ ãl ”å"àï"àï" àïïïïÿ ãp ”å"àï"àï" àïïïïÿ ãt ”å"àï"àï" àïT0”åã ãã€ã”åPŶà”åPã
  1424. RJ@@â¤A á`Ŷâÿ  ãïDâïï0„ä#àï#àï# àïïDâïï0„ä#àï#àï# àï@Tâçÿÿ”åPŶà”å0ã1
  1425. @”ä@Dâ4ãµ @Dúÿÿ”å0ã'
  1426. @”ä@Dâ4ãµK @Dúÿÿ”å0ã
  1427. @”ä@Dâ4ãµ< @Dúÿÿ”å0ã
  1428. @”ä@Dâ4ãµ<â†@; @Døÿÿ”å0ã
  1429. @”ä@Dâ4ãµ
  1430.  @Dùÿÿä†åàãìïP†å”è3ã
  1431.     4ã
  1432. 4ã444PŶôÿÿPŶâµè4ã4ãK4ã<4ãêÿÿ<â†å@à;ïæÿÿêPŶâµè €åâÿÿêBï<†åAà8…å ã¸…å4†åAï”…â€âÀ±èŴâ`±èï”…â<‘å-å0‘å-å‘å-å‘å-å ‘å-å‘å-å‘å-å‘å-å  ãȆå€åÀ†å ÀãÀ…å ã|…å?‘ýèÀ†å âãx•÷⇦q†åÀ†åã ⇦… †å ãŴå ã ŴåHflåŴå ã  ãçïàã ã  ã1 ãA ãÑïÀ†åã $flÝÀ†åÀãÀ…åð°á@'A'B'TASKDesktop Hacker GameSet dHacker$Obey$Dir <Obey$Dir>Set Obey$Dir <dHacker$Obey$Dir>DesktopHacker ‡å0ã:ùÿ¬†åpâ7ùÿÚ°†åŴâQá S°…å1ùÿZ ã|…å?‘ýèÀ†EÀCÀ…E‡åKPã    Jí ã
  1433. àNâPáJ ‡åpã
  1434. À†å€ãÀ…åd•â €âÙêÀ†å€ãÀ…å`•â €âÓêd•â €âÐê‡å 0ã •     €Ë
  1435.  
  1436. 0ã0•     €Ç
  1437. ùÿêP†å ‡å0‡å@‡å”è0ã
  1438. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åãÿÿêP†å†å €âŶâQáæøÿZ ã ‡å0‡å@‡å    SãàøÿJ ãŶäSá S C¥è ãŶåP…åÖøÿêP†å ‡å0‡å@‡å”è0ãÏøÿ
  1439. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åºøÿêP†å ‡å0‡å@‡å2ã2³øÿ
  1440. ”è0ã°øÿ
  1441. 1ã1PŶøÿÿ”å ”åà”å0á1>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åœøÿê•â €âVê@•â €âSêP†å†å €âŶâQá•øÿZ ã ‡å0‡å@‡å    Sã⇨øÿJ ãŶäSá S C¥è ãŶåP…åøÿê•â €â:êP†å0‡å@‡å”è0ãvøÿ
  1442. 1ã111PŶöÿÿ ”åà”å1á>PŶðÿÿ@Ŷâ0†å“äŶäTáûÿÿÚPEâP…åaøÿêb…år…å ŵ…å$‹…åŴ ã ãÿ  ãï¤QãëJ ãòï0ãçÀ†åãä
  1443. 8†å<‘å †åŴåÌï,0’å0@’å4P’å8`’åPEà`Fààã  ã5ï0ŵâàã  ã5ï@ŵâàã ã5ï2 áàã ã5ïB á †åSàÀ áŴå€à ŴåTàÀ áŴå€àŴåŴâ^Ŵâ ‡å0‘å0Câ‘åàÒä ^ãà CàÀä0SRùÿÿZà ãàÀäÁï!åàãŴåÅïÈï0ãÊüÿÿ †åàï ’å0’å @’åP’å€ŴâPEâ@Dâÿ` ã ãÁåàÁå"àÁåàÁå#àÁåàÁå$àÁåàÁå%àÁå ãïj ã ãï‘ áŴ ã ã  ãï2ã1.
  1444. 2ã~ -
  1445. 2ã1*
  1446. ï Òãîÿÿ
  1447.   á0 á †åËïP’å`’åp’倒åPEà`Fà Bà0Cà ãŴåÎï@’å P’å`’åp’åRáVQSQWQ Z ãŴåÎï@’å P’å`’åp’åRáVQSQWQZÉÿÿê ãM•âê ãk•âÿÿÿêp á€ á †åpŴåÎï ’åàÐäf>ãF>ûÿÿlà†å~ãà 0à‰â9^ãà‰ÂàÀå  á ’åàÐär>ãR>ûÿÿ2à ãàÀå0 á  ãŴå ŴåÍï1 ãÂåÃåj ã     áïàã  ã5ï@ŵâ  ã5ï0ŵâàã ã5ï2 á ã5ïB áÿ` ã †å€Ŵâ ãÁå ãÁåÁåÁåÁåàÁå#àÁåàÁå$àÁå ãï †åÆïÃïð áb†år†å ŵ†å$‹†å‡å †åx Oâ,BâàÒä>ãàÁûÿÿ. ã Râ
  1448. àÐäàÁä ^ãùÿÿZ‡å0…å †å™å ãÀ…å  ã†å("†å,2†å@ï ãè…åJ÷ÿêb†år†å ŵ†å$‹†åÀ†å€ãÀ…å·•âÿÿÿꆅ唅âà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€äà‡äà€ä”ï…â?fiè—á†åãè‰ã0à•åà à €á…åtá†åàfiåà•åLâ†åð)áPâ†åðiáà•âðå á á ñ…åïÂó?ã á á†åã€á†>-é†á†å †åâÎãâà‰áÂã‰ã½èð°áà ã|á…å+ï8â†u€p~êÀá†uà‰sÀá…u⇦…uyêÀá†åàÎãÀá…åuêÀá†uàÎsÀá…uqêpj?-éBï8B†å@€àP†å†å €âŶâQá?¾XeZ ã ‡å ŵà0‡å@‡å    Sã?¾H]J ãŶäSá S C¥è ãŶåP…å?¾èRêÿ@-éjP á` áp á@†å†å €â☓âQá Zï    SãJ ã☓äSá S Cá¤è ã☓å@…åÿ@½è9ê8jÿ@-éP†å†å €âŶâQáõÿÿZ ã0‡å    SãñÿÿJ ãŶäSá     S
  1449.  C    ¥è ›åŶä ãŶåP…ååÿÿêäÿÿjÿ@-é’å€à ãïjP†å†å €âŶâQáØÿÿZ ã    SãÕÿÿJ ãŶäSá     S
  1450.  C    ¥è ›åŶä ãŶåP…åÉÿÿêÀá†åàÎãÀá…åê_ãÃÿÿê”ï…â?‰èfiå †åâÀã€áP†åÀãâ€áP†åÀã€â
  1451. €á-åfiå-åfiå-åfiå-å fiå-åfiå-åfiå-åfiå-åp†å0ãÀ†0xöÿ
  1452.  ã|…å?‘ýè
  1453.  
  1454. It's better then bad, it's good!
  1455. And... anything below here is probably a virus.
  1456.  
  1457.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickMessagesFÿÿÿuhü HTemplatesFìÿÿøN…4E3MessagesFÿÿÿuhü HTemplatesFìÿÿøN…4E3UKUKNick+WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | Note for internationalisers: if you translated the file in Desktop Hacker 1.07, you need only change the following:
  1458. | - Change menu entry IMenu3
  1459. | - Change help message HelpIM3
  1460. | - Change help message Help021
  1461.  
  1462. | Miscellaneous messages
  1463. | The IBarNx tokens must not be longer than 7 characters (To keep a single icon)
  1464. | The tokens that go in icons must not be longer than the icons they go in can take - try editing the templates!
  1465.  
  1466. IBarN1=dHacker
  1467. IBarN2=Running
  1468. IBarN3=Hacking
  1469.  
  1470. WhichKey=Hold down keys now!
  1471. SysFont=System font
  1472. BadFont=(Regular)
  1473.  
  1474. NoDriver=Driverless
  1475. ListHead1= items in list
  1476. ListHead2=Base &
  1477.  
  1478. VictoriaMode=New
  1479.  
  1480. ErrorFrom=Error from Desktop Hacker
  1481. WarnFrom=Warning from Desktop Hacker
  1482. QuesFrom=Query from Desktop Hacker
  1483. EButton1=Continue
  1484. EButton2=Quit
  1485. WButton1=OK
  1486.  
  1487. ProgAuthor=Andrew Clover of DoggySoft
  1488.  
  1489. HackType0=Hot-keys pressed
  1490. HackType1=BreakPoint SWI called
  1491. HackType2=Trapped SWI called
  1492. HackType3=Trapped SWI called
  1493. HackType4=Delay time elapsed
  1494.  
  1495. | Iconised window titles
  1496. | These titles may not be longer than 10 characters (Pinboard limitations)
  1497.  
  1498. WindowA=dHacker
  1499. WindowB=Game info
  1500. WindowC=dHacker
  1501. WindowD=dHacker
  1502. WindowE=dHacker
  1503. WindowF=PicRip
  1504. WindowG=Game view
  1505. WindowH=dHacker
  1506. WindowI=Choices
  1507. WindowJ=MemCompare
  1508. WindowK=dHacker
  1509. WindowL=List
  1510. WindowM=dHacker
  1511. WindowN=dHacker
  1512. WindowO=dHacker
  1513.  
  1514. | Menu titles and items
  1515. | Menu titles may not be longer than 12 characters (RISC OS 2 limitations)
  1516. | Menu items may be any length
  1517.  
  1518. ColMenu=Colours
  1519. FntMenu=Fonts
  1520. LngMenu=Countries
  1521.  
  1522. IMenuT=dHacker
  1523. IMenu1=Info
  1524. IMenu2=Game info...
  1525. IMenu3=Game speed
  1526. IMenu4=Lists...
  1527. IMenu5=Choices...
  1528. IMenu6=Quit
  1529.  
  1530. DMenuT=dHacker
  1531. DMenu1=Game info...
  1532. DMenu2=Save
  1533. DMenu3=Search          F4
  1534. DMenu4=Printout     Print
  1535. DMenu5=Lists...        ^L
  1536. DMenu6=Graphics...
  1537. DMenu7=Compare...      ^C
  1538. DMenu8=Continue
  1539. DMenu9=Kill game
  1540.  
  1541. SMenuT=Save
  1542. SMenu1=Position      F3
  1543. SMenu2=Application  ⇧F3
  1544. SMenu3=Screenshot   ^F3
  1545.  
  1546. LMenuT=List
  1547. LMenu1=Print
  1548. LMenu2=Save
  1549.  
  1550. | Error messages
  1551. | These messages must not be longer than 191 characters (block length).
  1552.  
  1553. Error02=Desktop Hacker cannot hack folders. Drag in an application or a file to hack.
  1554. Error03=You can only hack one game at a time. Before dragging another game in, kill the game currently being hacked.
  1555. Error04=There was not enough memory to interrupt the game when the hot-keys were pressed. Try to free some more using the Task Manager.
  1556. Error05=A message was missing from the Messages file. Replace the Messages file with the original from the original Desktop Hacker disc.
  1557. Error06=You must start up the Desktop and Desktop Hacker before you can hack a game.
  1558. Error07=Desktop Hacker cannot be quit now. Use the ‘Quit’ item on the main menu.
  1559. Error08=You have specified a number that cannot be read.
  1560. Error09=There were no clear list numbers to load this list into.
  1561. Error0A=You pressed Escape to interrupt a process. The process may only be partly performed.
  1562. Error0B=A valid secondary list has not been selected for this process. Please choose a process list before performing the process.
  1563. Error0C=There was an unknown command in the SWI hardware vector, so Desktop Hacker could not start up. Try resetting the machine and trying again.
  1564. Error0D=Somebody else has claimed the SWI hardware vector since Desktop Hacker started up. It is impossible for Desktop Hacker to quit without the other program quitting first.
  1565. Error0E=Desktop Hacker has suffered an internal error in its WIMP routines. The Templates file may be corrupted.
  1566. Error0F=The file you dragged in was not a valid list file.
  1567. Error10=Unkown DesktopHacker_MemoryAccess reason code.
  1568. Error11=The address you specified was out of range. Valid addresses lie between &8000 and &1C00000.
  1569. Error12=Your fonts will not be anti-aliased, and won’t look very nice. It would be a good idea to configure anti-aliasing higher using the Configure program.
  1570. Error13=There is no font cache. Desktop Hacker can run, but its windows will be very slow to redraw. Either allocate a bigger font cache, or use the Choices window to turn fonts off.
  1571. Error14=There is no list selected. Please select a list at the top of this window before attempting to do anything with it.
  1572. Error15=The address you just tried to add was already in the list.
  1573. Error16=Word addresses must be a multiple of 4 (ie. they end in 0, 4, 8, or C). The address you have specified is not a word address, so cannot be used.
  1574. Error17=Attempting to process a list with itself is a silly idea.
  1575. Error18=You have not specified a valid list to cross-reference against in this search.
  1576. Error19=You have not specified a valid list to send the results of this search to.
  1577. Error1A=You have specified a byte value larger than 255 (&FF). Bytes cannot go this high!
  1578. Error1B=Searching for text less than two letters long is a rather poor idea.
  1579. Error1C=The SWI name you specified cannot be found. Check you have typed it right. Remember that SWI names are case senstive.
  1580. Error1D=The SWI group you specified cannot be found. Check you have typed it right. Remember that SWI names are case senstive.
  1581. Error1E=A silly list number was passed to DesktopHacker_ReadList.
  1582. Error1F=An invalid address was passed to DesktopHacker_MemoryAccess.
  1583. Error20=DesktopHacker_MemoryAccess cannot be used as no game is being hacked.
  1584. Error21=This list file does not have a base of &8000; Desktop Hacker cannot load it.
  1585. Error22=There’s no memory left to extend the list.
  1586. Error23=This game position was not saved by, and is not understood by Desktop Hacker.
  1587. Error24=This game position was created by a later version of Desktop Hacker, and has a new format not understood by this version. Contact DoggySoft.
  1588. Error25=This game position is compressed in a format unknown to this version of Desktop Hacker.
  1589. Error26=Guru meditation error.
  1590. Error27=This game position is compressed with Squash. If you wish to read it, you’ll need to upgrade to RISC OS 3.
  1591. Error28=There is not sufficient data in the game to save graphics.
  1592. Error29=Desktop Hacker cannot load this file straight from the other program, as we haven’t seen the !Scrap folder yet. Open a folder viewer containing !Scrap to allow this.
  1593. Error2A=You have not specified a valid file to use in the compare. Please drag an application file to the Compare window.
  1594. Error2B=There is no application memory to use.
  1595. Error2C=You have not specified a valid list to send the results of this compare to.
  1596. Error2D=You have such a huge number of fonts, I don't have space to list them. Apologies.
  1597. Error2E=The font name specified couldn't be found.
  1598. Error2F=To save, drag the icon to a folder viewer, or type a full pathname and press Return.
  1599. Error30=The printer is currently busy printing something else.
  1600. Error31=The range of addresses you have tried to print extends outside the game’s memory.
  1601. Error32=You can't load saved position files at this point. Load and interrupt the game before loading a saved position for it.
  1602. Error33=There's not enough memory to load this position file.
  1603. Error34=Something bad has happened to this file; Desktop Hacker cannot read valid game data.
  1604. Error35=This is not a real game file; the header is wrong.
  1605. Error36=You cannot do this on the Desktop Hacker demo. Send £10 to DoggySoft for a full copy!
  1606. Error37=There is not enough memory in the game for that number of sprites.
  1607. Error38=There are no such HackPoints set up
  1608. Error39=Sorry, you already have the maximum number of HackPoints allowed
  1609. Error3A=There wasn’t enough memory available to reserve the desired amount for hacking. Desktop Hacker has reserved as much as possible.
  1610. Error3B=Invalid HackPoint parameters
  1611.  
  1612. | Help messages
  1613. | These messages may not be longer than 234 characters (WIMP messaging limitations)
  1614.  
  1615. HelpIBN=This is Desktop Hacker.|MDrag a game here to hack it.|MClick Adjust to alter the program choices.
  1616. HelpIBG=This is Desktop Hacker.|MClick Adjust to alter the program choices.
  1617. HelpIBH=This is Desktop Hacker.|MDrag a game file here to play it.|MClick Select to continue the game being hacked.|MClick Adjust to alter the program choices.
  1618.  
  1619. HelpDW=This window displays a disassembly of the game being hacked.|MClick Adjust to add or remove an address to or from the current list.|MClick Select on a word to alter it.|MUse Shift-Select to move to the address referred to.
  1620. HelpLW=This window displays the addresses in the list.|MClick Adjust to move the disassembler to the address, Select to remove an address from the list, or Menu to save or print the list.
  1621.  
  1622. HelpIM1=Click or move the pointer right to see information about Desktop Hacker.
  1623. HelpIM2=Click to see the game being hacked at the moment.
  1624. HelpIM3=Click or move the pointer right to alter the speed at which games being hacked run.
  1625. HelpIM4=Click to open the lists window.
  1626. HelpIM5=Click to alter Desktop Hacker’s choices.
  1627. HelpIM6=Click to quit Desktop Hacker.
  1628.  
  1629. HelpDM1=Click to see information about the game being hacked.
  1630. HelpDM2=Move the pointer right to save things.
  1631. HelpDM3=Move the pointer right or click to perform a search.
  1632. HelpDM4=Move the pointer right or click to print part of the disassembly.
  1633. HelpDM5=Click to see and edit the contents of a list.
  1634. HelpDM6=Click to find and rip graphics.
  1635. HelpDM7=Click to compare memory with an application file.
  1636. HelpDM8=Click to carry on running the game.
  1637. HelpDM9=Click to stop hacking and abort the game.
  1638.  
  1639. HelpSM1=Move the pointer right or click to save the entire game position as a file.
  1640. HelpSM2=Move the pointer right or click to save the game’s memory as an application file (suitable for use with the compare option)
  1641. HelpSM3=Move the pointer right or click to save the a shot of the game’s screen as a sprite.
  1642.  
  1643. HelpLM1=Move the pointer right or click to print the contents of this list to the printer.
  1644. HelpLM2=Move the pointer right or click to save this list.
  1645.  
  1646. HelpCM=Click to choose this country for all the text that appears in Desktop Hacker.
  1647. HelpFM=Click to choose this font for the normal icons in Desktop Hacker's windows.
  1648. HelpGM=Click to choose this font for data icons in Desktop Hacker's windows.
  1649. HelpKM=Click to choose this colour to be displayed in popped-in icons in Desktop Hacker's windows.
  1650.  
  1651. Help000=This window shows information about Desktop Hacker.
  1652. Help001=This shows where the graphics were stored in the memory of the game.
  1653. Help002=This shows the contents of the registers when the game was interrupted.
  1654. Help003=This shows which screen mode was being used when the game was interrupted.
  1655. Help004=This shows how much memory the game takes up.
  1656. Help005=Drag the file icon to a folder viewer to save it.
  1657. Help006=Type the pathname of the file and click ‘OK’ or press Return to save.|MAlternatively, type the file’s name and drag it to a folder viewer.
  1658. Help007=Word searches are performed on separate groups of four bytes, words, which are most commonly used by Archimedes programs.
  1659. Help008=Byte searches are performed on single byte values.
  1660. Help009=Searches for text are performed by checking many bytes to find the string specified.
  1661. Help010=SWI searches look for specified SWI commands in words.|MYou can specify a single SWI by typing its name or number, or any of a group of SWIs by typing the group name without a SWI name after the underline.
  1662. Help011=Mnemonic searches look for the instruction or part of instruction specified in every instruction in memory.|MThis is likely to take a long time. This is always case- and spacing-insensitive.
  1663. Help012=Searches for references check for addresses referred to by any address, any branch command, any position-relative instruction, or any other relative instruction, using the contents of the registers in memory. Hex is implicit.
  1664. Help013=This option applies only to text searches.|MIf selected, they are case-sensitive, meaning upper case and lower case letters are treated as different.
  1665. Help014=This option applies to text and mnemonic searches.|MIf selected, the $, #, %, and & characters are used to specify wildcards. See the Desktop Hacker manual for details of wildcards.
  1666. Help015=This option applies only to text searches.|MIf selected, an extended (and slower) search is used to search for text encoded by simple byte EORing. Note that the first character is case sensitive and may not be wildcarded.
  1667. Help016=If this option is selected, only addresses in the specified list are considered in the search.|MThe resulting list will contain only addresses that satisfied your search conditions and were in the first list.
  1668. Help017=Choose which list to put the results of searches into before doing the search.
  1669. Help018=If this option is selected, the search is for items that are not what is specified, rather than items that are.
  1670. Help019=This option applies only to word and byte searches.|MIf it is selected, the values specified will be taken as hex.
  1671. Help020=Click to start the search.
  1672. Help021=If the ‘Slow down’ or ‘Speed up’ options are chosen, the game’s speed will be altered.|MFor example, a factor of 2 would mean double the speed, or halve it.|MNote that ‘Speed up’ will not work with most games.
  1673. Help022=If this option is selected, sprites saved will have a palette.
  1674. Help023=This shows how many sprites will be converted from raw data.
  1675. Help024=Type an address and click ‘Goto’ or press Return to disassemble a different part of memory.
  1676. Help025=When selected, all addresses in the specified list will be displayed in red.|MYou can then use the arrows to move back and forth through the list. The far left and right arrows move to the first and last items.
  1677. Help026=When clicked on, this button moves the disassembly back to the last place Shift-Select was used from.
  1678. Help027=Click on this button to continue the game from where you left off.
  1679. Help028=This window shows Desktop Hacker’s choices.|MClick ‘OK’ to set them, ‘Default’ to reset them, or ‘Save’ to save them to Desktop Hacker. Click ‘Cancel’ to ignore any changes you have made.
  1680. Help029=Click ‘Change’ and hold down some keys to change which keys activate Desktop Hacker.
  1681. Help030=These options specify the names used for registers in the disassembly window.
  1682. Help031=These options specify whether mnemonics and registers will be displayed in upper or lower case.
  1683. Help032=These options choose between either the standard style, or a style with a unified slab colour and better group borders.
  1684. Help033=These options specify which outline fonts to use and at what size, or to use the system font.|MNote that changing between the system font and outline fonts will not happen till Desktop Hacker is reloaded.
  1685. Help034=This alters which language to use in Desktop Hacker. Currently, the UK is the only language supported.|MNote that changing this will not take effect till Desktop Hacker is reloaded.
  1686. Help035=Click to set and use the choices specified.|MClick Adjust to try these choices, but keep the window open.
  1687. Help036=Click to ignore any changes made.|MClick Adjust to get rid of any changes made and display the old setup.
  1688. Help037=Click to save the choices to the Desktop Hacker program, so that they are used every time Desktop Hacker is loaded.
  1689. Help038=Click to restore the settings to their default state, as supplied with your original copy of Desktop Hacker.
  1690. Help039=This window shows the keys to use in the Graphics Ripper.
  1691. Help040=This option chooses whether to use the game's palette when looking for graphics.|MNormally this should be on; some games, however, use completely black palettes, in which case it should be off.
  1692. Help041=Click to forget about the Graphics Ripper.
  1693. Help042=Click to start graphics ripping.
  1694. Help043=This is the reason why Desktop Hacker interrupted the game.
  1695. Help044=Before comparing, a file must be dragged in or its path typed, and the list to send the results to chosen.
  1696. Help045=This chooses whether to consider whole words, or bytes.
  1697. Help046=If this option is selected, the values specified above are considered to be in hex.
  1698. Help047=If this option is selected, the values looked at are considered to be signed, ie., able to be plus or minus, otherwise the values are all considered to be positive. This is only relevant for increase/decrease compares.
  1699. Help048=If this option is selected, the file is just searched for bits that are different now.|MIf you select the ‘From-To’ option, you can enter the values from and to which these bits have changed.
  1700. Help049=If this option is selected, the file is searched for values that are lower now than they were when the file was saved.|MIf the ‘By’ option is selected, you can specify how much lower this should be.
  1701. Help050=If this option is selected, the file is searched for values that are higher now than they were when the file was saved.|MIf the ‘By’ option is selected, you can specify how much higher this should be.
  1702. Help051=Click to go ahead and compare the file.
  1703. Help052=Click to forget it and remove the window.
  1704. Help053=This window is used to compare the current contents of memory with that contained in a file; this is useful to find what parts of memory have changed.
  1705. Help054=Type a new word value, in hex, for this location, then press Return or click OK.
  1706. Help055=Type a new mnemonic for this location.
  1707. Help056=Choose a list to deal with.
  1708. Help057=Click ‘Clear’ to remove all the addresses from the list.
  1709. Help058=Type an address and click ‘Add’ or press RETURN to add a new address to the list.
  1710. Help059=Choose a second list, the contents of which can be used in a process.
  1711. Help060=When you have selected a second list, you can perform processes with the first list, the results going into the first.|MCopy simplies copies the secondary list to the primary. And, Or, and And Not perform logical binops.
  1712. Help061=The select block facility selects a block of addresses from one address to another.|MThis can be useful in finding addresses when you know they are between two addresses.
  1713. Help062=With words, only every fourth address is set. With bytes, every address is, which is more useful if you are going to do byte searches, and is also the best to choose for deselecting a block.
  1714. Help063=Type the first and last addresses in the block to select or deselect.
  1715. Help064=Alter these settings to allow Desktop Hacker to keep an amount of memory aside for hacking. This is useful if a game deliberately fills all available memory.
  1716. Help065=If this option is selected, the picture on the screen will not be kept when the game is interrupted. This saves memory but disallows the screen-shot feature, and is likely to provide an incorrect display on returning.
  1717. Help075=Type the first and last addresses to disassemble.
  1718. Help076=Enter the number of copies to print.
  1719. Help077=Click ‘Print’ to start the print.
  1720.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÔD“MProgInfoäL    TaskInfo0öXferSendþÿÿ(^Search‹ô⇦DSlowDownÌXDisser Ä$KDisserLinkp¼ Choices,*ÞMemoryCmp 2èAlterWordô2RListÄdÄH9XListLink 9ÄPrintd<|Errorÿÿ}ñà=âPicRipôÄAForkingìÄrúfÖé€☓(ÿÿÿô=0Dܸÿÿÿÿ E:ÿÿÿïúÿÿÿËÌÐÿÿÿ⇦øÿÿÿQ3ÔÙ†ÿÿÿ⇦ÄÿÿÿQ3Ýåhÿÿÿ⇦‘ÿÿÿQ3éð4ÿÿÿ⇩\ÿÿÿQ3ôü‰Ðÿÿÿ8øÿÿÿ‰†ÿÿÿ8ÄÿÿÿY1     ‰hÿÿÿ8‘ÿÿÿÙ1 ‰4ÿÿÿ8\ÿÿÿY1%?wŒÿÿÿflºÿÿÿ1GH (ÿÿÿô`
  1721. »Help000…About this programs2?_dogNamef17Purposef17Authorf17Versionf17¤b4;slogoCheating¤b4;f17¤b4;f171.08 (04 Jun 1995) (demo)¤b4;f17s2?0º¤ÂÐÐÿÿÿÿÿÿÿ  ¤ýÿÿÐÿÿÿ=,øÿÿÿÿ-Häýÿÿö⇦ÿÿÿNäýÿÿü⇦ÿÿÿ
  1722.  þÿÿÿ$ÿÿÿBLÿÿÿQþÿÿÿðþÿÿBÿÿÿQþÿÿÿ¼þÿÿBäþÿÿQ þÿÿÿ⇦þÿÿB°þÿÿQ$'þÿÿÿTþÿÿB|þÿÿQ+.þÿÿÿ þÿÿBHþÿÿQ25þÿÿÿìýÿÿBþÿÿQ9<LTÿÿÿò☓ÿÿÿ}ñ@A    L ÿÿÿòPÿÿÿ}ñde    Lìþÿÿòÿÿÿ}ñ…™    L¸þÿÿòèþÿÿ}ñ´µ    L☓þÿÿò´þÿÿ}ñÜÝ    LPþÿÿò€þÿÿ}ñ    LþÿÿòLþÿÿ}ñ,-    Lèýÿÿòþÿÿ}ñTU    RTÿÿÿø☓ÿÿÿ}ñ|}    R ÿÿÿøPÿÿÿ}ñ¤¥    Rìþÿÿøÿÿÿ}ñÌÍ    R¸þÿÿøèþÿÿ}ñôõ    R☓þÿÿø´þÿÿ}ñ    RPþÿÿø€þÿÿ}ñDE    RþÿÿøLþÿÿ}ñlm    Rèýÿÿøþÿÿ}ñ“”    ìýÿÿHþÿÿQ¸»þÿÿÿXÿÿÿB€ÿÿÿQ¿ÂXÿÿÿH€ÿÿÿQÆÉ$ÿÿÿHLÿÿÿQÍÐüðþÿÿHÿÿÿQÔØü¼þÿÿHäþÿÿQÜàþ⇦þÿÿH°þÿÿQäèúTþÿÿH|þÿÿQìðü þÿÿHHþÿÿQôø°ýÿÿpØýÿÿQü    v°ýÿÿÒØýÿÿÙ        Ø°ýÿÿlØýÿÿQ        r°ýÿÿüØýÿÿÙ            @®hQc"    *    ²@$hYa.    ;    àýÿÿ…ÿÿÿ`
  1723. »Help002%ÿ¤ýÿÿÚàýÿÿ`
  1724. »Help003%ÿÚ¤ýÿÿàýÿÿ`
  1725. »Help004%ÿ “ÿÿÿüÄÿÿÿYC    D    &…ÿÿÿÐÿÿÿ`
  1726. »Help043%ÿGame stopped¤b4¤b4R1f17R2f17R3f17R4f17R5f17R6f17R7f17pptr_write,4,4;¤d1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤d1;¤u1;a0-9,A-F,a-f;knpptr_write,4,4;¤u1;a0-9,A-F,a-f;knPCf17R0f17R8f17R9f17R10f17R11f17R12f17R13f17R14f17Modef17¤b4;f17Memoryf17¤b4;f17Reason:f17Keys pressed¤b4;f1Bf17;¤b4Z,⇦…üÿÿÿÿÿÿÿ ☓üÿÿÿ¤þÿÿ*=.°Save ase¤ÿÿÿøÿÿÿXYj¬ÿÿÿ¾ðÿÿÿ1] dÿÿÿÆ“ÿÿÿ}ñfgäàhÿÿÿ‘ÿÿÿy1~ŴþÿÿÿìþÿÿzÿÿÿQ⇨’öÿÿÿ" ÿÿÿ!”„ŵèþÿÿêÿÿÿ}ñ¢¤öàþÿÿ"ÿÿÿ!·¸üÿÿÿ†ÿÿÿ*`
  1727. »Help005☓üÿÿÿTÿÿÿ*†ÿÿÿ`
  1728. »Help006☓(ÿÿÿVÿÿÿS±ÄÑüÿÿÿ ÿÿÿ*Tÿÿÿ`
  1729. »Help022☓üÿÿÿàþÿÿ* ÿÿÿ`
  1730. »Help023☓þÿÿÿ°þÿÿzØþÿÿQãé~°þÿÿØþÿÿYíî    üÿÿÿ¤þÿÿ*àþÿÿ`
  1731. »Help001☓¤b4file_ff8¤b3;¤r1;pptr_write,4,4OK¤b2;f17Spritesf17su,pu;¤s;¤-1¤b3;pptr_write,4,4sd,pd;¤s;¤+With palettesoptoff,opton;f17Startf17¤b4;f17ÆðÄDüÿÿÿÿÿÿÿ ☓üÿÿÿ°ýÿÿú=þTSearch for)úÿÿÿþÿÿH8þÿÿQx™Äÿÿÿâôÿÿÿ[³’„‘ÿÿÿàÀÿÿÿ[³¬±\ÿÿÿà…ÿÿÿ[³ÇÌ(ÿÿÿÞXÿÿÿ[³âæôþÿÿâ$ÿÿÿ[³ü    Àþÿÿâðþÿÿ[³& è¼þÿÿîøÿÿÿ<=ìÄÿÿÿêôÿÿÿ}ñAB    ì‘ÿÿÿêÀÿÿÿ}ñlmì\ÿÿÿê…ÿÿÿ}ñœ†<ì(ÿÿÿêXÿÿÿ}ñ½¾2ìôþÿÿê$ÿÿÿ}ñßàìÀþÿÿêðþÿÿ}ñ    ⇦þÿÿ⇩´þÿÿS±05⇩⇦þÿÿ^´þÿÿS±GQNþÿÿJ|þÿÿ[³cuºdþÿÿæ☓þÿÿ!⇦TLþÿÿ¨|þÿÿ}ñ“„ºDþÿÿædþÿÿ!¿À¼"þÿÿè@þÿÿ!ÌÍTþÿÿ¨8þÿÿ}ñÙÛ¼þÿÿè þÿÿ!ûü¦Äýÿÿ.ðýÿÿS± BÄýÿÿæìýÿÿy1%Äýÿÿ ðýÿÿS±-4\⇦þÿÿì´þÿÿS±FLÄÿÿÿö`
  1732. »Help007☓‘ÿÿÿöÄÿÿÿ`
  1733. »Help008☓\ÿÿÿö‘ÿÿÿ`
  1734. »Help009☓(ÿÿÿö\ÿÿÿ`
  1735. »Help010☓ôþÿÿö(ÿÿÿ`
  1736. »Help011☓¼þÿÿöôþÿÿ`
  1737. »Help012☓☓þÿÿŷ¼þÿÿ`
  1738. »Help013☓ŷ☓þÿÿX¼þÿÿ`
  1739. »Help014☓X☓þÿÿö¼þÿÿ`
  1740. »Help015☓Dþÿÿö☓þÿÿ`
  1741. »Help016☓þÿÿöDþÿÿ`
  1742. »Help017☓¸ýÿÿ þÿÿ`
  1743. »Help018☓ ¸ýÿÿ.þÿÿ`
  1744. »Help019☓.¸ýÿÿöþÿÿ`
  1745. »Help020☓Send results to listf17Wordsradiooff,radioon;f17Bytesradiooff,radioon;f17Textsradiooff,radioon;f17SWIsradiooff,radioon;f17Mnemonicsradiooff,radioon;f17Referencessradiooff,radioon;f17¤b4¤d1;pptr_write,4,4;a0-9,a-f,A-F;¤r-7;¤r16¤d1;¤u1;pptr_write,4,4;a0-9,a-f,A-F;¤r-7;¤r15¤d1;¤u1;pptr_write,4,4;¤r-7;¤r14¤d1;¤u1;pptr_write,4,4;¤r-7;¤r13¤d1;¤u1;pptr_write,4,4;¤r-7;¤r12¤d5;¤u1;pptr_write,4,4;a0-9,a-f,A-F;¤r-7;¤r11Casesoptoff,opton;f17Wildcardssoptoff,opton;f17Only addresses insoptoff,opton;f17su,pu;¤s;¤-1¤d3;¤u5;¤b3;pptr_write,4,4;a0-9;¤r-2;¤r6sd,pd;¤s;¤+su,pu;¤s;¤-1¤b3;¤u3;pptr_write,4,4;a0-9;¤r3sd,pd;¤s;¤+Hexsoptoff,opton;f17Search¤b2;f17Invertsoptoff,opton;f17Codedsoptoff,opton;f17pPLìÿÿÿÿÿÿÿ ☓ìÿÿÿXþÿÿÌ0Pxÿÿÿÿ    ôÿÿÿÐÿÿÿŵüÿÿÿS±⇨„V|ÿÿÿŵ—ÿÿÿ!¬­î`ÿÿÿF‘ÿÿÿ}ñ¹»V\ÿÿÿŵxÿÿÿ!ÚÛðÿÿÿ ÿÿÿŷ`
  1746. »Help021☓ôÿÿÿdÿÿÿä‘ÿÿÿQçöÆ ÿÿÿŵÌÿÿÿS±ú
  1747. ôÿÿÿ ÿÿÿÄÌÿÿÿS±#
  1748. òÿÿÿvDÿÿÿy19<Alter game speedNormal speedsradiooff,radioon;f17su,pu;¤s;¤-1a0-9;¤b3;pptr_write,4,4;kn;¤r6sd,pd;¤s;¤+By a factor off17Speed upsradiooff,radioon;f17Slow downsradiooff,radioon;f17OK¤b2;f17ÌÔ\Tÿÿÿÿ ÿ üÿÿÒT=0DisassemblerÔ\ÿÿÿÿ" € ¸ÿÿÿÒ-HDisserLinke Äÿÿÿlôÿÿÿy1x}~Äÿÿÿôÿÿÿ}ñŶŷ    $Äÿÿÿ´ôÿÿÿQ¯¸    .ÜÿÿÿZüÿÿÿ!¼½¾Äÿÿÿôÿÿÿ}ñÉË.¼ÿÿÿZÜÿÿÿ!êë¬ÄÿÿÿÎôÿÿÿ!÷øÒÄÿÿÿîôÿÿÿ!òÄÿÿÿôÿÿÿ!  Äÿÿÿ4ôÿÿÿ!\Èÿÿÿ¬ðÿÿÿQ$BÄÿÿÿôÿÿÿy1(2
  1749. ÄÿÿÿÆôÿÿÿy1:C    ¸ÿÿÿ$`
  1750. »Help024€$¸ÿÿÿ<`
  1751. »Help025€<¸ÿÿÿ`
  1752. »Help026€¸ÿÿÿÒ`
  1753. »Help027€Goto¤b0;f17¤b3;¤r-1;¤d3;pptr_write,4,4;a0-9,a-f,A-FUse Listf17su,pu;¤s;¤-1¤b3;¤u3;pptr_write,4,4;a0-9;knsd,pd;¤s;¤+sa,pa;¤ssl,pl;¤ssr,pr;¤ssz,pz;¤sListf17Goto last¤b0;f17Continue¤b0;f17…²Òüÿÿÿÿÿÿÿ¥ üÿÿÿ¨üÿÿB=F\—ÿÿÿÿ: ÿÿÿ2àÿÿÿ¯°
  1754. ‘ÿÿÿ0Èÿÿÿ`
  1755. »Help029
  1756. Pÿÿÿ0‘ÿÿÿ`
  1757. »Help064
  1758. þÿÿpÜþÿÿ`
  1759. »Help030 ýÿÿ2äýÿÿ´µ¬Zÿÿÿ*⇩ÿÿÿQ¹ÑÐÿÿÿ<øÿÿÿyÕà “ÿÿÿ¾ÄÿÿÿQèñ    Ä—ÿÿÿ☓Àÿÿÿy1õöP‹—ÿÿÿ&Àÿÿÿy1þ þÿÿ2ìþÿÿÜþÿÿ<ÿÿÿy$¨þÿÿrÔþÿÿS±,3xþÿÿr¤þÿÿS±IT HþÿÿrtþÿÿS±jxþÿÿrDþÿÿS±‰ |xþÿÿ*¤þÿÿS±¶Ë|Hþÿÿ*tþÿÿS±áö|¨þÿÿ*ÔþÿÿS±     !    †ýÿÿ&Äýÿÿ;13    4    pþÿÿ0Üþÿÿ`
  1760. »Help031†ýÿÿ|ÈýÿÿS±E    Y    ~†ýÿÿ¢Èýÿÿ[³o        Týÿÿn☓ýÿÿQ”    Œ    ~Týÿÿ☓ýÿÿQfi    ¨    
  1761. xTýÿÿD☓ýÿÿ}ñ¬    ­    (Xÿÿÿ¾⇦ÿÿÿ[³Ø    à    (Týÿÿò☓ýÿÿ}ñò    ó    (Xýÿÿ&€ýÿÿ;1
  1762. 
  1763. ýÿÿn@ýÿÿQ.
  1764. 3
  1765. è(ýÿÿHýÿÿ!7
  1766. 8
  1767. xýÿÿÚ@ýÿÿ}ñD
  1768. E
  1769. èýÿÿ(ýÿÿ!i
  1770. j
  1771. ýÿÿ|@ýÿÿQv
  1772. |
  1773. ~ýÿÿ @ýÿÿQ€
  1774.     $ýÿÿö<ýÿÿÙ…
  1775. ýÿÿ&<ýÿÿ;1”
  1776. °¼üÿÿ.äüÿÿy1§
  1777. ª
  1778. ¼üÿÿ—äüÿÿy1²
  1779. ¹
  1780. ¼üÿÿ„äüÿÿy1Á
  1781. É
  1782. ¤¼üÿÿ*äüÿÿy1Ñ
  1783. Ö
  1784. ¬—ýÿÿòÈýÿÿ%1'Þ
  1785. ß
  1786. VXýÿÿx€ýÿÿ;1ã
  1787. ä
  1788. zpÿÿÿ¦‘ÿÿÿ!õ
  1789. ö
  1790. ÈXÿÿÿl⇦ÿÿÿ}ñ  zPÿÿÿ¦pÿÿÿ!/ 0 |þÿÿ*DþÿÿS±< Q Ôýÿÿ<üýÿÿyg y 
  1791. ‘ýÿÿ0Ôýÿÿ`
  1792. »Help032|ýÿÿ0Hýÿÿ`
  1793. »Help034
  1794. ýÿÿ0‘ýÿÿ`
  1795. »Help033Œ°üÿÿ,øüÿÿ`
  1796. »Help037°üÿÿŒøüÿÿ`
  1797. »Help038°üÿÿ†øüÿÿ`
  1798. »Help036†°üÿÿ8øüÿÿ`
  1799. »Help035
  1800. ÿÿÿ0Pÿÿÿ`
  1801. »Help065 ÿÿÿ.LÿÿÿS±Ŵ ª )üÿÿÿ¨üÿÿB`
  1802. »Help028Desktop Hacker choices¤b1¤b1Kbytes for hacking onlyf17Activation¤b6;f17Hot-keysf17¤b4;f17Change¤b0;f17¤b1Disassembly style¤b6;f17R0-R15sradiooff,radioon;f17R0-R14, PCsradiooff,radioon;f17R0-R11, WK-PCsradiooff,radioon;f17APCS register setsradiooff,radioon;f17Upper case MNEMONICSsradiooff,radioon;f17Lower case mnemonicssradiooff,radioon;f17Upper case REGISTERSsoptoff,opton;f17¤b7;s⇨;pptr_menuStyle guide borderssradiooff,radioon;f17NewerLook, slabsradiooff,radioon;f17Fontf17Data fontf17¤b3;f07;pptr_write,4,4;¤d2;¤r12;¤e13;¤u-19Reservesoptoff,opton;f17¤b3;f07;pptr_write,4,4;¤u2;¤d4;¤r10;¤e11¤b7;s⇨;pptr_menuSizef17su,pu;¤s;¤-¤b3;pptr_write,4,4;a0-9;¤u4;¤r6;¤e7sd,pd;¤s;¤+/16ptf17Countryf17¤b4;f17¤b7;s⇨;pptr_menuOK¤b2;f17Cancel¤b0;f17Default¤b0;f17Save¤b0;f17¤b3¤b7;s⇨;pptr_menusu,pu;¤s;¤-¤b3;f07;pptr_write,4,4;a0-9;¤d-19;¤e-6;¤r-7sd,pd;¤s;¤+Mixed case Mnemonicssradiooff,radioon;f17Desktop interface¤b6;f17Don’t keep screen display over interruptsoptoff,opton;f17¬ô° üÿÿÿÿÿÿÿ Ŷ üÿÿÿþÿÿ=øÿÿÿÿ% Dÿÿÿðaì☓ÿÿÿà´ÿÿÿ}ñò¤Æÿÿÿèdragÿ Tþÿÿð,ÿÿÿ>?Dàÿÿÿp!CDìÈÿÿÿ8øÿÿÿ}ñPRDÀÿÿÿpàÿÿÿ!yzrÌÿÿÿ¨ôÿÿÿYŷŒ"LÿÿÿîxÿÿÿS±fi¨ êLÿÿÿÂxÿÿÿS±¾È ìþÿÿÌÿÿÿS±Þæjìþÿÿÿÿÿ}ñüý    ¾Lÿÿÿ6xÿÿÿS±9=ìþÿÿBÿÿÿYORRìþÿÿàÿÿÿ}ñVW    ¨þÿÿØØþÿÿS±‹†
  1803. î¨þÿÿ`Øþÿÿ[³²µj¨þÿÿàØþÿÿ}ñÇÈ    Ììþÿÿ`ÿÿÿ[³
  1804. ⇦ÿÿÿà°ÿÿÿQ% ÌÿÿÿâôÿÿÿQ)6dþÿÿØ“þÿÿS±:D
  1805. îdþÿÿ`“þÿÿ[³Z]jdþÿÿà“þÿÿ}ñop    8LÿÿÿÜxÿÿÿS±¦­Fþÿÿì<þÿÿy1¿Ç†þÿÿ.<þÿÿy1ÏÖ xÿÿÿð`
  1806. »Help044 Dÿÿÿ¸xÿÿÿ`
  1807. »Help045¸Dÿÿÿ4xÿÿÿ`
  1808. »Help0464Dÿÿÿðxÿÿÿ`
  1809. »Help047
  1810. èþÿÿî,ÿÿÿ`
  1811. »Help048
  1812. ¤þÿÿîèþÿÿ`
  1813. »Help049
  1814. \þÿÿî¤þÿÿ`
  1815. »Help0504þÿÿøLþÿÿ`
  1816. »Help051—þÿÿ4Lþÿÿ`
  1817. »Help052üÿÿÿþÿÿ`
  1818. »Help053Compare memory with file¤b1pptr_write,4,4;¤b3;¤u-4;¤d10;¤r24;¤e25¤b1su,pu;¤s;¤-1¤b3;pptr_write,4,4;a0-9;¤r20;¤e21;¤d-4sd,pd;¤s;¤+Drag in applicationf17Use bytessradiooff,radioon;f17Use wordssradiooff,radioon;f17Changedsradiooff,radioon;f17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤u10;¤d3;¤r7;¤r-1;¤r14;¤e15Hexsoptoff,opton;f17Tof17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤d3;¤u3;¤r4;¤r-4;¤r11;¤e12Increasedsradiooff,radioon;f17Bysoptoff,opton;f17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤d6;¤u3;¤r-1;¤r-2;¤r8;¤e9Fromsoptoff,opton;f17File to usef17Send to listf17Decreasedsradiooff,radioon;f17Bysoptoff,opton;f17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤r-1;¤r-2;¤u6;¤r2;¤e3Signedsoptoff,opton;f17Compare¤b2;f17Cancel¤b0;f17\4 |ÿÿÿÿ € ¸ÿÿÿD=DHAlterWorde ÄÿÿÿÜôÿÿÿ}ñ¸¹    ôÈÿÿÿ4ðÿÿÿy1Ýà    ¸ÿÿÿD`
  1819. »Help054€¤b3;a0-9,a-f,A-F;pptr_write,4,4;¤r1OK¤b2;f17Â\TPüÿÿÿÿÿÿÿ  üÿÿÿþÿÿ‰=‹ôListled>e!zØþÿÿ‹hÿÿÿxy¸Üÿÿÿäüÿÿÿ!}~XÄÿÿÿªôÿÿÿ}ñ⇩…¸¼ÿÿÿäÜÿÿÿ!«¬ü☓ÿÿÿ¾¬ÿÿÿy1¸Ä Ѐÿÿÿz°ÿÿÿ}ñÌÍ    ôÈÿÿÿ~ðÿÿÿy1úü0ÿÿÿVXÿÿÿy1d0ÿÿÿ®Xÿÿÿy1òðþÿÿÒÿÿÿQ!.Nÿÿÿz$ÿÿÿ!23Üìþÿÿ>ÿÿÿ}ñ?ANäþÿÿzÿÿÿ!ab¼0ÿÿÿðXÿÿÿy1nqþ0ÿÿÿ~Xÿÿÿy1yŴöÈÿÿÿNðÿÿÿQ⇨‰ü—þÿÿrÀþÿÿy1‹−€—þÿÿÀþÿÿy1¡ª     þÿÿŒPþÿÿ}ñ²³    Ü þÿÿzPþÿÿ}ñÛÜ    ¢ þÿÿÖPþÿÿYú`þÿÿŒ…þÿÿS±—`þÿÿ(…þÿÿS±#)“þÿÿ‰ÄþÿÿQ?E,\þÿÿ‰…þÿÿQINüþÿÿ‰Tþÿÿ`
  1820. »Help063ü¸ÿÿÿî`
  1821. »Help056î¸ÿÿÿ‰`
  1822. »Help057üpÿÿÿ‰¸ÿÿÿ`
  1823. »Help058üàþÿÿ‰$ÿÿÿ`
  1824. »Help059ü$ÿÿÿ‰pÿÿÿ`
  1825. »Help060ü…þÿÿ‰àþÿÿ`
  1826. »Help061üTþÿÿ‰…þÿÿ`
  1827. »Help062¤b1su,pu;¤s;¤-1¤b3;a0-9;pptr_write,4,4;¤d3;knsd,pd;¤s;¤+Add addressf17;¤b0¤b3;a0-9,a-f,A-F;pptr_write,4,4;¤d6;¤u3;¤r-1Clear¤b0;f17Copy¤b0;f17And¤b0;f17Process listf17su,pu;¤s;¤-1¤b3;a0-9;pptr_write,4,4;¤u6;¤d7sd,pd;¤s;¤+Or¤b0;f17And not¤b0;f17Listf17Select¤b0;f17Deselect¤b0;f17¤b3;a0-9,a-f,A-F;pptr_write,4,4;¤d1;¤u7¤b3;a0-9,a-f,A-F;pptr_write,4,4;¤u1tof17Wordssradiooff,radioon;f17Bytessradiooff,radioon;f17blockf17fromf17Ìh☓Dÿÿÿÿ" ‘ $þÿÿ¸=0¸ÜListLink>e^pþ‘ÿÿÿÿ ☓èþÿÿ = “PrintisserþÿÿÿÌÿÿÿÚôÿÿÿQøäÈÿÿÿ‘øÿÿÿ}ñ    
  1828.     þÿÿÿ⇦ÿÿÿÚ°ÿÿÿQ2= ä☓ÿÿÿ‘´ÿÿÿ}ñAB    þÿÿÿ@ÿÿÿÚhÿÿÿQjqlTÿÿÿ—tÿÿÿ!uvä<ÿÿÿ`lÿÿÿ}ñŵ☓l4ÿÿÿ—Tÿÿÿ! ¡ øþÿÿ (ÿÿÿÙ­®$üþÿÿ…$ÿÿÿy1¶¼ìþÿÿ 4ÿÿÿ`
  1829. »Help077☓xÿÿÿ `
  1830. »Help075☓4ÿÿÿ xÿÿÿ`
  1831. »Help076☓From addressf17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤d2;¤r8To addressf17¤b3;pptr_write,4,4;a0-9,a-f,A-F;¤u2;¤r6Copiesf17su,pu;¤s;¤-1¤b3;pptr_write,4,4;a0-9;¤r3sd,pd;¤s;¤+¤b4;f17Print¤b2;f17â<HÄþÿÿÿÿÿÿÿР€ þÿÿÿ|þÿÿd=f⇦<Untitled>e€þÿÿ`”þŷ%ÿ“þÿÿ⇦ØÿÿÿXY$Èÿÿÿððÿÿÿyab¤—þÿÿJÀþÿÿy1jk    ¤ØþÿÿJÿÿÿy1stÎ|ÿÿÿ>ÄÿÿÿÇihackerÿÊ—ÿÿÿäÿÿÿ!dhacker€Ê8ÿÿÿ⇦ÿÿÿerrorer€¤b1;l40¤b6;f17¤b2;f17¤b0;f17èT†Àÿÿÿÿ Ŷ “þÿÿ´=´l—ÿÿÿÿÿÿÿ¤Üÿÿÿ¬­$Ìÿÿÿôÿÿÿy±Î†ÿÿÿ>ÄÿÿÿQÖêF†ÿÿÿ ÄÿÿÿQîù pÿÿÿ>—ÿÿÿQýFpÿÿÿ¢—ÿÿÿQ&Dÿÿÿ>lÿÿÿQ*=FDÿÿÿ lÿÿÿQATì þÿÿ¨Èþÿÿy1X]  þÿÿ6ÌþÿÿS±evH þÿÿÜÈþÿÿy1⇦•ÿÿÿ>@ÿÿÿQ–§Fÿÿÿ @ÿÿÿQ«²ÿÿÿ´`
  1832. »Help039Ŷ“þÿÿ@Ôþÿÿ`
  1833. »Help040Ŷ@“þÿÿìÔþÿÿ`
  1834. »Help040Ŷì“þÿÿ´Ôþÿÿ`
  1835. »Help040ŶÔþÿÿ¶ÿÿÿY¶Þ(The Graphics Ripper¤b1The Graphics Ripper controls¤b6;f17Move start positionf17Arrow keysf17Move start quicklyf17Ctrl & arrow keysf17Change sprite sizef17Shift & arrow keysf17Viewf17;¤b0Use game palettesoptoff,opton;f17Cancelf17;¤b0Finish and savef17Returnf17Remember to open the destination first!f17â<HÄþÿÿÿÿÿÿÿР€ þÿÿÿ|þÿÿd=f⇦<Untitled>e€þÿÿ`”þŷ%ÿ …þÿÿ‘àÿÿÿ89‘þÿÿ…Üÿÿÿ<=—…þÿÿVÌþÿÿ @A ÔþÿÿNÿÿÿ]1DIÎ|ÿÿÿ>ÄÿÿÿÇihackerÿÊ—ÿÿÿäÿÿÿ!dhacker€Ê8ÿÿÿ⇦ÿÿÿquestion€Dÿÿÿ⇦¸ÿÿÿP‘@ÿÿÿ€Dÿÿÿ]“”@ þÿÿŷÿÿÿ†Û? Äÿÿÿèôÿÿÿ}ßù Úÿÿÿ"Üÿÿÿ Standard>ÿæÜÿÿÿèÞÿÿÿ DStandard>ÿ “þÿÿNÄþÿÿ]1r2r1r6Stayr1;f17The task being hacked has launched a new task with the command:l40r2;f17Do you wish to follow the new task, or stay with the original?l40Query from Desktop Hackerr2;f17Followr1;f17Œ„ÐÐTrinity.Mediumÿ®ªjgfj¦v−izZv¦¥Œfiiª−ÐÐTrinity.Medium.Italicï ð áÈ%¦Œæ©‡i¦¦erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickArcturusEúÿÿt¡NÌ\BigBangEúÿÿËâtò Burn'OutFúÿÿ¸¨È CanonFodrEúÿÿrì%¬$Formul2000Eúÿÿ»­‰ûOddballEúÿÿý²ùôÄSallyWallyEúÿÿÁ½1Ò ArcturusEúÿÿt¡NÌ\BigBangEúÿÿËâtò Burn'OutFúÿÿ¸¨È CanonFodrEúÿÿrì%¬$Formul2000Eúÿÿ»­‰ûOddballEúÿÿý²ùôÄSallyWallyEúÿÿÁ½1Ò CheatModsCheatModsNick*“Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1836. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1837. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1838. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1839. ±ÿÿë
  1840.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1841. 0◰àà›å^á    
  1842. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1843. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1844. âÿÿê 0‹åSãßÿÿ
  1845. 0◰à›åpãÛÿÿ
  1846.  ›å0◰â›äqã÷ÿÿ
  1847. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 )4DArcturusDavid Bone€ArcturusVLXh|Infinite livesöÿÿÿÿÿÿÿÿCF‘ Finish level öÿÿÿÿÿÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1848. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1849. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1850. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1851. ±ÿÿë
  1852.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1853. 0◰àà›å^á    
  1854. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1855. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1856. âÿÿê 0‹åSãßÿÿ
  1857. 0◰à›åpãÛÿÿ
  1858.  ›å0◰â›äqã÷ÿÿ
  1859. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 )<HBig BangAjC of DoggySoftuhPsycore#T\p☓Gain some teddies
  1860. lðÿÿÿÿÿÿÿÿTH—¸ÐCan't die/lose teddies when hit☓¢…¢ÿÿÿÿÿÿÿÿ%IäüSome invulnerabilityð\ðÿÿÿÿÿÿÿÿdB$DCan't die by touching opponents²HÂüÐÌÑÿÿÿÿÿÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1861. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1862. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1863. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1864. ±ÿÿë
  1865.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1866. 0◰àà›å^á    
  1867. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1868. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1869. âÿÿê 0‹åSãßÿÿ
  1870. 0◰à›åpãÛÿÿ
  1871.  ›å0◰â›äqã÷ÿÿ
  1872. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 *8HBurn 'OutAndrew Clover0BURN 'OUT#T\h|More timedrÿÿÿÿÿÿÿÿ'0‘ ´Stop the clock`tÿÿÿÿÿÿÿÿ01ÈàôClock at quarter-speed`tÿÿÿÿÿÿÿÿ120Clock at half-speed`tÿÿÿÿÿÿÿÿ3DdxClock at three-quarters speed`tÿÿÿÿÿÿÿÿ4… ´Clock at full speed`tÿÿÿÿÿÿÿÿeMÈÔèExtra moneydX☓ÿÿÿÿÿÿÿÿRCü Extra credit8Ŷÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1873. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1874. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1875. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1876. ±ÿÿë
  1877.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1878. 0◰àà›å^á    
  1879. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1880. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1881. âÿÿê 0‹åSãßÿÿ
  1882. 0◰à›åpãÛÿÿ
  1883.  ›å0◰â›äqã÷ÿÿ
  1884. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 .MPhCannon FodderMatt Browne, 28th October 1994There’s an official cheat mode in this, but I haven’t had time to find it yet... The levels of grenades and bazookas aren’t updated at first; press Space a few times after you press Alt+W. This was written ON THE DAY that CF was released! Be seeing you...TIV4CHEAT MODE ACTIVE3R|‘¸Infinite recruitsÿÿ á SÄ•ÿÿÿÿÿH€ÿÿÿÿÿÿÿÿ!WÌìWeaponry: 95 grenades, bazookasÿÄfiÌfiÿÿÿÿÿÿÿÿ7P,@Phase compleeta ONÿ€½èä^ÿÿÿÿÿÿÿÿ6OThPhase compleeta OFF€-éä^ÿÿÿÿÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRMS¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1885. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1886. `ŷàï     ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1887. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1888. ±ÿÿë
  1889.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãz ãïjP á<@•âL☓â0“åSã
  1890. 0◰àà›å^á    
  1891. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1892. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1893. âÿÿê 0‹åSãßÿÿ
  1894. 0◰à›åpãÛÿÿ
  1895.  ›å0◰â›äqã÷ÿÿ
  1896. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHTS 5_8DFormula Two ThousandAndrew Clover, Tim Gladding, J. PickeringThese cheats don't need to have ALT held down. Play normally, and use the 'C' cheat to allow use of lots of thrust, or use the keys 'K' and 'M' to give a mega engine. Use 'L' to recover when you fall off the track.☓!FormulaFKXl€Accelerate BIGTIME°AÿÿÿÿÿÿÿÿeM“¨¼Decelerate BIGTIME8°AÿÿÿÿÿÿÿÿVLÐÜðFull stop°AÿÿÿÿÿÿÿÿRC$Cool engineBÿÿÿÿÿÿÿÿ#T8LExtra 10 seconds    8Bÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1897. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1898. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1899. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1900. ±ÿÿë
  1901.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1902. 0◰àà›å^á    
  1903. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1904. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1905. âÿÿê 0‹åSãßÿÿ
  1906. 0◰à›åpãÛÿÿ
  1907.  ›å0◰â›äqã÷ÿÿ
  1908. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 (=¤°OddballDr. Feelgood and AjCThe goodie cheats cycle the held-goodie spots 1-4. Click select on the goodie-box to use/reset to 0.¨ÔODDBALLCFÄäøRemove Blocks (compete level)an—~ÿÿÿÿÿÿÿÿ01 0Change goodie 1X~ÿÿÿÿÿÿÿÿ12DThChange goodie 2\~ÿÿÿÿÿÿÿÿ3|… Change goodie 3`~ÿÿÿÿÿÿÿÿ4´ÄØChange goodie 4d~ÿÿÿÿÿÿÿÿ#TìMore time (for bonus level)´~ÿÿÿÿÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     “Ôì8A`CheatRM1¨CheatModCheatMod        1.10 (12-Jul-1994)CheatInfo€€@-éïCheat for  p•â|â–å€àïï–åPã
  1909. ïWritten by €àïïïïMade with CheatMod, part of Desktop Hacker from DoggySoftïï`–åVã
  1910. `ŷàï Alt+ŷâïï - „å€àïï`„åVã`ŷðÿÿ–åPã
  1911. €àï ã  ãDïýè@-é •â,ŵâ ‹åã 
  1912. ±ÿÿë
  1913.  ãH•â   á<ï€ýx€½è@-é0•â  á=ï€ýx€½è'1ãð°@-é ã •â   á<ï€ýx€½è0@-éà†å^ã0€ýà ãà…åP á@Åãð4ã á?@-éy ãŵ ãïjÿQãz ãïjP á<@•âL☓â0“åSã
  1914. 0◰àà›å^á    
  1915. 0›åSã0◰øÿÿ?@½èð5ã áà ãà…å0€ýè  á 0“åSã
  1916. 0◰à›ä€â:ïðÿÿjïÿÿ*àÓäÐäA^ãZP~" à‰"AQãZPq" Ŵ" ^ãºQáóÿÿ
  1917. âÿÿê 0‹åSãßÿÿ
  1918. 0◰à›åpãÛÿÿ
  1919.  ›å0◰â›äqã÷ÿÿ
  1920. ëúÿÿê@-éãà’àÑ0â Sã◰ñ•0€ýèà á    êà‰àêàNàêà‰áêààêà.àÿÿÿêãàŴàÁ€ýèCHT1 0@PSally and WallyAndrew Cloverx—Sally&Wally01d€¤Infinite lives, player one…iÿÿÿÿ⇦›ÿÿÿÿÿÿÿÿ12¸ÔInfinite lives, player two@jÿÿÿÿ@“ÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick01WriteExtFÿÿÿ#é&^904HistoryFÿÿÿ£ÜB´05GamesEÿÿÿ"2vþy10WhatsNewEÿÿÿ°2Ñ01WriteExtFÿÿÿ#é&^904HistoryFÿÿÿ£ÜB´05GamesEÿÿÿ"2vþy10WhatsNewEÿÿÿ°2ÑTechDocsTechDocsNick¦Desktop Hacker - The history thereof
  1921. Document d04/09 AjC
  1922. =============================================================================
  1923.  
  1924. Name           Vn    Released?     Description
  1925.                      (a-alpha, b-beta, r-full release, d-demo)
  1926.  
  1927. The Hacker     0.01  a Stops at any time to execute * commands.
  1928. The Hacker     1.00    Features a single list that can be used in word, byte
  1929.                        and string searches; also Kill game.
  1930. The Hacker     1.01  b Bug fixes.
  1931. The Hacker     1.02  a Printer spooling options added.
  1932. The Hacker     1.03  r Alter features added. First release. Summer 1992.
  1933. The Hacker     2.00 db Disassembler added.
  1934. The Hacker     2.01    Bug fixes.
  1935. The Hacker     2.02 dr Filing features added.
  1936. The Hacker     3.00 db First version with a GUI. Released at the BAU show
  1937.                        1992. Had hardly any features.
  1938. The Hacker     3.01  a Now uses callback handler. Most features present.
  1939. The Hacker     3.02 dr First commercial release, January 1993. Bug fixes;
  1940.                        desktop interface task added. The Hacker itself
  1941.                        changed into a utility file from a module.
  1942. The Hacker     3.03  r Bug fixes; SWI window extended.
  1943. The Hacker     3.04 dr Bug fixes; graphical changes; Ctrl-Alt added for A4.
  1944. The Hacker     3.05 dr Bug fixes; pointer changes added for clarity.
  1945. The Hacker     3.06  r New entire saved position file format.
  1946. The Hacker     3.07  r Very minor release, before new bug in CheatMod spotted
  1947.                        Interactive help added to desktop interface.
  1948. The Hacker     3.08 dr Code-around through S42 routines; DeviceVectors.
  1949. The Hacker     3.09 dr Bug fixes; graphical changes; at last the flickering
  1950.                        screen is gone!
  1951. The Hacker     3.09i r International release; graphical changes.
  1952. The Hacker     3.10idr The sprite is improved at last! New Savings... entry,
  1953.                        Options renamed to Choices.
  1954.  
  1955. Desktop Hacker 0.01  b Testing version using CallBacks instead of the SWI
  1956.                        hardware vector.
  1957. Desktop Hacker 1.00  d Acorn Action demo version. Never released as a full
  1958.                        version.
  1959. Desktop Hacker 1.01  r Mouse limits added. Many minor additions. System
  1960.                        workspace bug fixed.
  1961. Desktop Hacker 1.02  r Modules inserted from application space are now
  1962.                        delinked over hacking. New game filetype used.
  1963.                        Two-letter mnemonic search bug fixed. Wildcard bug
  1964.                        fixed. Minor changes to windows. Savebox bug fixed.
  1965.                        Sprite-not-found bug fixed.
  1966. Desktop Hacker 1.03 dr Error window bugs fixed. SWIVe26 appmodule delinking
  1967.                        bug fixed. Save menu click/hot-key bug fixed.
  1968. Desktop Hacker 1.04 dr One-byte MemoryAccess block transfer bug fixed. FP
  1969.                        CDP bit 15 bug fixed. Source=destination search bug
  1970.                        fixed.
  1971. Desktop Hacker 1.05  r Info version number font fixed. Info/Error windows
  1972.                        WimpPatch-aware. Cache now zeroed when invalidated.
  1973.                        (So things like dHMusic don't find parts of other
  1974.                        memory lurking in the RMA.)
  1975. Desktop Hacker 1.06  r First major upgrade. HackPoint *commands added for
  1976.                        SWI, SWIGroup, and Delay. BreakPoint SWI implemented.
  1977.                        Memory reserving allowed. Desktop redrawn on continue.
  1978.                        Squashed game files now supported. Forking added, so
  1979.                        that you don't end up hacking the WIMP front end
  1980.                        instead of the game itself. A few minor bugs fixed.
  1981. Desktop Hacker 1.07 dr Fixed R9 corruption on forking bug. Added "Don't keep
  1982.                        screen memory" option for machines with little RAM.
  1983. Desktop Hacker 1.08 dr Changed * command slightly to make it work with games
  1984.                        that check the command used to run themselves (Empire
  1985.                        Soccer), and added 'speed up'.erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Games tried 'n' tested
  1986. Document d05/11 AjC
  1987. =============================================================================
  1988.  
  1989.  This document details all games tested with Desktop Hacker by its author,
  1990. and any unusual bits of games which can cause confusion when hacking. Many
  1991. are not problems with Desktop Hacker as such, but you should be aware of
  1992. them. If you find a game that won't hack or produces unexpected results, and
  1993. it isn't documented here, please send a report to DoggySoft.
  1994.  
  1995. * 2067BC. OK
  1996. * Aggressor. OK
  1997. * Aldebaran. OK
  1998. * Arcade Soccer. OK
  1999. * Arcturus. OK
  2000. * Asylum. OK
  2001. * Axis.
  2002.   This game has silly protection on to stop you from using games hackers.
  2003.   You can always use the cheat module.
  2004. * Battle Chess. OK
  2005. * Big Bang. OK
  2006. * Black Angel. OK
  2007. * Blood Sport. OK
  2008. * Bloxed. OK
  2009.   You need to reserve some memory, at least on the newer version 1.09.
  2010. * Blitz. OK
  2011. * Blowpipe. OK
  2012. * Bug Hunter. OK
  2013. * Bug Hunter in Space. OK
  2014. * Cannon Fodder.
  2015.   You can only hack during the score and map screens. So to hack it, click
  2016.   on 'Map', then press the hot-keys.
  2017. * Caverns. OK
  2018. * Chocks Away. OK
  2019. * Chuck Rock. OK
  2020. * The Crystal Maze. OK
  2021. * Cycloids. ?
  2022.   The original Software 42 release hacks OK. It had protection on, but a
  2023.   recent fix to Desktop Hacker has (accidentally) got round this. The Games-
  2024.   Ware re-release has not been tested, but has a new protection system on.
  2025.   It might work.
  2026. * The Dungeon. OK
  2027. * Demon's Lair. OK
  2028. * Diggers. ?
  2029.   Reports suggest you should only interrupt whilst in the actual game-playing
  2030.   bit (not title screens etc.), else the desktop goes funny and unusable.
  2031. * Dune II. OK
  2032.   You will need to reserve some memory.
  2033. * Dragon Ball. OK
  2034. * Elite. OK
  2035. * Fervour. OK
  2036.   Remember the game only starts when you run the levels directory at the
  2037.   start - so drag that, not the !Fervour application, to Desktop Hacker.
  2038. * Firebolt. OK
  2039. * Flashback. OK
  2040. * Formula Two Thousand. OK
  2041. * FRED. ?
  2042.   See Cycloids.
  2043. * Galactic Dan. OK
  2044. * GODS. OK
  2045. * Greivous Bodily 'Arm. OK
  2046. * Gribbly's Day Out. OK
  2047. * Guile. OK
  2048. * Hamsters. OK
  2049. * Haunted House. OK
  2050. * Heimdall. OK
  2051. * Lemmings 2.
  2052.   Hacks perfectly outside the main game screen. Otherwise hacks OK, but
  2053.   during interrupt, the keyboard is disabled, and the hard disc won't work.
  2054.   You can get round this by typing any numbers (into the search window, for
  2055.   example), at another screen, then interrupting and performing the search.
  2056.   Other strange things happen to the time whilst interrupting - buttons don't
  2057.   slab in, and Desktop Hacker's auto-scrolling scroll bars eat the pointer.
  2058.   Take care with this game. It does lots of horrid things.
  2059. * Mad Professor Mariarti. OK
  2060. * Magnetoids.
  2061.   The demo hacks fine; the full version does not. I have no idea why this is,
  2062.   and I'm looking into it.
  2063. * Magic Pockets. OK
  2064. * Moon Dash. OK
  2065. * Nebulus. OK
  2066. * Oddball.
  2067.   Going back to the game after an interrupt causes one of this game's support
  2068.   modules to stop the game with an error. You can blot out Amnesia's service
  2069.   entry point if you know how. The next version will delink all modules
  2070.   loaded from disc as well those loaded from RAM.
  2071. * Paradroid 2000. OK
  2072. * Phaethon. OK
  2073. * Populous. OK
  2074. * Premier Manager. OK
  2075. * Quark.
  2076.   Doesn't work. I'm not sure quite why, but it has always caused problems
  2077.   with other hacking tools too, and it won't work on the Risc PC...
  2078. * RedShift. OK
  2079.   Hacks fine, but sets the mouse multipliers to 0 so that the mouse pointer
  2080.   will not move (in fact the ship graphic is the mouse pointer!) and you
  2081.   can't operate the desktop. To replace the mouse multipliers, press F12,
  2082.   *Basic, and enter "MOUSE STEP 3" and "QUIT".
  2083. * Repton 2.
  2084.   Doesn't work. Apparently.
  2085. * Sally and Wally. OK
  2086. * Sensible Soccer. OK
  2087.   See Zool. However, Renegade have obviously noticed that the ScreenBlanker
  2088.   can lose the colours, and have helpfully provided a key to redraw the
  2089.   colours, which you can use after Desktop Hacker. It's Space.
  2090. * Sim City. OK
  2091. * Simon the Sorceror. OK
  2092. * Small. OK
  2093.   This game's memory set-up sequence complains if it can't shrink the font
  2094.   cache to 0K, even if it doesn't need the memory. To get around this, either
  2095.   make so no applications are using outline fonts, or run the FontSafe
  2096.   application in the Extras directory, which stops games faffing with your
  2097.   font cache.
  2098. * Super Pool. OK
  2099. * Speedball 2. OK
  2100. * Spheres of Chaos. OK
  2101. * Star Fighter 3000.
  2102.   Crashes or doesn't interrupt, due to an interesting 'feature' in the
  2103.   protection module, which I'm currently coding around.
  2104. * Stunt Racer 2000. ?
  2105.   I seem to remember it not working - crashing when you ran it with Desktop
  2106.   Hacker (which I thought was something to do with the protection system).
  2107.   It works fine on my Risc PC now, using 'Game On!' to get it to run at all.
  2108. * Styx. OK
  2109. * Swiv. OK
  2110. * Terramex. OK
  2111. * Tertis.
  2112.   Doesn't work, apparently.
  2113. * The Time Machine. OK
  2114. * Top Banana. OK
  2115. * Tower of Babel. OK
  2116. * Twin World. OK
  2117. * Wavelength. OK
  2118. * Wolfenstein 3D. OK
  2119.   You will need to reserve some memory.
  2120. * Xenon 2. OK
  2121. * Zool. OK
  2122.   Hacks fine, but on returning the screen will be all black, so you can't see
  2123.   what's happening (the same happens if the ScreenBlanker cuts in). You will
  2124.   either have to get killed or find a bonus that makes the screen flash to
  2125.   restore the colours. Or use the ZoolPatch raster bars program.
  2126. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Writing external tasks for Desktop Hacker
  2127. Document d01/21 AjC
  2128. =============================================================================
  2129.  
  2130.  The old external code system used by The Hacker is no longer supported.
  2131. Instead, you should code a normal WIMP task, and use Desktop Hacker's SWIs
  2132. and messages to communicate. This has the advantage that you don't need to
  2133. program in ARM code - you can use C, BASIC, or any other language. Create
  2134. yourself an application with a Desktop Hacker axe somewhere in the icon;
  2135. ideally, the application name should begin !dH, but this may not always be
  2136. appropriate.
  2137.  
  2138.  There are two parts to Desktop Hacker: the actual DesktopHacker module task,
  2139. which provides all the hacking facilities that the user uses; and the SWIVe
  2140. code (so named because it works by claiming the SWI hardware vector), which,
  2141. when the hot-keys are pressed, stops the game and starts a WIMP task. SWIVe
  2142. sends WIMP messages to Desktop Hacker (and external tasks; it is a broadcast
  2143. message) when the game is stopped, restarted, or quit. Desktop Hacker sends
  2144. a message to SWIVe telling it to continue when the Continue button is
  2145. clicked, or when Select is clicked on the icon bar icon, or whatever. Desktop
  2146. Hacker may also send a Message_Quit (0) telling SWIVe to shut the game down
  2147. entirely. Other external tasks (including the Task Manager) may send messages
  2148. to SWIVe. SWIVe will appear in the Task Display either as 'Desktop Hacker
  2149. Game' if the program interrupted did not call Wimp_Initialise, or the real
  2150. name of the stopped task if it did.
  2151.  
  2152.  Apart from the memory of the SWIVe task, there are a few other details
  2153. Desktop Hacker holds. The only directly readable one is the environment
  2154. variable dHacker$Obey$Dir, which holds what Obey$Dir held when the hot-keys
  2155. were pressed.
  2156.  
  2157. ---------+-------------------------------------------------- WIMP messages --
  2158.          |
  2159.          |                                                 Message_HackerTask
  2160.          |                                                     Message &82740
  2161.          |
  2162.  Purpose | This message is broadcast by SWIVe to inform Desktop Hacker and
  2163.          | any external tasks of a hacking session starting/ending. No
  2164.          | parameters are passed using the message; external tasks should
  2165.          | call the SWI DesktopHacker_ReadState to find out the current
  2166.          | state.
  2167.          |
  2168.          | SWIVe sends this message when:
  2169.          |
  2170.          | (a) The hotkeys have been pressed (or dHacker has been activated
  2171.          |     by a hackpoint) and the task is initialising.
  2172.          | (b) SWIVe has been told to continue by Desktop Hacker, or an
  2173.          |     external task, and the task is ending.
  2174.          | (c) SWIVe has been told to quit by Desktop Hacker, an external
  2175.          |     task, or the Task Manager, and the task is ending.
  2176.          | (d) SWIVe has been told to load a game file; this has been done
  2177.          |     successfully, and a completely new game position is
  2178.          |     established.
  2179.          |
  2180. ---------+-------------------------------------------------------------------
  2181.          |
  2182.          |                                             Message_HackerContinue
  2183.          |                                                     Message &82741
  2184.          |
  2185.  Purpose | This message is sent by Desktop Hacker, or any other task, to
  2186.          | tell the SWIVe code to restart the stopped program. No parameters
  2187.          | are passed.
  2188.          |
  2189. ---------+-------------------------------------------------------------------
  2190.          |
  2191.          |                                             Message_HackerGameFile
  2192.          |                                                     Message &82742
  2193.          |
  2194.  Purpose | This message is sent by Desktop Hacker, or any other task, to
  2195.          | tell the SWIVe code to load in the game file whose path is
  2196.          | specified.
  2197.          |
  2198.   Format | +12 = 0 (this is never a reply)
  2199.          | +16 = &82742 (Message_HackerGameFile)
  2200.          | +20 = unused
  2201.          | +24 = unused
  2202.          | +28 = unused
  2203.          | +32 = unused
  2204.          | +36 = unused
  2205.          | +40 = unused
  2206.          | +44 = null-terminated filename of game file to load
  2207.          |
  2208. ---------+-------------------------------------------------------------------
  2209.          |
  2210.          |                                              Message_HackerAltered
  2211.          |                                                     Message &82743
  2212.          |
  2213.  Purpose | This message is broadcast by Desktop Hacker whenever the memory
  2214.          | of the stopped task has been altered, either by the user, or by
  2215.          | certain DesktopHacker_MemoryAccess calls. External tasks that
  2216.          | display details in a window that depend on the contents of the
  2217.          | stopped game's application memory should rescan and redraw where
  2218.          | necessary when this message is received. No parameters are passed.
  2219.          |
  2220.          | Note that this message is not broadcast when a game file is loaded
  2221.          | which changes the application memory contents completely; instead
  2222.          | the SWIVe code broadcasts Message_HackerTask.
  2223.          |
  2224. ---------+----------------------------------------------------------- SWIs --
  2225.          |
  2226.          |                                            DesktopHacker_ReadState
  2227.          |                                                         SWI &82740
  2228.          |
  2229.  Purpose | This SWI allows external tasks to read information about Desktop
  2230.          | Hacker which may be needed to perform their function.
  2231.          |
  2232. On entry | -
  2233.          |
  2234.  On exit | R0=0 if Desktop Hacker is idling or running a single-tasking task
  2235.          | R0=1 if Desktop Hacker is running a task that's called Wimp_Init
  2236.          | R0=2 if Desktop Hacker has interrupted a task
  2237.          | R1=task handle of hacked task if R0=1 or 2, else preserved
  2238.          |
  2239.      Use | If your task requires the application memory of a hacked game,
  2240.          | you should only allow use of the task when R0=2.
  2241.          |
  2242.          | Note that the task specified in R1 does not have the same in it
  2243.          | when stopped as when it is running. See the document "GameFormat"
  2244.          | (d02) for details of what is in the application area when stopped.
  2245.          | If you just want to access the main application area, though, and
  2246.          | not the full info bundles, you should use the SWI DesktopHacker_
  2247.          | MemoryAccess.
  2248.          |
  2249. ---------+-------------------------------------------------------------------
  2250.          |
  2251.          |                                         DesktopHacker_MemoryAccess
  2252.          |                                                         SWI &82741
  2253.          |
  2254.          | This SWI loads and stores data to and from the game's WimpSlot.
  2255.          | You should always use this SWI to access the game's application
  2256.          | memory, rather than using Wimp_TransferBlock, as (a) this SWI
  2257.          | automatically re-maps the word at &8000, and (b) it uses a cache
  2258.          | in RMA to make access much quicker (Wimp_TransferBlock is very,
  2259.          | very slow). At present, the cache is 8K long, but this may change.
  2260.          | (For performance reasons the cache may not exceed 32K.) If you do
  2261.          | poke the game using Wimp_TransferBlock, you must call
  2262.          | DesktopHacker_MemoryAccess 4 to invalidate the cache, or other
  2263.          | users of the cache may not like it.
  2264.          |
  2265.          | Note, if you're searching through memory, you will find it is much
  2266.          | quicker to search forwards rather than backwards, due to the
  2267.          | rather simplistic cache algorithm. Another point to note is that
  2268.          | at this point only read-buffering is performed, not
  2269.          | write-buffering.
  2270.          |
  2271.          | No MemoryAccess operation may be used when the game is not being
  2272.          | hacked (R0 on exit from DesktopHacker_ReadState <> 2).
  2273.          |
  2274. On entry | R0=reason code
  2275.          | other registers dependent on reason code
  2276.          |
  2277.  On exit | dependent on reason code
  2278.          |
  2279.          |                                       DesktopHacker_MemoryAccess 0
  2280.          |
  2281.          | Load one word
  2282.          |
  2283. On entry | R0=0 (reason code)
  2284.          | R1=address
  2285.          |
  2286.  On exit | R0=value
  2287.          | R1 preserved
  2288.          |
  2289.          |                                       DesktopHacker_MemoryAccess 1
  2290.          |
  2291.          | Store one word
  2292.          |
  2293. On entry | R0=1 (reason code)
  2294.          | R1=address
  2295.          | R2=value
  2296.          |
  2297.  On exit | R0 corrupted
  2298.          | R1, R2 preserved
  2299.          |
  2300.          |                                       DesktopHacker_MemoryAccess 2
  2301.          |
  2302.          | Load block
  2303.          |
  2304. On entry | R0=2 (reason code)
  2305.          | R1=start address (game)
  2306.          | R2=length
  2307.          | R3=buffer (in your memory)
  2308.          |
  2309.  On exit | R0-R3 preserved
  2310.          |
  2311.          |                                       DesktopHacker_MemoryAccess 3
  2312.          |
  2313.          | Store block
  2314.          |
  2315. On entry | R0=3 (reason code)
  2316.          | R1=start address (game)
  2317.          | R2=length
  2318.          | R3=buffer (in your memory)
  2319.          | R4=your task handle, or -1 if in unpaged memory such as RMA
  2320.          |
  2321.  On exit | R0-R4 preserved
  2322.          |
  2323.      Use | Note that the buffer must be paged in when the SWI is used,
  2324.          | despite the fact that you pass the task handle. The task handle
  2325.          | is needed by Wimp_TransferBlock for efficient transfer.
  2326.          |
  2327.          |                                       DesktopHacker_MemoryAccess 4
  2328.          |
  2329.          | Invalidate cache
  2330.          |
  2331. On entry | R0=4 (reason code)
  2332.          |
  2333.  On exit | R0 preserved
  2334.          |
  2335.          | Under Desktop Hacker 1.05 or later, invalidating the cache also
  2336.          | ensures that its contents are zeroed. This is to make sure that
  2337.          | programs like dHMusic don't find portions of the game's memory in
  2338.          | the RMA and generate false alarms.
  2339.          |
  2340.          |                                       DesktopHacker_MemoryAccess 5
  2341.          |
  2342.          | Find length of game
  2343.          |
  2344. On entry | R0=5 (reason code)
  2345.          |
  2346.  On exit | R0=length of game's real WimpSlot in bytes
  2347.          |
  2348.   Errors | MemoryAccess cannot be used as no game is hacking (&82760)
  2349.          | Bad DesktopHacker_MemoryAccess address (&8275F)
  2350.          | Unknown DesktopHacker_MemoryAccess reason code (&82750)
  2351.          | Any errors returned by Wimp_TransferBlock
  2352.          |
  2353. ---------+-------------------------------------------------------------------
  2354.          |
  2355.          |                                             DesktopHacker_ReadList
  2356.          |                                                         SWI &82742
  2357.          |
  2358. On entry | R0=list number
  2359.          |
  2360.  On exit | R0=Desktop Hacker's task handle
  2361.          | R1=pointer to list block
  2362.          | R2=length of list block
  2363.          |
  2364.      Use | On exit R1 points to a list, as specified by 'ListFormat' (d03),
  2365.          | - the only difference being that the first four bytes are an
  2366.          | offset to the first byte after the end of the list, rather than
  2367.          | the header "List".
  2368.          |
  2369.          | Note that the pointer is in Desktop Hacker's application space.
  2370.          | If you want to read the contents of the list you will need to use
  2371.          | Wimp_TransferBlock with the R0 and R1 supplied by this SWI, and
  2372.          | the length of block to transfer as R2.
  2373.          |
  2374.          | There is no SWI provided to alter lists - doing so would be very
  2375.          | slow as very many calls to Wimp_TransferBlock would be needed,
  2376.          | along, perhaps, with resizing of the WimpSlot which is not
  2377.          | possible as Desktop Hacker is not paged in. If you do want to send
  2378.          | a list to Desktop Hacker, simply use the data transfer protocol -
  2379.          | make up a Wimp message block as if a list file was dragged to
  2380.          | Desktop Hacker (use the icon bar (-2) as the destination window
  2381.          | handle; the destination icon handle is unimportant), using
  2382.          | Message_DataSave. Data transfer will be conducted as normal, and
  2383.          | the window containing the list will be opened. Note that Desktop
  2384.          | Hacker does not yet support RAMTransfer, but it is very likely
  2385.          | that it will do in future, so please support it if you can!
  2386.          |
  2387.   Errors | Invalid list number (&8275E)
  2388.          | Any errors returned by Wimp_TransferBlock
  2389.          |
  2390. ---------+-------------------------------------------------------------------
  2391.          |
  2392.          |                                           DesktopHacker_BreakPoint
  2393.          |                                                         SWI &82743
  2394.          |
  2395. On entry | -
  2396.          |
  2397.  On exit | Registers preserved
  2398.          |
  2399.      Use | This SWI sets a flag which tells Desktop Hacker to interrupt as
  2400.          | soon as possible. Usually, this will be immediately, but it may
  2401.          | be called later if IRQs or FIQs are disabled, or the processor is
  2402.          | in IRQ or FIQ mode. Of course it will also only interrupt if you
  2403.          | are the current hacking task.
  2404.          |
  2405.          | In order to get all the registers for the Game Info window, not
  2406.          | just R0-R8, this SWI is trapped in the SWIVe code; the actual
  2407.          | SWI command code does nothing. You will not receive an error if
  2408.          | the situation isn't suitable for a BreakPoint. Instead, just the
  2409.          | SWI command code is called, and so nothing will happen.
  2410.          |
  2411.          | This SWI only does anything useful on Desktop Hacker 1.06 and
  2412.          | above.
  2413.          |
  2414. ---------+----------------------------------------------------- * commands --
  2415.          |
  2416.          |                                           *DesktopHacker <command>
  2417.          |
  2418.  Purpose | Start a new task or game file to be hacked
  2419.          |
  2420.      Use | This command is used by Desktop Hacker when a game is dragged to
  2421.          | it. It cannot be used from the command line. However, there is no
  2422.          | reason why external tasks should not use it, if they need to. It
  2423.          | should only be used by being passed to Wimp_StartTask, and to
  2424.          | be sure of compatibility with special fields, you should surround
  2425.          | the parameter of a Run command (if that's what you're using) with
  2426.          | quotes. For example, for BASIC:
  2427.          |
  2428.          | SYS "Wimp_StartTask","DesktopHacker Run ""CFS#adfs::HD.$.File"""
  2429.          |
  2430. ---------+-------------------------------------------------------------------
  2431.          |
  2432.          |                                                    *Desktop_Hacker
  2433.          |
  2434.  Purpose | This is just the command used to start the Desktop Hacker WIMP
  2435.          | task, as is needed by module tasks. Don't use it!
  2436.          |  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     What's new?
  2437. Document d10/04 AjC
  2438. =============================================================================
  2439.  
  2440.  If you are a user of The Hacker, you will be familiar with the way Desktop
  2441. Hacker operates, so here's file detailing the major changes in use.
  2442.  
  2443.  The interrupt method. This is the single biggest change, as is implicit in
  2444. the mere naming of this program. Don't try to press Alt-Alt after merely
  2445. double-clicking on the game, that won't do any more. As Desktop Hacker needs
  2446. to delink a lot more, and do more difficult stuff, it keeps a record of
  2447. everything interesting a game has done so far, so that it can be undone
  2448. before returning to the Desktop, and re-done when returning to the game.
  2449. Because of this, Desktop Hacker needs to know when you are starting the game,
  2450. and in case it goes into the WIMP, it needs to know which task the game is
  2451. going to be. To tell Desktop Hacker this, you simply drag the game to it. It
  2452. notices that you've done so, starts the recording of interesting things,
  2453. and runs the game for you. You'll find that you can now press Alt-Alt - it
  2454. only works when you are actually hacking a game. The Desktop Hacker icon
  2455. will change to indicate its status - 'dHacker' means it is idling, 'Running'
  2456. indicates that a game is being run (and is probably multi-tasking at the
  2457. moment), and 'Hacking' appears when the game is interrupted.
  2458.  
  2459.  The Lists window. This behaves in a similar way to The Hacker's old Lists
  2460. window, but you'll notice the new feature to select/deselect a block. This is
  2461. useful to rule out a range of addresses from a search, or to make sure that
  2462. only searches within a certain range are used (WRT the 'Only consider list'
  2463. on the search window). The buttons have different meanings on the main list
  2464. window too. Select (not Menu) now moves the disassembler to the address you
  2465. clicked on, and Adjust removes the address (WRT the new Disser buttons). To
  2466. print a list, you now press Menu and use the menu item 'Print'. The print
  2467. disassembly option is now located (much more sensibly) on the Disser. Lists
  2468. may be saved from this menu too - WRT the Filing window. Finally, the process
  2469. list functions now function correctly with very large lists.
  2470.  
  2471.  The Search window. This behaves much as before, with a few re-arranged
  2472. options. The text and mnemonic searches now accept simple wildcards (see
  2473. document 09), there is an EOR-coded option for text searches, to find those
  2474. passwords, and there's a new type of search called 'References'. This search
  2475. goes through every instruction and works out what address it 'refers' to,
  2476. substituting the current interrupted game's registers into the instruction.
  2477. There are many ways an instruction may refer to another - see document 08.
  2478. Suffice it to say that once you have a lives counter, the references search
  2479. is a very easy way of finding infinite lives, be the counter accessed by
  2480. ADR, LDR, pointer, or workspace offset. Big note - Coded Text searches need
  2481. the first character in the search string to be the actual one - it can't be
  2482. a wildcard, and it must be in the right case.
  2483.  
  2484.  Lists and searches. You may have noticed with The Hacker than creating
  2485. very large lists was difficult, and you often ran out of memory even when
  2486. you had quite enough. This is because, pre-Risc PC, the free memory pool was
  2487. managed by the Window Manager, so when single-tasking, no more memory could
  2488. be allocated. Desktop Hacker, however, multi-tasks, so you can create
  2489. absolutely whopping lists. Also, you now have 99 lists instead of just 9.
  2490. Seraching for byte 0 is now really possible! ...although not at all
  2491. recommended...
  2492.  
  2493.  The Disser. Desktop Hacker's disassembler is much more comprehensive than
  2494. either The Hacker's or RISC OS's. See document 08 for details. The buttons
  2495. you use are also moved about (WRT the Lists window): the Adjust button
  2496. toggles the address in the list (not Select); the Select button alters an
  2497. address (not Adjust); Shift-Select moves to a reference (not Menu, and not
  2498. just a branch like with The Hacker). Goto Last (not BL return) now returns
  2499. to the last place moved from, not just if it was a Branch with Link. The two
  2500. new list buttons allow you to move quickly to the first and last addresses in
  2501. the list respectively. Clicking menu on this window now brings up the main
  2502. menu, from which many other features come.
  2503.  
  2504.  The Filing window. The Hacker's Filing window is no longer needed, as the
  2505. normal RISC OS saving method can now be used. To save, go to whichever part
  2506. you want to save, and use whichever save box is relevant - it'll be under
  2507. whichever menu's Save item. Lists are saved from the List window; positions,
  2508. application memory, and screenshots are saved from the main menu. All loading
  2509. is performed by dragging the files to Desktop Hacker.
  2510.  
  2511.  MemoryCompare. MemoryCompare is no longer external code; it's too useful.
  2512. To get MemoryCompare, choose the 'Compare...' item from the main menu. You
  2513. can drag in an application memory file saved out previously, set the window
  2514. up, and click OK. Unlike previously, it'll work just like a search, with the
  2515. same hourglass, escapability, and when it has finished it'll open the list.
  2516.  
  2517.  CheatMod. The CheatMod maker is no longer an integral part of Desktop
  2518. Hacker. Instead, it's an external task, which runs independently of Desktop
  2519. Hacker. It works in a similar fashion to the old one, but there are two major
  2520. improvements, by popular demand. Firstly, CheatMods can be loaded back in and
  2521. edited, even old format The Hacker CheatMods. Secondly, there's a second
  2522. layer between keys and effects, meaning each key may perform many completely
  2523. different effects. This makes it harder for the novice, but it does mean much
  2524. more powerful CheatMods may be created. The new CheatMod maker is written by
  2525. James Ponder.
  2526.  
  2527.  GameInfo. This is a new Desktop Hacker external task which gives in-depth
  2528. information on the game being hacked, useful and interesting for the techie.
  2529. GameInfo is written by Ben Dooks.
  2530.  
  2531.  PicRip. PicRip is no longer external code. Just click on 'Graphics...' from
  2532. the main menu. It operates in much the same way as before, but with the
  2533. improved method of saving. Unfortunately, due to the nice two-task design,
  2534. the Graphics Ripper is now much slower to operate than before.
  2535.  
  2536.  Choices. The Choices window offers similar but extended disassembly options
  2537. like The Hacker's, and vastly extended options to configure the interface.
  2538. You can also change the hot-keys to any combination you want - you're no
  2539. longer limited to Alt-Alt or Ctrl-Alt.
  2540.  
  2541.  Risc PC. Desktop Hacker will work on the Risc PC. There is full support for
  2542. the new 8, 16, and 32bpp modes, and the new sprite format.
  2543.  
  2544.  The interface. Well, it's completely different. See document d07. There's
  2545. support for hot-keys too.
  2546.  
  2547.  Slow Down. Works in much the same way as before, but is more reliable thanks
  2548. to monotonic time emulation; works on lots more games now. It's on the icon
  2549. bar menu rather than the main menu, so that you can turn slowdown off before
  2550. running a game.
  2551.  
  2552.  SWI trapping. This works differently, and via some *commands. See document
  2553. d12.orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     #Nick!AbodeGýÿÿN·Ùà8!ArmSIGýÿÿ‹¹Ùà!BasicGýÿÿ±ÊÙà,!BASIChelpGýÿÿÐÊÙà.!BBCGýÿÿßÌÙà1!CreateAppGýÿÿ    ÍÙà48!GambaraGýÿÿÏÙà98!GoferGýÿÿÏÙà:!HandlesGýÿÿ«ëÙàs!LibrariesGýÿÿ×ëÙàu8!MoreHelpGýÿÿÅíÙày8!AbodeGýÿÿN·Ùà8!ArmSIGýÿÿ‹¹Ùà!BasicGýÿÿ±ÊÙà,!BASIChelpGýÿÿÐÊÙà.!BBCGýÿÿßÌÙà1!CreateAppGýÿÿ    ÍÙà48!GambaraGýÿÿÏÙà98!GoferGýÿÿÏÙà:!HandlesGýÿÿ«ëÙàs!LibrariesGýÿÿ×ëÙàu8!MoreHelpGýÿÿÅíÙày8OthersOthers#NickªWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     6Nick!HelpEÿÿÿÊ¥Æ⇨!RunEëÿÿ]mq⇦!RunImageEûÿÿ¸ôà⇨9"    !SpritesEùÿÿ¸ 6_…!Sprites22Eùÿÿ©7_àBasicEdit@úÿÿK7ÓÚ°“ManualEÿÿÿÝÇ⇨R!MenuUtilsDúÿÿØ¿tÀMessagesEÿÿÿý™p⇦5SourceEûÿÿÔóà⇨ÄDSpritesEùÿÿŒ[c⇨t
  2554. Sprites22Eùÿÿ"Yc⇨lStatusEýÿÿÎpg⇨?TechDocsEÿÿÿÅÊ⇨lTemplatesEìÿÿPyf⇨%Templs2DEìÿÿl É⇨é
  2555. Use2DEëÿÿ+BÊ⇨¶Use3DEëÿÿflLÊ⇨¶!HelpEÿÿÿÊ¥Æ⇨!RunEëÿÿ]mq⇦!RunImageEûÿÿ¸ôà⇨9"    !SpritesEùÿÿ¸ 6_…!Sprites22Eùÿÿ©7_àBasicEdit@úÿÿK7ÓÚ°“ManualEÿÿÿÝÇ⇨R!MenuUtilsDúÿÿØ¿tÀMessagesEÿÿÿý™p⇦5SourceEûÿÿÔóà⇨ÄDSpritesEùÿÿŒ[c⇨t
  2556. Sprites22Eùÿÿ"Yc⇨lStatusEýÿÿÎpg⇨?TechDocsEÿÿÿÅÊ⇨lTemplatesEìÿÿPyf⇨%Templs2DEìÿÿl É⇨é
  2557. Use2DEëÿÿ+BÊ⇨¶Use3DEëÿÿflLÊ⇨¶!Abode!Abode6Nick
  2558.            !Abode Ultra-Short User Manual
  2559.            ------------------------------
  2560.            
  2561. To switch mode, click with Adjust on icon bar icon
  2562.  
  2563. Mode         Click w/ Select   Drag & drop file(s)
  2564. -----------  ----------------  -------------------
  2565. Basic edit   Start BASIC edit  Load BASIC file 
  2566. Set type     -                 Set type of file(s)
  2567. Kill module  -                 -
  2568. Access       Lock/unlock       Set file access
  2569. Command      Execute command   Execute cmd on file(s)
  2570.  
  2571. For further info, see the file "Manual".   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  2572. | !Run file for !Abode
  2573. |
  2574. Set Abode$Dir <Obey$Dir>
  2575. If "<System$Path>" = "" then Error 0 System resources cannot be found
  2576. IconSprites <Abode$Dir>.!Sprites
  2577. RMEnsure MessageTrans 0.0 RMLoad System:modules.MsgTrans
  2578. RMEnsure MenuUtils 0.10 RMLoad <Abode$Dir>.MenuUtils
  2579. RMEnsure ARMBasicEditor 1.00 RMLoad <Abode$Dir>.BasicEdit
  2580. |
  2581. | function key definitions for use in Basic
  2582. |
  2583. | F1 -- show all commands
  2584. | F2 -- quit basic
  2585. | F3 -- run
  2586. | F4 -- edit
  2587. | F5 -- list variables
  2588. | F9 -- edit, jumping to the line where last error occurred
  2589. |
  2590. Key 1 "HELP .|M"
  2591. Key 2 "*Quit|M"
  2592. Key 3 "RUN|M"
  2593. Key 4 "EDIT|M"
  2594. Key 5 "LVAR|M"
  2595. Key 9 e$="ED."+STR$ERL+CHR$13:REP.:SYS 6,138,0,ASC(e$):e$=MID$(e$,2):UNT.e$=""|M
  2596. |
  2597. | start compressed version of program
  2598. |
  2599. WimpSlot -min 32k -max 32k      
  2600. Run "<Abode$Dir>.!RunImage" %*0Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     0A_$="Abode":B_$="1.20 (23-Aug-94)":òC_:îŶòD_yE_%=£:F_%=(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12):õ:È−66 ¸G_%:G_%=(G_%+H_%)-(G_% ◰H_%):È−262369,F_%,I_%,G_% ¸J_%:ȉJ_% ÊÉ0:òK_:È−66 ¸L_%:çL_%>M_% …çN_% …È−131114,1,-(1<<24)M_%=L_%+100ÍÉ2 :È−393413,,I_%É3 :È−262342,,I_%,É6 :òO_(I_%!0,I_%!4,I_%!8,I_%!12,I_%!16)É8 :òP_(I_%!0,I_%!4,I_%!24)É9 :òQ_(I_%)#É17,18 :òR_(I_%!4,I_%!8,I_%!16)Ë:ýE_%:òS_:È−262365:à"EÝòT_(U_$,V_%):êW_%,X_%,Y_$,Z_%,i%,N$:È−8,5,U_$ ¸,,,,,a_%:çV_%=2 …&a_%=(a_% €&F7)☓(T_% €&08)'Ì:a_%=(a_% €&C4)☓T_%:çb_% …*#N$=¤c_(¤d_(U_$)):ç¤e_(N$)<>"" …,a_%=a_% €&F7-Í.Í/,Í:È−131080,4,U_$,,,,a_% ¸;f_%:ç(f_% €1)…2òg_(¤h_("NoAccess",U_$))3Ì:çV_%=2 …5;W_%=0:õ:È−12,10,U_$,I_%,1,W_%,40,"*" ¸,,,X_%,W_%:çX_% …93Z_%=I_%!16:Y_$=U_$+"."+¤i_(I_%+20):òT_(Y_$,Z_%)<Í:ý(X_%=0)☓(f_% €1)>Í?Í:áBÝòj_(k_$):çl_% …DÈ−262366,"Dir "+¤m_(k_$)E>Í:È−131102,18,"ARMBasicEditor" ¸;f_%:ç((f_% €1)=0)€¬(¦-1)…Hòn_("EDIT")IÌ:òn_("MODE MODE")K#Í:È−262366,"Basic -load "+k_$:áOÝòK_:ço_% …Q,È−262355,,p_%:ç(p_%!0<>-1)€(p_%!16<>-1)…SKp_%!16=(p_%!16)ŵ(1<<25):È−262354,p_%!0,p_%!4,p_%!8,p_%!12,p_%!16,p_%!20UÍVÍ:áY$Ýòg_(q_$):êr_%:r_%=¤s_(q_$,17):á^dÝòt_:u_%=1:T_%=&03:l_%=¹:v_%=¹:o_%=£:w_$="Text":x_$="":b_%=£:y_%=£:z_%=&1EA:H_%=25:N_%=£:__%=¹:án9ݤm_(F$):êp%,q%:p%=1:õ:q%=§F$,".",p%):çq% >0 …p%=q%+1týq%=0:=ÀF$,p%-2)wMݤs_(`_$,A`%):B`%!0=0:$(B`%+4)=`_$+½0:È−262367,B`%,A`%,A_$ ¸,C`%:=(C`%=1)}ÝòD_:êŶ:îŶêÈ−262365 :à€#笤s_(ö$+" (line "+Ã(fi)+")",3)…ŴÈ−262365:à◰Í:áŷAÝòC_:êf_%:ÞB`% &100:È−262336,200,&4B534154,A_$ ¸D`%,E`%:îŶòD_⇧ÞÞI_% &400:F`%=&400:ÞG`% F`%:H`%=G`%+F`%:ÞI`% 20:ÞJ`% 256:w_$="Text":ÞK`% 4:$K`%="":Þp_% 24:ÞL`%(4):L`%(0)=&08:L`%(1)=&01:L`%(2)=&02:L`%(3)=&10:L`%(4)=&20:òM`:È−66 ¸M_%:òN`:òO`:P`$="<Abode$Dir>.Sprites":È−53,27,0 ¸;f_% ¡ç(f_% €2)=0 …¢P`$+="22"£ŷÍ:È−8,17,P`$ ¸,,,,Q`%:Q`%+=16:ÞR`% Q`%:R`%!0=Q`%:R`%!8=16:È−46,256+9,R`%:È−46,256+10,R`%,P`$:ÞS`% 14:$S`%="abode_"+Ã(u_%):çu_%=4 …®ç(T_% €L`%(0))…¯$S`%+="b"°Ì:$S`%+="a"²ͳÜÍ:I_%!0=-1:I_%!4=0 :I_%!8=0:I_%!12=68 :I_%!16=68:I_%!20=&7000311A:I_%!24=S`%:I_%!28=R`%:I_%!32=12:È−262338,,I_% ¸T`%:È−262361,,"<Abode$Dir>.Templates":U`%=¤V`("Info",R`%):$(I_%!(92+32*3+20))=B_$:W`%=¤V`("Access",R`%)ÀãX`%=¤V`("Options",R`%):Y`%=I_%!(92+32*11+20):Z`%=¤V`("GrabKeys",R`%):È−262362:ãI%=0 ¸4:òa`(W`%,I%,(T_% €L`%(I%))):íI%:òa`(X`%,1,l_%):òa`(X`%,2,b_%):òa`(X`%,3,v_%):òa`(X`%,4,o_%):òa`(X`%,5,y_%):òa`(X`%,6,N_%):òb`(X`%,8,¬o_%)ήòb`(X`%,9,¬o_%):òa`(X`%,14,__%):I_%!0=Z`% :È−262347,,I_%:I_%!4=(I_%!4)-10000:I_%!8=(I_%!8)-10000:I_%!12=(I_%!12)-10000:I_%!16=(I_%!16)-10000:I_%!28=-1:È−262341,,I_%:òc`:áÛGÝòn_(s$):êi%:ãi%=1 ¸©(s$):È−6,138,0,–(Ás$,i%,1)):íi%:È−6,138,0,13:áã3ÝòP_(d`%,e`%,P_%):êf`%,g`%:ç(d`%=X`%)€(e`%=11)…æf`%=0:ç¤h`(P_%)…èH$(Y`%)=¤i`(P_%):òa`(X`%,11,0):È−262354,X`%,11,,,-1,©($(Y`%)):z_%=P_%ìÍ:ç(P_%=27)☓(P_%=13)…î@$(Y`%)=¤i`(z_%):òa`(X`%,11,0):È−262354,X`%,11,,,-1,©($(Y`%))ñÍòÌ:çy_% €(P_%=z_%)…ô È−262351,,I`%:ç(I`%!12)>=0 …ö3I_%!0=I`%!12:È−262347,,I_%:ç((I_%!32)€(1<<17))…ùI_%!28=-2úÌ:I_%!28=-1üÍ:È−262375,2,I_%,I_%!0þÍÿÌ:È−262364,P_%ÍÍ:á%ݤh`(f`%):êg`%:g`%=£:ȉ(f`% €&F)Ê    &É1,2,3,4,5,6,7,8,9:g`%=(f`%>=&181) É10,11,12:g`%=(f`%>=&1CA)
  2601. Ë:=g`%1ݤi`(f`%):êU_$:U_$="":ç(f`% €&10)…U_$+=½(139)ç(f`% €&20)…U_$+="^"U_$+="F"+Ã(f`% €&F):=U_$@ݤd_(f$):êp%,q%:q%=0:õ:p%=q%+1:q%=§f$,".",p%):ýq%=0:=Áf$,p%)!3ÝòO`:êV_$:êŶ:F%=‰("<Abode$Dir>.Status"):çF%=0 …&òg_(¤e_("NoStLoad")):òt_(_Ì:è#F%,u_%,T_%,l_%,v_%,o_%,V_$,x_$:è#F%,b_%,y_%,z_%:è#F%,H_%,N_%,__%:Ù#F%:çu_% <1 ☓u_% >5 ….    u_%=1/Í:ç(©(V_$)>0)€(©(V_$)<12)…1 w_$=V_$2Ì:w_$="Text"4Í5Í:á8-ݤV`(U_$,j`%):êk`%,i%:êŶ:îŶêÈ−262362 :òD_<BÈ−262363,,I_%+4,G`%,H`%,-1,U_$,0 ¸,,G`%:I_%!68=j`%:çI_%!88>0 …?9ãi%=0 ¸I_%!88:f%=I_%!(92+i%*32+16):ç(f% €&103)=&102 …BI_%!(92+i%*32+24)=j`%C    Í:íi%EÍ:È−262337,,I_%+4 ¸k`%:=k`%IVÝòM`:êl`$,m`%,n`%,o`%:l`$="<Abode$Dir>.Messages":È−267520,,l`$ ¸m`%,,n`%:çm`% €1 …N    o`%=0OÌ:Þo`% n`%Q<Í:Þp`% 17+©(l`$):$(p`%+16)=l`$:È−267521,p`%,p`%+16,o`%:áWÝòS_:È−267524,p`%:p`%=0:á\?ݤe_(q`$):êr`%,f_%:È−398594,p`%,q`$,0 ¸,,r`%;f_%:ç(f_% €1)…`=""aÍ:=¤i_(r`%)dEݤh_(q`$,s`$):êr`%:È−267522,p`%,q`$,I_%,&100,s`$ ¸,,r`%:=¤i_(r`%)i%ÝòO_(t`%,u`%,v`%,w`%,e`%):ȉw`% ÊkÉ-2:ȉv`% ÊmÉ1:çu_%=5 …o
  2602. òx`(1)pÌ:òx`(u_%+1)rÍsÉ2:òy`(1)uÉ4:ȉu_% Êw(É1:òn_("MODE MODE"):È−262366,"Basic"z8É4:T_%=(T_% ŵL`%(0)):òa`(W`%,0,(T_% €L`%(0))):òx`(4)~É5:òz`(x_$)€ËŴËŵÉW`%:ç¤_`(W`%,e`%)…☓T_%=T_% ☓(L`%(e`%))ŶÌ:T_%=T_% €(¬L`%(e`%))Í:ç(e`%=0)€(u_%=4)…⇨ òx`(u_%)⇩Í⇧ÉX`%:ȉe`% Ê™É1 :l_%=¬l_%‰É2 :b_%=¬b_%•É3 :v_%=¬v_%‘HÉ4:o_%=¬o_%:È−262355,,p_%:ç(¬o_%)€(p_%!16<>-1)€((p_%!16)€(1<<25)>0)…“Np_%!16=(p_%!16)€(¬(1<<25)):È−262354,p_%!0,p_%!4,p_%!8,p_%!12,p_%!16,p_%!20„%Í:òb`(X`%,8,¬o_%):òb`(X`%,9,¬o_%)−.É8,9:ç((v`%=4)€(e`%=9))☓((v`%=1)€(e`%=8))…œçH_%>16 …†çH_%>40 …‡
  2603. H_%-=2fi Ì:H_%-=1 Í¡Í¢+Í:ç((v`%=4)€(e`%=8))☓((v`%=1)€(e`%=9))…¤çH_%<100 …¥çH_%<40 …¦
  2604. H_%+=1§ Ì:H_%+=2©ÍªÍ«Í¬É5 :y_%=¬y_%­É6 :N_%=¬N_%®#É12:ò``:I_%!0=X`%:È−262342,,I_%²É13:I_%!0=X`%:È−262342,,I_%µÉ14 :__%=¬__%¶Ë·Ë:áº☓ÝòQ_(Aa%):êBa%,Ca%,Da%,Y_%,Y_$,Ea%,p%,Fa%,Ga%:È−285636,y`%,Aa% ¸,Ba%,Ca%:Da%=Ca%!0:Y_%=Ca%!8:Y_$=¤i_(Ca%!12):Ea%=Ca%!24:çEa%=0 … ȉY_% ÊÃ!ÉHa%,Ia%,Ja%,Ka%,La%:òx`(Da%)Å7ÉMa%:I_%!0=X`%:È−262347,,I_%:ç(I_%!32 €(1<<16))=0 …É9Fa%=(Na%-(I_%!12+I_%!4))Ŵ2:Ga%=(Oa%-(I_%!16+I_%!8))Ŵ2Ì€Í:I_%!4=I_%!4+Fa%:I_%!8=I_%!8+Ga%:I_%!12=I_%!12+Fa%:I_%!16=I_%!16+Ga%:I_%!28=-1:È−262341,,I_%:È−262354,X`%,11,,,-1,©($(Y`%))ÔÉPa%:E_%=¹ÖË×Ì:ȉEa% ÊÙÉIa%,Qa%:çY_%=Ra% …ÛòSaÜ%Ì:w_$=Y_$:È−285649,Y_%:çEa%=Qa% …àÈ−285649,Ea%áÌ:È−285641,Ta%,0ãÍäÍåÉJa%:çv_% …ç%ç¤s_("Kill module "+Y_$+"?",&13)…è)È−262366,"RMKill "+Y_$:È−285635,Y_%,£êÍë+Ì:È−262366,"RMKill "+Y_$:È−285635,Y_%,£îÍïÉLa%:x_$=Y_$ñËò Í:çBa% …ô
  2605. òy`(0)õÍ:áø⇧ÝòN`:êUa%,Va%,Wa%,Xa%:È−53,-1,4 ¸,,Ua%:È−53,-1,5 ¸,,Va%:È−53,-1,11 ¸,,Wa%:È−53,-1,12 ¸,,Xa%:Na%=(Wa%+1)*(1<<Ua%):Oa%=(Xa%+1)*(1<<Va%):á-ÝòR_(Ya%,Za%,aa%):êba%:ba%=0:çYa% <>E`% … ȉaa% ÊÉ0 :E_%=¹)É3:ca$=¤i_(I_%+44):da%=I_%!40:ȉu_% Ê É1:çda%=&FFB …òj_(ca$):ba%=4ÍÉ2:ç(da% >=0)€(da% <=&FFF)…)È−262366,"SetType "+ca$+" "+w_$:ba%=4Í É4:ç(da%=&1000)☓(da%=&2000)…òT_(ca$,2)Ì:òT_(ca$,1) Í:ba%=4É5:òz`(x_$+" "+ca$):ba%=4 Ë!É&400C1:òN`#Ë:çba%<>0 …%6I_%!0=20:I_%!12=Za%:I_%!16=ba%:È−262375,17,I_%,Ya%)Í*Í:á-Ýòz`(ea$):ç__% …/,È−262366,"TaskWindow -quit "+½34+ea$+½340Ì:È−262366,ea$2Í:á5+Ýò``:F%=®("<Abode$Dir>.Status"):çF%=0 …8òg_(¤e_("NoStSave"))9MÌ:ñ#F%,u_%,T_%,l_%,v_%,o_%,w_$,x_$:ñ#F%,b_%,y_%,z_%:ñ#F%,H_%,N_%,__%:Ù#F%>Í:áA5Ýòx`(fa%):u_%=fa%:$(S`%)="abode_"+Ã(u_%):çu_%=4 …Eç(T_% €L`%(0))…F$(S`%)+="b"GÌ:$(S`%)+="a"IÍJÍ:òa`(-2,T`%,0):áN@ݤi_(s%):êi%,n$:i%=0:È”s%?i% >=32 :n$+=½(s%?i%):i%+=1 :Î:=n$TBݤc_(s$):êi%:ãi%=1 ¸©(s$):a%=–(Ás$,i%,1)):ç(a%>=97)€(a%<=122)…YÁs$,i%,1)=½(a%-32)ZÍ:íi%:=s$^Dݤga(q_$,ha%):êk`%:È−285634,,q_$ ¸k`%:çha%<>-1 …È−285646,k`%,ha%b=k`%dAݤia(ja%,ka%):êk`%:È−285634,,"" ¸k`%:È−285645,,1,ja%,ka%:=k`%j{Ýòc`:êi%,p%,t$:È−285632,010,0:Ta%=0:È−285633,,"Set type" ¸Sa%:i%=0:õ:È−267525,p`%,"TYPE*",I_%,256,i% ¸,,p%,,i%:çp%<>0 …s7t$=¤e_(¤i_(p%)):r_%=¤ga(t$,-1):çt$=w_$ …È−285641,,1vØÍ:ýp%=0:Qa%=¤ga("Other",-1):È−285642,,1:Ra%=¤ga("Rebuild menu",-1):la%=0 :È−285633,,"CLI command" ¸ma%:na%=¤ia(256,K`%):È−285640,na%,x_$:È−285633,,A_$ ¸y`%:oa%=¤ga("Info",U`%):È−285642,,1:Ha%=¤ga("Basic edit",-1)◰ Ia%=¤ga("Set type",Sa%):Ja%=¤ga("Kill module",-1):Ka%=¤ga("Access",W`%):La%=¤ga("Command",ma%):È−285642,,1:Ma%=¤ga("Options...",-1):Pa%=¤ga("Quit",-1):òSa:á™FÝòy`(pa%):$(Y`%)=¤i`(z_%):È−285649,y`%,u_%:È−285640,,w_$:çpa% …òla‹
  2606. çpa% …›"È−262351,,I`%:È−285637,y`%,I`%”Ì:È−285637,y`%,0–Í:áŒ%Ýòla:êY_%:çla%<>0 …È−285635,la%,£‡cÈ−285633,,"RMKill" ¸la%:qa%=0:ra%=0:sa%=0:õ:È−131102,12,qa%,ra% ¸,qa%,ra%,ta%;f_%:ç(f_% €1)=0 …¤%ua%=ta%+(ta%!16):çua% <&3000000 …¦Y_%=¤ga(¤i_(ua%),-1):sa%+=1¨Í©Í:ý((f_% €1)=1):çsa%=0 …¬È−285646,Ja%,0­Ì:È−285646,Ja%,la%¯Í:á²%ÝòSa:êY_%:çTa%<>0 …È−285635,Ta%,£µ`È−285633,,"Other types" ¸Ta%:va%=0:õ:È−131107,"File$Type_###",J`%,24,va% ¸,,wa%,va%:çwa%>0 …º:J`%?wa%=13:Y_%=¤ga($(J`%),-1):ç$(J`%)=w_$ …È−285641,,1½-Í:ýwa%=0:xa%=¤ia(24,0):È−285646,Qa%,Ta%:áÃ.Ýòa`(d`%,e`%,f%):I_%!0=d`%:I_%!4=e`%:çf% …ÇI_%!8=1<<21ÈÌ:I_%!8=0Ê"Í:I_%!12=1<<21:È−262349,,I_%:áÏIݤ_`(d`%,e`%):I_%!0=d`%:I_%!4=e`%:È−262350,,I_%:=((I_%!24)€(1<<21))>0Õ.Ýòb`(d`%,e`%,f%):I_%!0=d`%:I_%!4=e`%:çf% …ÙI_%!8=1<<22ÚÌ:I_%!8=0Ü"Í:I_%!12=1<<22:È−262349,,I_%:áÿks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ‘€!abode,, wwwwwwwwwwwwwwÝÝ­w⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚw⇦€€ÝÝ­Ýw⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝw⇦€⇦€⇦ÝÝ­Ý}w⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝww⇦€⇦€ÝÝ­Ý™ww⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝ⇦ww⇦€⇦⇦ÝÝ­Ý™⇦ww⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝ⇦⇦ww⇦€€ÞÝ­Ý€ww⇦⇦⇦⇦⇦⇦⇦èîÝÚÝ⇦⇦⇦ww⇦⇦⇦⇦€î−ÞÝ⇦⇦ww⇦⇦⇦⇦⇦⇦xfiéÞÝ⇦⇦⇦⇦ww⇦€~îîw⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦èîîw⇦⇦⇦⇦⇦wwwwwwwîîwwwwwwwwwL    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!abode!,,wwwwwwwwwwwwwwÝ­Ú⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝ­Ý⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØݪÝ⇦⇦⇦€€ÝÝÚÝ⇦⇦⇦⇦€€€⇦Ý­ÚÝ⇦⇦⇦⇦€ØÝ­Ý}⇦⇦⇦€€€ØݪÝ}⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÝÝÚÝx⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦Ý­ÚÝx⇦⇦⇦€€ÐÝ­Ý™x⇦€⇦€⇦Ðݪݙx⇦⇦⇦⇦ÝÝÚÝ⇦x⇦⇦€⇦€€€Ý­ÚÝ⇦x⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝ­Ý™⇦x⇦⇦⇦⇦⇦⇦⇦⇦⇦Øݪݙ⇦x⇦⇦€ÝÝÚÝ⇦x⇦⇦⇦€⇦€Ý­ÚÝ€x⇦⇦€⇦⇦ÐÝ­Ý™€x⇦⇦€⇦€⇦Ðݪ݀⇦x⇦⇦⇦⇦⇦⇦⇦⇦ÝÝÚÝ⇦⇦⇦x⇦⇦⇦⇦⇦⇦⇦⇦Ý­ÚÝ⇦⇦⇦x⇦⇦⇦⇦⇦⇦⇦èÝ­Ý™⇦€⇦x⇦⇦⇦⇦⇦⇦⇦èÞ­Ý€€⇦x⇦⇦⇦⇦⇦⇦⇦îîÝÝ€€⇦x⇦⇦⇦⇦⇦⇦⇦îéÝÝ⇦⇦€⇦x⇦⇦⇦⇦⇦⇦èfiéÝ™⇦⇦⇦⇦x⇦⇦⇦⇦⇦⇦è−îÝ™⇦⇦⇦⇦x⇦çéîÝ€€€⇦x⇦çî~€⇦⇦xèçîw⇦⇦⇦⇦xèî~€€€⇦⇦x⇦⇦⇦⇦⇦îî⇦⇦⇦⇦⇦⇦⇦⇦x⇦⇦⇦⇦⇦î‰⇦⇦⇦⇦⇦⇦⇦⇦xwwwwwçîwwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  2607.  
  2608.                         !Abode User Manual
  2609.                         ------------------
  2610.            
  2611. About !Abode
  2612. ____________
  2613.  
  2614. Abode stands for Another Bunch of Desktop Enhancements. It is a Swiss-Army-knife type of application. It combines several utilities, all meant to make life on the desktop a bit easier. At each moment, only one utility is active, depending on the mode Abode is in. These are the modes:
  2615.  
  2616.   1) Basic edit  -- To start the BASIC editor, and load files into it.
  2617.   2) Set type    -- To set the type of one or more files.
  2618.   3) Kill module -- To RMKill modules loaded in RAM.
  2619.   4) Access      -- To set or clear the delete-protection (and other
  2620.                     attributes) of files and directories.
  2621.   5) Command     -- To excute CLI commands
  2622.  
  2623. In addition, Abode has some smaller features:
  2624.  
  2625.   * A caret blinker, to make it easier to find on a crowded screen.
  2626.   * A PullFront key. Pressing this key opens the window that the mouse pointer
  2627.     is over, to the front, making it fully visible.
  2628.  
  2629. For most of these functions there already are (Public Domain) utilities. This one is written as a single application, so that the icon bar won't get too crowded. It also saves some memory.
  2630.  
  2631. This file describes how you can get Abode to do all these things. However, if you're familiar with this kind of utility, you'll probably only need to read the ultra-short manual in the !Help file.
  2632.  
  2633. !Abode is FreeWare. For conditions of use, read the copyright notice at the end of this manual.
  2634.  
  2635.  
  2636. Starting the program
  2637. ____________________
  2638.  
  2639. As usual, the program is started by double-clicking on its icon in a filer window. It will install itself on the icon bar. You can bring up the main menu in the normal way, by clicking the Menu mouse button over the icon on the icon bar.
  2640.  
  2641.  
  2642. Switching between modes
  2643. _______________________                     
  2644.  
  2645. The main menu contains, besides the normal "Info" and "Quit" options, all the modes. The mode that is currently active is indicated by a tick. You can change to another mode by selecting one from the main menu. The icon on the icon bar will also change. A faster way to change mode is by clicking on the icon with the Select button. The program will then "cycle" through the modes.
  2646.  
  2647.  
  2648. Mode 1: Basic edit
  2649. __________________
  2650.  
  2651. When you drag a file from a filer window onto the Abode icon, the program loads this file into the BASIC editor. You can only do this with files of type Basic. If you click on the icon with Select, Basic is started without loading a file.
  2652.  
  2653. If you hold down the Shift key when dragging, the file is loaded into Basic, but the editor is not started.
  2654.  
  2655. The Abode !Run file defines a couple of function keys, so that you can enter much-used BASIC commands like RUN, EDIT, etc. with one keypress. You can change these to your liking.
  2656.  
  2657.  
  2658. Mode 2: Set type
  2659. ________________
  2660.  
  2661. In this mode, you can change the type of files. First you choose the new file type, by selecting one from the "Set type" submenu (the default is Text). The menu of types has two levels. The first is user-configurable, and contains the types that are most used. A submenu leads to the second level menu, which contains all known types. Its last menu entry is writable: useful for entering the type as a hexadecimal value, in case it was not listed.
  2662.  
  2663. The type of a file is changed when you drag its file icon from a filer window onto the Abode icon. Dragging multiple files also works.
  2664.  
  2665.  
  2666. Mode 3: Kill module
  2667. ___________________
  2668.  
  2669. This can be useful when you want to free some memory by removing relocatable modules that are no longer needed. The modules that are loaded in RAM can be seen in the "RMKill" submenu. Clicking on an entry will issue an RMKill command. When Abode is in another mode, you can view the submenu, but will not be able select a module.
  2670.  
  2671. Be careful with killing a module: if it is still used by another application, that application will probably crash. To prevent this, in the standard setup you are asked to confirm each RMKill; it can be switched off in the Options window.
  2672.  
  2673.  
  2674. Mode 4: Access
  2675. ______________
  2676.  
  2677. When in this mode, dragging an object onto the Abode icon will clear or set the attributes of that object. You can also do this from the Filer menu, but Abode works recursively. That is, if the object is a directory, the attributes are also changed for every file in that directory (and for its subdirectories, and for files in those, etc.). This also works for applications. Whether the delete-protection will be set or cleared is shown by the icon. You can toggle this by clicking on the icon with the Select button. The other attributes (read and write access) can be set from a submenu.
  2678.  
  2679. Abode can also be configured to never delete-protect files that contain the setup (i.e. user preferences) for an application.
  2680.  
  2681.  
  2682. Mode 5: Command
  2683. ---------------
  2684.  
  2685. This mode allows you to execute a command. This can be handy when you want to execute it repeatedly; you only have to type it in once. It is also useful when you want to execute a command on a lot of files; for example to set the timestamp of a number of files, first enter the command 'Stamp' in the submenu, then drag the files onto the Abode icon.
  2686.  
  2687. Optionally, the command can be run in a Task window.
  2688.  
  2689.  
  2690. Options
  2691. _______
  2692.  
  2693. In the "Options" window you can set a number of preferences:
  2694.   
  2695.    1) *Dir before BASIC edit
  2696.       If this option is on, the current directory will be set before a Basic
  2697.       file is loaded into the editor. In this way, when you save your file
  2698.       with only a leafname, it will be stored in the directory where it came
  2699.       from. 
  2700.  
  2701.    2) Don't lock setup files
  2702.       Prevents Abode from setting the "Lock against deletion" bit of setup
  2703.       files. This can be handy when you want to lock applications on your
  2704.       discs. The setup file in the application directory should not be
  2705.       locked, because it may change during use. With this option on, you
  2706.       don't have to open the directory and unlock the setup file. Abode
  2707.       recognizes a setup file by its name (e.g. "Status", "Choices" etc.)
  2708.  
  2709.    3) Confirm RMKill
  2710.       When on, this forces Abode to ask you to confirm the RMKilling of a
  2711.       module (just to keep on the safe side). 
  2712.  
  2713.    4) Blink caret
  2714.       This gives you a blinking caret, not just in Abode itself, but
  2715.       anywhere on the screen. You can change the blink frequency with the
  2716.       up/down arrows.
  2717.  
  2718.    5) "Pull Front" key
  2719.       If this is on, pressing a hotkey will pull the window that the pointer
  2720.       is currently over, to the front. This can be handy when your screen is
  2721.       filled with lots of windows, and you want to view a window that is
  2722.       covered by other windows. Sometimes you can't click on the title bar,
  2723.       because that part is also covered. With this option, you can move the
  2724.       pointer over any part of the window, and press the hotkey. If the
  2725.       window is already in front, it will be pushed to the back.
  2726.       You can set the hotkey in the writable icon by pressing the hotkey
  2727.       when the caret is in the icon.
  2728.  
  2729.    6) Run Command in a task window
  2730.       If this option is on, the command is run in a Task window, so that it
  2731.       multitasks, and output is sent to !Edit (or !Zap, or whatever editor
  2732.       you are using).
  2733.  
  2734. The window contains two more buttons. One button saves the current setup in a file in the !Abode application directory. This file is loaded when Abode is started. The second button simply closes the options window.
  2735.  
  2736.  
  2737. Credits and copyright notice
  2738. ____________________________
  2739.  
  2740. I wrote this application for my own use. Thanks are due to Ferdinand Oeinck, Joris Roling, Majid Anwar, and Emmet Spier, for writing utilities that I borrwoed ideas from. (Also copied some sprites, sorry guys! Wrote the program myself though.)
  2741.  
  2742. The MenuUtils module is FreeWare, and was written by (and is © of):
  2743.  
  2744.          Alex Petrov
  2745.          Bld. 1, Flat 107
  2746.          Kavkazsky boulevard, 29
  2747.          Moscow 115541
  2748.          RUSSIA
  2749.          e-mail: APetrov@misis.msk.su
  2750.  
  2751. This program is FreeWare. This means that I retain the copyright. You may freely copy and distribute it, provided that it is complete with all original files, and that you do not sell it. PD libraries may charge a nominal fee for the cost of duplication, postage etc. When you use the program, you do so entirely at your own risk. You may change the program to suit your own needs. If it's a bug fix, or if you think it's an improvement, then please send the changes to me.
  2752.  
  2753. Dick Alstein
  2754. Lijnslagerstraat 204
  2755. 5625 BP  Eindhoven
  2756. The Netherlands
  2757. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NoStLoad:Could not load status. Using default
  2758. NoStSave:Could not save status
  2759. NoAccess:Could not set access of %0
  2760. # The following lines contain names (in uppercase) that are
  2761. # considered as setup files. Add your own if you want.
  2762. SETUP:*
  2763. STATUS:*
  2764. CONFIG:*
  2765. CHOICES:*
  2766. !PREFS:*
  2767. OPTIONS:*
  2768. CONFIGURE:*
  2769. !CONFIG:*
  2770. SETTINGS:*
  2771. !OPTIONS:*
  2772. !CHOICES:*
  2773. SCORES:*
  2774. HISCORES:*
  2775. HIGHSCORES:*
  2776. !HISCORES:*
  2777. HIGHTABLE:*
  2778. # File type menu.
  2779. # You can modify it to your liking.
  2780. TYPEff8:Absolute
  2781. TYPEddc:Archive
  2782. TYPEffb:BASIC
  2783. TYPEffd:Data
  2784. TYPEffa:Module
  2785. TYPEfeb:Obey
  2786. TYPEff9:Sprite
  2787. TYPEfff:Text
  2788. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     @@@ÿÿÿÿ@ÿÿÿÿ@txeT@@@ê@@@ÿÿÿÿ WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  2789. | Obey file to replace Abode's 3D-look templates with
  2790. | the 2D-look templates
  2791. |
  2792. Rename <Abode$Dir>.Templates <Abode$Dir>.Templs3D
  2793. Rename <Abode$Dir>.Templs2D <Abode$Dir>.Templates
  2794. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  2795. | Obey file to replace Abode's 2D-look templates with
  2796. | the 3D-look templates
  2797. |
  2798. Rename <Abode$Dir>.Templates <Abode$Dir>.Templs2D
  2799. Rename <Abode$Dir>.Templs3D <Abode$Dir>.Templates
  2800. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     D{Ø{ð{$3SARMBasicEditorBasic Editor    1.00 (21 Aug 1987)ARMBEèÿmEnter the Editor using EDIT from Basic@­èL†å]…âŴà0…å}…âŴà4…åX…åH†å@âD…几   ë€=é‰C­è‘ áXŵ†åXpflåŴ…â‹…âëPãŵ…â›…âë‰◰=é@­è ‘ä0’äRá
  2801. Sá     Ráß‘    ‘€ä€Ŵä ã€=é    @­è0 á  á ã …â#ëPã A° á[ë ã$…å€=éÿC­èà’†åäŴ†åèq†å    `HàR†åßPâ‹O…â
  2802. =…â
  2803. -…âTá
  2804. “äpãŵùÿÿ
  2805. #ë áPဠMUã    Pá:Pá0    A0QáA ŵäêÿÿêÿ◰=éæC­è‘ á€ ãp ãäa†åDQ†åPŶâYá
  2806.      ánë ã¢ëpã
  2807. X〠ã?    ëÍë…†åéë ápàWáÊ     áéë  ãëÙå‘⇨àåÿÿê áæ◰=éC­è‘ ã ã      á?#ë ãø뀠á:"ëPã¸Ŵ…€ ¼Ŵ…'
  2808. • XãYã‘Iîÿÿwë‘ áëÿÿê‰ XãrëYá‘ ‘⇨äÿÿê– Xã³ X
  2809. ² Xã0†å    ±‘çðëX†åp…å ãcë$…å
  2810. êŷ Xã0†åD†å    !‘ç⇧ë á á®ë#"ëËÿÿê á◰=éflC­è§fi…â$Ŵ†å€q†å ãXáÚï+êrëXáp⇦"€q…%*\†åPã
  2811. pÙå Pãòÿÿ⇨à€â Gà    ët†åÉç ã€âWá*Ùç Pãp€q…d†å  á      á0 á@ áèë ã4ëêt†åÉç    ëd†åôë ã,ë€⇦â$Ŵ…åÊëfl◰=éÏC­è‘ á Ŵ†åÿ  ã%    ëp á†å    Pá 30…5,:ÿ ã1…â!†å Bâ` á0 ãïz~#ëàã0…å ê ã$…å™"ë0†åPã
  2812. Ó#ë ãÆåÿ ãÆåÃëê ã|…å4†åPã     ‘ á° á áDëp…åuë ã$…åYã  SÏ◰=éÆC­è` áp á€ á‘ ã á4ë
  2813. ۉ
  2814.  ã»ë€ á€Ŵà  á †åAàëpã
  2815.  ã †å ëpã  
  2816.  È…åÌ…å†åÐ…åÔa…åØ…åÜa…å¥ë    ‘€á áë̆堀à áÈ!…åÌ…åÐa…å†å@âÔ…åØa…åÜ…å„ë    ‘á Æ◰=éÀ†ä̆帠flå!Rá´•â‰ð°øâ…åð?ã áÛ…â܆åІ堑堒ç!…å ‘å ’ç!…å ãÌ…å0…å|…åx…å$…å…å`…内å ã,…åU"ë"ë0†åPã 0…ôCëOë1ëäë4†åPã
  2817. CëJë1ëêàë¿ê¥ €*ARMBE is only valid from BASIC@­è†åQãà
  2818.  ã1-…â0Òä00Câ€A á€☓à€àQâøÿÿ€=é◰C­èh’†å@Ŵ†åYã
  2819. $†å á?ëp°áp Gâ     á:ë     á·ëGàJëPâüÿÿ◰◰=é ã¬…åfë ïPã
  2820. Line x†åë#ëï is too long to be edited
  2821.  
  2822. †å(…å$†åPã
  2823. Ü†å ‘åІå!†å!ŵã Ŵç.…âÀéïøâ†åð°á@­è  ã0…â
  2824.  ã    ë0ŴâÃä ŵâPãøÿÿ“!…å€=é@­èĆåQã
  2825.  ã  áÓ!ëï      4†å’çPã
  2826.  ïPâüÿÿŴç€=éB­è,†å ã5ï‘ á ã5ï ãRãã
  2827.  ãïï    ï áï@ëïï
  2828. ïï;ëòëŵ=é@­è
  2829.  ãÊ…â„  ã Áäï    Ŵâ ŵâ RãùÿÿÜ•â@Ŵâd  ãÑäï Râûÿÿ€=éB­è‘ áhflå…ådflå …å …â†åH†å ë†åL†åëP†å    Pá †ÂT†å    Pá†Âŵ=é@­è    QáZPãÂÔßâÂä€=é       @­èQã
  2830.  3:Aâ €àÿ Rãà#    *Ŵ! áŴ ŵà €àÿ Rã
  2831.  3:ÿ, ã BâBà‘ë€=é@­è@†å…ëQã€Pã €=éB­è‘ á
  2832. ⇨â
  2833.  ãŵ뀠á€Ŵàÿ Pã:⇨âÿ Pãà#ŵ=é@­è ãÄ…åp†å ã àã!ë ãÄ…å€=é@­è,†åPã
  2834. -ëõëîÿÿë€ýÿëòë€=éÃC­è‘ á€ ãp ápâ     áIë…†åÍÿÿë€⇦àXáÊ    ` á     áÍ ëŵëQã‘ ñÿÿ áÇ ëpã
  2835.  p…åÃ◰=éüC­è‘ áp ãA†å@Dâ1†å¼ 뀰á` CRJPÙåP⇨à áµ ëpã1
  2836. ⇦âPá` ÁHÊp ã◰à  áYá Á Á !†Å Ñ Ñ  ÓÑëRãB  á
  2837.  ã †åŴâ◰ÿÿëPã
  2838. ºÌ…åBâ¡ë `€â
  2839.  ãÈ…åÐ1…åÔA…åØ1…åÜA…å)ê ãÌ…åÐ1…åÔA…åRá` Ñ ÓØ1…ÕÜQ…Õ`⇦ÂŷÂØQ…ÅÜA…ÅÈ…åê áŴÿÿëpã` 
  2840.  ã †åŴâ^ÿÿëpã
  2841.    Ì…åÈ…åÐ1…åÔA…åØ1…åÜA…åp ã †åAâsëȆå€àiÿÿë` á á áü◰=é@­è †åÿ Qã  t
  2842. —ÿÿëPã
  2843. äëPã 
  2844.  ã—…å,"†åRㆅ ãfê€=éC­è‘ á€ áóëp á á†ëPã ÑåŴàPá    àD†åPáÊ á; ëâ àãpë◰=é@­èDÿÿë0†åD†å   á ëpãX†p…€=é@­è@†åÀ†å2ë$†åŴâQá
  2845. \†åQã
  2846. §…â€!†å0RâJÑç Qã
  2847. Rá ë◰ë€=éþ@­èd1†å0B†åDQ†å`◰à`ŷà`Fà`Vâ Ó Ú`Fâa“çpÖå`ŷàVá d…
  2848. lëp“äWáûÿÿ ãþ€=é@­è ÿÿë0†åD†å   áÒëpã  Ŷ €=éüC­è‘ á$Ŵ†åp ã@ ã§…â áX"†åë` áë …â…†å      áëP áàã
  2849. / ã ãõêã
  2850. ãøÿÿ
  2851. pãêãpã
  2852. ãðÿÿ
  2853. pãã p á áü◰=é@­èë☓!†årãåÿÿ
  2854. 
  2855. …â…â;ë$ëPãp
  2856. …â…âÅë0 á
  2857. …âflë…†åpã0◰@☓
  2858.  …â…†åx"†åéë☓†åpã 0◰@☓à á€=éüA­è$Ŵ†åp á` ãP ã@ ã§…â áX"†åë@ á☓1†åÅë …â…†å  áëP áà
  2859. / ã ã«ê☓áPãùÿÿ
  2860. Tã`ŷ0 Uã `ŷ  ☓!†ŵà áüŴ=é@­è¼ë☓†åpã 
  2861. 
  2862. …âcë…†åpã  €=éflC­è‘ á€ áÀq†å,†åPã
  2863. ¾ë0†åD†å   áHëpã á  áÿÿë êWáYã  §.…€1†@ Æê áX†å àã›ëüûÿëfl◰=éflC­èÀ’†åXŵ†åpÛåx†åPã
  2864. §… 堠á 0 á.ëPã a|
  2865. ë†åÐåÿPã
  2866. ÛåPà
  2867. d†å    ŴàD!†å02†åë,†åQã
  2868.  ãP!†å Bâ]>…âTA†å1◰à뀆å+þÿëÀ…åfl◰=é@­èQáÊA›çTã
  2869. Tá@☓ÀA◰ÇŴâõÿÿê€=é@­è ïD†å0†å42†å  ã!Ŵç!◰çPâûÿÿZ€=é@-éë ã,•âŴâ   áè@-é ã•âŴâ   á ïùÿÿz€½è@-é0àflå!^áà Ìâ…È…åÌ…åÐ"…åÔ2…åØB…åÜR…å.î…âÀ‰è€ýè¥ B­è‘ á ãRã
  2870. 0Ùä@ÑäSá  Râøÿÿŵ=éB­èïï ã ãï`’†å ã`…å’ëYãzŵ=éB­è,†åPã`’†å ã`…å ãvëYãn ŵ=é@­è  ãPá
  2871.  ŵâ0Ðå€àùÿÿê á€=éÿC­è‘ áp áÑ뀠á á*…â ãÂä`ÑçÁç‘Âå)“ á‘Âå ŵâ0 ã@ ã‘ áØÒ†åÀ-éà•â܆åHð€âÀ½è    Ð á`Çç
  2872. …âBàAâÿQãàÃÀÕ☓…åÊ€âÐä Qãüÿÿ
  2873. ⇧QãÌ @ÿ◰=é@­è á™ ã!& á  âÀ0â#!ŵáT "âŵà? â@ ŵãŵà!$ á? â@ ŵãŵà€=é@­èØëH ãI ãë ã  ãçë8†åPãY N ïë€=éC­è€ ãXã . YãXã
  2874. ê⇩ Yã€⇦âX〠òÿÿêŒ Yã€X†íÿÿê     á◰=é@­è,•â ã  ãfl
  2875. ëQã‘ YPã  8…åóÿÿê€=éYN@­èïï8†åPã  ï>ë€=é@­èïï9ë€=éB­è¬†åPã †\†Pã,†å ã5ï‘ áã0     0 @ ãã0◰0◰@☓ïï    ï áïëïï
  2876. ï áïëÐÿÿëêÂüÿëŵ=é@­è …⧅⠠ã0‘ç0Ŵç ŵâRãúÿÿº…†å€…å€=éÿC­è‘ á …â ãë     á ã+…â0 ã…1…åP ã` ãp ã€ÐåÿXã=
  2877. €ÐåQá:
  2878. @ÐçVã/ Tã*Tp "TãP%)
  2879. Uã'
  2880. :Tãp $
  2881. *TãWã` 
  2882. Tã:™Tã€Ŵâ‘Ðå    Xá*‘ áëeüÿë     á“Ŵ†å€⇦à€HâXãÊŴ ⓒ†å‘YâÓÿÿJ    @Øç@Âç0◰âùÿÿêë…Ŵ†åxã
  2883. ` áÉÿÿꉠã€⇦âSá@ÂŴ0◰Âÿÿ0àã…1…åÿ◰=é@­èŴâ Ðç1 áÀ@âŴâ Ðç@$àŴâ Ðç1"àÿ0â☓á€=é`B­è•­èà áØÒ†åÜR†åÀ€àÀ…âP-é áà•âLðŶâ P á@ áP½è ` áРá•=éŴâUáŴfi ã‘⇨â    Sá@à…A…
  2884. PÔäUãPÂ70◰2öÿÿ:@Ôä¤B á@â`ŵ=éC­è‘ á–    ë€ áÙå⇨à     á!†å Bàë°flåàãH"†åRáH……
  2885. L"†åRáL……P"†åRáP… …T"†åRáT……&…â  ã1‘çSá€
  2886.  RâùÿÿZt†åPáÙåÿPãp†     m    t…å\†åPát†\… (…×ë°ëCë◰=é    flC­è$’†å€Ŵ†å§~…âYá *    à    HàÉ뀒…åd†å  á  á0 á    @ á·ë ãë£ëfl◰=éC­è$’†å€Ŵ†åYáÚåëêYã
  2887. §…â    €à@â     Hà ŵâµëH åd†å  á§.…â0 á@Iâ†ë ãèë$A…åë◰=é@­è$†å€†åPá*€â$…åÛÿÿë€=éÿC­è$’†åYã
  2888. €Ŵ†å§~…âb†å á     á•ëYáÀ0 Á Ñ0 Ó    à     XàPŵPP AJ⇩ëàHàŴë€Q…å‘ ád†å  á  á0 á@ ãnë ãºë$’…åYëÿ◰=é@­è€†åQã
  2889. §…ânë ã€…åd†å0 á  á§.…â@ ã[ë ã§ëGë†å$…å€=é@­èX†åûë° áë±üÿë€=鑠ဠá—q†å` ã†a…å/ë¥ëYã
  2890. b…å    ° áëX†åp…å ã$…åÔë` ã ãê  ãWã
  2891. ÑüÿëÌë` ã áUëYã
  2892. X†åCûÿ듆å ã  ãcë·ë⇧ë³ PãüÿÿVã¿üÿ  ã—…å ã0…å¢êÿC­è‘ á€Ŵà á@†åpŴâ<ë` á0ŴâP ã4B†å    A“ç@☓âØä Pã`CSáP #*Uã       =ëP ãSá0◰ïÿÿ4†å    a€çÿ◰=éC­è‘ á€ áĆåPã
  2893. ‹…â ã  áiëpã áûÿë ã      á ã&ëê áJûÿë ã      áãë…âï&…â ã  áUëpã. ◰=éÃC­è‘ ã€ ã0r†åDa†å`ŷâXá
  2894. –çPã
  2895.     Pá
  2896. ‘ áhëpã
  2897.   á áÉÿÿë€⇦âïÿÿêÃ◰=é@­èÀ듆åPà
  2898.  ïPâüÿÿÌë€=éÿC­è‘à〠ã€â‘⇨âYáp @ÐäTã    
  2899. ` ã@ÐäTã`ŷûÿÿVဠ!YáP ïÿÿê£ë áï ãHà›ëÿ◰=é@­è,†åPã
  2900. ŵët†å ã àãjëÓøÿë€=éÃC­è’†åŴ†å€Hâàq†åäa†å    WáV#
  2901. . ã     ã{ë    Wáïtopê áë–úÿë‘ë×åàPáï onlyêï to ÖåÿPãïendê áë½ë áëúÿëxëÃ◰=é@­è ã¬…åp†å ã àã3ë€=éB­èØë¸ëÌë‘ë¡ë8†å@â‘!†å0Qà    Úŵâ.ë‘ á ã á@ëïj    ë     áÚë}…â<†åAâ@!†å!€çŵ=éC­è‘ á€ áx†å@ÿÿë|†åPá+……1†§.…â@†åÀ†åÚë0 áX†åL†åPádŴ…@ ã     á á.ë◰=éÿC­èp á€ á‘ áÑë` á á3ëx†å|"†åQáÀ†…†³úÿP áD†åŴâAàUáÊ á áÐÿÿëYã
  2902. €⇦à†åÐåÿPã
  2903. Öå`ŷàÖåÿPãâÿÿ áD1†å0†å  ãSáº$úÿë!Ŵç€âùÿÿêÿ◰=éÿC­è‘ á€ áp á á™úÿë`@âÄQ†å á@†åë á@ á02†å⇨à  áŴ◰çUãÌþÿTá
  2904. @☓âUã
  2905.  ã ⇨ààëï       á@†åŴë áêÿÿêÿ◰=é @­è0 ãQáŴ 1◰0 1ûÿÿ:  ãPá@  ŵ £0°á¡ ùÿÿ á á €=éB­è,†åPã
  2906.  
  2907. ë‘ áïL†åPãH†P† @â ã¹ëÙë8†å ïPâüÿÿÔë}…â@†åŴç     áAëŵ=éÿC­è,R†åUã(
  2908. ‘ á€ áp á]n…âTQ†åaŷà áP†åAâ   áëpã
  2909. ŶëWãP á$†å@†å§>…â0Óç»ÿÿëŴâ Ŷà‘ë áÉë á¤ë    êWã á      á⇩ÿÿëê áX†å àãWÿÿëÀ÷ÿëÿ◰=é@­èhë7 ã8 ã¡ë ã  ãwëh†å‰ùÿëë  ãrë†åPãN Y ï  ãkë†åPãO I ï ëxëh†åqã= ãëðëöÿÿê@Qã> #ùÿÿ*€=éC­è€ ãXã Xã Xã* . YãXã
  2910. ê⇩ Yã€⇦âX〠îÿÿêŒ Yã€X†éÿÿê     á◰=é@­èh†ålë ã ã  ãÝëh…å‘ á€=é@­èp•â ã  ã
  2911. ëQã‘ YPã  ……åòÿÿê€=é@­è7•â ã  ãûëQã‘ IPã  …å\…å …åñÿÿê€=éYNIOüÿÿÿ >ð     (.ø 4
  2912. ø'“ >…
  2913. Äb“êÿÿ⇦<ø< <À=üÿÿÿ&X>Äì
  2914. ¸“0&¨ >H
  2915. ßÿÿüÿÿÿè<<=¸@<Aüÿÿÿ'èüÿÿÿ4.¸\  Äüÿÿÿüÿÿÿl=L<ÜÈØðÿÿHñÿÿäüÿÿÿ$H†>☓;…=$Rüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿ—⇦ðÿÿøÔüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿôlñÿÿðüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿ>Øòÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿ@­èïïD†åX†å€àï@†å€âï áï€=éC­è‘ á Yã%:    Yã%:ß뀠áã¯úÿã
  2916. ëPãlëüëêã ã—… ã,†P†…à•â−Iâ)“ á¬OâAâ⇨Ŵà’åð•àã    
  2917. §… åùëpã …êMëêÍöÿë◰=éB­è0†åD†å‘ç PáÚ €’†åÀ†å€âÀ…å@†åt뀅åX†åd†å àãfiýÿë ãþÿ뀒…åŵ=é@­èĆåQã
  2918.  PãºPã
  2919. ,†åQã™PãÿP  ãï€=é@­è©ë£…â1…âl!†å!…åÁ ë€=éB­è‘°áÿ† C ã!†å áBëpã 
  2920.     Pᠠê áÒå ŵàòÿÿêŵ=éþC­è‘ áÈŴ†åÌq†åØa†åÜQ†åÐA†åÔ1†å  áRá
  2921. Rá* á'ë    PáÒ ŵ€⇦öÿÿ áêYáÚUá     1à#ê áëYáà#*Vá     ÁàÓþ◰=é@­è     ãïPâüÿÿ€=é@­è ã ã¼…å¬ë€=éÇC­è ‘ áÀŴ†åx†å¦ùÿë á◰ùÿëKëàa†å®ëp ã ã ã€ëÅüÿë ã ã  ãsë⇩ P㌠Pøÿÿ
  2922. 3 Pã. P†åPã 
  2923. ]ëRëZë áÝõÿëp–á ãöëçÿÿêúõÿë– Pã◰ë` áòÿÿê    [áÀ†åPáÔøÿËÇ◰=é@­èx†åÀ†åtùÿëRùÿë&ë ã     ãRëX
  2924. ë3 Pã. P †åÐåÿPã
  2925.  áJöÿëêA ã
  2926. ë0†åPãïÿÿ½üÿë€=éóC­èü†åPã(  Èûÿ
  2927. cëëx’†åÀQ†åRùÿë € á$q†åpâa†å`FâÀA†åXá    TáY —… øÿï     á á ùÿëê á ë á@ëpãp Ø€⇦êÿÿ
  2928. $…å     á áùÿëd†å0†å’äPãXYT
  2929. ° á¶ëX†åp…å ã—…åó◰=é@­èS ã…å?ë€=é@­èx†åÀq†åùÿë áøøÿëÀë ã ãøë=üÿë ë ã ã  ãêë⇩ P㌠Pøÿÿ
  2930. 3 Pã. P†åPã 
  2931. ÔëÉëÑë#ëPã ãnëèÿÿê$…å° áŷëX†åp…åêÀ†åPáNøÿË€=é@­èx†åÀ†åîøÿëÌøÿëGë€=éÃC­èxŴ†åÀq†å¨flåÅëPã†åPá†P
  2932. ™ëÝøÿëÀa†åë닆åYálYLY á á²øÿëXãV —…)øÿê ã—…å,†åQㆅߑ    âMYãCY◰ëêDYãÔëê6ëÃ◰=é    ºøÿë ãhöÿê@­è ã€â÷ÿëÀ†åQá
  2933. ‹þÿëêï€=é@­è‹…â ã‰ëPã0  ûÿ€=é@­èx†åÀ†å øÿë~øÿë; ã< ãëOë ã ã  ãøë⇩ Q㌠Qøÿÿ
  2934. 3 Qã. Q
  2935. `ëpã@ ãýëïÿÿêÿ PãA #úÿÿ*öëêà÷ÿë€=é@­è&…â ãeëPã)  íúÿ€=éB­è,’†åxøÿëïï ã,…å}ùÿë»ël•âŴâh flåÑäï Râûÿÿ™ë³ Pã
  2936.  Pãúÿÿ•â Ŵâ< flåÑäï RâûÿÿŴë Pãéÿÿ
  2937. ³ Pãúÿÿ,’…åÛë¶ûÿëJüÿë°÷ÿëŵ=éÈ&C­èx’†åÀ†åNøÿë     á+øÿ뀠ãX〠#XãRëê¡ëfë³ Pã
  2938. fl Pãfi P€⇦ñÿÿ
  2939.  áöëPãôÿÿ
  2940. ¸…å ã¼…åYã•÷ÿ◰=é@­èëPãÞ .øÿëÿ  ã<þÿë á ÷ÿë†å@âMôÿëŴ÷ÿë€=éÃC­è ’†å€ ãq†å` ãÿ Yã  ™úÿ
  2941. úëPãÈ øÿë ápëPã*` ãÿ  ã
  2942. @âYá: ãÈ…åÌ…åÐq…å†å@âÔ…åØq…åÜ…åêëPã súÿ€ ãê±ë,†åPã †… á áôÿëpŵ…åVãhöÿ Ã◰=é@­è\†å â\…å€=éïC­èÛåÿPãï:êÛå⇧àÐåÿPãøÿÿ
  2943. ã÷ÿ맅 åGë‘ áÛå⇧àªë …â…†å@뀰á$
  2944.  …â á¨ëp á€Hà`⇨àYã`ŷ ã€âVáÚ* ã ã9úÿê§^…âYã:     Å‘⇨ …â€à    Ŷà  á•    ë€a…姅â áX"†å 0 áóëPã
  2945. BëPãçÿÿ
  2946. çÿÿêÛå⇧ànùÿë;ëï◰=é@­è_ë ã     ã⇧ëÈë‘ë3 Pã. PL ãPë0†åPãöÿÿüúÿë€=é@­èX†åd†åhë€=é@­è|†åx†å‘á
  2947.  ã ãrë±ë− Pã
  2948. ³ Pãúÿÿêó ëæúÿë€=é@­è†åÐåÿPã ã†åÁå
  2949. ë0†åPãÿ   Á èùÿ ã$…å6ë=ëÑúÿë4†åPã!€=éC­è,’†å€ ãXã¥ûÿ Xãs Xã     áxë‘ áXã,øÿ . PãXã
  2950. €⇦âêfl Pã€H
  2951. fi Pã€⇦âÊëX〠X〠âÿÿê,†åYá
  2952. ,’…åÌë§úÿë;ûÿ뀆å−õÿëÀ…åfiöÿëÄë◰=éãC­èü†åPã(  ¬ùÿ
  2953. Gëÿëx’†åÀa†å6÷ÿëÀQ†å     á á÷ÿë € á$q†åpWâJ áúë áëpã á€ë5ýÿëQãÀ†åPáY —…xöÿïꀠá áæë…q†åpWâìÿÿJçÿÿê$…åd†å0†å’äPãXYU
  2954. ° á„ëX†åp…å ã—…åã◰=é@­è÷ÿë³ë[öÿë€=é@­èÜ ëP㪠úöÿë  áîõÿ맅⠠ဆå0Ûå0⇧à-ëPã `ùÿ° ázëGöÿë€=é@­èA ã…åë€=éÿC­èx’†åÀ†åâöÿë     á¿öÿëëàŴ†åäq†åÅë` á+ ã, ã»ëúÿëVã- E¹ë3 Pã. P/fl ë`×åÿ ãÇå ã1…â!†åÁç
  2955.  ã1…↠flå0 ã@ áPâï1…b!†e 0 c0Ág`Çåz2ëäÿÿê†å†åAâXáW ã1…âïàc q q¥ë1…â†å   ã À燅⠠ãvë†å‘…å ã|…åÿùÿëYãùõÿÿ◰=éû@­èŒöÿë,†åPã-ëêwë€=éÏC­èÐë` ã§… åôë‘ á$Ŵ†åXãïDê    Xáûÿÿ* †åÿ Pã ã ãðøÿê  áõÿëp á`ŷá áã
  2956. Üõÿëê#öÿë`ŷáÛåÿQã Û@à†åPá  ÃéÿÿÊ á áã
  2957. ë`ŷá3ë0Ûå0⇧àã
  2958.  ãx…å㧅â€àIà#ë€Ŵ…å á©ôÿëÀ…å êÓë◰÷ÿ뀆å£ôÿëÀ…å° áXr…å|r…åê° áÕë†å$…åã Áÿÿ‡õÿëÏ◰=é@öÿë †å(…åWë ï*ï
  2959. …âÿ ã   ãÿ0 ãï* ëpã
  2960. 
  2961. …âÛ…âÛ™âÿ-éïzï€âïïÿ½èÛ…âèÿÿê~ ãïèë ’†å ã0…å«ë0†åPã
  2962. Ŷ ë ã…å ê †å    Pá    
  2963. Î ëÚ ë¼ ë ã|…å…å ã$…åÍëÔëhùÿëüùÿë4†åPã·_õÿëFêŴC­è$’†å€Ŵ†åYá*§~…â    ×çAPã:ZPã €ÓÚaPã    :zPãÊßâ    Çççûÿëd†åÂë ãúùÿëŒ
  2964. ëþ
  2965. ëŴ◰=éÇC­è,†åPã,
  2966. x’†åÀŴ†åpr†åáõÿëÀa†å:õÿëp†åQá    X†åd†åVá àYã
  2967.   ãeùÿëê(ùÿë     á á­õÿëJëÈñÿë:ëX†å2ë° á0†å‘ áD†å   á÷ëpã d…å$…°−Jë−äëpã
  2968.  p…åÇ◰=é@­èx†åÀ†å³õÿë’õÿësë€=é@­èX†åp…å€=é@­èx†åP〆åúóÿëÀ†åPá    
  2969. À…åêÑë,ëX†åd†å àã-ùÿë ã§ùÿë†å$…å€=éC­è‘ áŴ†åØåÿPã
  2970.  áèë    PáØ€€ùÿÿ á◰=é@­è¼†åQã ¼…¸† Pã™öÿëêpóÿë`†åQã<œëQã
  2971. ûÿë:
  2972. ë}öÿë€=é@­è  á=ëx†åX…å|…å‡öÿ뀆å½óÿëÀ…å ãx…å¤ë€=é@­è    @â  áäOâA‒ç€=éþC­èP á` áp á€ ã‘ ãXã    ŷà  áë†å      á1M…âRáÊRá< Ô@ûÿë ŵâ÷ÿÿꀠ㠠  ŷà  áÿë ã¸ÿÿë áúëPã á¸… ¼…‹
  2973. ‰ Pã⇩  • P㌠ ³ Pã3 P⇩ PŒ P. P⇦
  2974. A†å™ Pã~ëÒÿÿê# Pã}ëÎÿÿê+ Pã‘ ãÊÿÿê­ Pã‘ áÆÿÿê‡ PãnëmëÁÿÿê' Pãlëkë¼ÿÿêÍ Pã †å!â …å¶ÿÿêë Pã‘ 
  2975. Ë Pã1…â    €à    EàÐ뒅倠ãªÿÿêÛ PãYá !@ #*1…â    Ŵà     DàÉë     á@ á1…â€à¾ë‘ ã€ ãA…å–ÿÿê
  2976. Pã Yã›ÿÿ
  2977. 1…â    €à@â     Eà ŵâ¶ë‘I†ã@DâA…å⇦ÿÿê± PãYá☓ÿÿ
  2978. .ëîÿÿêSã0 9    )  BPá*ïxÿÿêPáûÿÿÊYáùÿÿ
  2979.  †åQã1…â Eâ Ñç Rãñÿÿºúÿë@ á    Ŵà€â     Eà Bâ‰ë@À倠ã‘⇨âA†åTá@☓A…]ÿÿê1…â    Áç©úÿëYá@☓A…<‘⇨âTÿÿêYá‘⇨2ð áYã‘Ið áþ◰=é@­èÐåÐåÿQã€à€=é @­è0 ã=ÿÿë á&òÿë €=é<C­è‘ áQë ã
  2980. ÿÿ뀠áLëPã¸Ŵ… ¼… 
  2981. ‰ Xã⇩… • X㌅ ³ Xã3 X⇩ XŒ X. X
  2982. Í Xã †  …çÿÿ
  2983.  Xã
  2984. ïãÿÿê@àãP◰âÕäPãüÿÿ@☓â    Táùÿÿ á0ÕäSã0⇨o÷ÿë á á<◰=é☓C­è‘ á"ë ãÛþÿ뀠áëPã á¸… ¼…'
  2985. ‰ Pã⇩  • P㌠ ³ Pã3 P⇩ PŒ P. P
  2986. Í Pã †  …æÿÿ
  2987. Ë Pã± Pë P      p°áZ Pã    : Pã*
  2988. êaPã:zPãßÒ×äQãïÒÿÿêPáøÿÿï ãê á ã☓◰=éB­è‘ á⇦ÿÿëpã
  2989.  x…å     ágõÿë…†åpã Õñÿ
  2990. ŵ=é@­è0 ãÃþÿë€=é@­è  á@†åøÿë €à€=éÂC­è‘ áÿ… ãÿ| ãXb†å−çqã
  2991. Qဠ1Qá*Qáp ÁPâôÿÿZÿ Wãÿ Xãp  
  2992. x†åÀ†åôÿëßóÿë áp…åfþÿë° á⇦þÿ맅 åÌ    ëpã $…å ãÂ◰=é@­è—ùÿëD ãE ãÑë‘1†åS㇅Ò
  2993. ë1†åSã
  2994. 1…â ãÀçSã Ã  Ã Ó  Ó−ëï  ãÀç†å­ñÿ듆å ã  ãÍöÿëï bytes free,  †å0 á¡ñÿëŒëï lineSãsD†åpã ã  ã|ëïNo timestampêG ãàãhë ã  ãpë    …âfl…â   ãV0•â<◰âÁïï ã  ãfë    …âfl…â   ã:0•â<◰âÁïï€=éÿC­èGùÿëD ãF ã€ëü1†åSã  ãLëê Sã Ã  ÃÊ ã  ãLë:ï ãI륅â ãÀçï  ãÀçH‹†åLŵ†åYáL‹…ÅHŵ…Å     Á‘ Á€ Ár†åb†år…Åb…Å Áp Á` ÁP ã ã  ã0ëà@flåWá
  2995.      á*ë ïVá
  2996.  á%ë ï †åPáP†    PPUã   P ã ã  ãë&…â ã³ë&.…â‹äpã
  2997. )ñÿë"ë ïP ãQâöÿÿUã   ÿ◰=é@­è ãëï: None€=éB­è‘ áañÿë…âï     áñÿë ëP ãŵ=é    @­è1…⣅⠠ ãë†ål…åò    ë€=é@­è1…⥅â!†åü!…åûë€=é@­è1…â¡…â!†åp!…åôë€=é@­èïïïeùÿë€=é◰C­èX’†åLq†å]…â0…å}…â4…å ãL…åX…å<†åH…å€@âDŴ…åYã
  2998. d†åàÀ†åŴàAâQá Á  á€ñÿë©øÿë`öÿë ã†…å ã,…å◰◰=é@­èD†å0"†å‹çQãPâúÿÿZàã€=é@­è¤ë¥…â1…âü!†å!…å¼ë€=éÿC­èà’†åäŴ†åq†åa†å\†åLýÿëP át†åIýÿë@ á&…â àã0 ã’çPá
  2999. Aýÿë    Pá:Pá!Ŵ70SâõÿÿZYáFâXáÿ ãÇå…ë›ë:ê á     á Fà”ë0†å‘ä    Pá :Pá    *ÙåÿPã
  3000.     ° áFýÿëX†åp…åêëêÙåÿPã    ° ÿ  ã¾øÿë° á9ýÿëñÿë0†åD†å   áÛëpãÛå⇧àÐåÿPãéÿÿ
  3001. X†åp…å    Tá:Tá*ÙåÿPãp†     ïýÿt…å    Uá:Uát†5\…5 3(…5 ã$…åV
  3002. ë/ëÂëBëÿ◰=éÿC­èà’†åä†åÜýÿ뀠á{…â †åTQã     …øÿ  áHþÿë…A†å á áJëpã' 
  3003. ` á     áÊýÿëPá'
  3004.      á:þÿë…A†å á á<ëP ápã
  3005. 0Dà0◰à. ã ŵâSáÚ ã     áÍôÿêSá
  3006. àà Dà'ëUáÀDÀÐCÐë á áx"†å    0 áŷëPãêÿÿÙå‘⇨àÓÿÿêëX†å¬üÿë° áÎüÿëœñÿëÿ◰=éÿC­èà’†åäŴ†åq†åèa†å    PHàB†åß@â 0 áCTã     á ãPá*Ŵâ Ðå€àùÿÿê †å€àÿ Pã # #–ôÿ*†åUá  Ã Ã‹ôÿÊTîÿë áŷà Gàíë[á0◰     Vá⇨0     ! á  áåëMTã    [á:[á0◰00C0 Gà    Vá⇦0⇨0 !     ! ŵ ÖëSá0C ° á ã$…åË    ëMTã7¢ëœ
  3007. ëß
  3008. ë¯ë³ëPã•
  3009. MTãYá`F0 áJýÿëÿ÷ÿëQã° ° xüÿë ñÿëÿ◰=éC­è1…â ã¹ëpã …
  3010. ‘ á1™…â    €⇦à áiâBë  á!…å á1…â§ëŴàbâfië◰=éB­èt’†å°ãxflå    °á:`‘⇨ârYãI
  3011. ëêaYãbYeYtYß‘    â ‹…åX†åP…åê     áÅíÿëPãïê—ôÿë,†åPã
  3012. X    ë›ôÿë¬íÿëŵ=éPXø„ÿÿ–ÿÿ—ffffffff−`gffffŒþæffffœffffg`†ffffæþ‡fffgfffffifffæffffflÿ pøp0ø0‘ø‘ðøðPøPpPpPfpfPhphP¶p¶P¸p¸P&p&P(p(P„p„P—p—PöpöPøpøP¿Function Keys _Key@_Shift _Control°_Key f1€* CommandÐSplit Line@Join Lines°f1 ÿf2€ÿLoad ProgramÐÿAppend Program@ÿSwap Window°ÿf2 ßf3€ßSave ProgramÐßOptions@ß °ßf3 ¿f4€¿Search & EditпReturn to Basic@¿Split/Join Window°¿f4 f5€Search & ReplaceÐConditional Replace@Help°f5 _f6€_Toggle MarkerÐ_Go to Marker@_Program Information°_f6 ?f7€?SearchÐ?Go to Next Match@?Go to Previous Match°?f7 f8€RenumberÐRepeat Line@Extend Line°f8 ßf9€ßOldÐßNew@ßInsert at Top°ßf9 ¿f10€¿Swap CaseпUndo Changes@¿Insert at End°¿f10 flf11€flDelete End of LineÐflDelete Start of Line@flDelete Line°flf11 f12€ExecuteÐGo to Line Command@Go to Line°f12 ÿShift-Control keys may be programmed using *KEY Press the Space Bar for next Help Screen _Escape to Edit pèp0è0‘è‘p‘p‘„p„‘—p—‘¦p¦‘¨p¨‘ÆpÆ‘ÈpÈ‘ÖpÖ‘ØpØ‘æpæ‘èpè‘ ¿Cursor Keys@_Key_Shift_Control@_Alt0Up°Up one LineÀPage UpàTop of ProgramðTop of Screen0ÿDown°ÿDown one LineÀÿPage DownàÿEnd of ProgramðÿEnd of Screen0ßLeft°ßLeft one CharÀßLeft two CharsàßStart of LineðßPrevious Line0¿Right°¿Right one CharÀ¿Right two Charsà¿End of Lineð¿Next Lineæððæ‘‘æ00æÐÐæðæÐèðèÐÖðÖ0ØðØ0æðæ0èðè0ðÐðÐ?Line CommandsßActionsßM/MM  MoveßD/DD  Delete¿C/CC  Copy¿JJ    JustifyDestinationsA     AfterT     Top_B     Before_E     End Use the Control Key to enter Line CommandsPÿUse Control-R to remove Line Commands Press the Space Bar for previous Help Screen _Escape to Edit%24:%mi:%se%we, %dy%st %mo %ce%yr¿C­è‘ á€ áp á†å!†å@àPá 30…5.:ÿ ã1…â0 ãïz·ëàã0…å%êâôÿëÇë0†åPã
  3013. ë ë›òÿë⇩òÿëPòÿëLYã       ã ëê1…⇅â!†å‘!…å 0 ã0Àç  ãõë á á
  3014. ëÛëçë ã|…å ã$…åÜ ëã ë4†åPãÈ¿◰=é0@­è0†åPãŵ ã0…åë3 Pã. PÚë1…â†å  ã Áç ãïzzëìÿÿêPã3   
  3015. Pã 
  3016.  0…åãÿÿê0€=é@­è†å1…â   ã Áç ã ã  ãÉúÿë3 Pã. P
  3017. ⇩ P㌠Põÿÿ
  3018. êüüÿë†åPã3   ãQëìÿÿê€=é@­è|†åx†å‘á I€=éC­èx’†åÀŴ†åÓîÿë     á á¯îÿëÀq†åYã
  3019. Wá
  3020. X†åd†å àãYòÿëêd†å  á+…â…1†å@ ã€òÿëêWáñÿÿ◰=éÛ…â—†åPã
  3021. ^ôÿ뼆åPãh ¼†åPã
  3022. ¸†å    Pã:Hùÿëâ
  3023. íÿ놆åPãíÿêüñÿë ã—…円åQㆅ½ñÿdë ãùÿët…åNôÿëÜÿÿêC­èð†å0ŒÜå⇧…â€ØçQãYáà◰=|­è@àã  á0 ãQã
  3024.  Yã
  3025. Äb†åYáŴ.
  3026. Àb†åYá*
  3027. ¸b†åYá ŵ⇧…€Ø$
  3028. ¼b†åYáŴP◰@à
  3029. ã
  3030. aXã:zXã߀ÒaYã:zYãß‘    Ò    Xá ŵâ⇧…â€Øçtã@  êãà'
  3031. tã
  3032.   á⇧…â€Øç0 á£fi…â‘Ùç@àãÊÿÿê0◰âl’†å    Sá
  3033. …’†å    Rá*£fi…â‘Ùçãßÿÿ
  3034. ¾ÿÿ£‰…â‘Øç YãÀb†YÄb†Y¸b†Y¼b†Yà0◰âl’†å    Sáïÿÿ:Bà|=é◰=é@­è   ãQâ ÀTüÿÿZ€=é@­èRã
  3035. Pá    
  3036. 0 #€0@2Ŵ0A20à3@Ðæ@Áæ Râûÿÿ€=éÿThis is not a valid programÿThe program contains too manystatementsÿThis is not a valid programÿThis program has not been savedÿYou must enter a program nameÿThe named program is too bigÿ    Load a ProgramÿAppend a ProgramÿProgram name :ÿThis program could not be foundÿErrorPress ESCAPE to continueÿThere is not enough memoryto update the programÿThis statement is too longÿ WarningÿThis program has not been savedPress NEW again to confirmPress ESCAPE to cancelÿYou have used the maximumnumber of statements. No morecan be addedÿThe renumber has failed.Unmatched line numbers havebeen replaced by @@@@ÿYou cannot load a directoryÿSearch and EditÿSearch for :ÿThe string could not be foundÿSearchÿYou must enter a search stringÿSearch and ReplaceÿConditional ReplaceÿSearch for :Replace by :<ÿThis statement is too longto be changedÿError at linePress ESCAPE to continueÿThe search string has no textÿYou have entered a destinationbut no commandÿYou have entered too manycommandsÿYou do not need to enter adestination for this commandÿYou need to specify both endsof the range for this commandÿYou should not enter twodifferent commandsÿYou do not need to enter arepetition factor for thiscommandÿYou must enter a destinationfor this commandÿYou have entered a destinationwhich is not valid for thiscommandÿThe destination must beoutside the block being movedor copiedÿThe first statement in theblock to be justified must notbe blankÿYou have not yet entered asearch stringÿYou have not entered anymarkersÿThe combined length of thesestatements would be too bigÿ    Save a ProgramÿProgram name :ÿThe name has been truncatedÿLimit is ÿThis statement is too long tobe splitÿYou have not entered anyline commandsÿ Replace? (Y/N) ÿ    Screen OptionsÿMode              :Foreground colour :Background colour :(Space to choose a colour)ÿYou must enter a modeÿThis is not a valid modeÿColours must not be the sameÿ
  3037. Edit OptionsÿTab length      :Auto-indent     :   (Y/N)Insert/Overtype :   (I/O)Page Up/Down for further optionsÿ WildcardsÿSingle character     :Multiple characters  :Case sensitivity off :Case sensitivity on  :ÿ Go to LineÿLine number :ÿYou must enter a tab valueÿTab must be between 0 and 63ÿWildcards must not be the sameÿYou must enter a line numberÿThe maximum line is 65279ÿThere are too many statementsÿNot enough memory for this modeÿProgram InformationÿProgram name :Page Up/Down for next screenÿLast search stringLine commandsMarked linesPage Up/Down for previous screenÿLast saved at          onÿ    Cursor OptionsÿFlashing cursor :   (Y/N)ÿ@­è|†åPã |…n      ã$…å€=é@­èx†å ãx…å|†å‘ád     €=é@­èIøÿë QáIë$…åêhüÿëBøÿë  á$†å@†åïÿë™ë€=é@­è$†åd†å÷ÿëÀ†åd1†å0€àRá:0 á@†å@â•ë€à$…åðÿÿêŴâã
  3038. ë€=é@­è*ë@†å$!†åPáŴ  áÌ    ëPãœë áüîÿë$…å€=éB­è§… åy    ë‘°á†
  3039. @†åÀ†åoëYá‘I     á$…åŵ=é@­è$†åPã†å Pá
  3040. èëÀ†å@†å_ë@â$…å€=é@­èÀ†å@â@†åWë  á$†åÕîÿëŴà€=é@­èåÿÿëäÿÿë€=é@­èÀ†å@†åJë@â$†åPဠ á•    ëPã^ë ã$…å€=é@­èìÿÿëëÿÿë€=é@­è$†å@†å¶îÿë@†å3ë$…å€=é@­è§… åfiëpã†$…å€=é@­è$†å@†å¦îÿëd†åPã$…åêäûÿë  ãë€=é@­è$†å@†åPá@ *†å[á
  3041. —ë´ÿÿë$…å€=éC­è€ á‘ á0†å    !‘ç° á2õÿëD†å×ëd…åIà@†åë€à$…å◰=é@­è  ã °á ŵ Ŵàûÿÿ á€=é@­è±†å ãËåÿ ãËåYëNëUëRëDë3ë ã|…å4…å ã$…å€=é@­è©ÿÿëXÿÿë€=éÿC­è‘àãxŴ†åÀq†å ` áXB†åwêÿë á áSêÿëÀQ†åÛå°⇧àýôÿëÀ†å€àD†åŴâPáÚX†åp…å¾íÿëêWá‘  áÀ†å  á£éÿëPã‘àWáXY d†å      éíÿŴàd…åÿ◰=é@­è‡…â  ãüÿë ã‘…åàãD…å€=é@­è1…â  ãüÿë ã…å€=é@­è$flå…å…å …å…åàãH…åL…åP…åT…å€=é    @­èàã&…â  ãŴä Râüÿÿ€=é@­è ã‡
  3042. ë€=é@­è  ãRá à
  3043. 0Ðç Sã ŵøÿÿ
  3044.  á€=é@­è†åÐåÿPã §… åëÿÿëpã  €=é@­èÅÿÿëpã    
  3045. ãçÿ듆å…å@â…â1-…â0Ñç0ÂäPâûÿÿZ€=é@­è ã  ãï€=é@­è  ãï€=éC­èx†åÀ†å÷éÿëÕéÿë$†åd†åÒõÿ뀠ᑠáóöÿë0"†å0‹åQá 0Ñå0Ŵà@ÓåÿTã   >õÿëp…åKèÿë    1‹çSã     áöÿ   á á.ÿÿë◰=éÇC­èx†åÀ†åÖéÿë´éÿë0‹†å−ä†åP᱆å[ôÿëX†åp…å$†å@†å­íÿë$…åê$†åd†å£õÿ뀠áp á−ä‰õÿë…†åèÿë` áx†åËïÿë áõÿë…†å èÿë€àD!†å ŵâPá Á−ÔŒëèÿë−çPã®öÿ뀠á á  áúþÿëÇ◰=éB­è‘ ã ã °á‘⇨"Qâûÿÿ‘)â⇨ áŵ=é÷C­èÔ‹†åÙä Pãüÿÿ
  3046. PãM
  3047. ‘I†ã@ ãP ã` ã.Pãp 
  3048. p ã0Pã:9PãÚ PãP p ` êp ãUã` 0@â☓€à☓@Ŵàÿ Tã` #€⇦âÙçPã
  3049. Vãùÿÿ
  3050. æÿÿêWã
  3051. †å(†åPá%p†å{ïÿëPã!
  3052. X†åwïÿëPã
  3053. ° áðóÿë½èÿëêVã
  3054.  áÌëêëXã  #  1ü!…å     á¥…â%ûÿë`öÿëöÿëërëPã
  3055. ° áÙóÿë$…åX†åp…åêïë\†åTïÿëPãt†QïÿPã     ÷◰=éÿC­è£…âl†å  ã0 ã‘ ãQâJÀB†åÄR†å¸b†å¼r†å€Ðç Xã
  3056. XáXX ŵ    
  3057. Xá ŵ
  3058.  â Xã‘ ãSã
  3059. 0◰âQâëÿÿZSãø’…ø1…¢ áô…å âð!…åÿ◰=éÆC­èÈþÿë‘ ãŴ†åØåÿPã
  3060. pØå`⇦âÖä Pãüÿÿ
  3061. ôPãÖä Pãüÿÿ
  3062. >PãÖä Pãüÿÿ
  3063. 1…â  ã PãP
  3064. Rã‘ 
  3065. Áä ŵâÖäõÿÿê!…å     áÆ◰=éûC­è‹†åŵ†å r†åb†å8RflåVá` 0`FHB†åL2†åYáXWU
  3066. YáXá ã ãJëÿêXá
  3067. Tá    Ú‹…åŵ…å     á‘ á€ áLB…åH2…å á@ á0 ádYãjYlYXá èÿÿWá  åÿÿ5êDYãJYLYVã# ÝÿÿXáWá! Øÿÿ
  3068. EWãTW% Ôÿÿ áóÿëTWã    € áp á ’†*
  3069. ‘ áŴ†å€Hâ,êYá" ÅÿÿWá  ÂÿÿêcYãmYXá »ÿÿWá$ ¸ÿÿ
  3070. êXá! ´ÿÿ
  3071. Yá" ±ÿÿWá$ ®ÿÿ
  3072. Yá’†Ŵ†€H
  3073.  áìòÿë‘ áXá      çòÿ á†åÐåÿPã    € €Ñ€ŴWá 
  3074. TWã†
  3075. EWã†@
  3076. P†åÔòÿëAWã†åÑåÿQãЀ    PáÚPá& 3◰ÿÿ:à’…åäŴ…åè…åìa…åû◰=é    @­èT†å]…âŴà0…å}…âŴà4…åX…åP†å@âD…åóíÿë€=éB­èŴ ã ã  ãïÿRã
  3077. Qã  ãïÿRã   á0ë‘ á³ Yã~ ¸’…å ã¼…åŵ=é@­è ã!†åÒåÿQãÒ ŵ€ùÿÿŵâ…å …å†åAà …å†å@à…å€=é@­è$†å@†åìÿëQã_ýÿëê@ýÿë€=éflC­èX†å#îÿë‘ ád†åPã)ÀŴ†åxq†å èÿë á áèçÿë     áÕóÿë…†åYæÿë áÀ†å€àD!†å ŵâQáÊPáWãd†  §.…€1†@ µëÿ    ° á€òÿëÀ†åŵëX†åp…å ã  ã~ëÿëê    ° ávòÿëX†åp…å=ëÿëê ùÿë    ° áoòÿë0†åD†å   áëd…åfl◰=éB­èïPãï áÊë‘ á³ Yã~      áŵ=éB­è¡ ã” ãï    “ŵá„ ãï    “ŵá– ãï    “ŵá— ãï    “ŵá     áþÿëø    âPá     ‘ èfl‘ â…å  áâ…å  áâ…å  áâ…å\…å  áÿâ,…å  á?âh…å  áâ …å  áâ8…å,†åëPã ,…‘ ¡ ãµ ãï¸"…嶠ãï¼"…å· ãïÄ"…帠ãïÀ"…å9ëPã
  3078. . ã¸…å| ã¼…å{ ãÄ…å} ãÀ…å‘ ãYãŵ=éÏÃÁC­è‘ ãL€flåpàãXb†åH†åPá‘ ŵ…Hr…L†åPá‘ ŵ…Lr…P†åPá‘  ŵ…Pr…Yã#ýÿ Á◰=é     ã—…å,"†åRㆅ ãÐéÿê@­è
  3079.  ã †åœåÿëpã  
  3080.  Ì…åÈ…å†åÐ…åØ…å†å@âÔ…åÜ…å€=é@­èëÿÿë/ë ã4…åÔñÿëPãÞÿÿ€=éøC­è‘ ã€ áp ã` ã@Øå@Dâ0 ãWáªPØç"Uã`&
  3081. Vã™U á á¾èÿë áQíÿëPá
  3082. 0 ãpã‘ 0flâçÿâÈç  áAâQáúÿÿ*pâpâáÿÿê     á áø◰=é@@@@úC­è‘ ãÐŴ†åÔA†å0 ãXá* áÌÿÿë‘⇨á0◰áØå€⇦àöÿÿê‹•…â
  3083. }…âÐa†å†åPá—äpã
  3084. %íÿë⇦ä€⇦âXá÷ÿÿ:ÈŴ†åÌq†åØa†åÜQ†åVá
  3085. * áPòÿëPá0 €Æ( ÆÖå`ŷà€⇦àòÿÿêSã’ûÿ    °á ú◰=é@­èŒüÿë¡…â1…âp!†å!…å²øÿë€=éB­èX‹†åx†åÀ†åÛæÿë¹æÿëŴë†åAPã   ã¶ëûéÿë ãl…åp…å4ë3 Pã. PŒüÿëfëPã ã6ëôÿÿêX†å    Páæÿ ŵ=éC­èeìÿ둠ဠá1 ã ãë áòÿë ã àãFêÿë     á@†å”êÿëŴâ  ájëûìÿë äÿëÎþÿë³ Pã
  3086. ² Pã0†å°‘ä1ñÿëX†åp…å$’…å²  ãêßâYPãNPîÿÿ¤çÿë◰=éB­è‘ ãYã" Yã( 3 Pã
  3087. . PãYã
  3088.  
  3089. ê⇩ Pã‘⇨âYã‘ îÿÿêŒ Pã‘Yâ‘ éÿÿêl†åQã ãíëâÿÿêø†åQã ùÿÿ
  3090. ô†åQã õÿÿŵ=é@­èxìÿë ã ã  ãGòÿë1óÿë€=é@­èÿÿë ã ã  ã?òÿë9óÿë€=éþC­è‘ ãàŴ†åä†å·ñÿëp á á´ñÿëPáY
  3091.  á$òÿë‘    â…a†åP ãUáM* áSëpãI
  3092. ‘⇨ãP á@ á†åSPã
  3093.  á á◰ÿÿë0 á áòÿëNSãPŶêÿÿ
  3094. YSã=p†å€à0@à ãŴâSá Ã Á¤èÿÊ …â€àp†åŴà€à Fà Bàü÷ÿë¡…â…âŴàp!†å÷÷ÿë…1…å` á†åSPã‘⇨)ë,†åPã
  3095. ]…âT†å€àP†åAâ  áIëpãŶäÿëê.éÿë áÜñÿëX†åx†åPá$†åUá 3$…5p†åPŶà¯ÿÿêã Øå€⇦à¡ÿÿêX†åeðÿë° áðÿë    â†åSQãUéÿ þ◰=é@­è0 áx"†å…†å …â*ë…a†åPã \èÿx†åX†åPá° sðÿ €=é@­è ãÝûÿëÝ ã ãßûÿëÞ ãРãÜûÿëß ãà ãÙûÿëà ãð ãÖûÿëá ã ãÓûÿëâ ã€ ãÐûÿëã ã‘ ãÍûÿëä ã ãÊûÿëÛ ã     ãÇûÿëïï ã\…åÑæÿëïïïìÿëïïìÿëÊ…â
  3096.   ãï    0 ãÑäï0Sâûÿÿ Râ÷ÿÿ€=éB­è‘ áyã
  3097. ï)  áï) áÿâï) áÿâïÿ    âïŵ=éÿC­èÀ’†å € á,2†åzûÿëPãHúÿ —åÿëB†åÀa†å  á⇩äÿëXr†åP áÛå⇧àµáÿë$A…åUã
  3098. æäÿë ã—…åSㆅ-ê áÀ†å  áÅäÿëPã ŷâ    Rá
  3099.  ád†å àã éÿëê ád†å  ãéÿëX†åŴàéÿëSã
  3100. ]…âT†å‘çXá*Üãÿëêýÿë0†åD†å  á–ëpã
  3101.  á á àãïèÿëê á ádäÿëTáÿëÿ◰=éP-é†äPãÀ  ã@0flåï<•b j …äÀ á ãü…åÌ…åp…åX…å$…åt…å\…å(…å(…åŴåÿ둽è€Not enough room in RMA for The BASIC Editor@-éÀ†äxåÿë@½èâÎãð°á@-éÀ†ä'Qãhåÿë êQã    R㺠Oâ| @âRá:<•â €âRá Ó€½è@­è ã ã  ãïðÿë⇩ P㌠Pøÿÿ
  3102. 3 Pã. P#óÿë†åQã ãyëîÿÿê€=é@­èÿ Àã0flåRáàD…@…ÿD…€=éûÿÿB­èu ãïãà    
  3103. ‘ ã  ã ãá—⇨á
  3104.  ãï“⇨á⇨áŵ=é C­è•êÿë‘ á2 ã3 ãÇë     áÎúÿë ã  ãœë­ë☓•â ã  ã1†åÜçÿë  ã1†åÙçÿë     á`•â$둠ဠá úÿë†å†åPá ã…å ã…åë6 ãê     á&ëPã
  3105. 1ëëÿëßÿÿê á     á ◰=éBlackRedGreenYellowBlueMagentaCyanWhite…C­è‘ á€ ãp áXã Xã Xã( . PãXã
  3106. ê⇩ Pã€⇦âX〠îÿÿêŒ Pã€X†éÿÿê     á…◰=é@­è     á{úÿë ã ã  ãìïÿë‘ á á€=é@­è†å  ã0 á ãéïÿë Qã…åÇëøÿÿê á€=é@­è†å  ã0 á ãÜïÿë Qã…åºëøÿÿê á€=é÷C­è‘ á0ŵ†å4R†åDA†åïïïï¬êÿëPâøÿÿ    Dàp€â á á!—ç‘ëRã` `G! á á    ⇦à&öÿë á    Ŷà ☓â     Bà! á öÿë     á ãPâ⇦WŶWûÿÿZ áVã
  3107.   ã%âÿë!⇦ç@â`Vâúÿÿd†å    €àd…å÷◰=é¿C­è4r†å0ŵ†å‘—ä á ã °å    RáŴûÿÿ
  3108. ‘ áïïïïtêÿëQâøÿÿ    à    ⇦àD!†å    0Bà@ ãTáQ’×P ÃQ⇦çQ‘×Qç@☓âTáöÿÿÚd†å    @àd…å—äqïÿëp…å¿◰=é@­èD†å•âÿë€=é€C­è‘ á…Ŵ†åøq†åXã‘à
  3109. WãHHYá‘ ÁYã‘೺     áfõÿëpã‘I÷ÿÿ
  3110.      á€◰=é€C­è‘ á…Ŵ†åøq†åXãà
  3111. Wã€H€⇦Yá࣪     áRõÿë°á‘⇨B÷ÿÿJ     á€◰=éB­è‘ á ã ÑçRãà    R€ùÿÿŵ=éC­èà’†åäŴ†åYá
  3112.      á¤ïÿë ãØÿÿëpã      Ùå‘⇨àòÿÿê ã◰=é@­è0 ãA‘çTá 
  3113. 0◰âSáøÿÿÚàã€=é@­è†åPã
  3114. §… å™ùÿëpã…€=é@­è,†å ã5ïRã  ïï†åïóéÿëï áï†åïíéÿë€=éB­èÿ  ã±éÿëQã`ë ê‘ á$†å@†å}çÿë     á‘ á€ÿÿëþáÿë–ðÿë     á  áäøÿëŵ=é@­è á!†å áåîÿëpã
  3115. PáÒ5 ŵ0÷ÿÿ:° áîÿëX†åp…åêÚÿÿë ã$…å€=é@­èï,†åïŴäÿë ã5ï ŵâ8!…å Bâ@!…å ã5ï ŵâ<!…åX†åPã ,†åQãH!… L…Ö_ßÿëïïï§éÿë“ãÿë¦ÿÿë ã—…å,†åQㆅ€=é@­è†ålPãLP†lPLP†à…†@ä…Zúÿ €=éŴC­è
  3116. ‡…â‹•…â
  3117. }…âXá
  3118. −äpãŒîÿ⇦äøÿÿêŴ◰=é@­è±†åÇíÿëX†åp…å ã$…å€=é@­è†å…îÿëpã
  3119.  \…åt…å ã(…å€=éB­èĆåQã    
  3120. ‘ á$†å@†åçÿë4"†å    €à1‹çQáŴ"ŵ'ŵ=éÏC­è‘ á€ á,q†å\†å …å@†åAâ¡ áD!†å
  3121.  B⢠ áËë` áŴ⤅åŵ⨅åWã* − ïWã_ „ JëWã* Œ ï
  3122.  ŵâ¸ëWã* œ ïWã_ – <ëWã* † ï=ë!Ŵâ;ëWãy
  3123. ¤†åAâ¨!†å ŵâ¡ë‡ï!Ŵâfiëfiï句å暴å€âX†å€à句å€â暴å€àï ï    °áJàãë ã  ãëWã_ fl ë°áàSu[ ã¬…å4†å€à¤†å!Ŵâ   ã0‘äQáÅ RâúÿÿÏ◰=é@­è 0 ãï0Sâüÿÿ€=é@­è¨!†å0 ãWã| — fëï ŵâ0SâúÿÿZ€=é@­èQãÚAâ  ãRá
  3124. A‘ç0ŵâSá    ÊQ‘çTá
  3125. ` !@ !P !A€'Q€'0◰âóÿÿê ŵâíÿÿê€=é@­è<†å¡  áAà0 ãPãH…L!…P!…T1…H!…L1…P…T!…€=éC­è …â ãEôÿ맅â$Ŵ†å‘€à     á€!†åBàGøÿë Aà⇨à…⋆堠  Ŵà>ôÿë …â    ŵàÑë……å◰=é@­è$†åd†åCîÿë<†å  áRá # 3Ðÿÿëúÿë ã,…å0†å‘ä²íÿëpã
  3126.  p…å¯áÿëOÞÿëÁë»äÿëDæÿëmåÿë€=éÆ@­è` áp áËÿÿë …â…†å  á×âÿë
  3127. …âÿúÿë
  3128. …â…â☓!†åôÿë⇦!…姅â$†åX"†åÌâÿë
  3129. …âôúÿë⇧âÛåAâôÿëûÿëPã`ŷ áÆ€=éÏ@­è` áp áã
  3130. 㧅 
  3131. 㧅$†
  3132. 
  3133. …â_ãÿë …â…†åX"†å 0 áWëã
  3134. ã ã
  3135.  …âQãÿëê‹ÿÿë…†å …â  á0Ûå0⇧àFëÏ€=éB­è ã¢ë‘ á`†åPã
  3136. ï Copy êï      Øîÿë     áHüÿëŵ=éB­è‘!†åRã
  3137.  ã™ë‘ á8†åAâRá 1‡.…âÒäïQâûÿÿÄîÿë     á4üÿëŵ=éB­è ã|ë‘ á|†åx†å‘á
  3138. ï Modifiedêï Original¯îÿë     áüÿëŵ=éB­è ãgë‘ áï  ¥îÿë     áüÿëŵ=éB­èÇüÿë‘ áï‡îÿë †å›ßÿë ã<!†å Bâ ã²äÿë”îÿë     áüÿëŵ=éflC­è‘ á€ áµüÿëp áï⇧îÿë<!†å Bâ8A†åDâ@à‘1†åPàZ ã`ë ã áRëDà[ë     á áMëxîÿë áèûÿëfl◰=é@­èQâJ Ðç Rãúÿÿ
  3139. Ŵâ€=é@­èX†å\†å\…åX…åp†åt†åt…åp…å$†å(†å(…å$…å€=é@­èH†åP†åP…åH…åL†åT†åT…åL…å€=é◰C­èhŴ†åXã
  3140. $†å@†åUåÿë‘ á     á áQåÿëpHà    à@†åPá    pA {öÿëpWâüÿÿ◰◰=é@­è áeüÿëï<!†å Bâë9îÿë€=é@­è1…â!†å Râ CJ0Ñç Sãùÿÿ
  3141.  ã€=éB­è‘ á†åÐåÿPãÙ⇨ÐÿP  ŵ=é@­è    Pã 3:Úëÿëâ €=é@­èïïD†åX†å€àï@†å€âï áï€=éC­è‘ á€ á&~…â á ã      á[ýÿë àãpã
  3142. !ç á     áàãÿë,†åPã
  3143. Âøÿë     á◰ëÿë  á0†åD†åJýÿëpã     ÓãÿÝÿëê áCýÿëpã’èÿÿï◰=éŷC­è‘ áÊ ã ãÿ  ãáàã(ëp áY㳆 "
  3144. Y㲆 
  3145. Yãã Œ ±† êYãeàãëPã.œ ê# YãWã-œ ê™ YãW㵆 ê• YãWã·† ê‰ YãW㶆      áŷ◰=é@­è áŴ ãÿ  ãïÿQãÿR  €=é@­èx†å ãx…åPã
  3146. |†åPãàþÿ €=éB­èSáÿë☓’†åyã  
  3147. 
  3148. …âúáÿë…†åpã 
  3149.  áìÿëpã@ 
  3150. Pá@ @Ó†å€àYá  ÃÊ◰à    ◰à!†å Bàwòÿë
  3151. …â á      ásòÿëmøÿë    TáÙþÿDõÿë ãŵ=éB­è‘ ápã4 !
  3152. ☓•â•…â1ï<†åYáÊ     á?ïpã
  3153. pãC 
  3154.      á ã5ï*'Rã: Rã * ã5ï€Rã*Rã: ã5ïRãÊ ãê5 ãŵ=é¡ÿÿÿÿ@­è0 ã àãA†åÔåPã áÃëÿëpã
  3155. Pá0 Ó  áÔåPã:@☓à†åTáîÿÿ: ã0…åê%øÿë †åÿ Pã ÃøÿÿÊ41…å€=éB­è‘ ã®…â ã ‘äRãRÚQâùÿÿ'ëPã
  3156. ‘ ã     áŵ=é@­èĆåPã
  3157. ï áï áï€=é@­èŶæÿë0 ã  ã ã ãïaøÿë,†å‹ÿÿëPã ,…­ ã     ãï ãýâï ãÄ…åïï£üÿë ã ãïÝ ã ãöÿëÞ ã ãöÿëß ã ãöÿëà ã ãöÿëá ã ãöÿëâ ã ã öÿëã ã ãöÿëä ã ãöÿëÞÿëqàÿëÈ ãüõÿëÛ ã⇩ ãþõÿëÜ ã ãûõÿëå ãôõÿëæ ãòõÿëî ã0 ãôõÿë€=éB­è—åÿë9 ã: ãÑüÿë ã  ã§ÿÿ븆åï  ã£ÿÿ뼆åï  ãflÿÿëĆåï  ãœÿÿëÀ†åï    ë‘ áªõÿë¸ëPã
  3158. Gë#æÿëöÿÿê     áŵ=éC­è€ ãXã Xã Xã' Xã/ . YãXã
  3159. ê⇩ Yã€⇦âX〠ìÿÿêŒ Yã€X†çÿÿê     á◰=é@­èàã ã  ãGëÿëQ㸅øÿÿ
  3160. ‘ á€=é@­èàã ã  ã=ëÿëQã¼…øÿÿ
  3161. ‘ á€=é@­èàã ã  ã3ëÿëQãÄ…øÿÿ
  3162. ‘ á€=é@­èàã ã  ã)ëÿëQãÀ…øÿÿ
  3163. ‘ á€=é@­è ã  ãFÿÿë ã9ë€=é@­è ã  ã?ÿÿë€â ã  ã Àçï€=éB­è ã8†å €á †å €áh†å€á,†å€á†åŴ€á†å€á†åŴ€á†å€á‘ áÂõÿë    ‘€á¢ ã— ã      áï– ã)$ áï„ ã)( áï” ã), áïµ ã¸"†åﶠã¼"†åï· ãÄ"†å︠ãÀ"†åïŵ=éC­èpã
  3164. ‘ á  ã\€Oâ;…Hâ    Rá
  3165. 0ØäÿSãüÿÿ ŵâøÿÿê  ãØäÿPã
  3166.  Pã ŵ"ïøÿÿêqã
  3167. QàÚ ïQâüÿÿ◰=é@­è LⓆåÒçïQâûÿÿ€=é@­è0†åPã PãB 0…å€=é@­è®…âàãŴâQã 
  3168. 1‘ç Sãøÿÿ
  3169.   á ŵâRãôÿÿ
  3170. A‘çSáùÿÿ? ã€=éThe Acorn RISC Basic Editor. (C) Chris Gibson and Pete Morris, 1987WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     lì,6SÀ[¤¨MenuUtilsMenuUtils    0.12 (27 Feb 1993)MenuUtils   tThis module provides interface to WIMP menu handlerMenuUtilInitialiseNewAddDeleteDecodeShowShowSubMenuInfoTextTickDotsFadeWarningWritableSubMenuColourMenuColoursTickOnlyêæUnknown MenuUtils operationÀ[Too old module versionÀ[Menu area corruptedÀ[Menu not foundÀ[Item not foundÀ[MenuUtils data corruptedÀ[MenuUtils not yet initialisedS1ãð ÿO-éÀ†å-éçëj6ã-ùÿ•½è@-é †å2ã ãø0 ãï
  3171. j£ ãøŵâ0 áÃä3áüÿÿflåŵå ãŵ堅倽èWork:ãð L-éÀ†å …â`Œå6ã-Újøÿÿ   áèë…½èÀ†å[ãO"òfi#ÿC-é @ áèë>j4ã
  3172. -y³{9j6ã O@5
  3173. 4ã4
  3174. 0ãŷ„4 àà-éâë)j
  3175. € á ‘ á P—å-éõë#j
  3176. p áñ•àJUMPê!êGêqê⇨êÇêÖêÚêYêÜêÛêÚêÙêØêðêøêoêuê
  3177. @ á Pã    OÂ
  3178. Ê-éŴëj6ã-›-yì{j  ãÿ◰½x™åÿC½èòfiã‘ŷâ0−倠ãP áùëöÿÿj0⇦åP flå ⇦å  ã  ⇦å ⇦å ⇦â ° ã -éë0•â  ⇦â$° ã -é#ë „å ⇩â ŷå ⇦å
  3179. àáŷå™åÿ◰ýèMenu°,€!@<dummy>PŶâÕëÒÿÿj  ã°⇦⌵+à7ã p  °K€ --éëÆÿÿj
  3180. p á P⇦å/ë àáààáŷå™åÿ◰ýè7ã ⇦ °  -    è
  3181.  –å-é?ë³ÿÿj –åã   –
  3182. Rá  ÁEËëÿ◰ýè7ã  á-    L ¥ÿÿj
  3183. €-éfë¡ÿÿj5ã°   0°⇦”º+  á|OpGp°K€ -éÑëPEâ P⇦åþëÿ◰ýè …âoë‰ÿÿj
  3184. @ á  ã° ã  ŵç°⇧â [ãûÿÿºP ãp’äwã+
  3185. 0⇦âpŵå€Câ☓¡å°—å :á P —P— ◰Ⱐ㜧'àpŵå –å ã  –  ŵ  ŵå ‘ ° -    † 0°⇧àŵåP‘ áp’äwã
  3186.  ŵâ° ã -éŒë0−åsã}S×ÿÿÊ Oâ¯@âWÿÿê á@™å ™å™åÿ◰ýè1ã † 0†
  3187.  ’åzã0’¶ `0⇧ ’å@ Bâ …å 0…å⇦âÔïAÿÿê ’å0’å⇦âèï<ÿÿê⇦âp™å™åÿ◰ýè    @DâL •â☓ ⇩à‘ÚåÚå  ã− á7ãP ëj4ã-     j  À -y){ôÿÿzÿ◰ýè⇦+qãQà-IÓKÿÿj⇩Båÿ◰ýè0 á  ãÁ[ï-yÊ{ÿÿj
  3188. € á<@•â0 ⇦â½ ã -éGë  ⇦å  „åã  -éëÿÿj ⇦åmë™åÿ◰ýè!0r%!1 ¤!'2%>!73ld!@4A!P5 r!`6mo!p7on!€8A!–9op! 10%!°110!Ç12T!Ð13p!ç14:€!÷15p7ã O²@œþÿ
  3189. Ŵà Çåÿ◰ýè7ãQá O¢Ö@¢‹þÿª  á°ë ávë –u Ês uúÿÿz ’å ⇩ã Ŵåÿ◰ýè°™âH-éé@flå …â`Œå6ã
  3190. °„å;á°„å;á ŷõÿÿ Ýè Oâ?@âЙâ`‡èòfiãTask°™âH-éé „å:ã°  -jøÿÿ „堀堠áë ÝxЙâ`‡èòfiã@-é ã
  3191.   áï€ýxЙâ@½èòfiã@-é…â  ã Ŵå  ã  Ŵå Ŵå ã  ãçï ’u€ýxЙâ@½èòfiã°™âH-éét&åàá  á°ŷâ œå:ã    
  3192. 0Œå3á     O+@0Œå0á°⇩óÿÿ Ýè     Oâq@âЙâ`‡èòfiã°™âH-ééàá  á0ã  
  3193.  ’å0Ŵâ:ã
  3194. °’å°å 0á JŴ÷ÿÿ  á Ýè     OâÂ@âЙâ`‡èòfiã°™âH-éé  ã ° ã -é2ë j⇩å ⇩å ±å°⇩å° ã°⇩å°⇩å°⇩å°⇩å°†å°⇩å …å ÝèЙâ`‡èòfiã'@-é5ãP Ŷ Ŷà⇩¡ á0 ⇩â-éë!j ⇨å8ã
  3195. € 
  3196. 8
  3197. 7ã°G p⇩⇩â€⇦âŷâ ’å2ã
  3198.  ‹åð·å :á
  3199. O⇧@ P‹å5ã
  3200. 0 ŵâ°Œå;á⇩PUâ ⇩ùÿÿŵâêÿÿê€@â'€ýèЙâ&@½èòfiã °™âH-éé0ã ÐZ  Ó  Ó Áä Râøÿÿ Ýè °™âH-éé2ãP    
  3201. €°@²Ŵ°A²°à³° Ã  Ðæ  Áæ Râûÿÿ Ýè°™âH-ééd flå å  ã å å  å å-é1ëj  „åã  -é¬ëj °–å  å „å ⇩â ŷå  å ÝèЙâ`‡èòfiã!@-é⇦â0 ã-éÃë
  3202.  á€â  —å2ã
  3203.  ‘å ã  €  ‘-é¸ëZá
  3204.  Á ‘åãD0◰,0◰ R†Ê€ ⇩ €äîÿÿ¢ á$ ⇦å° á€ýè°™âH-éé-é¤ë
  3205.  q{° q -yŒÿÿ{ ÝxЙâ`‡èòfiã@-é å°⇩â  –å:ã J -éŵë ⇩r  u€ýx@½èòfiã°™âH-é
  3206. é ’å
  3207. ¨àá-é
  3208. ÿÿëj:á O@ Œå ⇧å @’å4ã
  3209. 0 Ŵâ -é    ëj@Tâ ŵùÿÿ  áàþÿë ÝxЙâ`‡èòfiã°™âH-éé ’å ã
  3210. ’å  „åã å:ãÏþÿ @rÍþÿ{j2ã’p    P@Âòßc-ÉÉÿÿË ÝxЙâ`‡èòfiã@-é…âÏï ’u 
  3211. r€ýx@½èòfiã@-é5ãPE  2€ý@½èòfiã°™âH-éé0ã    
  3212. -é<ë
  3213.   á–å-é'ë
  3214.  qu-y/ÿÿ{ ÝxЙâ`‡èòfiã °™âH-éé –ç1ã Ê ⇩ ç Ýè°™âH-éé ã0ã- 
  3215.   - j
  3216.  -ÿÿ  á ÝèЙâ`‡èòfiãp ã0°⇦⌷'àð á°™âH-é éRã ³º å JâZá
  3217. 0C° ³¿  á ÝxЙâ `‡èòfiã°™âH-ééÿ  ã0ã°Ð[ ZÂûÿÿʬjâ ÝèWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     x €abode_1,, wwwwwwwwwwwwwwÝÝ­w⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚw⇦€€ÝÝ­Ýw⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝw⇦€⇦€⇦ÝÝ­Ý}w⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝww⇦€⇦€ÝÝ­Ý™ww⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝ⇦ww⇦€⇦⇦ÝÝ­Ý™⇦ww⇦⇦⇦⇦⇦⇦⇦⇦ØÝÝÚÝ⇦⇦ww⇦€€ÞÝ­Ý€ww⇦⇦⇦⇦⇦⇦⇦èîÝÚÝ⇦⇦⇦ww⇦⇦⇦⇦€î−ÞÝ⇦⇦ww⇦⇦⇦⇦⇦⇦xfiéÞÝ⇦⇦⇦⇦ww⇦€~îîw⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦èîîw⇦⇦⇦⇦⇦wwwwwwwîîwwwwwwwwwL€abode_2,, wwwwwwwwwwxwwwwwwwwwwpwpw€–ùÿÿpwwøx÷ÿûuwpwwppw€•p÷»»Ppwwøp÷ïîprpwwpwà⇨pwwwwwwwwwwîpw•⇦•⇦⇦⇦⇦wwwwwwwwwwøø⇦⇦⇦⇦wGDTw⇦⇦⇦÷ÿÿÿ⇦⇦ w⇦—w⇦€wøø⇦⇦» w⇦—w⇦⇦⇦w•⇦•wÇÌÜw⇦⇦w⇦⇦‘−−    wÇÌÜw⇦⇦⇦w⇦‘−−−    wwwww⇦€wwwwwwwwww⇦⇦⇦⇦⇦⇦⇦wwwwwwwwwwwÿ€abode_3,, wwwwwwwwwwwwww@wwwÿÿ•⇦ÿÿø⇦⇦w@wwwÿ⇦ÿ⇦ÿøÿŴw@wwwÿÿ•⇦ÿ⇦•øq@wwwÿø•⇦ÿ⇦⇦ø•⇦q@wwwÿ⇦ÿ⇦ÿ⇦⇦ø•⇦⇦w@www⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦w@wwwŴ⇦°»⇦w@www⇦w@www⇦Ŵw@www⇦w@wwŴ⇦q@ww⇦@ww’@ww−−−@www−−⇦w@wwwwwwwwwww@ww€abode_4a,, ±»»»»»»»»»»»»»»»»»»»!""»»±»»!"DDDBDDD»»»»»"DADU33333333"»»»""DTTUDDDDDDDDD»»»DDDUUU"DDD»»»»UUQUUBDD»»±»QUUUUTU»»»»QUUU»»[»»»»»»»€abode_4b,, !""!"DDDBDDD"DADU1333333""""""DTTUADDDDDDDDDDDDDUUU"DDDUUQUUBDDTQUUUUTUUQUUUUDDD4optoff
  3218. ,° PUUUUUUUUUpwwwwwwwwwWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ4opton
  3219. ,° uwwwwwwwwwU"""""""""U"""""""""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U"""""""""U"""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€abode_5,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwqwwwwwqwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     pÔabode_1!,,wwwwwwwwwwwwwwÝ­Ú⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝ­Ý⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ØݪÝ⇦⇦⇦€€ÝÝÚÝ⇦⇦⇦⇦€€€⇦Ý­ÚÝ⇦⇦⇦⇦€ØÝ­Ý}⇦⇦⇦€€€ØݪÝ}⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÝÝÚÝx⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦Ý­ÚÝx⇦⇦⇦€€ÐÝ­Ý™x⇦€⇦€⇦Ðݪݙx⇦⇦⇦⇦ÝÝÚÝ⇦x⇦⇦€⇦€€€Ý­ÚÝ⇦x⇦⇦⇦⇦⇦⇦⇦⇦⇦ØÝ­Ý™⇦x⇦⇦⇦⇦⇦⇦⇦⇦⇦Øݪݙ⇦x⇦⇦€ÝÝÚÝ⇦x⇦⇦⇦€⇦€Ý­ÚÝ€x⇦⇦€⇦⇦ÐÝ­Ý™€x⇦⇦€⇦€⇦Ðݪ݀⇦x⇦⇦⇦⇦⇦⇦⇦⇦ÝÝÚÝ⇦⇦⇦x⇦⇦⇦⇦⇦⇦⇦⇦Ý­ÚÝ⇦⇦⇦x⇦⇦⇦⇦⇦⇦⇦èÝ­Ý™⇦€⇦x⇦⇦⇦⇦⇦⇦⇦èÞ­Ý€€⇦x⇦⇦⇦⇦⇦⇦⇦îîÝÝ€€⇦x⇦⇦⇦⇦⇦⇦⇦îéÝÝ⇦⇦€⇦x⇦⇦⇦⇦⇦⇦èfiéÝ™⇦⇦⇦⇦x⇦⇦⇦⇦⇦⇦è−îÝ™⇦⇦⇦⇦x⇦çéîÝ€€€⇦x⇦çî~€⇦⇦xèçîw⇦⇦⇦⇦xèî~€€€⇦⇦x⇦⇦⇦⇦⇦îî⇦⇦⇦⇦⇦⇦⇦⇦x⇦⇦⇦⇦⇦î‰⇦⇦⇦⇦⇦⇦⇦⇦xwwwwwçîwwwwwwwwwwÔabode_2!,,wwwwwwwwwpwpw€⇦pwpw€⇦xwwwwwww⇦•pÿÿÿpwww⇦•pÿÿÿpwwwww€øp¿ÿpwwp€øp¿ÿp'wpwwp⇦•p»»wrpwwp⇦•p»»wwp€øp» pwpwp€øwpîpwpwpî‰wp‰03pfi‰pî01pwàîppwwwwwwwwwàpp⇦⇦⇦⇦⇦⇦⇦⇦pø•ÿ⇦⇦⇦⇦€wwwwwwwww⇦••⇦⇦⇦€qp7u⇦⇦⇦§z⇦ø⇦⇦⇦⇦€qpww⇦€§zÿÿÿ•⇦°€qpp⇦€ww⇦ø⇦⇦⇦ €qpp⇦⇦⇦⇦x⇦••⇦°»€qpp⇦€pø•ÿ⇦» €qpp⇦€p⇦⇦⇦°»»€qpww⇦⇦⇦⇦x⇦⇦⇦€qpDq⇦€x⇦⇦€qpww⇦€x⇦⇦‘−−    €qÇ|⇦⇦⇦⇦x⇦−−−    €qww⇦⇦⇦⇦x⇦‘−−−    €qGt⇦⇦⇦⇦x−−−−    €qww⇦⇦⇦⇦x‘−−−−    €qp€xwwwwwwwwqwww€€⇦q⇦⇦⇦⇦⇦⇦⇦⇦Ôabode_3!,,wwwwwwwwwww÷ÿÿ•⇦ÿ⇦⇦ø•⇦÷ÿÿÿ⇦ÿ•⇦ÿ•⇦÷•⇦ÿ⇦ÿÿøÿ•⇦÷•⇦ÿ⇦ÿÿÿÿ•⇦÷•⇦ÿ⇦ÿøÿø•⇦÷ÿÿÿ⇦ÿ⇦•ø•⇦÷ÿÿ•⇦ÿ⇦•ø•⇦⇦÷•ÿ⇦⇦ÿ⇦⇦ø•⇦⇦w÷•ÿ•⇦ÿ⇦⇦ø•⇦⇦w÷•ø•⇦ÿ⇦⇦ø•q÷•øÿ⇦ÿ⇦⇦ø•÷•⇦ÿ⇦ÿ⇦⇦ø•⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦°q⇦⇦⇦⇦»€x⇦⇦⇦€x⇦⇦ŴxŴ⇦−Ŵx⇦−xŴ⇦x⇦qq−’−−−’−’−−−q’−−−    €x−−−−    €x−−−−−    €x−−−−−−    €xwwwwqwwwwwwÔabode_4a!,,»»»±»±»»»±»±»»»±»±»» »±»""4±»»+DDD»±»2DDD4@±»»+D!DTBDDD»±»2DDU°»» DDTU23333""»»»"DTTUBDDDDDD´»KDDTTURUUUUUUµ»[UDUUUDDT»»»UUUU!DDT±»»UUAUU0DDT»±»SUETU52DDT±»»[UUUUCUT»±»SUU5SU³»»[UUT»±»U±»»»±»±»»»±»±»»»±»»»Ôabode_4b!,,!""4"DDD!2DDD4@ D!DTBDDD2DDUDDTU23333""""""DTTUBDDDDDDDDDDDTTURUUUUUUUUUUDUUUDDTUUUU!DDTUUAUU0DDTSUETU52DDTQUUUUCUTSUU5SUSQUUTSUS4optoff,, BTTTTTTTTTTTTTTTTTT DDDDDDDDDTBUUUUUUUUUU4opton,,UUUUUUUUUU$EDDDDDDDDDEEEEqEGEQEuEAGEr%ETwErAGEAGq7EuwEcWEQGE!%EE$<Ôabode_5!,,!wwwwwwwwwuwWtwGtwGA7sw7stwrw'qwGwwwrw'1wwwAwwwwqwwwwwqwwwwqwqwwwwqwwwwqwwwww1wwwWQwuwwwwwwwwwwwwwwwwwwwswww7swww7wwwwwwwwwwwwwwww1wwwWQwuwwwqwwwwqwwwwwqwwwwqwqwwwwAwwwwqwwwwwwwwrw'1wwwtwrw'qwGA7sw7stwGtwGuwWwwwwww!www    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ô ><Abode$Dir>.SourceCô This application is FreeWare. (c) 1992,1993,1994 Dick AlsteinAppl$="Abode"Version$="1.20 (23-Aug-94)"    òinitî Ŷ òerror quit%=£    .mask%=(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12)
  3220. õ ,  È− "OS_ReadMonotonicTime" ¸ blinktime% F  blinktime%=(blinktime%+blinkperiod%)-(blinktime% ◰ blinkperiod%)8  È− "Wimp_PollIdle",mask%,blk%,blinktime% ¸ reason%  È‰ reason% Ê     É 0      òblinkcaret+      È− "OS_ReadMonotonicTime" ¸ time%      ç time%>rmamintime% …B        ç minimizerma% … È− "XOS_ChangeDynamicArea",1,-(1<<24)!        rmamintime%=time%+100       Í)    É 2 : È− "XWimp_OpenWindow",,blk%)    É 3 : È− "Wimp_CloseWindow",,blk%?    É 6 : òmouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16))    É 8 : òkey(blk%!0,blk%!4,blk%!24)    É 9 : òmenuselect(blk%)    É 17,18 : òreceive(blk%!4,blk%!8,blk%!16)  Ë ý quit%òmsg_exitÈ− "Wimp_CloseDown" à!"Ý òaccess(name$,type%)#&ê ofs%,read%,item$,itemtype%,i%,N$$%È− "OS_File",5,name$ ¸ ,,,,,attr%%ç type%=2 …&+  attr%=(attr% € &F7) ☓ (access% € &08)'Ì(#  attr%=(attr% € &C4) ☓ access%)  ç dontlocksetup% …*$    N$=¤upcase(¤leafname(name$))+     ç ¤msg_lookup0(N$)<>"" …,      attr%=attr% € &F7-        Í.  Í/Í0*È− "XOS_File",4,name$,,,,attr% ¸ ;flg%1ç (flg% € 1) …2/  òcomplain(¤msg_lookup1("NoAccess",name$))3Ì4  ç type%=2 …5    ofs%=06        õ7B      È− "OS_GBPB",10,name$,blk%,1,ofs%,40,"*" ¸ ,,,read%,ofs%8      ç read% …9        itemtype%=blk%!16:)        item$=name$+"."+¤str(blk%+20);$        òaccess(item$,itemtype%)<       Í=     ý (read%=0) ☓ (flg% € 1)>  Í?Í@áABÝ òbasicload(file$)Cç dodir% …D0  È− "Wimp_StartTask","Dir "+¤dirname(file$)EÍF/È− "XOS_Module",18,"ARMBasicEditor" ¸ ;flg%G ç ((flg% € 1)=0) € ¬(¦ -1) …H  òinsertcmd("EDIT")IÌJ  òinsertcmd("MODE MODE")KÍL,È− "Wimp_StartTask","Basic -load "+file$MáNOÝ òblinkcaretPç blink% …Q%  È− "Wimp_GetCaretPosition",,ct%R$  ç (ct%!0<>-1) € (ct%!16<>-1) …S    ct%!16=(ct%!16)ŵ(1<<25)TI    È− "Wimp_SetCaretPosition",ct%!0,ct%!4,ct%!8,ct%!12,ct%!16,ct%!20U  ÍVÍWáXYÝ òcomplain(text$)Z ê dummy%[dummy%=¤errbox(text$,17)\á]^Ý òdefaultstatus_ mode%=1`access%=&03a dodir%=¹bconfirm%=¹c blink%=£dnewtype$="Text"e cmd$=""fdontlocksetup%=£gpullfront%=£hpullfrontkey%=&1EAiblinkperiod%=25jminimizerma%=£ktaskwindow%=¹lámnÝ ¤dirname(F$)o ê p%,q%pp%=1qõr q%=§F$,".",p%)s ç q% > 0 … p%=q%+1t
  3221. ý q%=0u=ÀF$,p%-2)vwÝ ¤errbox(err$,boxes%)xerrblk%!0=0y$(errblk%+4)=err$+½0z8È− "Wimp_ReportError",errblk%,boxes%,Appl$ ¸ ,click%{=(click%=1)|} Ý òerror~ê Ŷ!î Ŷ ê È− "Wimp_CloseDown" : à€*ç ¬ ¤errbox(ö$+" (line "+Ã(fi)+")",3) …Ŵ  È− "Wimp_CloseDown"ŵ  à◰Í☓áŶŷ Ý òinit
  3222. ê flg%⇦Þ errblk% &100⇨CÈ− "Wimp_Initialise",200,&4B534154,Appl$ ¸ osversion%,thistask%⇩î Ŷ òerror⇧Þ blk% &400…indsize%=&400™Þ indir% indsize%‰indirend%=indir%+indsize%•Þ ptrinfo% 20‘Þ varbuf% 256’newtype$="Text"‹Þ emptystr% 4›$emptystr%=""“ Þ ct% 24”Þ accessbit%(4)„accessbit%(0)=&08–accessbit%(1)=&01—accessbit%(2)=&02−accessbit%(3)=&10Œaccessbit%(4)=&20œòmsg_init†+È− "OS_ReadMonotonicTime" ¸ rmamintime%‡òreadscreenvarsfiòloadstatusfl%spfilename$="<Abode$Dir>.Sprites" KÈ− "OS_ReadModeVariable",27,0 ¸ ;flg% : ô test if hires modes available¡ç (flg% € 2)=0 …¢  spfilename$+="22"£ͤ-È− "OS_File",17,spfilename$ ¸ ,,,,spsize%¥spsize%+=16¦Þ sparea% spsize%§sparea%!0=spsize%¨sparea%!8=16©"È− "OS_SpriteOp",256+9,sparea%ª/È− "OS_SpriteOp",256+10,sparea%,spfilename$«Þ spname% 14¬$spname%="abode_"+Ã(mode%)­ç mode%=4 …®#  ç (access% € accessbit%(0)) …¯    $spname%+="b"°  Ì±    $spname%+="a"²  Í³Í´blk%!0=-1µblk%!4=0 : blk%!8=0¶blk%!12=68 : blk%!16=68·blk%!20=&7000311A¸blk%!24=spname%¹blk%!28=sparea%ºblk%!32=12»)È− "Wimp_CreateIcon",,blk% ¸ baricon%¼3È− "Wimp_OpenTemplate",,"<Abode$Dir>.Templates"½*infowin%=¤loadtemplate("Info",sparea%)¾!$(blk%!(92+32*3+20))=Version$¿.accesswin%=¤loadtemplate("Access",sparea%)À,optwin%=¤loadtemplate("Options",sparea%)Á'pullfrontkeystr%=blk%!(92+32*11+20)Â1grabkeywin%=¤loadtemplate("GrabKeys",sparea%)ÃÈ− "Wimp_CloseTemplate"Äã I%=0 ¸ 4Å;  òselecticon(accesswin%,I%,(access% € accessbit%(I%)))Æí I%Ç!òselecticon(optwin%,1,dodir%)È)òselecticon(optwin%,2,dontlocksetup%)É#òselecticon(optwin%,3,confirm%)Ê!òselecticon(optwin%,4,blink%)Ë%òselecticon(optwin%,5,pullfront%)Ì'òselecticon(optwin%,6,minimizerma%)Í"òshadeicon(optwin%,8,¬ blink%)Î"òshadeicon(optwin%,9,¬ blink%)Ï'òselecticon(optwin%,14,taskwindow%)Ð:blk%!0=grabkeywin% : ô open grabkeys window off-screenÑ"È− "Wimp_GetWindowState",,blk%Òblk%!4=(blk%!4)-10000Óblk%!8=(blk%!8)-10000Ôblk%!12=(blk%!12)-10000Õblk%!16=(blk%!16)-10000Öblk%!28=-1×È− "Wimp_OpenWindow",,blk%ØòpreparemenusÙáÚÛÝ òinsertcmd(s$)Üê i%Ýã i%=1 ¸ ©(s$)Þ%  È− "OS_Byte",138,0,–(Ás$,i%,1))ßí i%àÈ− "OS_Byte",138,0,13ááâãÝ òkey(window%,icon%,key%)äê val%,ok%å&ç (window%=optwin%) € (icon%=11) …æ   val%=0ç  ç ¤validhotkey(key%) …è-    $(pullfrontkeystr%)=¤hotkeyname(key%)é!    òselecticon(optwin%,11,0)êI    È− "Wimp_SetCaretPosition",optwin%,11,,,-1,©($(pullfrontkeystr%))ë    pullfrontkey%=key%ì  Íí  ç (key%=27) ☓ (key%=13) …î6    $(pullfrontkeystr%)=¤hotkeyname(pullfrontkey%)ï!    òselecticon(optwin%,11,0)ðI    È− "Wimp_SetCaretPosition",optwin%,11,,,-1,©($(pullfrontkeystr%))ñ  ÍòÌó+  ç pullfront% € (key%=pullfrontkey%) …ô*    È− "Wimp_GetPointerInfo",,ptrinfo%õ    ç (ptrinfo%!12)>=0 …ö      blk%!0=ptrinfo%!12÷(      È− "Wimp_GetWindowState",,blk%ø!      ç ((blk%!32)€(1<<17)) …ù        blk%!28=-2ú       Ìû        blk%!28=-1ü       Íý-      È− "Wimp_SendMessage",2,blk%,blk%!0þ        Íÿ  Ì!    È− "Wimp_ProcessKey",key%  ÍÍáÝ ¤validhotkey(val%)    ê ok%    ok%=£ȉ (val% € &F) Ê      É 1,2,3,4,5,6,7,8,9
  3223.     ok%=(val%>=&181)   É 10,11,12     ok%=(val%>=&1CA)Ë=ok%Ý ¤hotkeyname(val%) ê name$ name$="""ç (val% € &10) … name$+=½(139)ç (val% € &20) … name$+="^"name$+="F"+Ã(val% € &F)
  3224. =name$Ý ¤leafname(f$) ê p%,q%q%=0õ  p%=q%+1  q%=§f$,".",p%)
  3225. ý q%=0 =Áf$,p%) !Ý òloadstatus" ê type$#ê Ŷ$F%=‰ ("<Abode$Dir>.Status")% ç F%=0 …&)  òcomplain(¤msg_lookup0("NoStLoad"))'  òdefaultstatus(Ì):  è#F%,mode%,access%,dodir%,confirm%,blink%,type$,cmd$*2  è#F%,dontlocksetup%,pullfront%,pullfrontkey%+0  è#F%,blinkperiod%,minimizerma%,taskwindow%,   Ù #F%-  ç mode% < 1 ☓ mode% > 5 ….    mode%=1/  Í0&  ç (©(type$)>0) € (©(type$)<12) …1    newtype$=type$2  Ì3    newtype$="Text"4  Í5Í6á78!Ý ¤loadtemplate(name$,spptr%)9ê handle%,i%:ê Ŷ;*î Ŷ ê È− "Wimp_CloseTemplate" : òerror<IÈ− "Wimp_LoadTemplate",,blk%+4,indir%,indirend%,-1,name$,0 ¸ ,,indir%=blk%!68=spptr%>ç blk%!88>0 …?  ã i%=0 ¸ blk%!88@    f%=blk%!(92+i%*32+16)A    ç (f% € &103)=&102 …B#      blk%!(92+i%*32+24)=spptr%C        ÍD
  3226.   í i%EÍF,È− "Wimp_CreateWindow",,blk%+4 ¸ handle%G =handle%HIÝ òmsg_initJê fname$,flags%,size%,buf%K!fname$="<Abode$Dir>.Messages"L6È− "MessageTrans_FileInfo",,fname$ ¸ flags%,,size%Mç flags% € 1 …N   buf%=0OÌP  Þ buf% size%QÍRÞ MsgDesc% 17+©(fname$)S$(MsgDesc%+16)=fname$T8È− "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%UáVWÝ òmsg_exitX(È− "MessageTrans_CloseFile",MsgDesc%YMsgDesc%=0Zá[\Ý ¤msg_lookup0(token$)]ê result%,flg%^@È− "XMessageTrans_Lookup",MsgDesc%,token$,0 ¸ ,,result%;flg%_ç (flg% € 1) …`      =""aÍb=¤str(result%)cd!Ý ¤msg_lookup1(token$,param$)eê result%fIÈ− "MessageTrans_Lookup",MsgDesc%,token$,blk%,&100,param$ ¸ ,,result%g=¤str(result%)hi2Ý òmouseclick(xpos%,ypos%,button%,wndw%,icon%)jȉ wndw% Êk
  3227.   É -2l    È‰ button% Êm      É 1n        ç mode%=5 …o          òsetmode(1)p        Ìq          òsetmode(mode%+1)r        Ís      É 2t        òmainmenu(1)u      É 4v        È‰ mode% Êw          É 1x'            òinsertcmd("MODE MODE")y+            È− "Wimp_StartTask","Basic"z          É 4{1            access%=(access% ŵ accessbit%(0))|C            òselecticon(accesswin%,0,(access% € accessbit%(0)))}            òsetmode(4)~          É 5            òruncmd(cmd$)€        ËŴ        Ëŵ  É accesswin%◰+    ç ¤iconselected(accesswin%,icon%) …☓/      access%=access% ☓ (accessbit%(icon%))Ŷ        Ìŷ1      access%=access% € (¬ accessbit%(icon%))        Í⇦!    ç (icon%=0) € (mode%=4) …⇨      òsetmode(mode%)⇩        Í⇧  É optwin%…    È‰ icon% Ê™      É 1 : dodir%=¬ dodir%‰/      É 2 : dontlocksetup%=¬ dontlocksetup%•#      É 3 : confirm%=¬ confirm%‘      É 4’        blink%=¬ blink%‹+        È− "Wimp_GetCaretPosition",,ct%›<        ç (¬ blink%)€(ct%!16<>-1)€((ct%!16)€(1<<25)>0) …“*          ct%!16=(ct%!16) € (¬(1<<25))”O          È− "Wimp_SetCaretPosition",ct%!0,ct%!4,ct%!8,ct%!12,ct%!16,ct%!20„        Í–*        òshadeicon(optwin%,8,¬ blink%)—*        òshadeicon(optwin%,9,¬ blink%)−      É 8,9ŒA        ç ((button%=4)€(icon%=9)) ☓ ((button%=1)€(icon%=8)) …œ!          ç blinkperiod%>16 …†#            ç blinkperiod%>40 …‡!              blinkperiod%-=2fi            Ìfl!              blinkperiod%-=1             Í¡          Í¢        Í£A        ç ((button%=4)€(icon%=8)) ☓ ((button%=1)€(icon%=9)) …¤"          ç blinkperiod%<100 …¥#            ç blinkperiod%<40 …¦!              blinkperiod%+=1§            Ì¨!              blinkperiod%+=2©            Íª          Í«        Í¬'      É 5 : pullfront%=¬ pullfront%­+      É 6 : minimizerma%=¬ minimizerma%®      É 12¯        òsavestatus°        blk%!0=optwin%±'        È− "Wimp_CloseWindow",,blk%²      É 13³        blk%!0=optwin%´'        È− "Wimp_CloseWindow",,blk%µ*      É 14 : taskwindow%=¬ taskwindow%¶        Ë·Ë¸á¹ºÝ òmenuselect(selection%)»Aê adjust%,selinfo%,itemnr%,item%,item$,parentitem%,p%,dx%,dy%¼AÈ− "MenuUtil_Decode",mainmenu%,selection% ¸ ,adjust%,selinfo%½itemnr%=selinfo%!0¾item%=selinfo%!8¿item$=¤str(selinfo%!12)Àparentitem%=selinfo%!24Áç parentitem%=0 …  È‰ item% ÊÃE    É item_mode1%,item_mode2%,item_mode3%,item_mode4%,item_mode5%Ä      òsetmode(itemnr%)Å    É item_options%Æ      blk%!0=optwin%Ç(      È− "Wimp_GetWindowState",,blk%È#      ç (blk%!32 € (1<<16))=0 …É9        ô center window to screen if not already openÊ4        dx%=(screensize_x%-(blk%!12+blk%!4)) Ŵ 2Ë4        dy%=(screensize_y%-(blk%!16+blk%!8)) Ŵ 2Ì       ÍÍ      blk%!4=blk%!4+dx%Π     blk%!8=blk%!8+dy%Ï      blk%!12=blk%!12+dx%Р     blk%!16=blk%!16+dy%Ñ      blk%!28=-1Ò$      È− "Wimp_OpenWindow",,blk%ÓK      È− "Wimp_SetCaretPosition",optwin%,11,,,-1,©($(pullfrontkeystr%))Ô    É item_quit%Õ      quit%=¹Ö  Ë×ÌØ  È‰ parentitem% ÊÙ&    É item_mode2%,item_othertypes%Ú!      ç item%=item_rebuild% …Û        òtypemenuÜ       ÌÝ        newtype$=item$Þ(        È− "MenuUtil_TickOnly",item%ß,        ç parentitem%=item_othertypes% …à0          È− "MenuUtil_TickOnly",parentitem%á        Ìâ/          È− "MenuUtil_Tick",typesubmenu%,0ã        Íä       Íå    É item_mode3%æ      ç confirm% …ç5        ç ¤errbox("Kill module "+item$+"?",&13) …è1          È− "Wimp_StartTask","RMKill "+item$é*          È− "MenuUtil_Delete",item%,£ê        Íë       Ìì/        È− "Wimp_StartTask","RMKill "+item$í(        È− "MenuUtil_Delete",item%,£î       Íï    É item_mode5%ð      cmd$=item$ñ  ËòÍóç adjust% …ô  òmainmenu(0)õÍöá÷øÝ òreadscreenvarsù#ê xeig%,yeig%,xpixels%,ypixels%ú+È− "OS_ReadModeVariable",-1,4 ¸ ,,xeig%û+È− "OS_ReadModeVariable",-1,5 ¸ ,,yeig%ü/È− "OS_ReadModeVariable",-1,11 ¸ ,,xpixels%ý/È− "OS_ReadModeVariable",-1,12 ¸ ,,ypixels%þEscreensize_x%=(xpixels%+1)*(1<<xeig%) : ô screen size in OS unitsÿ)screensize_y%=(ypixels%+1)*(1<<yeig%)á"Ý òreceive(sender%,ref%,code%)
  3228. ê ack%
  3229. ack%=0ç sender% <> thistask% …  È‰ code% Ê    É 0 : quit%=¹     É 3          obj$=¤str(blk%+44)
  3230.       objtype%=blk%!40       È‰ mode% Ê         É 1          ç objtype%=&FFB …             òbasicload(obj$)            ack%=4          Í        É 26          ç (objtype% >= 0) € (objtype% <= &FFF) …@            È− "Wimp_StartTask","SetType "+obj$+" "+newtype$            ack%=4          Í        É 45          ç (objtype%=&1000) ☓ (objtype%=&2000) …            òaccess(obj$,2)          Ì            òaccess(obj$,1)          Í          ack%=4        É 5$          òruncmd(cmd$+" "+obj$)          ack%=4        Ë!    É &400C1"      òreadscreenvars#  Ë$  ç ack%<>0 …%    blk%!0=20&    blk%!12=ref%'    blk%!16=ack%(-    È− "Wimp_SendMessage",17,blk%,sender%)  Í*Í+á,-Ý òruncmd(command$).ç taskwindow% …/>  È− "Wimp_StartTask","TaskWindow -quit "+½34+command$+½340Ì1"  È− "Wimp_StartTask",command$2Í3á45Ý òsavestatus6F%=® ("<Abode$Dir>.Status")7 ç F%=0 …8)  òcomplain(¤msg_lookup0("NoStSave"))9Ì:=  ñ#F%,mode%,access%,dodir%,confirm%,blink%,newtype$,cmd$;2  ñ#F%,dontlocksetup%,pullfront%,pullfrontkey%<0  ñ#F%,blinkperiod%,minimizerma%,taskwindow%=   Ù #F%>Í?á@AÝ òsetmode(newmode%)Bmode%=newmode%C $(spname%)="abode_"+Ã(mode%)Dç mode%=4 …E#  ç (access% € accessbit%(0)) …F    $(spname%)+="b"G  ÌH    $(spname%)+="a"I  ÍJÍKòselecticon(-2,baricon%,0)LáMNÝ ¤str(s%)O ê i%,n$Pi%=0Q-È” s%?i% >= 32 : n$+=½(s%?i%) : i%+=1 : ÎR=n$STÝ ¤upcase(s$)Uê i%Vã i%=1 ¸ ©(s$)W  a%=–(Ás$,i%,1))X  ç (a%>=97)€(a%<=122) …Y    Ás$,i%,1)=½(a%-32)Z  Í[í i%\=s$]^Ý ¤menu_add(text$,submenu%)_ê handle%`&È− "MenuUtil_Add",,text$ ¸ handle%a;ç submenu%<>-1 … È− "MenuUtil_SubMenu",handle%,submenu%b =handle%cd*Ý ¤menu_addwritable(maxlen%,validstr%)eê handle%f#È− "MenuUtil_Add",,"" ¸ handle%g/È− "MenuUtil_Writable",,1,maxlen%,validstr%h =handle%ijÝ òpreparemenuskê i%,p%,t$l"È− "MenuUtil_Initialise",010,0mtypesubmenu%=0n-È− "MenuUtil_New",,"Set type" ¸ typemenu%oi%=0põqO  È− "MessageTrans_EnumerateTokens",MsgDesc%,"TYPE*",blk%,256,i% ¸ ,,p%,,i%r  ç p%<>0 …s!    t$=¤msg_lookup0(¤str(p%))t    dummy%=¤menu_add(t$,-1)u-    ç t$=newtype$ … È− "MenuUtil_Tick",,1v  Íw
  3231. ý p%=0x*item_othertypes%=¤menu_add("Other",-1)yÈ− "MenuUtil_Dots",,1z.item_rebuild%=¤menu_add("Rebuild menu",-1){7modmenu%=0 : ô modules submenu is built when opened|/È− "MenuUtil_New",,"CLI command" ¸ cmdmenu%}2item_command%=¤menu_addwritable(256,emptystr%)~)È− "MenuUtil_Text",item_command%,cmd$(È− "MenuUtil_New",,Appl$ ¸ mainmenu%€)item_info%=¤menu_add("Info",infowin%)ŴÈ− "MenuUtil_Dots",,1ŵ*item_mode1%=¤menu_add("Basic edit",-1)◰/item_mode2%=¤menu_add("Set type",typemenu%)☓+item_mode3%=¤menu_add("Kill module",-1)Ŷ.item_mode4%=¤menu_add("Access",accesswin%)ŷ-item_mode5%=¤menu_add("Command",cmdmenu%)È− "MenuUtil_Dots",,1⇦,item_options%=¤menu_add("Options...",-1)⇨#item_quit%=¤menu_add("Quit",-1)⇩òtypemenu⇧ᅙݠòmainmenu(newmenu%)‰2$(pullfrontkeystr%)=¤hotkeyname(pullfrontkey%)•*È− "MenuUtil_TickOnly",mainmenu%,mode%‘ È− "MenuUtil_Text",,newtype$’ç newmenu% … òmodmenu‹ç newmenu% …›(  È− "Wimp_GetPointerInfo",,ptrinfo%“+  È− "MenuUtil_Show",mainmenu%,ptrinfo%”Ì„$  È− "MenuUtil_Show",mainmenu%,0–Í—á−ŒÝ òmodmenuœ ê item%†3ç modmenu%<>0 … È− "MenuUtil_Delete",modmenu%,£‡*È− "MenuUtil_New",,"RMKill" ¸ modmenu%fi modnr%=0fl inst%=0 nrmods%=0¡õ¢@  È− "XOS_Module",12,modnr%,inst% ¸ ,modnr%,inst%,base%;flg%£  ç (flg% € 1)=0 …¤!    modname%=base%+(base%!16)¥    ç modname% < &3000000 …¦,      item%=¤menu_add(¤str(modname%),-1)§      nrmods%+=1¨        Í©  Íªý ((flg% € 1)=1)«ç nrmods%=0 …¬)  È− "MenuUtil_SubMenu",item_mode3%,0­Ì®0  È− "MenuUtil_SubMenu",item_mode3%,modmenu%¯Í°á±²Ý òtypemenu³ ê item%´;ç typesubmenu%<>0 … È− "MenuUtil_Delete",typesubmenu%,£µ3È− "MenuUtil_New",,"Other types" ¸ typesubmenu%¶nameptr%=0·õ¸O  È− "XOS_ReadVarVal","File$Type_###",varbuf%,24,nameptr% ¸ ,,len%,nameptr%¹  ç len%>0 …º    varbuf%?len%=13»&    item%=¤menu_add($(varbuf%),-1)¼5    ç $(varbuf%)=newtype$ … È− "MenuUtil_Tick",,1½  Í¾ ý len%=0¿)item_newtype%=¤menu_addwritable(24,0)À7È− "MenuUtil_SubMenu",item_othertypes%,typesubmenu%ÁáÂÃ#Ý òselecticon(window%,icon%,f%)Äblk%!0=window%Åblk%!4=icon%Æ
  3232. ç f% …Ç  blk%!8=1<<21ÈÌÉ  blk%!8=0ÊÍËblk%!12=1<<21Ì È− "Wimp_SetIconState",,blk%ÍáÎÏ"Ý ¤iconselected(window%,icon%)Ðblk%!0=window%Ñblk%!4=icon%Ò È− "Wimp_GetIconState",,blk%Ó=((blk%!24) € (1<<21)) > 0ÔÕ"Ý òshadeicon(window%,icon%,f%)Öblk%!0=window%×blk%!4=icon%Ø
  3233. ç f% …Ù  blk%!8=1<<22ÚÌÛ  blk%!8=0ÜÍÝblk%!12=1<<22Þ È− "Wimp_SetIconState",,blk%ßáàÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  3234. !Abode Version History
  3235. ----------------------
  3236.  
  3237. 1.20 Added option to continually minimize the RMA
  3238.      Two-level filetype menu:
  3239.        first level is configurable (see the 'Messages' file)
  3240.        second level contains all types
  3241.      Dragging a Basic file with Shift pressed loads the file but does not start
  3242.        the editor
  3243.      RMKill submenu is not shaded while in other modes
  3244.      Loads hires Sprites ("Sprites22" file) when appropriate (RiscOS 3 only)
  3245.      Defines F9 key for use in Basic: starts editor at the line where the last
  3246.        error occurred
  3247.      Uses MenuUtils module; no more limits on menu size
  3248.      Comes with templates in 2D and 3D version
  3249.        (To use the 2D templates: run the "Use2D" Obey file)
  3250.      Features REMOVED:
  3251.        * Option "Shift-load BASIC files"
  3252.        * Loading Text files into Basic editor
  3253.          (this option and the previous have become more or less obsolete,
  3254.          now that there are editors that can edit and run Basic programs;
  3255.          I only use the Basic editor when debugging a program)
  3256.        * Support of interactive !Help application
  3257.  
  3258. 1.19 Increased max number of types in type menu to 128.
  3259.  
  3260. 1.18 Adapted for use with RiscOS 3.10.
  3261.      Cursor blink rate and Pull Front hotkey made configurable.
  3262.  
  3263. 1.17 Added "Pull Front" option.
  3264.      Improved error handling.
  3265.  
  3266. 1.16 Extra option for preventing locking of setup files.
  3267.  
  3268. 1.15 Options in a window (instead of a menu).
  3269.      3D-ish icons in access and option windows.
  3270.      Added caret blinker.
  3271.  
  3272. 1.14 First publicly released version
  3273.  
  3274.  
  3275. Possible future additions
  3276. -------------------------
  3277.  
  3278. None that I can think of, but suggestions are welcome.
  3279.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿtRInfoÆ AccessfgOptionsÍXGrabKeys‰|…¬ÿÿÿÿ ☓ üÿÿ=`Øÿÿÿÿ —Ìÿÿÿøüÿÿÿ=ëñ—pÿÿÿøÈÿÿÿ=ôõ—<ÿÿÿølÿÿÿ=ü    —ÿÿÿø8ÿÿÿ= —Ôþÿÿøÿÿÿ= )     Ðÿÿÿ“ðÿÿÿNameled>þ †ÿÿÿ“¼ÿÿÿPurpose>þ @ÿÿÿ“`ÿÿÿAuthord>þ ÿÿÿ“,ÿÿÿVersion>þ Øþÿÿ“øþÿÿStatus>þ¢†ÿÿÿî¼ÿÿÿ,ÿÿÿÿ¢xÿÿÿî—ÿÿÿ=ÿÿÿÿAbout this ProgramAbodeR2R2;L40Dick AlsteinR2*.** (dd-Mdd-yy)R2FreeWareR2Another Bunch OfDesktop Enhancementstÿÿÿÿ☓ 4üÿÿ=Set access
  3280. Ìÿÿÿ‘øÿÿÿ±ø
  3281. †ÿÿÿPÈÿÿÿ±.
  3282. lÿÿÿ`—ÿÿÿ±<O
  3283. <ÿÿÿ`hÿÿÿ±]p
  3284. ÿÿÿp8ÿÿÿ±~‹Lock against deletionSoptoff,optonOwner read-accessSoptoff,optonOwner write-accessSoptoff,optonPublic read-accessSoptoff,optonPublic write-accessSoptoff,optonªbT\ÿÿÿÿ Ŷ 4üÿÿ=8ÿÿÿÿ Tþÿÿ†ôÿÿÿFG¸ÿÿÿ°äÿÿÿ±Ja€ÿÿÿ°¬ÿÿÿ±oŷHÿÿÿ0tÿÿÿ±“£ÿÿÿ<ÿÿÿ±±½Øþÿÿ4ÿÿÿ±ËÚ þÿÿbÌþÿÿ±èúxÿÿÿ <ÿÿÿfrequency:(ÿÿÿT<ÿÿÿ!    \ÿÿÿ⇦<ÿÿÿ!⇦Ôþÿÿ ÿÿÿkey code:(Ôþÿÿ⇦ÿÿÿ=ñ$%þÿÿðDþÿÿ=1'3 þÿÿ‹Dþÿÿ=16;hþÿÿ
  3285. “þÿÿ±>YAbode optionsR4*Dir before BASIC editSoptoff,optonDon't lock setup filesSoptoff,optonConfirm RMKillSoptoff,optonBlink caretSoptoff,optonPull Front keySoptoff,optonMinimize RMA sizeSoptoff,optonR5;Sdown,pdownR5;Sup,pupASave & ExitR5ExitR5Run Command in task windowSoptoff,optonðºÄÿÿÿÿR☓ üÿÿ=Abode_GraberWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿt0Info¤ AccessDMOptions’XGrabKeys‰|…¬ÿÿÿÿ ☓ üÿÿ=`Øÿÿÿÿ —Ìÿÿÿøüÿÿÿ=Abode—pÿÿÿøÈÿÿÿ=ëÿÿÿÿ—<ÿÿÿølÿÿÿ=ìÿÿÿÿ—ÿÿÿø8ÿÿÿ=ùÿÿÿÿ—Ôþÿÿøÿÿÿ=FreeWare Ðÿÿÿ“ðÿÿÿNameled>þ †ÿÿÿ“¼ÿÿÿPurpose>þ @ÿÿÿ“`ÿÿÿAuthord>þ ÿÿÿ“,ÿÿÿVersion>þ Øþÿÿ“øþÿÿStatus>þ¢†ÿÿÿî¼ÿÿÿ
  3286. ÿÿÿÿ¢xÿÿÿî—ÿÿÿÿÿÿÿAbout this ProgramDick Alstein*.** (dd-Mdd-yy)Another Bunch OfDesktop Enhancementstÿÿÿÿ ☓ 4üÿÿ=Set access
  3287. Ìÿÿÿ‘øÿÿÿ±ø
  3288. †ÿÿÿPÈÿÿÿ±.
  3289. lÿÿÿ`—ÿÿÿ±<O
  3290. <ÿÿÿ`hÿÿÿ±]p
  3291. ÿÿÿp8ÿÿÿ±~‹Lock against deletionSoptoff,optonOwner read-accessSoptoff,optonOwner write-accessSoptoff,optonPublic read-accessSoptoff,optonPublic write-accessSoptoff,opton"êÌâÿÿÿÿ Ŷ 4üÿÿ=8ÿÿÿÿ Tþÿÿ†ôÿÿÿFÿÿÿÿ¸ÿÿÿ°äÿÿÿ±G^€ÿÿÿ°¬ÿÿÿ±l◰Hÿÿÿ0tÿÿÿ±’ ÿÿÿ<ÿÿÿ±®ºØþÿÿ4ÿÿÿ±È× þÿÿbÌþÿÿ±å÷xÿÿÿ <ÿÿÿfrequency:(ÿÿÿT<ÿÿÿ!\ÿÿÿ⇦<ÿÿÿ!⇦Ôþÿÿ ÿÿÿkey code:(Ôþÿÿ⇦ÿÿÿ=ñ!"þÿÿðDþÿÿ=‘ÇSave & Exitþÿÿ‹Dþÿÿ=‘ÇExit§hþÿÿò“þÿÿ±$?Abode options*Dir before BASIC editSoptoff,optonDon't lock setup filesSoptoff,optonConfirm RMKillSoptoff,optonBlink caretSoptoff,optonPull Front keySoptoff,optonMinimize RMA sizeSoptoff,optonR5;Sdown,pdownR5;Sup,pupARun Command in task windowSoptoff,optonðºÄÿÿÿÿR ☓ üÿÿ=Abode_Grabeks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     1Nick!BootDëÿÿ  [α!HelpDÿÿÿ„i×A3!RunDëÿÿ…[β!RunImageDûÿÿ◰Ý©ÕØÝ!SpritesDùÿÿRÄ`Î!Sprites22DùÿÿØ«\Îà BitsGýÿÿ´ÅÙàcGýÿÿÏÅÙà ExamplesGýÿÿèÅÙà#hGýÿÿÈÙà%MakefileDáÿÿO;Ê+oGýÿÿ0ÈÙà'READMEDÿÿÿí⇦¦Õ⇩ResourcesGýÿÿ6ÈÙà(!BootDëÿÿ  [α!HelpDÿÿÿ„i×A3!RunDëÿÿ…[β!RunImageDûÿÿ◰Ý©ÕØÝ!SpritesDùÿÿRÄ`Î!Sprites22DùÿÿØ«\Îà BitsGýÿÿ´ÅÙàcGýÿÿÏÅÙà ExamplesGýÿÿèÅÙà#hGýÿÿÈÙà%MakefileDáÿÿO;Ê+oGýÿÿ0ÈÙà'READMEDÿÿÿí⇦¦Õ⇩ResourcesGýÿÿ6ÈÙà(!ArmSI!ArmSI1NickJ| > !Boot
  3292. | ArmSI application boot obey file
  3293. | By Nick Smith, 1992, 1993
  3294.  
  3295. Set File$Type_3F2 ArmSI
  3296. Set Alias$@RunType_3F2 Run <Obey$Dir>.!Run %%*0
  3297. IconSprites <Obey$Dir>.!SpritesonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | > !Run
  3298. | ArmSI application run obey file
  3299. | By Nick Smith, 1992, 1993
  3300.  
  3301. Set ArmSI$Dir <Obey$Dir>
  3302. Run <ArmSI$Dir>.!Boot
  3303. WimpSlot -min 128k -max 128k
  3304. Run <ArmSI$Dir>.!RunImage %*0
  3305. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Ô!armsi,€ pwwwwt73333www73333333wp333ww733wwwwwwp33s⇦⇦xwwwwwww3spp33swwww3spp333wwwwwwpwwwwp733333wwwwwwwwxw33333swwwwww⇦⇦www333www73s733w733www⇦⇦733ww33swp33sww333ww73wwp3333333sww73s3spw73333swwww333wwwwwwwwðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿðÿÿðÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿ¼ptr_hand,,UTi¤i¤iZ¤iŒT¥iŒ¤¥iŒ¤¦ªŒ¤¦ªª“ªªª‘ªªªPªªª@©ªj¥ªj“ªZ‘ªPU\ptr_write ,,U€j*T¤T‘T‘T‘‘‘‘¤€j*@U€file_3f2,, wwwwwwwwwwwwwwwwwwwwwwww€⇦⇦⇦wwww⇦€wwwwŴ⇦€wwwwpwwwwww73◰€wwww@tGGDGDwG⇦⇦⇦⇦wwwwpwwwwwww33wwww@tGDDDwwwwwDwwwwpwwwwwwwwwwwww@tGDDGwwwwwDwwpwwwwwwwwwwwww@twwwwwwwwwDwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwÌ—small_3f2,, wwwwwwwwwpw⇦€wpw⇦€wpwpwww⇦€wpwPWUwwwpwPwwwwwpwPUUuuwpwwpwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ä <ptr_hand!,,UPi“i¤i¤i¤iZ¤iŒ¤iŒ¤iŒ@¤iŒP¥iŒ“¥iŒ¤¥iŒ¤¦ªŒ¤¦ªŒ¤¦ªª¤¦ªª“ªªª‘ªªª‘ªªª‘ªªªPªªª@ªªª@©ªj©ªj¥ªj¤ªj“ªZ‘ª‘ª‘ªPU@U…ptr_write,,TTh¥¤i‘P@@@@@@@@@@@@P‘¤ih¥TTÔfile_3f2!,,wwwwwwwwwwwwwwwwwppp⇦⇦⇦p€⇦⇦⇦p⇦€p⇦€p⇦€pŴ⇦€pPuwwwwwwG4⇦€ppwwwwwwG4⇦€pPuwwwwwwG⇦⇦⇦⇦ppwwwwww7⇦8⇦⇦pPuwwwwwwwCDppwwwwwwwDDpPuwwwwwwwwwUppGDDDGttwwpPuwwwwwwwwwUppGtDtDtwwwpPuwwwwwwwwwUppGDDGGtwwwpPuwwwwwwwwwUppwwwwwwwwwpPuwwwwwwwwwUppwwwwwwwwwpPuwwwwwwwwwUppwwwwwwwwwppppppwwwwwwwwwwwwwwwwwøsmall_3f2,,wwwwwwwwGG⇦⇦G€GPPP⇦€Gwww'ŵ€G7GDD⇦⇦Gwwww"G7GDDwwGwwwwwG7GDDwwGwwwwwG7wwwwwGwwwwwGPPPPPGGwwwwwwwwG|!armsi!,Ôswwwq7333173333s7q333333s7333333373333333q33333333wq333sw7337q333q3sq3sq33s1w7q3sq33sq3sq333q3sq333sw77q33333sw733333w7333333q333333sqww1w33333sq3s733333q73ssw7333q33sq333q733733q333sw733q33s73q333q33sq33sw733373wq33333333737q3333333s73s3sq3333333s7333s7333333q333s73333sq333q333s73s1www7wwwÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÄsm!armsi,øADqwAD73sADq333sAD73w3sAD7swqsAD7sqsAD73wADq33sADq733wADqw3q3ADq37sADqq37sAD7sw37AD73337ssADq33sq3sADwwwADÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     # Project name:   Dhry
  3306. # AMU Makefile for Dhrystone for SI application
  3307. # By Nick Smith, 1992
  3308.  
  3309. # Can set the following defines ;
  3310. #       -DREG=register          (uses register class variables in places)
  3311. #       -DSILENT                (doesn't output anything except <ArmSI$Dhrystone>)
  3312. #       -DNORUNS=value          (number of runs for silent mode. eg, 10000)
  3313.  
  3314. # Toolflags:
  3315. CCflags = -c -depend !Depend -IC: -throwback  -DMSC_CLOCK  -DHZ=100  -DSILENT  -DNORUNS=75000  -w  -ff
  3316. Linkflags = -aif -o
  3317. ObjAsmflags = -depend !Depend -Stamp -quit -CloseExec
  3318. Squeezeflags = -o
  3319.  
  3320. # Dependencies
  3321.  
  3322. # system libraries
  3323. LDLIBS = c:o.Stubs
  3324.  
  3325. # user libraries
  3326. USRLIBS=
  3327.  
  3328. # source files (independently compilable files)
  3329. SOURCES= dhry_1.c dhry_2.c
  3330.  
  3331. # application object files
  3332. OBJECTS= dhry_1.o dhry_2.o
  3333.  
  3334. # Targets
  3335.  
  3336. all: Resources.Dhrystone Resources.Flops20
  3337.  
  3338. Resources.Dhrystone: $(OBJECTS) 
  3339.         link $(Linkflags) Resources.Dhrystones $(OBJECTS) $(USRLIBS) $(LDLIBS) 
  3340.         squeeze Resources.Dhrystones
  3341.  
  3342. Resources.Flops20: flops20d.o 
  3343.         link $(Linkflags) Resources.Flops20 Flops20d.o $(USRLIBS) $(LDLIBS) 
  3344.         squeeze Resources.Flops20
  3345.  
  3346. .SUFFIXES: .o .c
  3347. .c.o:;  cc $(CCflags) -o $@ $<
  3348.  
  3349. # Dynamic dependencies:
  3350. o.flops20:    c.flops20d
  3351. o.dhry_1:    c.dhry_1
  3352. o.dhry_1:    h.dhry
  3353. o.dhry_2:    c.dhry_2
  3354. o.dhry_2:    h.dhry
  3355. o.flops20d:    c.flops20d
  3356.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | > README
  3357. |
  3358. | Title         ArmSI application - Speed Indexer for Acorn RISC machines
  3359. | Authors       J.Abbott & Nick Smith
  3360. | Version       3.46H (07-Sep-93)
  3361. | Status        Public Domain, no distribution restrictions
  3362.  
  3363. For details of this software, please see the file !ArmSI.!Help.
  3364. ---
  3365. Nick Smith
  3366. Churchill College
  3367. Cambridge
  3368. CB3 0DS                 nas20@cus.cam.ac.uk (JANET/Internet email)
  3369. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | > !Help
  3370. |
  3371. | Title         ArmSI application - Speed Indexer for Acorn RISC machines
  3372. | Authors       J.Abbott & Nick Smith
  3373. | Version       3.46H (07-Sep-93)
  3374. | Status        Public Domain, no distribution restrictions
  3375.  
  3376. Welcome to the all-new !ArmSI application - it was developed from !SI
  3377. v3.12 (written by 'J.Abbott') by Nick Smith to give a range of
  3378. interesting machine speed indexes for Acorn RISC machines.
  3379.  
  3380. Versions postfixed by H (for Hack 8-) are modified by Nick Smith because
  3381. !SI 3.12 was pretty poorly written I felt, and needed some work done
  3382. in a few places (user interface, RAM speed checks, etc) Once I started
  3383. on fixing the bugs, I began to think of lots of things to add to the
  3384. program ...
  3385.  
  3386. Thanks go to Owen Smith for ideas, some tech information & helping test
  3387. out some of the stranger hardware configurations. Thanks also to some
  3388. wonderful beta-testers; Paul Fidler & Holger Klingspohr.
  3389.  
  3390. I would be most interested in talking to Mr Abbott about !SI, but he
  3391. didn't bother to put his address in the original documentation - so I
  3392. have no way of getting in contact with him !
  3393.  
  3394. Note that to run the Dhrystones/Flops20 test you need ;
  3395.   - Version of the SharedCLibrary v3.75 or greater
  3396.   - The disc with !ArmSI in the drive (because it is a separate command)
  3397.  
  3398. Note that to run any FP computations you need ;
  3399.   - Some version of the FPEmulator loaded
  3400.  
  3401. If you load some old SI file into !ArmSI, then many of the fields in
  3402. the main window will not be available because that information wasn't
  3403. saved by !SI. Also, if you load some SI/ArmSI file from another 
  3404. machine, then remember to use 'Re-calculate' before playing around
  3405. with any improvements. Versions later than 3.43 have an Acorn-allocated
  3406. filetype of &3f2, and so to load old (&003) files, you have to drag
  3407. the files to a loaded copy of !ArmSI.
  3408.  
  3409. Some example SI files are including for your interest - ranging from
  3410. the lowest 1MB A310 (5900 Dhrystones) all the way up to my 'turbo'
  3411. A5000 (over 25000 Dhrystones 8-) ... Note my A5000 can run at 16.6MHz
  3412. RAM (*big* speed increase) by using a 4MB upgrade card of 60ns DRAM
  3413. from SimTec electronics.
  3414.  
  3415. Users of old !SI may notice that the option to turn DRAM refresh on
  3416. or off has gone. In fact turning off DRAM is extremely dangerous -
  3417. and on some types of system/RAM chips can completely corrupt your
  3418. memory. So I decided to take the safe path, and remove all the code
  3419. which turns DRAM refresh on or off - keep it set to the RISC OS
  3420. default - you know it makes sense !
  3421.  
  3422. *** Known bugs
  3423.  
  3424. If you can help me track these down (or even give me reproducable
  3425. circumstances) then I would be most grateful.
  3426.  
  3427.   - Sometimes the FPEmulator doesn't like being RMFaster'd, although
  3428.     I cannot duplicate the problem on my machine.
  3429.   - Sometimes stupid FP results are given - again I can't reproduce
  3430.     the problem ... So if you see an EXP of 0.72 and a SIN of 11.12
  3431.     then it is probably messed up !
  3432.  
  3433. *** Contacts
  3434.  
  3435. Please send me any bugreports, comments, ideas for new features, etc.
  3436. I can be contacted at the following address, at least until Jul '94 ;
  3437.  
  3438. Nick Smith
  3439. Churchill College
  3440. Cambridge
  3441. CB3 0DS                 nas20@cus.cam.ac.uk (JANET/Internet email)
  3442.  
  3443. *** Distribution
  3444.  
  3445. This software is 'Public Domain'. You may copy and distribute it
  3446. without restriction - include it on magazine discs, with commercial
  3447. products (eg, ARM3/FPA upgrades), etc, etc. If you do include it with
  3448. commercial hardware, I'd really like to know about it too.
  3449.  
  3450. *** Revision history
  3451.  
  3452. Modifications to v3.20H (05-Nov-92)
  3453.   - Removed all line number references in BASIC code (first job in any
  3454.     BASIC hack!)
  3455.   - Made iconbar menu appear in correct place!
  3456.   - Misc mods to templates
  3457.   - Did new code to read RAM speed - old stuff was rubbish I think (at
  3458.     least it never returned anything useful for >8MHz memory)
  3459.   - Possibly removed RO2.xx compatibility - oh well 8-)
  3460.   - Changed ROM speed reading code based on speed of memory speed (ie, 
  3461.     memory system clock)
  3462.  
  3463. Modifications to v3.21H (07-Nov-92)
  3464.   - Restructured application - moved Templates & Code to a 'Resources'
  3465.     directory.
  3466.   - Added 'Dhrystone' benchmark to application - uses standard Dhrystone
  3467.     version 2.1 (May 25, 1988) with no optimisations
  3468.     Full source is included, as is a Makefile for recompilation with
  3469.     different settings
  3470.   - Generally did lots of code tidying & documentation
  3471.   - Re-did main 'System Information' window, renumbering icons as I went
  3472.     to tidy up redraw (argh - icons should be numbered from 0 at top -> )
  3473.   - Added 'Available ROM' (shows 5th column ROM info too)
  3474.   - Added display of ROM speed (2,3,4 ticks, or Page mode access)
  3475.   - Added 'IOEB chip set information'
  3476.   - Added FPA coprocessor recognition
  3477.   - Added 'Additional details:' section ;
  3478.         RISC OS version
  3479.         Video screen mode, resolution, colours & refresh rate
  3480.         Unique machine ID reading
  3481.         Floating point identification (Old FPE, New FPE, FPPC, FPA chip)
  3482.         Dhrystone results (microseconds/loop, dhrystones/sec)
  3483.   - Did all this silly documentation (!)
  3484.   - Now wasn't all this more useful than going to a 'Use of the IBM 3084
  3485.     mainframe' lecture ?? 8-)
  3486.  
  3487. Modifications to v3.22H (08-Nov-92)
  3488.   - Generally wrote the support code for all the above features which
  3489.     didn't get done yesterday ...
  3490.   - Integrated the Dhrystone index into the application (or at least it
  3491.     gets run by the main application)
  3492.   - Added recognition of FPPC (Old Acorn FP card)
  3493.   - Renumbered some more icons to fix icon delete/recreate problems
  3494.   - Added snazzy 'machine identification' code which guesses your
  3495.     machine type
  3496.   - Recalibrated ARM instruction indexes based on 1.000 being an old
  3497.     1MB A310 (MEMC1, 8MHz ARM2), rather than the previous 'perfect' ARM2
  3498.     whatever that might have been !
  3499.  
  3500. Modifications to v3.23H (09-Nov-92)
  3501.   - Fixed so that prompts for disc with Dhrystone command to be 
  3502.     inserted (*before* video DMA turned off!)
  3503.   - Reduced no. of Dhrystone loops so not so slow on ARM2
  3504.   - Recalibrates old SI files when loaded so that 1.00 = 310, 8MHz ARM2
  3505.   - Removed all the 'MOVNV R0,R0' instructions in app, now MOV R0, R0
  3506.   - Added ARM250 processor recognition (for A3010/3020/4000/etc)
  3507.   - Reads MEMC type from zero page in SVC mode (in case users/OS have
  3508.     zero page protected)
  3509.   - Open main window on a load operation of SI file
  3510.   - Improved error messages & error handling (what sort of idiot defines
  3511.     an error block of 64 bytes ?? sigh)
  3512.   - Closes menu on saving via key press/mouse click
  3513.   - Extended window widths to allow for the higher speeds that I am
  3514.     getting ... Almost certainly not enough for the FPA when it arrives!
  3515.  
  3516. Modifications to v3.24H (10-Nov-92)
  3517.   - Renamed to !ArmSI because I felt it was a more identifiable name,
  3518.     and it also distinguishes the program from the original !SI app.
  3519.   - Identifies ARM2as/ARM61 processors (cannot tell the difference)
  3520.   - Identifies ARM600/610 or ARM600 processors
  3521.   - Changed ROM speed terminology - should be 'n-cycles'
  3522.   - Sent out to a few people for a little bit of testing ...
  3523.   - New Sprites, and a !Sprites22 file.
  3524.   - Now identifies A500 (A310 protoype), with a VIDC1 chip
  3525.  
  3526. Modifications to v3.25H (11-Nov-92)
  3527.   - Improved !Sprites22, but they still aren't very good !
  3528.   - Added some more improvements ;
  3529.         *RMFaster BASIC on/off
  3530.         *RMFaster FPEmulator on/off
  3531.         ARM3 cache on/off
  3532.     Yes - you can *RMFaster BASIC in the middle of a BASIC program
  3533.     (well I was impressed!) Note that the FPEmulator can only be
  3534.     RMFaster'd if you have it in ROM (RO3.xx owners)
  3535.   - Made sure that all zero page reads are done from SVC mode
  3536.   - Because of the new facilities, 3.25 cannot read the SI files
  3537.     created with 3.20->3.24 (although it can read 1.xx, 2.xx and
  3538.     pre 3.20), because it seemed too much effort - there hasn't
  3539.     been a public release yet, and there is a new file format every
  3540.     day !
  3541.   - ADJUST-click on icon bar open FP info window
  3542.  
  3543. Modifications to v3.26H (13-Nov-92)
  3544.   - Now shouldn't moan on startup if you have no FPEmulator module
  3545.     present.
  3546.   - Strange problem with DRAM refresh changing at random points -
  3547.     think it fixed now. Probably due to Mr.Abbott's enthusiastic
  3548.     use of real variables when he should have been using integers!
  3549.   - A500 test had to be changed. Looks like the OS frigs the RTC
  3550.     calls 8-( So now uses the keyboard ID, instead of the RTC
  3551.     precision.
  3552.   - Memory bandwidth/Video bandwidth/etc calculations should now
  3553.     be more accurate. The memory bandwidth is based on 1 n-cycle +
  3554.     3 s-cycle RAM access, and so will actually give lower results
  3555.     than previous versions.
  3556.     The video/dram refresh calculations now take into account the
  3557.     refresh rate of the screen (!) and also use the better memory
  3558.     bandwidth value.
  3559.   - Slightly more accurate video refresh code, but it looks like I
  3560.     am underestimating both refresh rate & video bandwidth values
  3561.     slightly ...
  3562.   - Far too much debugging to get the code to work on a 1MB, RO2,
  3563.     MEMC1, ARM2 A310 8-(
  3564.  
  3565. Modifications to v3.27H (16-Nov-92)
  3566.   - Now reads total RAM size sensibly (uses OS_ReadMemMapInfo)
  3567.     to correctly identify >4MB
  3568.   - Moved all the Bxx% variables (for bar icon nos) into an array
  3569.   - Lots of code documentation, tidying up & LOCAL variables ...
  3570.     If you think the code is messy now, you should have seen 3.12 !
  3571.   - Now echoes unrecognized key presses with Wimp_ProcessKey
  3572.   - Paged mode access ROMs option is always greyed out under OS3
  3573.  
  3574. Modifications to v3.30H (18-Nov-92)
  3575.   - Better ARM610 identification (processor type=&61)
  3576.   - Complete removal of DRAM refresh code (serious side effects can
  3577.     occur) Still reports the DRAM refresh status, but doesn't let
  3578.     you change it.
  3579.   - Replaced the DRAM refresh menu option with one for Video DMA,
  3580.     so that during tests you can either have the video DMA turned off
  3581.     or on. Old versions always turned off Video/Sound DMA for max
  3582.     speed ratings !
  3583.   - RAM size now displays page size, and number of pages. (eg, ARM600
  3584.     has 4K pages, while old MEMC1/1a machines will have 8, 16 or
  3585.     32K pages)
  3586.   - Final beta-release before the public release.
  3587.  
  3588. Modifications to v3.31H (21-Nov-92) [release]
  3589.   - Some final small changes for the first public release (wow!) ;
  3590.   - ID's PCATS graphics enhancer card
  3591.   - Clicks to open windows opens them at top of window stack
  3592.   - Compiled a nice collection of SI files from different machines
  3593.   - Fixed 5th Column ROM reading code (thanks to Owen making me my
  3594.     own custom 5th column ROM!)
  3595.   - Increased the number of Dhrystone loops performed from 50,000
  3596.     to 75,000 - my A5000 at top speed goes too fast for 50,000 to
  3597.     have accurate results !! 8-)
  3598.   - Public release #1 to Newcastle info-server & comp.binaries.acorn
  3599.  
  3600. Modifications to v3.32H (05-Jul-93)
  3601.   - Fixed bug to do with recognizing FPA chip software support
  3602.   - New 3D version of templates (you need to set the 3D-bit of CMOS
  3603.     RAM to switch this on).
  3604.   - Changed "RMFaster BASIC" etc string to "RAM-loaded BASIC" to
  3605.     make more sense to the user
  3606.  
  3607. Modifications to v3.33H (06-Jul-93) [release]
  3608.   - Some new examples files (A540 with FPA chip)
  3609.   - New FP-index/FLOP calculations biased towards common operations
  3610.     I am still unhappy with the FP indexing code, but it will do for
  3611.     now
  3612.   - Sent filetype request to Acorn Customer Support
  3613.  
  3614. Modifications to v3.40H (27-Jul-93)
  3615.   - Removed 'BASIC' & 'Machine code' indexes; they were useless
  3616.   - Added excellent 'flops20' FP-benchmarking code
  3617.     Source code & docs provided
  3618.     Outputs to new section in FP window, and new bars on system
  3619.     index window
  3620.   - Deleted ARM calculation sources from distribution to save space
  3621.   
  3622. Modifications to v3.42H (11-Aug-93)
  3623.   - Cleaned up Flops code, integrated correctly into application
  3624.   - needs testing/recalibration on a base level ARM2/RISCOS2 machine
  3625.     before release
  3626.   - With an FPEmulator module > 4.00 (FPA chip support code) we
  3627.     don't allow RMFaster or RMReinit because it crashes the machine
  3628.  
  3629. Modifications to v3.43H (16-Aug-93)
  3630.   - Fix to menu width
  3631.   - Fix to flops20 code so that it takes about 30secs to run,
  3632.     independent of hardware
  3633.   - Switched to double precision IEEE tests for flops20 instead of
  3634.     single precision
  3635.  
  3636. Modifications to v3.44H (24-Aug-93)
  3637.   - Recalibrated to ARM2/MEMC1/RISCOS2 machine
  3638.   - ReBuilt collection of example files (thanks Owen!)
  3639.   - Got filetype allocation from Acorn Customer Services (&3f2) !
  3640.   - Changed sprites to make change of filetype number more visible
  3641.   - Removed the ability to load old format ArmSI files unless they
  3642.     are dragged directly to appliction (even then, limited to
  3643.     v3.31 and 3.33 - the most widely distributed public releases)
  3644.   - Added ability to load ArmSI file by double-clicking on saved file
  3645.     without having to preload application (reads command line)
  3646.  
  3647. Modifications to v3.45H (26-Aug-93) [release]
  3648.   - Fixed a bug in FPE version no. reading code
  3649.   - Added example FPA ArmSI files
  3650.   - Fixed a bug in FP display bars being >32768 OS units long (!)
  3651.  
  3652. Modifications to v3.46H (07-Sep-93) [release]
  3653.   - Added DragASprite support code for saveas dbox
  3654.  
  3655. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  3656. ô > !RunImage$ô ArmSI - Speed Index appliction!ô Versions <= 3.12 by J.Abbot(Aô Hacked about (postfix H) by Nick Smith, nas20@cus.cam.ac.uk2<î Ŷ òerror(fl,ö$):òpoll:àFPLÞ block% 1024,window% 10*1024,icon_block% 512,error_blk% 512,block1% 512Z?Þ indirected% 10*1024,menu_indirected% 512,menu_block% 1024d0Þ ib_block% 64, tpcode% 1024, C%(35), B%(20)nÞ ptr1% 256, ptr2% 256xŵapp_name$="ArmSI"…#full_app_name$="ARM benchmarks"„$app_version$="3.46H (07-Sep-93)" ªòInitialise´command$=¤commandtail¾ç command$="" …È  òcalcsiÒÌÜ%  òloadsi(command$,our_filetype%)æÍð òupdateicon(2,¤machineguess)ú    òpollà:"    ô ***,ô *** Wimp routines6    ô ***@:Jô Main polling routineT Ý òpoll^ê poll_mask%, reason%hpoll_mask% = %000110001rquit% = £|õŷ2  È− "Wimp_Poll", poll_mask%, block% ¸ reason%‘  È‰ reason% ÊŒ    É 1    :òredraw¤-    É 2    :È− "Wimp_OpenWindow",, block%®.    É 3    :È− "Wimp_CloseWindow",, block%¸    É 6    :òbutton    É 7    :òdrag_boxÌ    É 8    :òkey_pressedÖ    É 9    :òmenu_selectà    É 17,18:òreceiveê  Ëôý (quit%=¹)þÈ− "Wimp_CloseDown"àá:&Ý òredraw0ê L%:'È− "Wimp_RedrawWindow",,block% ¸ L%D    È” L%N)  È− "Wimp_GetRectangle",,block% ¸ L%XÎbál:vô Open Main SI window€Ý òopensi⇩!block% = sysinfo%“%È− "Wimp_GetWindowState",, block%fiblock%!28=-1¨!È− "Wimp_OpenWindow",, block%²á¼:Æ(ô Open Floating-Point results windowÐÝ òopenfiÚ!block% = fpuinfo%ä%È− "Wimp_GetWindowState",, block%îblock%!28=-1ø!È− "Wimp_OpenWindow",, block%á :Ý òreceive ê type%, w%*w%=block%!204type%=block%!40>ȉ block%!16 ÊH  É 0:quit%=¹R      É 2\+    ç my_ref%>0 € (my_ref%=block%!12) …f>      ç type%=our_filetype% … òsavesi(¤getname(block%+44))p        Íz      É 3☓&    full_file$=¤getname(block%+44)‰Q    ç (w%=-2 ☓ w%=sysinfo% ☓ w%=fpuinfo%) € (type%=our_filetype% ☓ type%=3) …—#      òloadsi(full_file$,type%)¢        Í¬      É 5¶    ç type%=our_filetype% …À(      full_file$=¤getname(block%+44)Ê      block%!12=block%!8Ô-      È− "XWimp_SendMessage",17,block%,w%Þ#      òloadsi(full_file$,type%)è        Íò  Ëüá:Ý òsave(A$,B%)È− "Wimp_CreateMenu",,-1$)È− "Wimp_GetPointerInfo",,icon_block%.ȉ icon_block%!12 Ê8"  É sysinfo%,proginfo%,savesi%B  L'    block1%!0=(((45+©(A$)) Ŵ4)+1)*4V    block1%!12=0`    block1%!16=1j!    block1%!20=icon_block%!12t!    block1%!24=icon_block%!16~     block1%!28=icon_block%!0⇦     block1%!32=icon_block%!4‹    block1%!36=-1†    block1%!40=B%¦.    $(block1%+44)=A$:?(block1%+44+©(A$))=0°W    È− "Wimp_SendMessage",17,block1%,icon_block%!12,icon_block%!16 ¸ ,,task_handle%º    my_ref%=block1%!8ÄËÎáØ:âÝ òbuttonìê X%,Y%,button_type%ö@ç block%!16=-1 € block%!12<>sysinfo% € block%!12<>fpuinfo% áX%=block%!0:Y%=block%!4
  3657. button_type%=0(ç (block%!8 € %101)>0 button_type%=3ç block%!8=4 button_type%=0(ç block%!8=2 button_type%=12ç block%!8=1 button_type%=4< ç block%!8=64 button_type%=3Fȉ block%!12 ÊP
  3658.   É -2Z1    ç button_type%=1 menu%=0:òmenu(X%,400,"")d     ç button_type%=0 òopensin"    ç button_type%=4 … òopenfix  É sysinfo%ŵ9    ç button_type%<2 È− "Wimp_SetCaretPosition",-1,-1…*    ç button_type%=1 € block%!16<>36 …„+      È− "Wimp_GetPointerInfo",,block1% /      menu%=0:òmenu(block1%!0,block1%!4,"")ª        Í´  É fpuinfo%¾    ç button_type%=1 …È+      È− "Wimp_GetPointerInfo",,block1%Ò/      menu%=0:òmenu(block1%!0,block1%!4,"")Ü        Íæ  É savesi%ðZ    ç block%!16=2 € button_type%=0 € block%!12=savesi% òsavesi(¤R_String(savesi%,1)):áú(    ç block%!16=0 € button_type%=3 …+      ç block%!12=savesi% drag_icon%=-1'      È− "OS_Byte",161,&1C ¸ ,,bit%1      ç ((bit% € 2) = 2) € (OurOSver%>=300) …"9        ô RISC OS 3.00 or later & DragASprite bit set,        block%!0=block%!126        block%!4=block%!16@*        È− "Wimp_GetIconState",,block%JG        icon_block%!0=block%!0:È− "Wimp_GetWindowInfo",,icon_block%T        X%=icon_block%!4^        Y%=icon_block%!16h         block%!8=block%!8+X%r"        block%!16=block%!16+X%|"        block%!12=block%!12+Y%ŷ"        block%!20=block%!20+Y%‘E        È− "DragASprite_Start",197,1,"file_3f2",block%+8,block%+8Œ        dragging%=¹¤       Ì®        block%!0=block%!12¸        block%!4=block%!16Â*        È− "Wimp_GetIconState",,block%ÌG        icon_block%!0=block%!0:È− "Wimp_GetWindowInfo",,icon_block%Ö        X%=icon_block%!4à        Y%=icon_block%!16ê        block%!4=5ô         block%!8=block%!8+X%þ"        block%!16=block%!16+X%"        block%!12=block%!12+Y%"        block%!20=block%!20+Y%        block%!24=0&        block%!28=00(        block%!32=XPixels%<<XFactor%:        block%!36=YPixels%D%        È− "Wimp_DragBox",,block%N        dragging%=£X       Íb        ÍlËvá€:⇩Ý òmenu_select“ê I%fi)È− "Wimp_GetPointerInfo",,icon_block%¨I%=-(icon_block%!8 € 1)²ȉ menu% Ê¼      É 0Æ    È‰ block%!0 ÊР     É 1:òopensiÚ      É 2:òopenfiä      É 3:òcalcsiî      É 4ø        È‰ block%!4 Ê          ô ROM speed 5          É 0:HighROMSpeed=1:òUpdateMEMC(&C0,&C0)5          É 1:HighROMSpeed=2:òUpdateMEMC(&80,&C0) 5          É 2:HighROMSpeed=3:òUpdateMEMC(&40,&C0)*5          É 3:HighROMSpeed=4:òUpdateMEMC(&00,&C0)4(          É 4:VideoDMA%=¬(VideoDMA%)>          É 5:H.            ver%=¤modversion("FPEmulator")R            ç ver%<400 …\#              ç ¬(FasterFPE%) …f>                È− "XWimp_StartTask","RMFaster FPEmulator"p                 FasterFPE%=¹z              Ì☓Z                È− "XWimp_StartTask","Obey <ArmSI$Dir>.Resources.OldModule FPEmulator"‰                 FasterFPE%=£—              Í¢            Í¬          É 6:¶             ç Processor%=3 …À              Ö readregÊ'              ç (!regword% € 1)=1 …Ô3                !regword%=!regword% € %11111110Þ                Ö writeregè                CacheON%=£ò              Ìü,                !regword%=!regword% ☓ %1                    Ö writereg                    CacheON%=¹                  Í    $            Í    .        Ë    8      É 5    B        È‰ block%!4 Ê    L<          É 0:ç calcFLOPS% … calcFLOPS%=£ ⇧ calcFLOPS%=¹    V6          É 1:ç calcFPU% … calcFPU%=£ ⇧ calcFPU%=¹    `9          É 2:ç calcDHRY% … calcDHRY%=£ ⇧ calcDHRY%=¹    j        Ë    t      É 7:quit%=¹    ~        Ë    ⇦%    ç I% menu%=0:òmenu(X%,360,"")    ‹Ë    †á    ¦:    °Ý òkey_pressed    º6ç block%!24<>&D … È− "Wimp_ProcessKey",block%!24:á    Äȉ block%!0 Ê    Î  É savesi%    Ø    ç block%!4>0 …    â'      òsavesi(¤R_String(savesi%,1))    ì        Ì    ö(      È− "Wimp_ProcessKey",block%!24
  3659.         Í
  3660.  
  3661. 1  É sysinfo%:È− "Wimp_SetCaretPosition",-1,-1
  3662. '   È− "Wimp_ProcessKey", block%!24
  3663. Ë
  3664. (á
  3665. 2:
  3666. <Ý òdrag_box
  3667. F5ç dragging%=¹ … È− "DragASprite_Stop":dragging%=£
  3668. PFç drag_icon%=-1 … òsave(¤leaf(¤R_String(savesi%,1)),our_filetype%)
  3669. Zá
  3670. d:
  3671. n    ô ***
  3672. x@ô *** Calculation/Display routines (the 'real' bits of code)
  3673. ŵ    ô ***
  3674. …:
  3675. „Ý òcalcsi
  3676.  Gê temp$, ver%, J%, temp%, flags%, paddr%, pr12%, pbuf%, E%, E1%, A%
  3677. ªê Z%, V%, size%, chunk%
  3678. ´
  3679. ¾ç calcDHRY%=¹ …
  3680. È(  ver%=¤modversion("SharedCLibrary")
  3681. Òt  ç ver%<375 … òerror(0, "You require version 3.75 or above of the SharedCLibrary to run the Dhrystones test"):á
  3682. Ü.  J%=‰("<ArmSI$Dir>.Resources.Dhrystones")
  3683. æ
  3684.   Ù#J%
  3685. ðÍ
  3686. ú ç calcFLOPS%=¹ … (  ver%=¤modversion("SharedCLibrary") q  ç ver%<375 … òerror(0, "You require version 3.75 or above of the SharedCLibrary to run the Flops20 test"):á "$  ver%=¤modversion("FPEmulator") ,m  ç ver%<250 … òerror(0, "You require version 2.50 or above of the FPEmulator to run the Flops20 test"):á 6+  J%=‰("<ArmSI$Dir>.Resources.Flops20") @
  3687.   Ù#J% JÍ T ^ô ** Operating system bits hFOSver%=OurOSver% : ô Read at Wimp_Initialise (unlikely to change!) r<OSstr$=¤osver   : ô Cunning (!) routine to get OS string | mode%=ë ŷ4È− "OS_ReadModeVariable",mode%,7 ¸ ,,ScreenSize% ‘ Œô ** Chip Set information ¤IOCType%=1 ®VIDCType%=1 ¸ Âç OSver%<300 … Ì  IOEBType%=0 Ö  PeriphType%=0 à  LCDType%=0 ê  UniqueIDa%=0 ô  UniqueIDb%=0 þÌ R  È− "OS_ReadSysInfo",2 ¸ IOEBType%,PeriphType%,LCDType%,UniqueIDa%,UniqueIDb% )  ç (OSver%>=301) € (PeriphType%=1) … %    È− "OS_ReadSysInfo",3 ¸ temp% &$    È‰ ((temp% >> 20) € %1111) Ê 0      É 1:PeriphType%=1 :      É 2:PeriphType%=2 D        N        PerhipType=-1 X        Ë b  Í lÍ v €Dô ** Call main code, setting up illegal instruction handler code ⇩@È− "OS_ChangeEnvironment",1,retcd1,0,0 ¸ ,paddr%,pr12%,pbuf% “Ö assm_main fi*È− "OS_ChangeEnvironment",1,retcd2,0,0 ¨ ²FPstr$="Unknown" ¼temp%=(!fputype% >>> 24) Æȉ temp% Ê Р     É 0 Ú    FPAType%=0 ä"    FPstr$="Old FPEmulator, v" î)    ver=¤modversion("FPEmulator")/100 ø    FPstr$+=Ã(ver)      É 1     FPAType%=0"    FPstr$="New FPEmulator, v" )    ver=¤modversion("FPEmulator")/100*    FPstr$+=Ã(ver)4C  É &80:FPAType%=1:FPstr$="FP Protocol Convertor card (WE2206)">7  É &81:FPAType%=2:FPstr$="ARM FP Accelerator chip"H    FPAType%=-1:FasterFPE%=£RË\f3ç calcFPU% € (FPstr$="Unknown" ☓ FPAType%=-1) …pP  òerror(0, "You require a version of the FPEmulator to run the FP tests"):ázÍ☓‰Processor%=!tpres%—ProcessorType%=!protype%¢MEMCType%=!memctype%¬ç !tpres%=3 …¶'  temp%=(ProcessorType% >> 8) € 255À  È‰ temp% ÊÊ    É 3:Processor%=3Ô     É 6ÞO      ç ((ProcessorType% >> 4) € 255)=&61 … Processor%=610 ⇧ Processor%=600è    É 7:Processor%=700ò    É 8:Processor%=800ü       Processor%=3  ËÍ$Kô Can't have an 'ARM250' id and no IOEB chip, so either ARM61 or ARM2as.4ç (!tpres%=250) € (IOEBType%<=0) … Processor%=618B'TimeTaken1=1<<27 :TimeTaken1L=1<<27L(TimeTaken1a=1<<27:TimeTaken1aL=1<<27V'TimeTaken2=1<<27 :TimeTaken2L=1<<27`'TimeTaken3=1<<27 :TimeTaken3L=1<<27j'TimeTaken4=1<<27 :TimeTaken4L=1<<27t~#È− "OS_ReadPalette",0,16 ¸ ,,C%⇦Fô ** Disable Video & Sound DMA (turn DRAM refresh on continuously)‹ç VideoDMA%=£ …†  ï 19,0,0|¦  oldmemc%=¤ReadMEMC°'  È„:òUpdateMEMC(%0011<<8,%1111<<8)ºÌÄ  È− "Hourglass_On"ÎÍØâÖ readclockìã A%=1 ¸ 4öÖ calcARM:Ö calcARML1ç !ARMcount1<TimeTaken1 TimeTaken1=!ARMcount1
  3688. 5ç !ARMcount1a<TimeTaken1a TimeTaken1a=!ARMcount1a1ç !ARMcount2<TimeTaken2 TimeTaken2=!ARMcount21ç !ARMcount3<TimeTaken3 TimeTaken3=!ARMcount3(1ç !ARMcount4<TimeTaken4 TimeTaken4=!ARMcount425ç !ARMcount1L<TimeTaken1L TimeTaken1L=!ARMcount1L<9ç !ARMcount1aL<TimeTaken1aL TimeTaken1aL=!ARMcount1aLF5ç !ARMcount2L<TimeTaken2L TimeTaken2L=!ARMcount2LP5ç !ARMcount3L<TimeTaken3L TimeTaken3L=!ARMcount3LZ5ç !ARMcount4L<TimeTaken4L TimeTaken4L=!ARMcount4Ldínx OneClockTick=(1/100)/!timer0ŵ…ô ** RAM/ROM Speeds„/RAMSpeed=10E8/((&FFFF € (!ramspeed%))*1000) JMemoryBandwidth=(1/(RAMSpeed*10E-10))*3.2 : ô one N-cycle + 3 S-cyclesªMEMCState%=¤ReadMEMC´ȉ (MEMCState%>>6) € %11 Ê¾  É %00:HighROMSpeed=4È  É %01:HighROMSpeed=3Ò  É %10:HighROMSpeed=2Ü  É %11:HighROMSpeed=1æËðȉ (MEMCState%>>4) € %11 Êú  É %00:LowROMSpeed=4  É %01:LowROMSpeed=3  É %10:LowROMSpeed=2  É %11:LowROMSpeed=1"Ë,6&DRAMRefresh%=(MEMCState%>>8) € %11@ȉ DRAMRefresh% ÊJ  É %00:DRAMBandwidth=0T?  É %01:DRAMBandwidth=(((1/4E-6)/50)*4)*100/MemoryBandwidth^  É %10:DRAMBandwidth=0h:  É %11:DRAMBandwidth=((1/4E-6)*4)*100/MemoryBandwidthrË|ŷE%=£:E1%=£‘Œô ** Calculate FP stuff¤!FPUtimer=!timer0®?Z%=0:È” FPUresults!(Z%*12)<>-1:FPUresults!(Z%*12)=0:Z%+=1:θç calcFPU% € ¤fpufound …  ã A%=1 ¸ 5Ì    Ö calcFPUÖ  íàÌê!  ç calcFPU% E1%=¹:calcFPU%=£ôÍþ2È− "OS_ChangeEnvironment",1,paddr%,pr12%,pbuf%,ô ** i,s & n-cycles (for *base* machine)i=125:s=125:n=250&0DHRYmsec=0:DHRYvalue=0DNFLOPSiter=0XFLOPSnull=0b FLOPS1=0l FLOPS2=0v FLOPS3=0€ FLOPS4=0⇩“ ô ** Video refresh rate, etcfi/È− "OS_ReadModeVariable",-1,11 ¸ ,,x%:x%+=1¨/È− "OS_ReadModeVariable",-1,12 ¸ ,,y%:y%+=1²?È− "OS_ReadModeVariable",-1,3 ¸ ,,bpp%:ç bpp%=63 … bpp%=255¼bpp%+=1:bpp%=«(bpp%)/«(2)Æ4Ñ=0:È„:ã l%=1 ¸ 20:È„:È„:È„:È„:í:hz%=(80/’)*1000Ð+È− "OS_ReadModeVariable",-1,7 ¸ ,,size%Ú#band%=(size%*(hz%/10))/104857.6ä‘VIDEOstr$="Mode "+Ã(mode%)+" ("+Ãx%+"x"+Ãy%+", "+Ãbpp%+" bpp, "+Ã(hz% Ŵ 10)+"."+Ã(hz% ◰ 10)+" Hz, "+Ã(band% Ŵ 10)+"."+Ã(band% ◰ 10)+" Mb/S)"îø4ô Recalc DRAMBandwidth using screen refresh rateȉ DRAMRefresh% Ê   É %00:DRAMBandwidth=0E  É %01:DRAMBandwidth=(((1/4E-6)/(hz%/10))*4)*100/MemoryBandwidth   É %10:DRAMBandwidth=0*:  É %11:DRAMBandwidth=((1/4E-6)*4)*100/MemoryBandwidth4Ë>Hô ** Dhrystone calcRç calcDHRY% …\  ÿ "UnSet ArmSI$Dhrystone"f>  È− "XWimp_StartTask", "<ArmSI$Dir>.Resources.Dhrystones"pK  È− "XOS_ReadVarVal","ArmSI$Dhrystone",ptr1%,32+(1<<31),0,0 ¸ ,,exist%z  ç exist%=0 …☓    DHRYmsec=-1‰    DHRYvalue=-1—  Ì¢9    È− "OS_ReadVarVal","ArmSI$Dhrystone",ptr1%,32,0,0¬    temp$=¤getname(ptr1%)¶    DHRYmsec=»(temp$)À!    temp$=Átemp$,§temp$," "))Ê    DHRYvalue=»(temp$)Ô  ÍÞÍèòô ** Flops20 calcüç calcFLOPS% …  ÿ "UnSet ArmSI$Flops";  È− "XWimp_StartTask", "<ArmSI$Dir>.Resources.Flops20"G  È− "XOS_ReadVarVal","ArmSI$Flops",ptr1%,96+(1<<31),0,0 ¸ ,,exist%$  ç exist%=0 ….    FLOPSiter=-18    FLOPSnull=-1B    FLOPS1=-1L    FLOPS2=-1V    FLOPS3=-1`    FLOPS4=-1j  Ìt5    È− "OS_ReadVarVal","ArmSI$Flops",ptr1%,96,0,0~    temp$=¤getname(ptr1%)⇦    FLOPSiter=»(temp$)‹!    temp$=Átemp$,§temp$," "))†    FLOPSnull=»(temp$)¦6    È− "OS_ReadVarVal","ArmSI$Flops1",ptr1%,16,0,0°!    FLOPS1=»(¤getname(ptr1%))º6    È− "OS_ReadVarVal","ArmSI$Flops2",ptr1%,16,0,0Ä!    FLOPS2=»(¤getname(ptr1%))Î6    È− "OS_ReadVarVal","ArmSI$Flops3",ptr1%,16,0,0Ø!    FLOPS3=»(¤getname(ptr1%))â6    È− "OS_ReadVarVal","ArmSI$Flops4",ptr1%,16,0,0ì!    FLOPS4=»(¤getname(ptr1%))ö  ÍÍ
  3689. %ô ** Turn back on Video/sound DMAç VideoDMA%=£ …(  È„2$  òUpdateMEMC(oldmemc%,%1111<<8)<A  ï19,0,C% € &FF,(C%>>8 € &FF),(C%>>16 € &FF),(C%>>24 € &FF);FÌP  È− "Hourglass_Off"ZÍdn,InstructionTime1=(s*Instructions)*10E-10x4InstructionTime1a=((s+16*i)*Instructions)*10E-10ŵ:InstructionTime2=((s+n+i+2*n)*(Instructions/2))*10E-10…@InstructionTime3=((7*s+n+i+s*6+2*n)*(Instructions/2))*10E-10„2InstructionTime4=((2*s+n)*Instructions)*10E-10 3InstructionTime1L=((4*s+n)*Instructions)*10E-10ª9InstructionTime1aL=((4*s+n+16*i)*Instructions)*10E-10´;InstructionTime2L=((4*s+4*n+i)*(Instructions/2))*10E-10¾<InstructionTime3L=((16*s+4*n+i)*(Instructions/2))*10E-10È5InstructionTime4L=((5*s+2*n)*Instructions)*10E-10ÒÜ0TimeTaken1=(!timer0-TimeTaken1)*OneClockTickæ2TimeTaken1a=(!timer0-TimeTaken1a)*OneClockTickð0TimeTaken2=(!timer0-TimeTaken2)*OneClockTickú0TimeTaken3=(!timer0-TimeTaken3)*OneClockTick0TimeTaken4=(!timer0-TimeTaken4)*OneClockTick2TimeTaken1L=(!timer0-TimeTaken1L)*OneClockTick4TimeTaken1aL=(!timer0-TimeTaken1aL)*OneClockTick"2TimeTaken2L=(!timer0-TimeTaken2L)*OneClockTick,2TimeTaken3L=(!timer0-TimeTaken3L)*OneClockTick62TimeTaken4L=(!timer0-TimeTaken4L)*OneClockTick@J0MIPS1=¨((Instructions/TimeTaken1)/10000)/100T2MIPS1a=¨((Instructions/TimeTaken1a)/10000)/100^0MIPS2=¨((Instructions/TimeTaken2)/10000)/100h0MIPS3=¨((Instructions/TimeTaken3)/10000)/100r0MIPS4=¨((Instructions/TimeTaken4)/10000)/100|ŷ1Index1=¨(InstructionTime1/TimeTaken1*100)/100‘4Index1a=¨(InstructionTime1a/TimeTaken1a*100)/100Œ1Index2=¨(InstructionTime2/TimeTaken2*100)/100¤1Index3=¨(InstructionTime3/TimeTaken3*100)/100®1Index4=¨(InstructionTime4/TimeTaken4*100)/100¸4Index1L=¨(InstructionTime1L/TimeTaken1L*100)/100Â7Index1aL=¨(InstructionTime1aL/TimeTaken1aL*100)/100Ì4Index2L=¨(InstructionTime2L/TimeTaken2L*100)/100Ö4Index3L=¨(InstructionTime3L/TimeTaken3L*100)/100à4Index4L=¨(InstructionTime4L/TimeTaken4L*100)/100êô*MIPS1L=¨(MIPS1/Index1*Index1L*100)/100þ.MIPS1aL=¨(MIPS1a/Index1a*Index1aL*100)/100*MIPS2L=¨(MIPS2/Index2*Index2L*100)/100*MIPS3L=¨(MIPS3/Index3*Index3L*100)/100*MIPS4L=¨(MIPS4/Index4*Index4L*100)/100&0:Index1=Index1/.75       : ô Re-calibrate to 300 series:Index1a=Index1a/.49DIndex2=Index2/.81NIndex3=Index3/.77XIndex4=Index4/.83bIndex1L=Index1L/.80lIndex1aL=Index1aL/.53vIndex2L=Index2L/.81€Index3L=Index3L/.78⇩Index4L=Index4L/.84“fiȉ Processor% Ê¨²      É 1¼L    Index1a=0:Index1aL=0:MIPS1a=0:MIPS1aL=0:TimeTaken1a=0:TimeTaken1aL=0Æ[    Z=(MIPS1*686+MIPS2*290+MIPS3*9+MIPS4*15+MIPS1L*686+MIPS2L*290+MIPS3L*9+MIPS4L*15)/2Ð#    TotalMIPS=¨(Z/1000*100)/100Úf    TotalIndex=¨((Index1+.49+Index2+Index3+Index4+Index1L+.53+Index2L+Index3L+Index4L)/10*100)/100äîøh  Z=(MIPS1*685+MIPS1a+MIPS2*290+MIPS3*9+MIPS4*15+MIPS1L*685+MIPS1aL+MIPS2L*290+MIPS3L*9+MIPS4L*15)/2 !  TotalMIPS=¨(Z/1000*100)/100m  TotalIndex=¨((Index1+Index1a+Index2+Index3+Index4+Index1L+Index1aL+Index2L+Index3L+Index4L)/10*100)/100 Ë*4DHRYIndex=0>-ç calcDHRY% DHRYIndex=DHRYvalue/4960.2999HFLOPSIndex=0R)ç calcFLOPS% FLOPSIndex=FLOPS3/0.0182\fô ** RAM/ROM SizespJÈ− "OS_ReadMemMapInfo" ¸ A%,B%:RAMSize%=(A%*B%) Ŵ 1024:RAMPageSize%=A%zç OSver%<300 …☓"  ô No extension ROMs possible‰2  ROMsize%=512*1024:ROMsize5th%=0:ROMnum5th%=0—Ì¢4  È− "XPodule_ReturnNumber" ¸ ,ROMnum5th%;flags%¬  ç (flags% € 1)=1 …¶G    ô Can't read number of extension ROMs, so mark as 'Unknown', -1À6    ROMsize%=2048*1024:ROMsize5th%=0:ROMnum5th%=-1Ê  ÌÔ    ROMsize%=2048*1024Þ    ROMsize5th%=0è    ç ROMnum5th%>0 …ò+      ã loop%=-2 ¸ -(ROMnum5th%+1) ⇦ -1ü        chunk%=0        õW          È− "XPodule_EnumerateChunksWithInfo",chunk%,,,loop% ¸ chunk%,size%;flags%          V%=flags% € 1$9          ç (chunk%<>0) € (V%=0) … ROMsize5th%+=size%.!        ý (chunk%=0) ☓ (V%=1)8       íB        ÍL  ÍVÍ`j>ScreenBandwidth=(ScreenSize%*(hz%/10))*100/MemoryBandwidtht8ProcessorBandwidth=100-ScreenBandwidth-DRAMBandwidth~ȉ Processor% Ê⇦.  É 2:ô ARM2 takes all remaining bandwidth‹7  É 3:ç ProcessorBandwidth>14 ProcessorBandwidth=14†         Ö readreg¦<         ç (!regword% € 1) = 1 … CacheON%=¹ ⇧ CacheON%=£°ËºÄ1È− "XOS_Module",18,"FPEmulator",,0 ¸ ,,,temp%Î3ç temp%<&03800000 … FasterFPE%=¹ ⇧ FasterFPE%=£Øç temp%<=0 … FasterFPE%=£âì)ô ** A500 ID (looks at keyboard type)ö(È− "OS_InstallKeyHandler",1 ¸ keyid%ç keyid%=0 …
  3690. ?  ô Looks like we've found ourselves a genuine A500 folks !  VIDCType%=3Í(2Eô *** Test for PCATS enhancer card (SWI Enhancer_HardwarePresent)<È− &62A4D ¸ ;flags%F'ç (flags% € 1) = 0 … VIDCType%+=128PZòdisplaysidán:x Ý ¤osverŵê Ŷ…î Ŷ ê:=ö$„È− "OS_Byte",0,0 ="Unknown"ª:´Bô A fun little routine that makes a fair guess of machine type¾4ô Please correct/improve and return to me! Nick.ÈFô Possible improvments - distinguish machines based on sizes/typesÒFô of HD. eg, A4x0/1 series had built in ST506 controller, A540 hasÜ8ô a SCSI podule as standard, etc. Hack, hack, hack !æ:ðÝ ¤machineguessú ê name$?ç VIDCType%=3 … name$="A500 prototype, "+ÀOSstr$,12):=name$ȉ Processor% Ê"&  É 1:name$="Unknown ARM1 machine",
  3691.   É 2:6    È‰ MEMCType% Ê@      É 0J        È‰ RAMSize% ÊT)          É 512:name$="Original A305"^*          É 1024:name$="Original A310"h.          É 2048:name$="Expanded A305/310"r*          É 4096:name$="Original A440"|2           name$="Unknown ARM2+MEMC1 machine"ŷ        Ë‘      É 1Œ        È‰ RAMSize% Ê¤1          É 512:name$="Expanded A305, MEMC1a"®5          É 1024:name$="Original A410/1 or A3000"¸,          É 2048:name$="Original A420/1"Â,          É 4096:name$="Original A440/1"Ì+           name$="Unknown ARM2+MEMC1a"Ö        Ëà(       name$="Unknown ARM2 machine"ê        Ëôþ
  3692.   É 3:    È‰ IOEBType% Ê      É 0        ç RAMSpeed<120 …&          È‰ RAMSize% Ê,            É 4096:name$="Original A540":1            É 8192:name$="Expanded A540, 8MB"D3            É 12288:name$="Expanded A540, 12MB"N3            É 16384:name$="Expanded A540, 16MB"X9               name$="Unknown fast-RAM ARM3 machine"b          Ël        Ìv          È‰ RAMSize% Ê€1            É 512:name$="Expanded A305, ARM3"⇩4            É 1024:name$="Expanded A410/1, ARM3"“4            É 2048:name$="Expanded A420/1, ARM3"fi4            É 4096:name$="Expanded A440/1, ARM3"¨3            É 8192:name$="Expanded A440/1, 8MB"²0               name$="Unknown ARM3 machine"¼          ËÆ        ÍР     É 1Ú        È‰ RAMSize% Êä          É 2048î            È‰ LCDType% Êø,              É 0:name$="Original A5000"2              É 1:name$="Original A4 portable" 9               name$="Unknown 2MB ARM3+IOEB machine"            Ë           É 4096*            È‰ LCDType% Ê4(              É 0:name$="A5000, 4MB">7              É 1:name$="Expanded A4 portable, 4MB"H9               name$="Unknown 4MB ARM3+IOEB machine"R            Ë\0          É 8192:name$="Expanded A5000, 8MB"f1           name$="Unknown ARM3+IOEB machine"p        Ëz(       name$="Unknown IOEB machine"☓        Ë‰—   É 250:¢    È‰ RAMSize% Ê¬'      É 1024:name$="Original A3010"¶-      É 2048:name$="Original A3020/A4000"À6      É 4096:name$="Expanded A3010/3020/4000, 4MB"Ê*       name$="Unknown ARM250 machine"Ô        ËÞè   name$="Machine Unknown"òËü=name$+", "+ÀOSstr$,12):Ý òdisplaysi
  3693. ê temp$È− "Hourglass_On".8block1%!0=sysinfo%B%È− "Wimp_GetWindowState",,block1%LSH%=block1%!28VWO%=(block1%!32>>16) € %1`"È− "Wimp_CloseWindow",,block1%jblock1%!0=fpuinfo%t%È− "Wimp_GetWindowState",,block1%~FH%=block1%!28⇦WO%+=(block1%!32>>15) € %10‹"È− "Wimp_CloseWindow",,block1%†¦ô ** RAM/ROM Sizes°ç RAMPageSize%<=0 …º%  òupdateicon(4,Ã(RAMSize%)+" K")ÄÌÎi  òupdateicon(4,Ã(RAMSize%)+" K ("+Ã(RAMPageSize% Ŵ 1024)+"K x "+Ã(RAMSize%/(RAMPageSize%/1024))+")")ØÍâç ROMsize%<=0 …ì  òupdateicon(6,"Unknown")öÌ  È‰ ROMnum5th% Ê
  3694. G    É -1:òupdateicon(6,Ã(¨(ROMsize%/1024))+" K (? extension ROMs)")3    É 0:òupdateicon(6,Ã(¨(ROMsize%/1024))+" K")        (t      òupdateicon(6,Ã(¨(ROMsize%/1024))+" K (+"+Ã(¨(ROMsize5th%/1024))+"K in "+Ã(ROMnum5th%)+" extension ROMs)")2  Ë<ÍFPô ** RAM/ROM SpeedsZç ¨(RAMSpeed)=125 …d  È‰ ¨(HighROMSpeed) Ên0    É 1:òupdateicon(8,"125 nS (Paged mode)")x0    É 2:òupdateicon(8,"200 nS (2 n-cycles)")ŵ0    É 3:òupdateicon(8,"325 nS (3 n-cycles)")…0    É 4:òupdateicon(8,"450 nS (4 n-cycles)")„  Ë   È‰ ¨(LowROMSpeed) Êª0    É 1:òupdateicon(1,"125 nS (Paged mode)")´0    É 2:òupdateicon(1,"200 nS (2 n-cycles)")¾0    É 3:òupdateicon(1,"325 nS (3 n-cycles)")È0    É 4:òupdateicon(1,"450 nS (4 n-cycles)")Ò  ËÜÌæ+  ç HighROMSpeed-¨(HighROMSpeed)>=0.1 …ð\    òupdateicon(8,Ã(¨(HighROMSpeed*RAMSpeed))+" nS ("+Ã(¨(HighROMSpeed)+1)+" n-cycles)")ú  ÌW    òupdateicon(8,Ã(¨(HighROMSpeed*RAMSpeed))+" nS ("+Ã(HighROMSpeed)+" n-cycles)")  Í)  ç LowROMSpeed-¨(LowROMSpeed)>=0.1 …"Z    òupdateicon(1,Ã(¨(LowROMSpeed*RAMSpeed))+" nS ("+Ã(¨(LowROMSpeed)+1)+" n-cycles)"),  Ì6U    òupdateicon(1,Ã(¨(LowROMSpeed*RAMSpeed))+" nS ("+Ã(LowROMSpeed)+" n-cycles)")@  ÍJÍT^%temp=(¨((1/RAMSpeed)*100000))/100h:òupdateicon(12,Ã(¨(RAMSpeed))+" nS ("+Ã(temp)+" MHz)")r|ȉ DRAMRefresh% Êŷ"  É %00:òupdateicon(14,"None")‘7  É %01:òupdateicon(14,"During Video Flyback only")Œ"  É %10:òupdateicon(14,"None")¤(  É %11:òupdateicon(14,"Continuous")®Ë¸Â6òupdateicon(17,Ã(¨(MemoryBandwidth))+" bytes/sec")Ì2òupdateicon(21,¤strpad(ScreenBandwidth,4)+"%")Ö+B%(1)=¤bar(B%(1),10.28*ScreenBandwidth)à0òupdateicon(24,¤strpad(DRAMBandwidth,4)+"%")ê)B%(2)=¤bar(B%(2),10.28*DRAMBandwidth)ô5òupdateicon(27,¤strpad(ProcessorBandwidth,4)+"%")þ.B%(3)=¤bar(B%(3),10.28*ProcessorBandwidth) Wòupdateicon(30,¤strpad(100-ScreenBandwidth-DRAMBandwidth-ProcessorBandwidth,4)+"%") RB%(4)=¤bar(B%(4),10.28*(100-ScreenBandwidth-DRAMBandwidth-ProcessorBandwidth)) 0òupdateicon(34,¤strpad(TotalMIPS,2)+" MIPS") &)òupdateicon(37,¤strpad(TotalIndex,2)) 0$B%(5)=¤bar(B%(5),154*TotalIndex) : D%òupdateicon(42,¤strpad(Index1,2)) N+B%(6)=¤maxbar(B%(6),154*Index1,154*6.8) XMç Processor%=1 òupdateicon(45,"N/A") ⇧ òupdateicon(45,¤strpad(Index1a,2)) b,B%(7)=¤maxbar(B%(7),154*Index1a,154*6.8) l%òupdateicon(48,¤strpad(Index2,2)) v+B%(8)=¤maxbar(B%(8),154*Index2,154*6.8) €%òupdateicon(51,¤strpad(Index3,2)) ⇩+B%(9)=¤maxbar(B%(9),154*Index3,154*6.8) “%òupdateicon(54,¤strpad(Index4,2)) fi-B%(14)=¤maxbar(B%(14),154*Index4,154*6.8) ¨&òupdateicon(58,¤strpad(Index1L,2)) ².B%(15)=¤maxbar(B%(15),154*Index1L,154*6.8) ¼Nç Processor%=1 òupdateicon(61,"N/A") ⇧ òupdateicon(61,¤strpad(Index1aL,2)) Æ/B%(16)=¤maxbar(B%(16),154*Index1aL,154*6.8) Ð&òupdateicon(64,¤strpad(Index2L,2)) Ú.B%(17)=¤maxbar(B%(17),154*Index2L,154*6.8) ä&òupdateicon(67,¤strpad(Index3L,2)) î.B%(18)=¤maxbar(B%(18),154*Index3L,154*6.8) ø&òupdateicon(70,¤strpad(Index4L,2))!.B%(19)=¤maxbar(B%(19),154*Index4L,154*6.8)! )òupdateicon(28,¤strpad(TotalIndex,3))!3B%(10)=¤maxbar(B%(10),154*(TotalIndex),154*6.8)! Z=TotalIndex:D%=1!*!4%ç (calcFLOPS%) € (FLOPSiter>-1) …!>  ô Z+=FLOPSIndex:D%+=1!HD  òupdateicon(55,¤strpad(FLOPSIndex/0.741,3))  : ô ReCalibration!R$  òupdateicon2(127,Ã(FLOPSiter))!\,  òupdateicon2(128,¤strpad(FLOPSnull,4))!f)  òupdateicon2(129,¤strpad(FLOPS1,4))!p)  òupdateicon2(130,¤strpad(FLOPS2,4))!z)  òupdateicon2(131,¤strpad(FLOPS3,4))!☓)  òupdateicon2(132,¤strpad(FLOPS4,4))!‰R  B%(12)=¤maxbar(B%(12),154*(FLOPSIndex/0.741),154*6.8)      : ô ReCalibration!—Ì!¢  òupdateicon2(127,"N/A")!¬  òupdateicon2(128,"N/A")!¶  òupdateicon2(129,"N/A")!À  òupdateicon2(130,"N/A")!Ê  òupdateicon2(131,"N/A")!Ô  òupdateicon2(132,"N/A")!Þ$  òupdateicon(55,"Not computed")!è  B%(12)=¤bar(B%(12),0)!òÍ!ü"ç calcDHRY% …"  ç DHRYmsec=-1 …"&    òupdateicon(65,"Not computed")"$    B%(20)=¤bar(B%(20),0)".  Ì"8     Z+=DHRYIndex/0.909:D%+=1"B=    òupdateicon(65,¤strpad(DHRYIndex/0.909,3))  : ô ReCal"L@    B%(20)=¤bar(B%(20),154*(DHRYIndex/0.909))      : ô ReCal"V  Í"`Ì"j$  òupdateicon(65,"Not computed")"t  B%(20)=¤bar(B%(20),0)"~Í"⇦"‹#òupdateicon(31,¤strpad(Z/D%,3))"†"B%(13)=¤bar(B%(13),154*(Z/D%))"¦"°ô ** Chip set"ºȉ MEMCType% Ê"Ä,  É 0:òupdateicon(74,"MEMC1 - VL86C110")"Î-  É 1:òupdateicon(74,"MEMC1a - VL86C110")"Ø"â  òupdateicon(74,"Unknown")"ìË"ö#ȉ IOCType% Ê#
  3695. +  É 1:òupdateicon(76,"IOC1 - VL86C410")#   É 2:òupdateicon(76,"IOC2")##(  òupdateicon(76,"Unknown")#2Ë#<#Fòupdateicon(78,"Unknown")#P#Zȉ VIDCType% Ê#d-  É 1:òupdateicon(80,"VIDC1a - VL86C310")#n5  É 2:òupdateicon(80,"VIDC1a plus VIDC Enhancer")#x!  É 3:òupdateicon(80,"VIDC1")#ŵ#  É 20:òupdateicon(80,"VIDC20")#…F  É 129:òupdateicon(80,"VIDC1a - VL86C310 (+PCATS Graphics card)")#„:  É 131:òupdateicon(80,"VIDC1 (+PCATS Graphics card)")# #ª  òupdateicon(80,"Unknown")#´Ë#¾#Èȉ Processor% Ê#Ò   É 1:òupdateicon(82,"ARM1")#Ü+  É 2:òupdateicon(82,"ARM2 - VL86C010")#æ      É 3#ð&    È‰ (ProcessorType%>>8) € &FF Ê#ú      É &03:A$="- VL86C020"$       $        A$="- VL86C0??"$        Ë$",    A$+=" rev. "+Ã(ProcessorType% € &FF)$,"    òupdateicon(82,"ARM3 "+A$)$6)  É 61:òupdateicon(82,"ARM2as/ARM61")$@7  É 250:òupdateicon(82,"ARM250 (ARM2as macrocell)")$J   É 600$T&    È‰ (ProcessorType%>>8) € &FF Ê$^      É &06:A$="- VL86C0??"$h       $r        A$="- VL86C0??"$|        Ë$ŷ,    A$+=" rev. "+Ã(ProcessorType% € &0F)$‘$    òupdateicon(82,"ARM600 "+A$)$Œ   É 610$¤&    È‰ (ProcessorType%>>8) € &FF Ê$®      É &06:A$="- VL86C0??"$¸       $        A$="- VL86C0??"$Ì        Ë$Ö,    A$+=" rev. "+Ã(ProcessorType% € &0F)$à$    òupdateicon(82,"ARM610 "+A$)$ê   É 700$ô&    È‰ (ProcessorType%>>8) € &FF Ê$þ      É &07:A$="- VL86C0??"%       %        A$="- VL86C0??"%        Ë%&,    A$+=" rev. "+Ã(ProcessorType% € &FF)%0$    òupdateicon(82,"ARM700 "+A$)%:   É 800%D&    È‰ (ProcessorType%>>8) € &FF Ê%N      É &08:A$="- VL86C0??"%X       %b        A$="- VL86C0??"%l        Ë%v,    A$+=" rev. "+Ã(ProcessorType% € &FF)%€$    òupdateicon(82,"ARM800 "+A$)%⇩  %“!    òupdateicon(82,"Unknown")%fiË%¨%²ȉ IOEBType% Ê%¼$  É -1:òupdateicon(78,"Unknown")%Æ'  É 0:òupdateicon(78,"Not present")%Ð%Ú2  òupdateicon(78,"IOEB type "+Ã(¨(IOEBType%)))%äË%î%øȉ FPAType% Ê&$  É -1:òupdateicon(84,"Unknown")& &  É 0:òupdateicon(84,"Not fitted")&?  É 1:òupdateicon(84,"FP Protocol Convertor card (WE2206)")& 3  É 2:òupdateicon(84,"ARM FP Accelerator chip")&*&4  òupdateicon(84,"Unknown")&>Ë&H&Rȉ PeriphType% Ê&\$  É -1:òupdateicon(68,"Unknown")&f&  É 0:òupdateicon(68,"Not fitted")&p"  É 1:òupdateicon(68,"82C710")&z"  É 2:òupdateicon(68,"82C711")&☓&‰  òupdateicon(68,"Unknown")&—Ë&¢&¬ȉ LCDType% Ê&¶$  É -1:òupdateicon(39,"Unknown")&À&  É 0:òupdateicon(39,"Not fitted")&Ê&Ô0  òupdateicon(39,"LCD type "+Ã(¨(LCDType%)))&ÞË&è&òô ** OS info&üòupdateicon(87,OSstr$)'òupdateicon(89,VIDEOstr$)'ȉ UniqueIDa% Ê'$  É -1:òupdateicon(91,"Unknown")'$)  É 0:òupdateicon(91,"Not available")'.  '8O    òupdateicon(91,"&"+¤dec_to_hex(UniqueIDa%)+" "+¤dec_to_hex(UniqueIDb%))'BË'Lòupdateicon(93,FPstr$)'Vç DHRYmsec<=0 …'`$  òupdateicon(95,"Not computed")'j$  òupdateicon(96,"Not computed")'tÌ'~,  òupdateicon(95,Ã(DHRYmsec)+" µS/loop")'⇦2  òupdateicon(96,Ã(DHRYvalue)+" dhrystones/S")'‹Í'†ç threeD% …'¦H  òupdateicon(99," Speed indexes (conducted in Mode "+Ã(mode%)+") ")'°Ì'º  òupdateicon(99,Ã(mode%))'ÄÍ'Î'ØLô ** FP info ***********************************************************'â'ìFPUtime=0:FPUins=0'öFPUindex=0(A%=0(
  3696. È” FPUresults!(12*A%)<>-1(  index=¤getfp(A%)(  ç FPUresults!(12*A%)>0 …((,    òupdateicon2(47+A%,¤strpad(index,2))(25    C%(A%+1)=¤maxbar2(C%(A%+1),154*index,154*8.4)(<    FPUindex+=index(F-    FPUtime+=!FPUtimer-FPUresults!(12*A%)(P  Ì(Z!    òupdateicon2(47+A%,"N/A")(d"    C%(A%+1)=¤bar2(C%(A%+1),0)(n  Í(x$  FPUins+=FPUresults!(12*A%+4)*2(ŵ   A%+=1(…Î(„( !ô Compute weighted FP results(ª    ÷ +10(´
  3697. suma=0(¾ó B%:A%=1(Èõ(Ò  suma+=¤getfp(B%)(Ü
  3698.   ó B%(æ  ç B%<>-1 … A%+=1(ð ý B%=-1(úsuma=(suma/A%) * 0.70)
  3699. sumb=0)ó B%:A%=1)õ)"  sumb+=¤getfp(B%)),
  3700.   ó B%)6  ç B%<>-1 … A%+=1)@ ý B%=-1)Jsumb=(sumb/A%) * 0.15)T
  3701. sumc=0)^ó B%:A%=1)hõ)r  sumc+=¤getfp(B%))|
  3702.   ó B%)ŷ  ç B%<>-1 … A%+=1)‘ ý B%=-1)Œsumc=(sumc/A%) * 0.10)¤
  3703. sumd=0)®ó B%:A%=1)¸õ)  sumd+=¤getfp(B%))Ì
  3704.   ó B%)Ö  ç B%<>-1 … A%+=1)à ý B%=-1)êsumd=(sumd/A%) * 0.05)ô)þ/ç FPUindex>0 … FPUindex=suma+sumb+sumc+sumd*ç FPUindex>0 …*/  òupdateicon2(46,¤strpad(FPUindex+.005,2))*.  òupdateicon(46,¤strpad(FPUindex+.005,3))*&Ì*0  òupdateicon2(46,"N/A")*:$  òupdateicon(46,"Not computed")*DÍ*N.C%(0)=¤maxbar2(C%(0),154*FPUindex,154*8.4)*X<B%(11)=¤maxbar(B%(11),154*FPUindex,154*6.8) : ô ########*b*l%ô Calculate weighted FLOPS rating*vç FPUindex>0 …*€4  òupdateicon2(45,Ã(¨(FPUindex*22500))+" FLOPS")*⇩Ì*“'  òupdateicon2(45,"Not calculated")*fiÍ*¨*²Hô *******************************************************************¼*Æ"ç (WO% € %1) € SH%<>fpuinfo% …*Ð:  block1%!0=sysinfo%:È− "Wimp_GetWindowState",,block1%*Ú2  block1%!28=SH%:È− "Wimp_OpenWindow",,block1%*äÍ*îç WO% € %10 …*ø:  block1%!0=fpuinfo%:È− "Wimp_GetWindowState",,block1%+2  block1%!28=FH%:È− "Wimp_OpenWindow",,block1%+ Í+!ç (WO% € %1) € SH%=fpuinfo% …+ :  block1%!0=sysinfo%:È− "Wimp_GetWindowState",,block1%+*2  block1%!28=SH%:È− "Wimp_OpenWindow",,block1%+4Í+>+HÈ− "Hourglass_Off"+R\ç E% òerror(0,"Unable to compute FLOPS/FPU/Dhrystone indexes without DRAM refresh"):E%=£+\Hç E1% òerror(0,"No Floating Point Unit/Emulator/Chip present"):E1%=£+fá+p:+zÝ ¤getfp(index%)+☓T=¨(((FPUresults!(12*index%+8)/(!FPUtimer-FPUresults!(12*index%)))+0.0001)*50)/50+‰:+—;ô Biases on FP benchmarking - note: poor first attempt!+¢KÜ 19,21,22,-1                                         : REM 60% ADD/SUB+¬KÜ 20,23,24,28,-1                                      : REM 20% MUL/DIV+¶SÜ 5,6,9,10,11,12,13,14,15,16,17,18,25,32,33,34,35,-1  : REM 5%  SQT/LOG/SIN ...+ÀOÜ 1,2,3,4,7,8,26,27,30,31,-1                          : REM 5%  POL/RND ...+Ê:+Ô    ô ***+Þô *** Load/Save code+è    ô ***+ò:+üô Save off ArmSI file,Ý òsavesi(file_name$),ê name$, F%, Z%,ê Ŷ,$=î Ŷ ê:òerror(0, "Couldn't save file - "+ö$+" "+Ãfi):Ù#F%:á,.#òU_String(savesi%,1,file_name$),8F%=®(file_name$),Bô *** ID String,LÕ#F%,"ArmS";,V"ô *** Version 344 (3.44 * 100),`/Õ#F%,344 ◰ 256:Õ#F%,344 Ŵ 256:Õ#F%,0:Õ#F%,0,j!ô *** Standard BASIC crap ...,tname$=¤R_String(sysinfo%,2),~ñ#F%,name$,⇦2ñ#F%,mode%,ScreenSize%,MEMCState%,OneClockTick,‹@ñ#F%,TimeTaken1,TimeTaken1a,TimeTaken2,TimeTaken3,TimeTaken4,†Eñ#F%,TimeTaken1L,TimeTaken1aL,TimeTaken2L,TimeTaken3L,TimeTaken4L,¦^ñ#F%,InstructionTime1,InstructionTime1a,InstructionTime2,InstructionTime3,InstructionTime4,°cñ#F%,InstructionTime1L,InstructionTime1aL,InstructionTime2L,InstructionTime3L,InstructionTime4L,º'ñ#F%,MIPS1,MIPS1a,MIPS2,MIPS3,MIPS4,Ä,ñ#F%,MIPS1L,MIPS1aL,MIPS2L,MIPS3L,MIPS4L,Î?ñ#F%,Processor%,ProcessorType%,IOCType%,MEMCType%,VIDCType%,Ø@ñ#F%,RAMSize%,HighROMSpeed,LowROMSpeed,RAMSpeed,DRAMRefresh%,âIñ#F%,MemoryBandwidth,ScreenBandwidth,DRAMBandwidth,ProcessorBandwidth,ìñ#F%,TotalMIPS,TotalIndex,ö,ñ#F%,Index1,Index1a,Index2,Index3,Index4-1ñ#F%,Index1L,Index1aL,Index2L,Index3L,Index4L-
  3705. ñ#F%,DRAMCheck%-/ñ#F%,DHRYIndex,DHRYmsec,DHRYvalue,calcDHRY%-4ñ#F%,FPUindex,FPUtime,FPUtime,!FPUtimer,calcFPU%-(Z%=0-2È” FPUresults!(Z%*12)<>-1-<  ñ#F%,FPUresults!(Z%*12)-F   Z%+=1-PÎ-Z/ñ#F%,OSver%,ROMsize%,ROMsize5th%,ROMnum5th%-dñ#F%,OSstr$-nñ#F%,UniqueIDa%,UniqueIDb%-xñ#F%,FPstr$-ŵ0ñ#F%,IOEBType%,FPAType%,PeriphType%,LCDType%-…ñ#F%,VIDEOstr$-„ñ#F%,FasterFPE%,CacheON%- ñ#F%,VideoDMA%,RAMPageSize%-ªNñ#F%,calcFLOPS%,FLOPSIndex,FLOPSiter,FLOPSnull,FLOPS1,FLOPS2,FLOPS3,FLOPS4-´Ù#F%-¾/ÿ "SetType "+file_name$+" "+Ã~our_filetype%-ÈÈ− "Wimp_CreateMenu",-1-Òá-Ü:-æ$Ý òloadsi(file_name$,file_type%)-ðê Z%,F%,version%-úê Ŷ.Nî Ŷ ê:òerror(0, "Couldn't load file '"+file_name$+"' - "+ö$+" "+Ãfi):Ù#F%:á.0ç file_type%=&003 … òloadoldsi(file_name$):á.E%=£:E1%=£."F%=‰(file_name$).,$(ptr1%+12)="ArmS".6È− "OS_GBPB",4,F%,ptr1%,8.@ç ptr1%!12<>ptr1%!0 ….J8  òerror(0, "'"+file_name$+"' is not an ArmSI file").T
  3706.   Ù#F%.^  á.hÍ.rversion%=ptr1%!4.|#òU_String(savesi%,1,file_name$).ŷô *** Version 3.44H.‘ è#F%,A$.Œòupdateicon(2,A$).¤2è#F%,mode%,ScreenSize%,MEMCState%,OneClockTick.®@è#F%,TimeTaken1,TimeTaken1a,TimeTaken2,TimeTaken3,TimeTaken4.¸Eè#F%,TimeTaken1L,TimeTaken1aL,TimeTaken2L,TimeTaken3L,TimeTaken4L.ÂMè#F%,InstructionTime1,InstructionTime1a,InstructionTime2,InstructionTime3.ÌPè#F%,InstructionTime4,InstructionTime1L,InstructionTime1aL,InstructionTime2L.Ö,è#F%,InstructionTime3L,InstructionTime4L.à'è#F%,MIPS1,MIPS1a,MIPS2,MIPS3,MIPS4.ê,è#F%,MIPS1L,MIPS1aL,MIPS2L,MIPS3L,MIPS4L.ô?è#F%,Processor%,ProcessorType%,IOCType%,MEMCType%,VIDCType%.þ@è#F%,RAMSize%,HighROMSpeed,LowROMSpeed,RAMSpeed,DRAMRefresh%/Iè#F%,MemoryBandwidth,ScreenBandwidth,DRAMBandwidth,ProcessorBandwidth/è#F%,TotalMIPS,TotalIndex/,è#F%,Index1,Index1a,Index2,Index3,Index4/&1è#F%,Index1L,Index1aL,Index2L,Index3L,Index4L/0è#F%,DRAMCheck%/:/è#F%,DHRYIndex,DHRYmsec,DHRYvalue,calcDHRY%/D4è#F%,FPUindex,FPUtime,FPUtime,!FPUtimer,calcFPU%/NZ%=0/XÈ” FPUresults!(Z%*12)<>-1/b  è#F%,FPUresults!(Z%*12)/l   Z%+=1/vÎ/€/è#F%,OSver%,ROMsize%,ROMsize5th%,ROMnum5th%/⇩è#F%,OSstr$/“è#F%,UniqueIDa%,UniqueIDb%/fiè#F%,FPstr$/¨0è#F%,IOEBType%,FPAType%,PeriphType%,LCDType%/²è#F%,VIDEOstr$/¼è#F%,FasterFPE%,CacheON%/Æè#F%,VideoDMA%,RAMPageSize%/ÐNè#F%,calcFLOPS%,FLOPSIndex,FLOPSiter,FLOPSnull,FLOPS1,FLOPS2,FLOPS3,FLOPS4/Úòdisplaysi/äÙ#F%/î òopensi/øá0:0 Ý òloadoldsi(file_name$)0ê Z%,F%,V%0 ê Ŷ0*Gî Ŷ ê:òerror(0, "Couldn't load file '"+file_name$+"' - "+ö$):Ù#F%:á04#òU_String(savesi%,1,file_name$)0>Z%=00HÈ” FPUresults!(Z%*12)<>-10R  FPUresults!(Z%*12)=00\   Z%+=10fÎ0pcalcFPU%=£0zE%=£0☓    E1%=£0‰F%=‰(file_name$)0— è#F%,V%0¢ ȉ V% Ê0¬0¶É 10ÀU  ç V%=1 … Ù#F%:òerror(0, "You require version "+ÃV%+".00 to read "+file_name$):á0Ê0Ô    É 2,30ÞV  ç V%<=3 … Ù#F%:òerror(0, "You require version "+ÃV%+".00 to read "+file_name$):á0è0ò0ü  ç V%<327 …1    è#F%,A$1    òupdateicon(2,A$)1#    è#F%,mode%,S,M,OneClockTick1$"    ScreenSize%=S:MEMCState%=M1.D    è#F%,TimeTaken1,TimeTaken1a,TimeTaken2,TimeTaken3,TimeTaken418I    è#F%,TimeTaken1L,TimeTaken1aL,TimeTaken2L,TimeTaken3L,TimeTaken4L1B     è#F%,!MCcount,BASICcount1Lb    è#F%,InstructionTime1,InstructionTime1a,InstructionTime2,InstructionTime3,InstructionTime41Vg    è#F%,InstructionTime1L,InstructionTime1aL,InstructionTime2L,InstructionTime3L,InstructionTime4L1`+    è#F%,MIPS1,MIPS1a,MIPS2,MIPS3,MIPS41j0    è#F%,MIPS1L,MIPS1aL,MIPS2L,MIPS3L,MIPS4L1t#    è#F%,P,ProcessorType%,I,M,V1~6    Processor%=P:IOCType%=I:MEMCType%=M:VIDCType=V1⇦2    è#F%,R,HighROMSpeed,LowROMSpeed,RAMSpeed,D1‹    RAMSize%=R1†M    è#F%,MemoryBandwidth,ScreenBandwidth,DRAMBandwidth,ProcessorBandwidth1¦)    è#F%,TotalMIPS,TotalIndex,MCIndex1°0    è#F%,Index1,Index1a,Index2,Index3,Index41º5    è#F%,Index1L,Index1aL,Index2L,Index3L,Index4L1Ä5    è#F%,BASICIndex,calcMC%,calcBASIC%,DRAMCheck%1Î3    è#F%,DHRYIndex,DHRYmsec,DHRYvalue,calcDHRY%1Ø8    è#F%,FPUindex,FPUtime,FPUtime,!FPUtimer,calcFPU%1â     Z%=01ì!    È” FPUresults!(Z%*12)<>-11ö!      è#F%,FPUresults!(Z%*12)2      Z%+=12
  3707.         Î23    è#F%,OSver%,ROMsize%,ROMsize5th%,ROMnum5th%2    è#F%,OSstr$2("    è#F%,UniqueIDa%,UniqueIDb%22    è#F%,FPstr$2<4    è#F%,IOEBType%,FPAType%,PeriphType%,LCDType%2F    è#F%,VIDEOstr$2P    ç V%<=324 …2Z%      FasterBASIC%=£:FasterFPE%=£2d      CacheON%=£2n        Ì2x/      è#F%,FasterBASIC%,FasterFPE%,CacheON%2ŵ        Í2…#    VideoDMA%=£:RAMPageSize%=-12„    calcFLOPS%=£2 P    FLOPSIndex=0:FLOPSiter=0:FLOPSnull=0:FLOPS1=0:FLOPS2=0:FLOPS3=0:FLOPS4=02ª    òdisplaysi2´  Í2¾  ç V%>326 € V%<=333 …2È    ô Version 3.30H2Ò    è#F%,A$2Ü    òupdateicon(2,A$)2æ6    è#F%,mode%,ScreenSize%,MEMCState%,OneClockTick2ðD    è#F%,TimeTaken1,TimeTaken1a,TimeTaken2,TimeTaken3,TimeTaken42úI    è#F%,TimeTaken1L,TimeTaken1aL,TimeTaken2L,TimeTaken3L,TimeTaken4L3     è#F%,!MCcount,BASICcount3b    è#F%,InstructionTime1,InstructionTime1a,InstructionTime2,InstructionTime3,InstructionTime43g    è#F%,InstructionTime1L,InstructionTime1aL,InstructionTime2L,InstructionTime3L,InstructionTime4L3"+    è#F%,MIPS1,MIPS1a,MIPS2,MIPS3,MIPS43,0    è#F%,MIPS1L,MIPS1aL,MIPS2L,MIPS3L,MIPS4L36C    è#F%,Processor%,ProcessorType%,IOCType%,MEMCType%,VIDCType%3@D    è#F%,RAMSize%,HighROMSpeed,LowROMSpeed,RAMSpeed,DRAMRefresh%3JM    è#F%,MemoryBandwidth,ScreenBandwidth,DRAMBandwidth,ProcessorBandwidth3T)    è#F%,TotalMIPS,TotalIndex,MCIndex3^0    è#F%,Index1,Index1a,Index2,Index3,Index43h5    è#F%,Index1L,Index1aL,Index2L,Index3L,Index4L3r5    è#F%,BASICIndex,calcMC%,calcBASIC%,DRAMCheck%3|3    è#F%,DHRYIndex,DHRYmsec,DHRYvalue,calcDHRY%3ŷ8    è#F%,FPUindex,FPUtime,FPUtime,!FPUtimer,calcFPU%3‘     Z%=03Œ!    È” FPUresults!(Z%*12)<>-13¤!      è#F%,FPUresults!(Z%*12)3®      Z%+=13¸        Î3Â3    è#F%,OSver%,ROMsize%,ROMsize5th%,ROMnum5th%3Ì    è#F%,OSstr$3Ö"    è#F%,UniqueIDa%,UniqueIDb%3à    è#F%,FPstr$3ê4    è#F%,IOEBType%,FPAType%,PeriphType%,LCDType%3ô    è#F%,VIDEOstr$3þ-    è#F%,FasterBASIC%,FasterFPE%,CacheON%4    ç V%>=330 …4%      è#F%,VideoDMA%,RAMPageSize%4        Ì4&%      VideoDMA%=£:RAMPageSize%=-140        Í4:     calcFLOPS%=£4DP    FLOPSIndex=0:FLOPSiter=0:FLOPSnull=0:FLOPS1=0:FLOPS2=0:FLOPS3=0:FLOPS4=04N    òdisplaysi4X  Í4bË4lÙ#F%4v òopensi4€á4⇩:4“    ô ***4fiô *** Shared SI routines4¨    ô ***4²:4¼Ý òmenu(X%,Y%,T$)4Æê pointer%,A%,L%, A$,F%,I%4Ðpointer%=menu_block%4Ú$pointer%=app_name$4ä    ÷ +104îaó pointer%?12,pointer%?13,pointer%?14,pointer%?15,pointer%!16,pointer%!20,pointer%!24,number%4øA%=menu_indirected%5ã L%=1 ¸ number%5   ç L%>1 …5⇦    ó A$,pointer%?12,pointer%?13,pointer%?14,pointer%?15,pointer%!16,pointer%!20,pointer%!24:ç A$="fi$" $pointer%=fi$ ⇧ $pointer%=A$5   Í5*  pointer%+=2854  õ5>)    ó F%,I%,A$:ç (F% € &200)>0 A$+=T$5H    $A%=A$5R    pointer%!0=F% € &FF5\4    ç (F% € &100)=0 pointer%!4=-1 ⇧ ó pointer%!45f!    ç A$="Paged ROM access" …5pP      ô No *way* can we get ROMs this fast - it will just crash the machine!5z4      ç RAMSpeed<100 ☓ OSver%>=300 … I%+=(1<<22)5☓        Í5‰A    ç A$="RAM-loaded FPEmulator" … ç OSver%<300 … I%+=(1<<22)5—    ç A$="ARM3 cache on" …5¢      È‰ ¨(Processor%) Ê5¬        É 3:ô OK5¶         I%+=(1<<22)5À       Ë5Ê        Í5Ô     ç A$="Write buffer on" …5Þ      È‰ ¨(Processor%) Ê5è"        É 600,610,700,800:ô OK5ò         I%+=(1<<22)5ü       Ë6        Í6    pointer%!8=I%6    pointer%!12=A%6$    pointer%!16=-16.    pointer%!20=©A$68     pointer%+=24:A%+=©(A$)+16B  ý (F% € &80)>06Lí6VAÈ− "Wimp_CreateMenu",,menu_block%,X%-(menu_block%!16/2),Y%+166`á6j:6t&ô Menu definition statements (ug!)6~*Ü 7,2,7,0,(13*8+12)<<XFactor%,10*4,0,36⇦$Ü &100,&7000111,"Info",proginfo%6‹Ü 0,&7000111,"System Info"6†Ü 0,&7000111,"FP Info"6¦Ü 0,&7000111,"Re-calculate"6°3Ü &100,&7000111,"Improvements",pointer%+24*7+286º1Ü &100,&7000111,"Speed Indexes",pointer%+24*36Ä"Ü &100,&7000111,"Save",savesi%6ÎÜ &80,&7000111,"Quit"6Ø6â4Ü "S'Indexes",7,2,7,0,(18*8+12)<<XFactor%,10*4,06ì-Ü 0-calcFLOPS%,&7000111,"Flops20 (30sec)"6ö$Ü 0-calcFPU%,&7000111,"FP index"7(Ü &80-calcDHRY%,&7000111,"Dhrystone"7
  3708. 76Ü "Improvement",7,2,7,0,(20*8+16)<<XFactor%,10*4,074Ü 0-(HighROMSpeed=1),&7000111,"Paged ROM access"7(4Ü 0-(HighROMSpeed=2),&7000111,"ROM (2 n-cycles)"724Ü 0-(HighROMSpeed=3),&7000111,"ROM (3 n-cycles)"7<4Ü 0-(HighROMSpeed=4),&7000111,"ROM (4 n-cycles)"7F-Ü 2-(VideoDMA%=0),&7000111,"No Video DMA"7P3Ü 0-FasterFPE%,&7000111,"RAM-loaded FPEmulator"7Z+Ü &80-CacheON%,&7000111,"ARM3 cache on"7d:7nÝ òerror(err%, report$)7x8ç err%<>0 … Ŷ 0,report$+" internal error ("+Ã(fi)+")"7ŵ!error_blk% = err%7…$(error_blk%+4)=report$7„?(error_blk%+4+©report$)=07 :È− "XWimp_ReportError", error_blk%, %1, full_app_name$7ªá7´:7¾"ô Update a main SI window icon7ÈÝ òupdateicon(I%,A$)7Ò!icon_block%=sysinfo%7Üicon_block%!4=I%7æ'È− "Wimp_GetIconState",,icon_block%7ðç icon_block%!24 € 1<<8 …7ú  $(icon_block%!28)=A$8Í8!block%=sysinfo%8block%!4=I%8"block%!8=08,block%!12=086"È− "Wimp_SetIconState",,block%8@á8J:8T*ô Update the bar in the main SI window8^Ý ¤bar(I%,W%)8hç W%=0 W%=28r!icon_block%=sysinfo%8|icon_block%!4=I%8ŷ'È− "Wimp_GetIconState",,icon_block%8‘#icon_block%!16=icon_block%!8+W%8Œicon_block%!4=sysinfo%8¤,È− "Wimp_CreateIcon",,icon_block%+4 ¸ W%8®icon_block%!4=I%8¸icon_block%!8=&11<<248Âicon_block%!12=&FF<<248Ì'È− "Wimp_SetIconState",,icon_block%8Ö!block%=sysinfo%8àblock%!4=I%8ê È− "Wimp_DeleteIcon",,block%8ô!block%=sysinfo%8þblock%!4=W%9block%!8=09block%!12=09"È− "Wimp_SetIconState",,block%9&=W%90:9:8ô Update the bar in the main SI window (with cutoff)9DÝ ¤maxbar(I%,W%,max%)9Nç W%<=0 … W%=29Xç W%>max% … W%=max%9b!icon_block%=sysinfo%9licon_block%!4=I%9v'È− "Wimp_GetIconState",,icon_block%9€#icon_block%!16=icon_block%!8+W%9⇩icon_block%!4=sysinfo%9“,È− "Wimp_CreateIcon",,icon_block%+4 ¸ W%9fiicon_block%!4=I%9¨icon_block%!8=&11<<249²icon_block%!12=&FF<<249¼'È− "Wimp_SetIconState",,icon_block%9Æ!block%=sysinfo%9Ðblock%!4=I%9Ú È− "Wimp_DeleteIcon",,block%9ä!block%=sysinfo%9îblock%!4=W%9øblock%!8=0:block%!12=0: "È− "Wimp_SetIconState",,block%:=W%: ::*"ô Update icon in the FP window:4Ý òupdateicon2(I%,A$):>!icon_block%=fpuinfo%:Hicon_block%!4=I%:R'È− "Wimp_GetIconState",,icon_block%:\ç icon_block%!24 € 1<<8 …:f  $(icon_block%!28)=A$:pÍ:z!block%=fpuinfo%:☓block%!4=I%:‰block%!8=0:—block%!12=0:¢"È− "Wimp_SetIconState",,block%:¬á:¶::À#ô Update a bar in the FP window:ÊÝ ¤bar2(I%,W%):Ôç W%=0 W%=2:Þ!icon_block%=fpuinfo%:èicon_block%!4=I%:ò'È− "Wimp_GetIconState",,icon_block%:ü#icon_block%!16=icon_block%!8+W%;icon_block%!4=fpuinfo%;,È− "Wimp_CreateIcon",,icon_block%+4 ¸ W%;icon_block%!4=I%;$icon_block%!8=&11<<24;.icon_block%!12=&FF<<24;8'È− "Wimp_SetIconState",,icon_block%;B!block%=fpuinfo%;Lblock%!4=I%;V È− "Wimp_DeleteIcon",,block%;`!block%=fpuinfo%;jblock%!4=W%;tblock%!8=0;~block%!12=0;⇦"È− "Wimp_SetIconState",,block%;‹=W%;†:;¦1ô Update a bar in the FP window (with cutoff);°Ý ¤maxbar2(I%,W%,max%);ºç W%=0 W%=2;Äç W%>max% … W%=max%;Î!icon_block%=fpuinfo%;Øicon_block%!4=I%;â'È− "Wimp_GetIconState",,icon_block%;ì#icon_block%!16=icon_block%!8+W%;öicon_block%!4=fpuinfo%<,È− "Wimp_CreateIcon",,icon_block%+4 ¸ W%<
  3709. icon_block%!4=I%<icon_block%!8=&11<<24<icon_block%!12=&FF<<24<('È− "Wimp_SetIconState",,icon_block%<2!block%=fpuinfo%<<block%!4=I%<F È− "Wimp_DeleteIcon",,block%<P!block%=fpuinfo%<Zblock%!4=W%<dblock%!8=0<nblock%!12=0<x"È− "Wimp_SetIconState",,block%<ŵ=W%<…:<„"ô Check for an FPU/FPA present< Ý ¤fpufound<ª*È− "OS_ChangeEnvironment",1,retcd3,0,0<´!nofpu%=0<¾Ö testfpu<È=(!nofpu%=0)<Ò:<ÜÝ òUpdateMEMC(new%,mask%)<æ"È− "XOS_UpdateMEMC",new%,mask%<ðá<ú:=Ý ¤ReadMEMC=
  3710. ê res%="È− "XOS_UpdateMEMC",0,0 ¸ res%="    =res%=,:=6    ô ***=@!ô *** Initialisation routines=J    ô ***=T:=^Ý òInitialise=h#indirected_pointer%=indirected%=rib_block%!0=131=|ib_block%!4=-1=ŷ/È−"OS_ReadVduVariables",ib_block%,ib_block%=‘$block% = "TASK"=ŒHÈ− "Wimp_Initialise",200,!block%,full_app_name$ ¸ OurOSver%,ourtask%=¤-È− "OS_ReadModeVariable",ë,4 ¸ ,,XFactor%=®ò_load_templates=¸ò_icon_bar=Âò_load_assm=Ìò_assm_code=ÖòU_String(savesi%,1,"SI")=àòReset_vars=ê-È− "OS_ReadModeVariable",ë,4 ¸ ,,XFactor%=ô.È− "OS_ReadModeVariable",ë,11 ¸ ,,XPixels%=þYPixels%=(!ib_block%)*4+4>XPixels%+=1>dragging%=£>á>&:>0ô Reset SI variables>:Ý òReset_vars>D ê loop%>N>Xô Display bar icon handles>b    ÷ +10>lã loop%=1 ¸ 20>v  ó B%(loop%)>€ í loop%>⇩ã loop%=0 ¸ 35>“  C%(loop%)=82+loop%>fi í loop%>¨>².our_filetype%=&3F2 : ô Acorn allocated :-)>¼my_ref%=0>ÆDRAMCheck%=£>ÐVideoDMA%=¹>ÚcalcFLOPS%=£>äcalcFPU%=£>î&mode%=0:ScreenSize%=0:MEMCState%=0>øDProcessor%=0:ProcessorType%=0:IOCType%=0:MEMCType%=0:VIDCType%=0?ERAMSize%=0:HighROMSpeed=0:LowROMSpeed=0:RAMSpeed=0:DRAMRefresh%=0? LMemoryBandwidth=0:ScreenBandwidth=0:DRAMBandwidth=0:ProcessorBandwidth=0?&DHRYIndex=0:DHRYmsec=0:DHRYvalue=0? FPUindex=0:FPUtime=0?*2OSver%=0:ROMsize%=0:ROMsize5th%=0:ROMnum5th%=0?4OSstr$=""?>UniqueIDa%=-1:UniqueIDb%=-1?HFPstr$=""?R7IOEBType%=-1:FPAType%=-1:PeriphType%=-1:LCDType%=-1?\VIDEOstr$=""?fFasterFPE%=£?pCacheON%=£?zcalcDHRY%=£?☓RAMPageSize%=-1?‰?—á?¢:?¬ô Display bar icon handles?¶Ü 100,101,102,103,104?ÀÜ 105,106,107,108,115?ÊÜ 116,117,119,109,110?ÔÜ 111,112,113,114,118?Þ:?è#ô Load templates into workspace?òÝ ò_load_templates?ü@ô '3D-look' bit@"È− "OS_Byte",161,140 ¸ ,,byte%@,ç ((byte% € 1) = 1) € (OurOSver%>=300) …@$@  È− "Wimp_OpenTemplate",,"<ArmSI$Dir>.Resources.Template3D"@.  threeD%=¹@8Ì@B?  È− "Wimp_OpenTemplate",,"<ArmSI$Dir>.Resources.Templates"@L  threeD%=£@VÍ@`@jòload_template("fpuInfo")@t/È− "Wimp_CreateWindow",, window% ¸ fpuinfo%@~òload_template("sysInfo")@⇦/È− "Wimp_CreateWindow",, window% ¸ sysinfo%@‹òload_template("progInfo")@†0È− "Wimp_CreateWindow",, window% ¸ proginfo%@¦)òU_String(proginfo%, 4, app_version$)@°òload_template("xfersend")@º.È− "Wimp_CreateWindow",, window% ¸ savesi%@ÄÈ− "Wimp_CloseTemplate"@Îá@Ø:@âÝ òload_template(A$)@ì$block1%=A$@ö}È− "Wimp_LoadTemplate",, window%, indirected_pointer%, indirected%+(1024*8), -1, block1%, 0 ¸ ,,indirected_pointer%,,,,A%A<ç A%=0 Ŷ 0,"Unable to find template definition ("+A$+")"A
  3711. áA:A"ô Place an icon on the iconbarA(Ý ò_icon_barA2ê width%,height%A<>È− "XWimp_SpriteOp",40,1,"!"+app_name$ ¸ ,,,width%,height%AFwidth%=width%<<XFactor%APicon_block%!0=-1AZicon_block%!4=0Adicon_block%!8=0Anicon_block%!12=width%+4Axicon_block%!16=48+height%Aŵ;icon_block%!20=%000000010 ☓ (3<<12) ☓ (7<<24) ☓ (1<<28)A…#$(icon_block%+24)="!"+app_name$A„2È− "Wimp_CreateIcon",,icon_block% ¸ ib_handle%A áAª:A´$ô Load separately assembled codeA¾Ý ò_load_assmAÈ($block%="<ArmSI$Dir>.Resources.Code"AÒ+È− "OS_File",5,block% ¸ ,,,,CodeLength%AÜÞ code CodeLength%+&CAæç (code € &F)<>0 code+=4Aðç (code € &F)<>0 code+=4Aúç (code € &F)<>0 code+=4B"È− "OS_File",&FF,block%,code,0BB)$block%="<ArmSI$Dir>.Resources.Code2"B",È− "OS_File",5,block% ¸ ,,,,CodeLength2%B,Þ code2 CodeLength2%+&CB6ç (code2 € &F)<>0 code2+=4B@ç (code2 € &F)<>0 code2+=4BJç (code2 € &F)<>0 code2+=4BT#È− "OS_File",&FF,block%,code2,0B^BhInstructions=!codeBrreadclock=code+4B|calcARM=code+8BŷcalcARML=code+32B‘timer0=code+16BŒARMcount1=code+20B¤ARMcount1a=code+24B®ARMcount2=code+28B¸ ARMcount3=code+CodeLength%-8BÂ!ARMcount4=code+CodeLength%-12BÌ"ARMcount1L=code+CodeLength%-16BÖ#ARMcount1aL=code+CodeLength%-20Bà"ARMcount2L=code+CodeLength%-24Bê"ARMcount3L=code+CodeLength%-28Bô"ARMcount4L=code+CodeLength%-32BþMCcount=code+CodeLength%-4CcalcFPU=code2CFPUtimer=code2+4CFPUresults=code2+8C&C0áC::CD7ô Some assembler for finding out various things ...CNÝ ò_assm_codeCXê pass%,P%Cbã pass%=0 ¸ 2 ⇦ 2ClP%=tpcode%Cv[OPT pass%C€C⇩.assm_mainC“'        STMFD   R13!, {R0-R12, R14}Cfi4        SWI     "OS_EnterOS"    ; Enter SVC modeC¨        MOV     R0,PCC²#        ☓R     R0,R0,#&0C000000C¼        TEQP    R0,#0CÆ9        MOV     R0,R0           ; Mustn't use MOVNV !CÐCÚ!; Reads from zero page memoryCäCîU        MOV     R0, #&100       ; Read MEMC type (in case of protected zero page)Cø!        LDRB    R1, [R0,#&12]D        €     R1, R1, #1D !        STR     R1, memctype%D3        LDR     R1, [R0,#&10]   ; Read RAMSpeedD !        STR     R1, ramspeed%D*D4; Determine processor typeD>DH        MOV     R1,#0DR        ADR     R2,protype%D\8        MOV     R0,#1           ; if no results ARM1Df2        EQUD    &E0000091       ; MUL R0,R1,R0Dp+        MOV     R0,#2           ; ARM 2Dz4        EQUD    &E1021091       ; SWP R1,R1,[R2]D☓-        MOV     R0,#250         ; ARM 250D‰D—S; To a coprocessor->register transfer instruction. This will read the processorD¢.; id (if available) for ARM3, ARM600, etc.D¬;D¶*; R1 = 32 bit processor identity fieldDÀ7;            bit 31-24 | Designer (41h = Acorn 'A')DÊ:;            bit 23-16 | Manufacturer (56h = vlsi 'V')DÔA;            bit 15-8  | Part type (03h = arm3, 06h = arm6x0)DÞ6;            bit 7-0   | Revision (0 = revision 0)DèDò; ARM6x0 processors ;DüE;            bit 15-4  | Part type (060h = arm600, 061h = arm610)E6;            bit 3-0   | Revision (0 = revision 0)EEE$T        EQUD    &EE101F10       ; MRCEQ CP15,0,R1,C0,C0 - request processor typeE.        MOV     R0,#3E86        STR     R0,tpres%       ; Store type foundEB        STR     R1,protype%EL        MVN     R0, #0EVF        EQUD    &EE300110       ; RFS R0 - Read FP status registerE`        MOV     R0, R0Ej         STR     R0, fputype%Et!        TSTP    PC,#&F0000000E~9        MOV     R0,R0           ; Return to user modeE⇦$        LDMFD   R13!,{R0-R12,PC}E‹E†&; Return-from-exception 'handlers'E¦E°.retcd1 ADDS    PC,R14,#4Eº.retcd2 MOVS    PC,R14EÄ.retcd3 STR     R14,nofpu%EΠ       MOVS    PC,R14EØEâ; Test for FPU presentEìEö .testfpuF?        EQUD    &EE098101       ; MVFE F0,F1 - test for FPUF
  3712.         MOV     PC,R14FF<; Read/write ARM3 status registers (for cache on or off)F(O; Yes, I know there is an SWI to do this, but it may not be the same acrossF2"; different ARM3 upgrades, etcF<FF .readregFP&        STMFD   R13!, {R0-R1, R14}FZ         SWI     "OS_EnterOS"Fd        MOV     R0,PCFn#        ☓R     R0,R0,#&0C000000Fx        TEQP    R0,#0Fŵ9        MOV     R0,R0           ; Mustn't use MOVNV !F…U        EQUD    &EE121F10       ; MRCEQ CP15,0,R1,C2,C0 - request status registerF„         STR     R1, regword%F !        TSTP    PC,#&F0000000Fª9        MOV     R0,R0           ; Return to user modeF´#        LDMFD   R13!,{R0-R1,PC}F¾FÈ.writeregFÒ&        STMFD   R13!, {R0-R1, R14}FÜ         SWI     "OS_EnterOS"Fæ        MOV     R0,PCFð#        ☓R     R0,R0,#&0C000000Fú        TEQP    R0,#0G9        MOV     R0,R0           ; Mustn't use MOVNV !G         LDR     R1, regword%GS        EQUD    &EE021F10       ; MCREQ CP15,0,R1,C2,C0 - write status registerG"         STR     R1, regword%G,!        TSTP    PC,#&F0000000G69        MOV     R0,R0           ; Return to user modeG@#        LDMFD   R13!,{R0-R1,PC}GJGT; Results blockG^Gh.tpres%         EQUD    0Gr.protype%       EQUD    0G|.nofpu%         EQUD    0Gŷ.fputype%       EQUD    0G‘.memctype%      EQUD    0GŒ.ramspeed%      EQUD    0G¤.regword%       EQUD    0G®G¸]G í pass%GÌáGÖ:Gà    ô ***Gê@ô *** Nick's Common BASIC library (or at least bits of ... )Gô    ô ***Gþ:H#Ý òU_String(window%, icon%, s$)Hptr1%!0=window%Hptr1%!4=icon%H&!È− "Wimp_GetIconState",,ptr1%H0$(ptr1%!28)=s$H:ptr2%!0=window%HDptr2%!4=icon%HNptr2%!8=0HXptr2%!12=0Hb!È− "Wimp_SetIconState",,ptr2%HláHv:H€1Ý òU_Icon(window%, icon%, bit%, eor%, clear%)H⇩ptr2%!0=window%H“ptr2%!4=icon%Hfiptr2%!8=(eor%<<bit%)H¨ptr2%!12=(clear%<<bit%)H²!È− "Wimp_SetIconState",,ptr2%H¼áHÆ:HÐ#Ý òU_Sprite(window%, icon%, s$)HÚô Indirected sprite+textHäptr1%!0=window%Hîptr1%!4=icon%Hø!È− "Wimp_GetIconState",,ptr1%I$(ptr1%!32)="S"+s$I ptr2%!0=window%Iptr2%!4=icon%I ptr2%!8=0I*ptr2%!12=0I4!È− "Wimp_SetIconState",,ptr2%I>áIH:IR$Ý òUI_Sprite(window%, icon%, s$)I\ô Indirected spriteIfptr1%!0=window%Ipptr1%!4=icon%Iz!È− "Wimp_GetIconState",,ptr1%I☓$(ptr1%!28)=s$I‰ptr2%!0=window%I—ptr2%!4=icon%I¢ptr2%!8=0I¬ptr2%!12=0I¶!È− "Wimp_SetIconState",,ptr2%IÀáIÊ:IÔÝ ¤getname(p1%)IÞê p$Iè    p$=""IòÈ” ((?p1%>31) ☓ (?p1%=9))Iüp$+=½(?p1%):p1%+=1JÎJ=p$J:J$"Ý ¤R_IconState(window%, icon%)J. ê state%J8ptr1%!0=window%JBptr1%!4=icon%JL!È− "Wimp_GetIconState",,ptr1%JV5ç “((ptr1%!24)>>21) ◰ 2 = 1 … state%=¹ ⇧ state%=£J` =state%Jj:JtÝ ¤leaf(f$)J~È” §f$,".")J⇦  f$=Áf$,§f$,".")+1)J‹ÎJ†=f$J¦:J°Ý ¤hex_to_dec(s$)Jºê s%JÄ&È− "XOS_ReadUnsigned",16,s$ ¸ ,,s%JÎ=s%JØ:JâÝ ¤dec_to_hex(s%)Jì#È− "OS_ConvertHex8",s%,ptr2%,10Jö=¤getname(ptr2%)K:K
  3713. Ý ¤subleaf(f$)K=ô Strips off filename string. ie, returns the path stringKê p$K(È” §f$,".")K2  p$=p$+Àf$,1)K<  f$=Âf$,©(f$)-1)KFÎKP=Àp$,©(p$)-1)KZ:KdÝ ¤R_String(window%, icon%)Knê s$Kxptr1%!0=window%Kŵptr1%!4=icon%K…!È− "Wimp_GetIconState",,ptr1%K„s$=¤getname(ptr1%!28)K =s$Kª:K´'ô Outputs padding (aligned) stringsK¾Ý ¤strpad(A, padding%)KÈê res$, A$KÒç padding%=0 …KÜ  res$=Ã(¨(A))KæÌKð  A$=Ã(A)Kú  ç §A$,".")>0 …L3    res$=ÀA$+Äpadding%,"0"), §A$,".")+padding%)L  ÌL"    res$=A$+"."+Äpadding%,"0")L"  ÍL,ÍL6    =res$L@:LJô Get command tailLTÝ ¤commandtailL^ê A$LhÈ− "OS_GetEnv" ¸ A$Lr%È” (ÀA$,1) <> " ") € (©(A$) <> 0)L|  A$=ÁA$,2)LŷÎL‘È” ÀA$,1)=" "LŒ  A$=ÁA$,2)L¤ÎL®È” ÂA$,1)=" "L¸  A$=ÀA$)LÂÎLÌ/ç (ÀA$,5) = "-QUIT") ☓ (ÀA$,5) = "-quit") …LÖ  A$=ÁA$,7)Là  È” ÀA$,1)<>" " € ©A$<>0Lê    A$=ÁA$,2)Lô  ÎLþ  È” ÀA$,1)=" "M    A$=ÁA$,2)M  ÎMÍM&=A$M0:M:ô Return 0 on errorMDÝ ¤modversion(name$)MNê version%,l%,temp$,flags%MX.È− "XOS_Module",18,name$ ¸ ,,,temp%;flags%Mbç (flags% € 1)=1 … =0Mll%=(!(temp%+&14)+temp%)MvÈ” ?l%<>9:l%+=1:ÎM€È” ?l%=9:l%+=1:ÎM⇩temp$=À¤getname(l%),4)M“version%=»(temp$)*100Mfi=version%ÿ\advance\leftmargin\ÿ   8ðÿ7u☓    
  3714.  ` PROGRAMMERI p$€ÐD`T€ ‘6ÐÀ# pRÀ
  3715. h/@ — Ü€°€NickFlops20DÿÿÿNflâ¿ØTechieDÿÿÿuEj»ÀToDoDÿÿÿ|¨¦Õ­Toggle3DDûÿÿ…5−´×ToggleDRAGDûÿÿ¯Î©ÕÝFlops20DÿÿÿNflâ¿ØTechieDÿÿÿuEj»ÀToDoDÿÿÿ|¨¦Õ­Toggle3DDûÿÿ…5−´×ToggleDRAGDûÿÿ¯Î©ÕÝBitsBitsNická
  3716.    I have finally revised the flops.c program to version 2.0 which
  3717.    addresses the concerns brought out over the last year or so (version
  3718.    1.2c and earliar versions). Below is a discussion of the new flops.c
  3719.    program (flops20.c) and some results for the HP 9000/730 and IBM
  3720.    RS/6000 Model 550 systems.
  3721.  
  3722.    Flops.c is a 'c' program which attempts to estimate your systems
  3723.    floating-point 'MFLOPS' rating for the FADD, FSUB, FMUL, and FDIV
  3724.    operations based on specific 'instruction mixes' (discussed below).
  3725.    The program provides an estimate of PEAK MFLOPS performance by making
  3726.    maximal use of register variables with minimal interaction with main
  3727.    memory. The execution loops are all small so that they will fit in
  3728.    any cache. Flops.c can be used along with Linpack and the Livermore
  3729.    kernels (which exercise memory much more extensively) to gain further
  3730.    insight into the limits of system performance. The flops.c execution
  3731.    modules include various percent weightings of FDIV's (from 0% to 25%
  3732.    FDIV's) so that the range of performance can be obtained when using
  3733.    FDIV's. FDIV's, being computationally more intensive than FADD's or
  3734.    FMUL's, can impact performance considerably on some systems.
  3735.    
  3736.    Flops.c consists of 8 independent 'modules' which, except for module
  3737.    2, conduct numerical integration of various functions. Some of the
  3738.    functions (sin(x) and cos(x)) are approximated using a power series
  3739.    expansion accurate to 1.0e-14 over the integration interval. Module 2,
  3740.    estimates the value of pi based upon the Maclaurin series expansion of
  3741.    atan(1). MFLOPS ratings are provided for each module, but the programs
  3742.    overall results are summerized by the MFLOPS(1), MFLOPS(2), MFLOPS(3),
  3743.    and MFLOPS(4) outputs.
  3744.  
  3745.    The MFLOPS(1) result is identical to the result provided by all
  3746.    previous versions of flops.c (flops12c.c and earliar versions). It is
  3747.    based only upon the results from modules 2 and 3. Actually, on faster
  3748.    machines, MFLOPS(1) from flops.c V2.0 is expected to provide more
  3749.    accurate results since the number of iterations conducted (which is
  3750.    reflected in the timing accuracy) is more tightly controlled than in
  3751.    previous versions of flops.c.
  3752.    
  3753.    Two problems surfaced in using MFLOPS(1). First, it was difficult to
  3754.    completely 'vectorize' the result due to the recurrence of the 's'
  3755.    variable in module 2. This problem is addressed in the MFLOPS(2) result
  3756.    which does not use module 2, but maintains nearly the same weighting of
  3757.    FDIV's (9.2%) as in MFLOPS(1) (9.6%). For scalar machines the MFLOPS(2)
  3758.    results 'should' be similar to the MFLOPS(1) results. However, for
  3759.    vector machines the MFLOPS(1) and MFLOPS(2) results may differ
  3760.    considerably since the MFLOPS(2) result is expected to be more
  3761.    completely vectorizable. The second problem with MFLOPS(1) centers
  3762.    around the percentage of FDIV's (9.6%) which was viewed as too high for
  3763.    an important class of problems. This concern is addressed in the
  3764.    MFLOPS(3) result which does only 3.4% FDIV's, and the MFLOPS(4) result
  3765.    where NO FDIV's are conducted at all.
  3766.    
  3767.    The number of floating-point instructions per iteration (loop) is
  3768.    given below for each module executed.
  3769.  
  3770.    MODULE   FADD   FSUB   FMUL   FDIV   TOTAL  Comment
  3771.      1        7      0      6      1      14   7.1%  FDIV's
  3772.      2        3      2      1      1       7   difficult to vectorize.
  3773.      3        6      2      9      0      17   0.0%  FDIV's
  3774.      4        7      0      8      0      15   0.0%  FDIV's
  3775.      5       13      0     15      1      29   3.4%  FDIV's
  3776.      6       13      0     16      0      29   0.0%  FDIV's
  3777.      7        3      3      3      3      12   25.0% FDIV's
  3778.      8       13      0     17      0      30   0.0%  FDIV's
  3779.    
  3780.    A*2+3     21     12     14      5      52   A=5, MFLOPS(1), Same as
  3781.             40.4%  23.1%  26.9%  9.6%          previous versions of the
  3782.                                                flops.c program. Includes
  3783.                                                only Modules 2 and 3.
  3784.    
  3785.    1+3+4     58     14     66     14     152   A=4, MFLOPS(2), New output
  3786.    +5+6+    38.2%  9.2%   43.4%  9.2%          does not include Module 2,
  3787.    A*7                                         but does 9.2% FDIV's.
  3788.    
  3789.    1+3+4     62      5     74      5     146   A=0, MFLOPS(3), New output
  3790.    +5+6+    42.5%  3.4%   50.7%  3.4%          does not include Module 2,
  3791.    7+8                                         but does 3.4% FDIV's.
  3792.  
  3793.    3+4+6     39      2     50      0      91   A=0, MFLOPS(4), New output
  3794.    +8       42.9%  2.2%   54.9%  0.0%          does not include Module 2,
  3795.                                                and does NO FDIV's.
  3796.  
  3797.    I hope that flops.c V2.0 (flops20.c) proves more useful than earliar
  3798.    versions.
  3799.  
  3800.  
  3801. (1) HP 9000/730 flops.c V2.0 Results, cc +OS +O3 -W1-a,archive   
  3802.  
  3803.    Below are the HP 9000/730 results (provided by Bo Thide'). The minimum
  3804.    MFLOPS rating is 15.1 MFLOPS for module 7, which does 25% FDIV's. The
  3805.    maximum MFLOPS rating is 37.1 MFLOPS for module 6, which does 0.0%
  3806.    FDIV's. FDIV appears to be reasonably efficient on the HP 9000/730,
  3807.    as indicated by the overall MFLOPS(n) outputs. 
  3808.  
  3809.    The 'Runtime' output is the time in microseconds (usec) for one
  3810.    iteration (loop) through the module. The MFLOPS rating is obtained by
  3811.    dividing the number of floating-point instructions in the loop by the
  3812.    Runtime (in microseconds). For example for module 1 below:
  3813.    MFLOPS = 14.0 / 0.5978 = 23.42.
  3814.  
  3815.    The Runtime output has already been adjusted for an estimate of the
  3816.    time in microseconds to conduct one empty 'for' loop (NullTime). If
  3817.    NullTime is not calculated (that is, NullTime = 0.0), due to compiler
  3818.    optimization, it can produce a 3% to 5% lower MFLOPS rating than would
  3819.    otherwise be obtained.
  3820.  
  3821.  
  3822.    FLOPS C Program (Double Precision), V2.0 18 Dec 1992
  3823.  
  3824.    Module     Error        RunTime      MFLOPS
  3825.                             (usec)
  3826.      1     -4.6896e-13      0.5978     23.4187
  3827.      2      2.2160e-13      0.2447     28.6079
  3828.      3     -6.9944e-15      0.7412     22.9342
  3829.      4     -9.7256e-14      0.6906     21.7195
  3830.      5     -1.6542e-14      0.9200     31.5217
  3831.      6      4.3632e-14      0.7822     37.0755
  3832.      7     -4.9454e-11      0.7972     15.0529
  3833.      8      7.2164e-14      0.8275     36.2538
  3834.  
  3835.    Iterations      =   32000000
  3836.    NullTime (usec) =     0.0306
  3837.    MFLOPS(1)       =    26.4673  [same as flops12c.c, 9.6% FDIV's]
  3838.    MFLOPS(2)       =    21.9633  [9.2% FDIV's]
  3839.    MFLOPS(3)       =    27.2566  [3.4% FDIV's]
  3840.    MFLOPS(4)       =    29.9188  [0.0% FDIV's]
  3841.  
  3842.  
  3843. (2) IBM RS/6000 Model 550 flops.c V2.0 results, cc -DUNIX -O -Q
  3844.  
  3845.    The IBM RS/6000 Model 550 flops20.c results are shown below. Here,
  3846.    the minimum MFLOPS rating is 7.3 MFLOPS also for module 7 which does
  3847.    25.0% FDIV's. The maximum MFLOPS rating is 56.9 MFLOPS (!) also for
  3848.    module 6 which does 0.0% FDIV's. While the Model 550 works wonders
  3849.    with FADD's and FMULS's its performance falls off rapidly with FDIV's.
  3850.  
  3851.  
  3852.    FLOPS C Program (Double Precision), V2.0 18 Dec 1992
  3853.  
  3854.    Module     Error        RunTime      MFLOPS
  3855.                             (usec)
  3856.      1     -4.6896e-13      0.7028     19.9200
  3857.      2      2.2160e-13      0.5806     12.0560
  3858.      3     -7.0499e-15      0.4372     38.8849
  3859.      4     -9.7145e-14      0.4359     34.4086
  3860.      5     -1.6542e-14      0.9903     29.2837
  3861.      6      4.3632e-14      0.5100     56.8627
  3862.      7     -4.9454e-11      1.6456      7.2921
  3863.      8      7.2164e-14      0.5572     53.8418
  3864.  
  3865.    Iterations      =   32000000
  3866.    NullTime (usec) =     0.0484
  3867.    MFLOPS(1)       =    15.5674  [same as flops12c.c, 9.6% FDIV's]
  3868.    MFLOPS(2)       =    15.7370  [9.2% FDIV's]
  3869.    MFLOPS(3)       =    27.6568  [3.4% FDIV's]
  3870.    MFLOPS(4)       =    46.8997  [0.0% FDIV's]
  3871.  
  3872. Al Aburto
  3873. aburto@marlin.nosc.mil
  3874.  
  3875.  
  3876. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ToDo
  3877. ====
  3878.  
  3879. New option to save out as ASCII text file
  3880.  
  3881. New ARM and FP timing code, written from scratch!
  3882. More accurate calculations of everything
  3883.  
  3884. Support for VIDC20 chip
  3885.  
  3886. Option to turn ARM600 write buffer & cache on/off
  3887.  
  3888. ID for VIDC enhancer, as well as different graphics cards
  3889. (G8 in particular - need docs+tester)
  3890.  
  3891. Disc I/O performance tests + index
  3892.  
  3893. Logarithmic display bars instead of just truncating at
  3894. edge of window ...
  3895.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  3896. +ô Toggle state of '3D look' bit in CMOSô Read byte("È− "OS_Byte",161,140 ¸ ,,byte%2"ô EOR byte with mask for bit 0<byte% = byte% ŵ 1Fô Write byte back againPÈ− "OS_Byte",162,140,byte%Zàÿorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  3897. /ô Toggle state of 'DragASprite' bit in CMOSô Read byte("È− "OS_Byte",161,&1C ¸ ,,byte%2"ô EOR byte with mask for bit 1<byte% = byte% ŵ %10Fô Write byte back againPÈ− "OS_Byte",162,&1C,byte%Zàÿ   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  3898. *** Techie details
  3899.  
  3900. Below I briefly detail how each section of SI gives its results - for
  3901. more details look at the code. The important routines are PROCcalcsi
  3902. and PROCdisplaysi.
  3903.  
  3904. Available RAM - MEMC tells you the page size, and so total RAM can be
  3905.         easily worked out. Uses OS_ReadMemMapInfo call.
  3906.  
  3907. Available ROM - tricky ... Currently we just guess based on the OS 
  3908.         version.
  3909.  
  3910. 5th Column ROMs - you don't notice this feature unless you have
  3911.         5th column ROMs, but the program finds the number of extension
  3912.         ROMs with Podule_ReturnNumber, and then counts the total size
  3913.         of code/data using Podule_EnumerateChunksWithInfo - so you
  3914.         get the cumulative total of data - not the capacity of the 
  3915.         ROMs when full ...
  3916.  
  3917. ROM Speed - we know the number of n-cycles per ROM access (from MEMC),
  3918.         so this is multiplied by the current RAM Speed.
  3919.  
  3920. RAM Speed - the operating system works this out on startup, and so we
  3921.         just ask nicely (zero page location).
  3922.  
  3923. DRAM refresh - a MEMC returned result (you use OS_UpdateMEMC SWI for
  3924.         all these MEMC read/writes)
  3925.  
  3926. MEMC type - zero page location gives MEMC1 or MEMC1a type, as worked
  3927.         out by the OS.
  3928.  
  3929. IOC type - unknown - call it IOC1 !
  3930.  
  3931. IOEB type - under RO3.xx an OS_ReadSysInfo call returns this, and 
  3932.         whether one is present or not. IOEB can only exist on RO3.xx
  3933.         and greater machines.
  3934.  
  3935. VIDC type - assume a VIDC1a (most machines), unless an A500 computer.
  3936.         The A500 is ID'd using the fact that 99% of all the A500s 
  3937.         have RTCs with 30 second precision. A500s have VIDC1 chips.
  3938.         Actually this test doesn't work because of the OS simulating
  3939.         the RTC 8-( Instead we use the keyboard ID byte ... If you
  3940.         have an A500 with a new keyboard - tough!
  3941.  
  3942. ARM type - see the assembler code at the end of the main program.
  3943.         ARM1 chips don't do multiply, ARM2 chips don't do SWP 
  3944.         instructions, ARM250 chips don't have coprocessor 15
  3945.         (internal), and all later chips can be ID'd from a status
  3946.         register inside coprocessor 15.
  3947.  
  3948. FPA type - Again, a coprocessor transfer as defined in the Acorn
  3949.         FP specs (see PRMs) which can ID software/hardware FP
  3950.         details.
  3951.  
  3952. Periph Ctrlr - OS_ReadSysInfo call under RO3 can ID the 82C710 or
  3953.         82C711 peripheral controller chip which handles the IDE
  3954.         interface, etc.
  3955.  
  3956. LCD ASIC - only present in A4 portables, this chip does the
  3957.         fancy 15-greyscale display, and is ID'd using OS_ReadSysInfo
  3958.  
  3959. RO ver - Read from OS_Byte,0,0
  3960.  
  3961. Video screen mode - read from the BASIC 'MODE' command, and a 
  3962.         selection of OS_ReadModeVariable calls
  3963.  
  3964. Unique machine ID - only present on modern RO3 machines (A3010/3020/
  3965.         A4000/5000/A4/etc) read using OS_ReadSysInfo call
  3966.  
  3967. Details of most of the calls listed above can be found in the RISC OS3
  3968. Programmers Reference Manual, available from your local Acorn Dealer 8-)
  3969.  
  3970. *** Original Authors Notes
  3971.  
  3972.  1) Instructions timings are accurate to within:
  3973.  
  3974.                  4 * MCLK
  3975.                  --------   
  3976.                      i
  3977.  
  3978.           where 
  3979.                i    is the number of instructions tested
  3980.                MCLK is the system clock (125 nS on an 8 MHz machine)
  3981.  
  3982.     ARM instructions are therfore calculated to within 2 nS +- 2%
  3983.  2) ARM Speed in MIPS is calculated as the average number of each
  3984.     instruction Group in a test sample of 1000 instructions
  3985.  3) IOC and VIDC types remain Unknown at present
  3986.  4) Checks are made for all processors known to date. ie. ARM 1,2 and 3
  3987.  5) Interrupts and DMA requests are stopped whilst calculations are
  3988.     taking place
  3989.  6) Looped instructions are calculated as one instruction of the specific
  3990.     Group + one Group 1 + one group 4 instruction
  3991.  7) Instruction timings are calculated during Video Flyback, and are
  3992.     therefore dependant on the Video Flyback period and DRAM refresh
  3993.     (large modes with no vertical boarders will affect results)
  3994.  8) Group 1a results on ARM 2's do not take account of the hardware bug
  3995.     (instructions take 24 S cycles rather than the maximum of 16)
  3996.  9) Instruction indexes are relative to a perfect ARM 2 running at 8 MHz
  3997. 10) FPU instruction speeds are calculated by either 3, 16 or 80
  3998.     instructions depending upon the instruction in question.  
  3999. 11) FPU instructions are calculated to within 167 nS, 31 nS or 6 ns +- 2%
  4000.     dependent upon the instruction
  4001. 11) FPU indexes include both register values and immediate values in the
  4002.     form #1.0
  4003. 12) FPU speed in FLOPS is calculated as the total number of instructions
  4004.     divided by the time taken, this does not take account of common
  4005.     instructions
  4006. 13) All FPU calculations with the exception of STF and LDF are done in
  4007.     extended precision.  STF and LDF are packed decimal precision
  4008.  
  4009. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nickdhry_1DÿÿÿZŴ:⇩/!dhry_2BÿÿÿȽQÌ− flops20dDÿÿÿ¶';ʶ"dhry_1DÿÿÿZŴ:⇩/!dhry_2BÿÿÿȽQÌ− flops20dDÿÿÿ¶';ʶ"ccNickH/*
  4010.  ****************************************************************************
  4011.  *
  4012.  *                   "DHRYSTONE" Benchmark Program
  4013.  *                   -----------------------------
  4014.  *                                                                            
  4015.  *  Version:    C, Version 2.1
  4016.  *                                                                            
  4017.  *  File:       dhry_2.c (part 3 of 3)
  4018.  *
  4019.  *  Date:       May 25, 1988
  4020.  *
  4021.  *  Author:     Reinhold P. Weicker
  4022.  *
  4023.  ****************************************************************************
  4024.  */
  4025.  
  4026. #include "dhry.h"
  4027.  
  4028. #ifndef REG
  4029. #define REG
  4030.         /* REG becomes defined as empty */
  4031.         /* i.e. no register variables   */
  4032. #endif
  4033.  
  4034. extern  int     Int_Glob;
  4035. extern  char    Ch_1_Glob;
  4036.  
  4037.  
  4038. Proc_6 (Enum_Val_Par, Enum_Ref_Par)
  4039. /*********************************/
  4040.     /* executed once */
  4041.     /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
  4042.  
  4043. Enumeration  Enum_Val_Par;
  4044. Enumeration *Enum_Ref_Par;
  4045. {
  4046.   *Enum_Ref_Par = Enum_Val_Par;
  4047.   if (! Func_3 (Enum_Val_Par))
  4048.     /* then, not executed */
  4049.     *Enum_Ref_Par = Ident_4;
  4050.   switch (Enum_Val_Par)
  4051.   {
  4052.     case Ident_1: 
  4053.       *Enum_Ref_Par = Ident_1;
  4054.       break;
  4055.     case Ident_2: 
  4056.       if (Int_Glob > 100)
  4057.         /* then */
  4058.       *Enum_Ref_Par = Ident_1;
  4059.       else *Enum_Ref_Par = Ident_4;
  4060.       break;
  4061.     case Ident_3: /* executed */
  4062.       *Enum_Ref_Par = Ident_2;
  4063.       break;
  4064.     case Ident_4: break;
  4065.     case Ident_5: 
  4066.       *Enum_Ref_Par = Ident_3;
  4067.       break;
  4068.   } /* switch */
  4069. } /* Proc_6 */
  4070.  
  4071.  
  4072. Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref)
  4073. /**********************************************/
  4074.     /* executed three times                                      */ 
  4075.     /* first call:      Int_1_Par_Val == 2, Int_2_Par_Val == 3,  */
  4076.     /*                  Int_Par_Ref becomes 7                    */
  4077.     /* second call:     Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
  4078.     /*                  Int_Par_Ref becomes 17                   */
  4079.     /* third call:      Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
  4080.     /*                  Int_Par_Ref becomes 18                   */
  4081. One_Fifty       Int_1_Par_Val;
  4082. One_Fifty       Int_2_Par_Val;
  4083. One_Fifty      *Int_Par_Ref;
  4084. {
  4085.   One_Fifty Int_Loc;
  4086.  
  4087.   Int_Loc = Int_1_Par_Val + 2;
  4088.   *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
  4089. } /* Proc_7 */
  4090.  
  4091.  
  4092. Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val)
  4093. /*********************************************************************/
  4094.     /* executed once      */
  4095.     /* Int_Par_Val_1 == 3 */
  4096.     /* Int_Par_Val_2 == 7 */
  4097. Arr_1_Dim       Arr_1_Par_Ref;
  4098. Arr_2_Dim       Arr_2_Par_Ref;
  4099. int             Int_1_Par_Val;
  4100. int             Int_2_Par_Val;
  4101. {
  4102.   REG One_Fifty Int_Index;
  4103.   REG One_Fifty Int_Loc;
  4104.  
  4105.   Int_Loc = Int_1_Par_Val + 5;
  4106.   Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
  4107.   Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
  4108.   Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
  4109.   for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
  4110.     Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
  4111.   Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
  4112.   Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
  4113.   Int_Glob = 5;
  4114. } /* Proc_8 */
  4115.  
  4116.  
  4117. Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val)
  4118. /*************************************************/
  4119.     /* executed three times                                         */
  4120.     /* first call:      Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R'    */
  4121.     /* second call:     Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C'    */
  4122.     /* third call:      Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C'    */
  4123.  
  4124. Capital_Letter   Ch_1_Par_Val;
  4125. Capital_Letter   Ch_2_Par_Val;
  4126. {
  4127.   Capital_Letter        Ch_1_Loc;
  4128.   Capital_Letter        Ch_2_Loc;
  4129.  
  4130.   Ch_1_Loc = Ch_1_Par_Val;
  4131.   Ch_2_Loc = Ch_1_Loc;
  4132.   if (Ch_2_Loc != Ch_2_Par_Val)
  4133.     /* then, executed */
  4134.     return (Ident_1);
  4135.   else  /* not executed */
  4136.   {
  4137.     Ch_1_Glob = Ch_1_Loc;
  4138.     return (Ident_2);
  4139.    }
  4140. } /* Func_1 */
  4141.  
  4142.  
  4143. Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref)
  4144. /*************************************************/
  4145.     /* executed once */
  4146.     /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
  4147.     /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
  4148.  
  4149. Str_30  Str_1_Par_Ref;
  4150. Str_30  Str_2_Par_Ref;
  4151. {
  4152.   REG One_Thirty        Int_Loc;
  4153.       Capital_Letter    Ch_Loc;
  4154.  
  4155.   Int_Loc = 2;
  4156.   while (Int_Loc <= 2) /* loop body executed once */
  4157.     if (Func_1 (Str_1_Par_Ref[Int_Loc],
  4158.                 Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
  4159.       /* then, executed */
  4160.     {
  4161.       Ch_Loc = 'A';
  4162.       Int_Loc += 1;
  4163.     } /* if, while */
  4164.   if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
  4165.     /* then, not executed */
  4166.     Int_Loc = 7;
  4167.   if (Ch_Loc == 'R')
  4168.     /* then, not executed */
  4169.     return (true);
  4170.   else /* executed */
  4171.   {
  4172.     if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
  4173.       /* then, not executed */
  4174.     {
  4175.       Int_Loc += 7;
  4176.       Int_Glob = Int_Loc;
  4177.       return (true);
  4178.     }
  4179.     else /* executed */
  4180.       return (false);
  4181.   } /* if Ch_Loc */
  4182. } /* Func_2 */
  4183.  
  4184.  
  4185. Boolean Func_3 (Enum_Par_Val)
  4186. /***************************/
  4187.     /* executed once        */
  4188.     /* Enum_Par_Val == Ident_3 */
  4189. Enumeration Enum_Par_Val;
  4190. {
  4191.   Enumeration Enum_Loc;
  4192.  
  4193.   Enum_Loc = Enum_Par_Val;
  4194.   if (Enum_Loc == Ident_3)
  4195.     /* then, executed */
  4196.     return (true);
  4197.   else /* not executed */
  4198.     return (false);
  4199. } /* Func_3 */
  4200.  
  4201. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  4202.  ****************************************************************************
  4203.  *
  4204.  *                   "DHRYSTONE" Benchmark Program
  4205.  *                   -----------------------------
  4206.  *                                                                            
  4207.  *  Version:    C, Version 2.1
  4208.  *                                                                            
  4209.  *  File:       dhry_1.c (part 2 of 3)
  4210.  *
  4211.  *  Date:       May 25, 1988
  4212.  *
  4213.  *  Author:     Reinhold P. Weicker
  4214.  *
  4215.  ****************************************************************************
  4216.  */
  4217.  
  4218. #include "dhry.h"
  4219.  
  4220. /* Global Variables: */
  4221.  
  4222. Rec_Pointer     Ptr_Glob,
  4223.                 Next_Ptr_Glob;
  4224. int             Int_Glob;
  4225. Boolean         Bool_Glob;
  4226. char            Ch_1_Glob,
  4227.                 Ch_2_Glob;
  4228. int             Arr_1_Glob [50];
  4229. int             Arr_2_Glob [50] [50];
  4230.  
  4231. extern char     *malloc ();
  4232. Enumeration     Func_1 ();
  4233.   /* forward declaration necessary since Enumeration may not simply be int */
  4234.  
  4235. #ifndef REG
  4236.         Boolean Reg = false;
  4237. #define REG
  4238.         /* REG becomes defined as empty */
  4239.         /* i.e. no register variables   */
  4240. #else
  4241.         Boolean Reg = true;
  4242. #endif
  4243.  
  4244. /* variables for time measurement: */
  4245.  
  4246. #ifdef TIMES
  4247. struct tms      time_info;
  4248. extern  int     times ();
  4249.                 /* see library function "times" */
  4250. #define Too_Small_Time (2*HZ)
  4251.                 /* Measurements should last at least about 2 seconds */
  4252. #endif
  4253. #ifdef TIME
  4254. extern long     time();
  4255.                 /* see library function "time"  */
  4256. #define Too_Small_Time 2
  4257.                 /* Measurements should last at least 2 seconds */
  4258. #endif
  4259. #ifdef MSC_CLOCK
  4260. extern clock_t clock();
  4261. #define Too_Small_Time (2*HZ)
  4262. #endif
  4263.  
  4264. long            Begin_Time,
  4265.                 End_Time,
  4266.                 User_Time;
  4267. float           Microseconds,
  4268.                 Dhrystones_Per_Second;
  4269.  
  4270. /* end of variables for time measurement */
  4271.  
  4272.  
  4273. main ()
  4274. /*****/
  4275.  
  4276.   /* main program, corresponds to procedures        */
  4277.   /* Main and Proc_0 in the Ada version             */
  4278. {
  4279.         One_Fifty       Int_1_Loc;
  4280.   REG   One_Fifty       Int_2_Loc;
  4281.         One_Fifty       Int_3_Loc;
  4282.   REG   char            Ch_Index;
  4283.         Enumeration     Enum_Loc;
  4284.         Str_30          Str_1_Loc;
  4285.         Str_30          Str_2_Loc;
  4286.   REG   int             Run_Index;
  4287.   REG   int             Number_Of_Runs;
  4288.  
  4289.   /* Initializations */
  4290.  
  4291.   Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
  4292.   Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
  4293.  
  4294.   Ptr_Glob->Ptr_Comp                    = Next_Ptr_Glob;
  4295.   Ptr_Glob->Discr                       = Ident_1;
  4296.   Ptr_Glob->variant.var_1.Enum_Comp     = Ident_3;
  4297.   Ptr_Glob->variant.var_1.Int_Comp      = 40;
  4298.   strcpy (Ptr_Glob->variant.var_1.Str_Comp, 
  4299.           "DHRYSTONE PROGRAM, SOME STRING");
  4300.   strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
  4301.  
  4302.   Arr_2_Glob [8][7] = 10;
  4303.         /* Was missing in published program. Without this statement,    */
  4304.         /* Arr_2_Glob [8][7] would have an undefined value.             */
  4305.         /* Warning: With 16-Bit processors and Number_Of_Runs > 32000,  */
  4306.         /* overflow may occur for this array element.                   */
  4307.  
  4308. #ifndef SILENT
  4309.   printf ("\n");
  4310.   printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n");
  4311.   printf ("\n");
  4312.   if (Reg)
  4313.   {
  4314.     printf ("Program compiled with 'register' attribute\n");
  4315.     printf ("\n");
  4316.   }
  4317.   else
  4318.   {
  4319.     printf ("Program compiled without 'register' attribute\n");
  4320.     printf ("\n");
  4321.   }
  4322.   printf ("Please give the number of runs through the benchmark: ");
  4323.   {
  4324.     int n;
  4325.     scanf ("%d", &n);
  4326.     Number_Of_Runs = n;
  4327.   }
  4328.   printf ("\n");
  4329.  
  4330.   printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs);
  4331. #else
  4332.   Number_Of_Runs = NORUNS;
  4333. #endif
  4334.  
  4335.   /***************/
  4336.   /* Start timer */
  4337.   /***************/
  4338.  
  4339. #ifdef TIMES
  4340.   times (&time_info);
  4341.   Begin_Time = (long) time_info.tms_utime;
  4342. #endif
  4343. #ifdef TIME
  4344.   Begin_Time = time ( (long *) 0);
  4345. #endif
  4346. #ifdef MSC_CLOCK
  4347.   Begin_Time = clock();
  4348. #endif
  4349.  
  4350.   for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
  4351.   {
  4352.  
  4353.     Proc_5();
  4354.     Proc_4();
  4355.       /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */
  4356.     Int_1_Loc = 2;
  4357.     Int_2_Loc = 3;
  4358.     strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
  4359.     Enum_Loc = Ident_2;
  4360.     Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
  4361.       /* Bool_Glob == 1 */
  4362.     while (Int_1_Loc < Int_2_Loc)  /* loop body executed once */
  4363.     {
  4364.       Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
  4365.         /* Int_3_Loc == 7 */
  4366.       Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
  4367.         /* Int_3_Loc == 7 */
  4368.       Int_1_Loc += 1;
  4369.     } /* while */
  4370.       /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
  4371.     Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
  4372.       /* Int_Glob == 5 */
  4373.     Proc_1 (Ptr_Glob);
  4374.     for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
  4375.                              /* loop body executed twice */
  4376.     {
  4377.       if (Enum_Loc == Func_1 (Ch_Index, 'C'))
  4378.           /* then, not executed */
  4379.         {
  4380.         Proc_6 (Ident_1, &Enum_Loc);
  4381.         strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
  4382.         Int_2_Loc = Run_Index;
  4383.         Int_Glob = Run_Index;
  4384.         }
  4385.     }
  4386.       /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
  4387.     Int_2_Loc = Int_2_Loc * Int_1_Loc;
  4388.     Int_1_Loc = Int_2_Loc / Int_3_Loc;
  4389.     Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
  4390.       /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
  4391.     Proc_2 (&Int_1_Loc);
  4392.       /* Int_1_Loc == 5 */
  4393.  
  4394.   } /* loop "for Run_Index" */
  4395.  
  4396.   /**************/
  4397.   /* Stop timer */
  4398.   /**************/
  4399.   
  4400. #ifdef TIMES
  4401.   times (&time_info);
  4402.   End_Time = (long) time_info.tms_utime;
  4403. #endif
  4404. #ifdef TIME
  4405.   End_Time = time ( (long *) 0);
  4406. #endif
  4407. #ifdef MSC_CLOCK
  4408.   End_Time = clock();
  4409. #endif
  4410.  
  4411. #ifndef SILENT
  4412.   printf ("Execution ends\n");
  4413.   printf ("\n");
  4414.   printf ("Final values of the variables used in the benchmark:\n");
  4415.   printf ("\n");
  4416.   printf ("Int_Glob:            %d\n", Int_Glob);
  4417.   printf ("        should be:   %d\n", 5);
  4418.   printf ("Bool_Glob:           %d\n", Bool_Glob);
  4419.   printf ("        should be:   %d\n", 1);
  4420.   printf ("Ch_1_Glob:           %c\n", Ch_1_Glob);
  4421.   printf ("        should be:   %c\n", 'A');
  4422.   printf ("Ch_2_Glob:           %c\n", Ch_2_Glob);
  4423.   printf ("        should be:   %c\n", 'B');
  4424.   printf ("Arr_1_Glob[8]:       %d\n", Arr_1_Glob[8]);
  4425.   printf ("        should be:   %d\n", 7);
  4426.   printf ("Arr_2_Glob[8][7]:    %d\n", Arr_2_Glob[8][7]);
  4427.   printf ("        should be:   Number_Of_Runs + 10\n");
  4428.   printf ("Ptr_Glob->\n");
  4429.   printf ("  Ptr_Comp:          %d\n", (int) Ptr_Glob->Ptr_Comp);
  4430.   printf ("        should be:   (implementation-dependent)\n");
  4431.   printf ("  Discr:             %d\n", Ptr_Glob->Discr);
  4432.   printf ("        should be:   %d\n", 0);
  4433.   printf ("  Enum_Comp:         %d\n", Ptr_Glob->variant.var_1.Enum_Comp);
  4434.   printf ("        should be:   %d\n", 2);
  4435.   printf ("  Int_Comp:          %d\n", Ptr_Glob->variant.var_1.Int_Comp);
  4436.   printf ("        should be:   %d\n", 17);
  4437.   printf ("  Str_Comp:          %s\n", Ptr_Glob->variant.var_1.Str_Comp);
  4438.   printf ("        should be:   DHRYSTONE PROGRAM, SOME STRING\n");
  4439.   printf ("Next_Ptr_Glob->\n");
  4440.   printf ("  Ptr_Comp:          %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
  4441.   printf ("        should be:   (implementation-dependent), same as above\n");
  4442.   printf ("  Discr:             %d\n", Next_Ptr_Glob->Discr);
  4443.   printf ("        should be:   %d\n", 0);
  4444.   printf ("  Enum_Comp:         %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp);
  4445.   printf ("        should be:   %d\n", 1);
  4446.   printf ("  Int_Comp:          %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp);
  4447.   printf ("        should be:   %d\n", 18);
  4448.   printf ("  Str_Comp:          %s\n",
  4449.                                 Next_Ptr_Glob->variant.var_1.Str_Comp);
  4450.   printf ("        should be:   DHRYSTONE PROGRAM, SOME STRING\n");
  4451.   printf ("Int_1_Loc:           %d\n", Int_1_Loc);
  4452.   printf ("        should be:   %d\n", 5);
  4453.   printf ("Int_2_Loc:           %d\n", Int_2_Loc);
  4454.   printf ("        should be:   %d\n", 13);
  4455.   printf ("Int_3_Loc:           %d\n", Int_3_Loc);
  4456.   printf ("        should be:   %d\n", 7);
  4457.   printf ("Enum_Loc:            %d\n", Enum_Loc);
  4458.   printf ("        should be:   %d\n", 1);
  4459.   printf ("Str_1_Loc:           %s\n", Str_1_Loc);
  4460.   printf ("        should be:   DHRYSTONE PROGRAM, 1'ST STRING\n");
  4461.   printf ("Str_2_Loc:           %s\n", Str_2_Loc);
  4462.   printf ("        should be:   DHRYSTONE PROGRAM, 2'ND STRING\n");
  4463.   printf ("\n");
  4464. #endif
  4465.  
  4466.   User_Time = End_Time - Begin_Time;
  4467.  
  4468.   if (User_Time < Too_Small_Time)
  4469.   {
  4470. #ifndef SILENT
  4471.     printf ("Measured time too small to obtain meaningful results\n");
  4472.     printf ("Please increase number of runs\n");
  4473.     printf ("\n");
  4474. #else
  4475.     system("UnSet ArmSI$Dhrystone");
  4476. #endif
  4477.   }
  4478.   else
  4479.   {
  4480. #ifdef TIME
  4481.     Microseconds = (float) User_Time * Mic_secs_Per_Second 
  4482.                         / (float) Number_Of_Runs;
  4483.     Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time;
  4484. #else
  4485.     Microseconds = (float) User_Time * Mic_secs_Per_Second 
  4486.                         / ((float) HZ * ((float) Number_Of_Runs));
  4487.     Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs)
  4488.                         / (float) User_Time;
  4489. #endif
  4490. #ifndef SILENT
  4491.     printf ("Microseconds for one run through Dhrystone: ");
  4492.     printf ("%6.1f \n", Microseconds);
  4493.     printf ("Dhrystones per Second:                      ");
  4494.     printf ("%6.1f \n", Dhrystones_Per_Second);
  4495.     printf ("\n");
  4496. #else
  4497.     { char *timing;
  4498.       sprintf(timing, "Set ArmSI$Dhrystone %6.1f %6.1f", Microseconds, Dhrystones_Per_Second);
  4499.       system(timing);
  4500.     }
  4501. #endif
  4502.   }
  4503.   
  4504. }
  4505.  
  4506.  
  4507. Proc_1 (Ptr_Val_Par)
  4508. /******************/
  4509.  
  4510. REG Rec_Pointer Ptr_Val_Par;
  4511.     /* executed once */
  4512. {
  4513.   REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;  
  4514.                                         /* == Ptr_Glob_Next */
  4515.   /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp,    */
  4516.   /* corresponds to "rename" in Ada, "with" in Pascal           */
  4517.   
  4518.   structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); 
  4519.   Ptr_Val_Par->variant.var_1.Int_Comp = 5;
  4520.   Next_Record->variant.var_1.Int_Comp 
  4521.         = Ptr_Val_Par->variant.var_1.Int_Comp;
  4522.   Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
  4523.   Proc_3 (&Next_Record->Ptr_Comp);
  4524.     /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp 
  4525.                         == Ptr_Glob->Ptr_Comp */
  4526.   if (Next_Record->Discr == Ident_1)
  4527.     /* then, executed */
  4528.   {
  4529.     Next_Record->variant.var_1.Int_Comp = 6;
  4530.     Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, 
  4531.            &Next_Record->variant.var_1.Enum_Comp);
  4532.     Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
  4533.     Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, 
  4534.            &Next_Record->variant.var_1.Int_Comp);
  4535.   }
  4536.   else /* not executed */
  4537.     structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
  4538. } /* Proc_1 */
  4539.  
  4540.  
  4541. Proc_2 (Int_Par_Ref)
  4542. /******************/
  4543.     /* executed once */
  4544.     /* *Int_Par_Ref == 1, becomes 4 */
  4545.  
  4546. One_Fifty   *Int_Par_Ref;
  4547. {
  4548.   One_Fifty  Int_Loc;  
  4549.   Enumeration   Enum_Loc;
  4550.  
  4551.   Int_Loc = *Int_Par_Ref + 10;
  4552.   do /* executed once */
  4553.     if (Ch_1_Glob == 'A')
  4554.       /* then, executed */
  4555.     {
  4556.       Int_Loc -= 1;
  4557.       *Int_Par_Ref = Int_Loc - Int_Glob;
  4558.       Enum_Loc = Ident_1;
  4559.     } /* if */
  4560.   while (Enum_Loc != Ident_1); /* true */
  4561. } /* Proc_2 */
  4562.  
  4563.  
  4564. Proc_3 (Ptr_Ref_Par)
  4565. /******************/
  4566.     /* executed once */
  4567.     /* Ptr_Ref_Par becomes Ptr_Glob */
  4568.  
  4569. Rec_Pointer *Ptr_Ref_Par;
  4570.  
  4571. {
  4572.   if (Ptr_Glob != Null)
  4573.     /* then, executed */
  4574.     *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
  4575.   Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
  4576. } /* Proc_3 */
  4577.  
  4578.  
  4579. Proc_4 () /* without parameters */
  4580. /*******/
  4581.     /* executed once */
  4582. {
  4583.   Boolean Bool_Loc;
  4584.  
  4585.   Bool_Loc = Ch_1_Glob == 'A';
  4586.   Bool_Glob = Bool_Loc | Bool_Glob;
  4587.   Ch_2_Glob = 'B';
  4588. } /* Proc_4 */
  4589.  
  4590.  
  4591. Proc_5 () /* without parameters */
  4592. /*******/
  4593.     /* executed once */
  4594. {
  4595.   Ch_1_Glob = 'A';
  4596.   Bool_Glob = false;
  4597. } /* Proc_5 */
  4598.  
  4599.  
  4600.         /* Procedure for the assignment of structures,          */
  4601.         /* if the C compiler doesn't support this feature       */
  4602. #ifdef  NOSTRUCTASSIGN
  4603. memcpy (d, s, l)
  4604. register char   *d;
  4605. register char   *s;
  4606. register int    l;
  4607. {
  4608.         while (l--) *d++ = *s++;
  4609. }
  4610. #endif
  4611.  
  4612.  
  4613. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*--------------------- Start flops.c source code ----------------------*/
  4614.  
  4615. /*****************************/
  4616. /*          FLOPS.c          */
  4617. /* Version 2.0,  18 Dec 1992 */
  4618. /*         Al Aburto         */
  4619. /*  aburto@marlin.nosc.mil   */
  4620. /*       'ala' on BIX        */
  4621. /*****************************/
  4622.  
  4623. /*
  4624.    Flops.c is a 'c' program which attempts to estimate your systems
  4625.    floating-point 'MFLOPS' rating for the FADD, FSUB, FMUL, and FDIV
  4626.    operations based on specific 'instruction mixes' (discussed below).
  4627.    The program provides an estimate of PEAK MFLOPS performance by making
  4628.    maximal use of register variables with minimal interaction with main
  4629.    memory. The execution loops are all small so that they will fit in
  4630.    any cache. Flops.c can be used along with Linpack and the Livermore
  4631.    kernels (which exersize memory much more extensively) to gain further
  4632.    insight into the limits of system performance. The flops.c execution
  4633.    modules also include various percent weightings of FDIV's (from 0% to
  4634.    25% FDIV's) so that the range of performance can be obtained when
  4635.    using FDIV's. FDIV's, being computationally more intensive than
  4636.    FADD's or FMUL's, can impact performance considerably on some systems.
  4637.    
  4638.    Flops.c consists of 8 independent modules (routines) which, except for
  4639.    module 2, conduct numerical integration of various functions. Module
  4640.    2, estimates the value of pi based upon the Maclaurin series expansion
  4641.    of atan(1). MFLOPS ratings are provided for each module, but the
  4642.    programs overall results are summerized by the MFLOPS(1), MFLOPS(2),
  4643.    MFLOPS(3), and MFLOPS(4) outputs.
  4644.  
  4645.    The MFLOPS(1) result is identical to the result provided by all
  4646.    previous versions of flops.c. It is based only upon the results from
  4647.    modules 2 and 3. Two problems surfaced in using MFLOPS(1). First, it
  4648.    was difficult to completely 'vectorize' the result due to the 
  4649.    recurrence of the 's' variable in module 2. This problem is addressed
  4650.    in the MFLOPS(2) result which does not use module 2, but maintains
  4651.    nearly the same weighting of FDIV's (9.2%) as in MFLOPS(1) (9.6%).
  4652.    The second problem with MFLOPS(1) centers around the percentage of
  4653.    FDIV's (9.6%) which was viewed as too high for an important class of
  4654.    problems. This concern is addressed in the MFLOPS(3) result where NO
  4655.    FDIV's are conducted at all. 
  4656.    
  4657.    The number of floating-point instructions per iteration (loop) is
  4658.    given below for each module executed:
  4659.  
  4660.    MODULE   FADD   FSUB   FMUL   FDIV   TOTAL  Comment
  4661.      1        7      0      6      1      14   7.1%  FDIV's
  4662.      2        3      2      1      1       7   difficult to vectorize.
  4663.      3        6      2      9      0      17   0.0%  FDIV's
  4664.      4        7      0      8      0      15   0.0%  FDIV's
  4665.      5       13      0     15      1      29   3.4%  FDIV's
  4666.      6       13      0     16      0      29   0.0%  FDIV's
  4667.      7        3      3      3      3      12   25.0% FDIV's
  4668.      8       13      0     17      0      30   0.0%  FDIV's
  4669.    
  4670.    A*2+3     21     12     14      5      52   A=5, MFLOPS(1), Same as
  4671.             40.4%  23.1%  26.9%  9.6%          previous versions of the
  4672.                                                flops.c program. Includes
  4673.                                                only Modules 2 and 3, does
  4674.                                                9.6% FDIV's, and is not
  4675.                                                easily vectorizable.
  4676.    
  4677.    1+3+4     58     14     66     14     152   A=4, MFLOPS(2), New output
  4678.    +5+6+    38.2%  9.2%   43.4%  9.2%          does not include Module 2,
  4679.    A*7                                         but does 9.2% FDIV's.
  4680.    
  4681.    1+3+4     62      5     74      5     146   A=0, MFLOPS(3), New output
  4682.    +5+6+    42.9%  3.4%   50.7%  3.4%          does not include Module 2,
  4683.    7+8                                         but does 3.4% FDIV's.
  4684.  
  4685.    3+4+6     39      2     50      0      91   A=0, MFLOPS(4), New output
  4686.    +8       42.9%  2.2%   54.9%  0.0%          does not include Module 2,
  4687.                                                and does NO FDIV's.
  4688.  
  4689.    NOTE: Various timer routines are included as indicated below. The
  4690.          timer routines, with some comments, are attached at the end 
  4691.          of the main program.
  4692.  
  4693.    NOTE: Please do not remove any of the printouts.
  4694.  
  4695.    EXAMPLE COMPILATION:
  4696.    UNIX based systems
  4697.       cc -DUNIX -O flops20.c -o flops
  4698.       cc -DUNIX -DROPT flops20.c -o flops 
  4699.       cc -DUNIX -fast -O4 flops20.c -o flops 
  4700.       .
  4701.       .
  4702.       .
  4703.      etc.
  4704.  
  4705.    Al Aburto
  4706.    aburto@marlin.nosc.mil
  4707. */
  4708.  
  4709. #include <stdio.h>
  4710. #include <math.h>
  4711.                              /* 'Uncomment' the line below to run   */
  4712.                              /* with 'register double' variables    */
  4713.                              /* defined, or compile with the        */
  4714.                              /* '-DROPT' option. Don't need this if */
  4715.                              /* registers used automatically, but   */
  4716.                              /* you might want to try it anyway.    */
  4717. #define ROPT
  4718.  
  4719.  
  4720. /***************************************************************/
  4721. /* Timer options. You MUST uncomment one of the options below  */
  4722. /* or compile, for example, with the '-DUNIX' option.          */
  4723. /***************************************************************/
  4724. /* #define Amiga       */
  4725. /* #define UNIX        */
  4726. /* #define UNIX_Old    */
  4727. /* #define VMS         */
  4728. /* #define BORLAND_C   */
  4729.  #define MSC         
  4730. /* #define MAC         */
  4731. /* #define IPSC        */
  4732. /* #define FORTRAN_SEC */
  4733. /* #define GTODay      */
  4734. /* #define CTimer      */
  4735. /* #define UXPM        */
  4736.  
  4737. double nulltime, TimeArray[3];   /* Variables needed for 'dtime()'.     */
  4738. double TLimit;                   /* Threshold to determine Number of    */
  4739.                                  /* Loops to run. Fixed at 15.0 seconds.*/
  4740.  
  4741. double T[36];                    /* Global Array used to hold timing    */
  4742.                                  /* results and other information.      */
  4743.  
  4744. double sa,sb,sc,sd,one,two,three;
  4745. double four,five,piref,piprg;
  4746. double scale,pierr;
  4747.  
  4748. double A0 = 1.0;
  4749. double A1 = -0.1666666666671334;
  4750. double A2 = 0.833333333809067E-2;
  4751. double A3 = 0.198412715551283E-3;
  4752. double A4 = 0.27557589750762E-5;
  4753. double A5 = 0.2507059876207E-7;
  4754. double A6 = 0.164105986683E-9;
  4755.  
  4756. double B0 = 1.0;
  4757. double B1 = -0.4999999999982;
  4758. double B2 = 0.4166666664651E-1;
  4759. double B3 = -0.1388888805755E-2;
  4760. double B4 = 0.24801428034E-4;
  4761. double B5 = -0.2754213324E-6;
  4762. double B6 = 0.20189405E-8;
  4763.  
  4764. double C0 = 1.0;
  4765. double C1 = 0.99999999668;
  4766. double C2 = 0.49999995173;
  4767. double C3 = 0.16666704243;
  4768. double C4 = 0.4166685027E-1;
  4769. double C5 = 0.832672635E-2;
  4770. double C6 = 0.140836136E-2;
  4771. double C7 = 0.17358267E-3;
  4772. double C8 = 0.3931683E-4;
  4773.  
  4774. double D1 = 0.3999999946405E-1;
  4775. double D2 = 0.96E-3;
  4776. double D3 = 0.1233153E-5;
  4777.  
  4778. double E2 = 0.48E-3;
  4779. double E3 = 0.411051E-6;
  4780.  
  4781. void main()
  4782. {
  4783.  
  4784. #ifdef ROPT
  4785.    register double s,u,v,w,x;
  4786. #else
  4787.    double s,u,v,w,x;
  4788. #endif
  4789.  
  4790.    long loops, NLimit;
  4791.    register long i, m, n;
  4792.  
  4793. #ifndef SILENT
  4794.    printf("\n");
  4795.    printf("   FLOPS C Program (double Precision), V2.0 18 Dec 1992\n\n");
  4796. #endif
  4797.  
  4798.                        /****************************/
  4799.    loops = 512;      /* Initial number of loops. */
  4800.                        /* 15625    DO NOT CHANGE!       */
  4801.                        /****************************/
  4802.  
  4803. /****************************************************/
  4804. /* Set Variable Values.                             */
  4805. /* T[1] references all timing results relative to   */
  4806. /* one million loops.                               */
  4807. /*                                                  */
  4808. /* The program will execute from 31250 to 512000000 */
  4809. /* loops based on a runtime of Module 1 of at least */
  4810. /* TLimit = 15.0 seconds. That is, a runtime of 15  */
  4811. /* seconds for Module 1 is used to determine the    */
  4812. /* number of loops to execute.                      */
  4813. /*                                                  */
  4814. /* No more than NLimit = 512000000 loops are allowed*/
  4815. /****************************************************/
  4816.  
  4817.    T[1] = 1.0E+06/(double)loops;
  4818.  
  4819.    TLimit = 2.0;    /* 15.0 */
  4820.    NLimit = 512000000;
  4821.  
  4822.    piref = 3.14159265358979324;
  4823.    one   = 1.0;
  4824.    two   = 2.0;
  4825.    three = 3.0;
  4826.    four  = 4.0;
  4827.    five  = 5.0;
  4828.    scale = one;
  4829.  
  4830. #ifndef SILENT
  4831.    printf("   Module     Error        RunTime      MFLOPS\n");
  4832.    printf("                            (usec)\n");
  4833. #endif
  4834. /*************************/
  4835. /* Initialize the timer. */
  4836. /*************************/
  4837.    
  4838.    dtime(TimeArray);
  4839.    dtime(TimeArray);
  4840.    
  4841. /*******************************************************/
  4842. /* Module 1.  Calculate integral of df(x)/f(x) defined */
  4843. /*            below.  Result is ln(f(1)). There are 14 */
  4844. /*            double precision operations per loop     */
  4845. /*            ( 7 +, 0 -, 6 *, 1 / ) that are included */
  4846. /*            in the timing.                           */
  4847. /*            50.0% +, 00.0% -, 42.9% *, and 07.1% /   */
  4848. /*******************************************************/
  4849.    n = loops;
  4850.    sa = 0.0;
  4851.  
  4852.    while ( sa < TLimit )
  4853.    {
  4854.    n = 2 * n;
  4855.    x = one / (double)n;                            /*********************/
  4856.    s = 0.0;                                        /*  Loop 1.          */
  4857.    v = 0.0;                                        /*********************/
  4858.    w = one;
  4859.  
  4860.       dtime(TimeArray);
  4861.       for( i = 1 ; i <= n-1 ; i++ )
  4862.       {
  4863.       v = v + w;
  4864.       u = v * x;
  4865.       s = s + (D1+u*(D2+u*D3))/(w+u*(D1+u*(E2+u*E3)));
  4866.       }
  4867.       dtime(TimeArray);
  4868.       sa = TimeArray[1];
  4869.  
  4870.    if ( n >= NLimit ) break;
  4871.    /* printf(" %10ld  %12.5lf\n",n,sa); */
  4872.    }
  4873.  
  4874.    scale = 1.0E+06 / (double)n;
  4875.    T[1]  = scale;
  4876.  
  4877. /****************************************/
  4878. /* Estimate nulltime ('for' loop time). */
  4879. /****************************************/
  4880.    dtime(TimeArray);
  4881.    for( i = 1 ; i <= n-1 ; i++ )
  4882.    {
  4883.    }
  4884.    dtime(TimeArray);
  4885.    nulltime = T[1] * TimeArray[1];
  4886.    if ( nulltime < 0.0 ) nulltime = 0.0;
  4887.  
  4888.    T[2] = T[1] * sa - nulltime;
  4889.  
  4890.    sa = (D1+D2+D3)/(one+D1+E2+E3);
  4891.    sb = D1;
  4892.  
  4893.    T[3] = T[2] / 14.0;                             /*********************/
  4894.    sa = x * ( sa + sb + two * s ) / two;           /* Module 1 Results. */
  4895.    sb = one / sa;                                  /*********************/
  4896.    n  = (long)( (double)( 40000 * (long)sb ) / scale );
  4897.    sc = sb - 25.2;
  4898.    T[4] = one / T[3];
  4899.                                                     /********************/
  4900.                                                     /*  DO NOT REMOVE   */
  4901.                                                     /*  THIS PRINTOUT!  */
  4902.                                                     /********************/
  4903. #ifndef SILENT
  4904.    printf("     1   %13.4le  %10.4lf  %10.4lf\n",sc,T[2],T[4]);
  4905. #endif
  4906.  
  4907.    m = n;
  4908.  
  4909. /*******************************************************/
  4910. /* Module 2.  Calculate value of PI from Taylor Series */
  4911. /*            expansion of atan(1.0).  There are 7     */
  4912. /*            double precision operations per loop     */
  4913. /*            ( 3 +, 2 -, 1 *, 1 / ) that are included */
  4914. /*            in the timing.                           */
  4915. /*            42.9% +, 28.6% -, 14.3% *, and 14.3% /   */
  4916. /*******************************************************/
  4917.  
  4918.    s  = -five;                                      /********************/
  4919.    sa = -one;                                       /* Loop 2.          */
  4920.                                                     /********************/
  4921.    dtime(TimeArray);
  4922.    for ( i = 1 ; i <= m ; i++ )
  4923.    {
  4924.    s  = -s;
  4925.    sa = sa + s;
  4926.    }
  4927.    dtime(TimeArray);
  4928.    T[5] = T[1] * TimeArray[1];
  4929.    if ( T[5] < 0.0 ) T[5] = 0.0;
  4930.  
  4931.    sc   = (double)m;
  4932.  
  4933.    u = sa;                                         /*********************/
  4934.    v = 0.0;                                        /* Loop 3.           */
  4935.    w = 0.0;                                        /*********************/
  4936.    x = 0.0;
  4937.  
  4938.    dtime(TimeArray);
  4939.    for ( i = 1 ; i <= m ; i++)
  4940.    {
  4941.    s  = -s;
  4942.    sa = sa + s;
  4943.    u  = u + two;
  4944.    x  = x +(s - u);
  4945.    v  = v - s * u;
  4946.    w  = w + s / u;
  4947.    }
  4948.    dtime(TimeArray);
  4949.    T[6] = T[1] * TimeArray[1];
  4950.  
  4951.    T[7] = ( T[6] - T[5] ) / 7.0;                   /*********************/
  4952.    m  = (long)( sa * x  / sc );                    /*  PI Results       */
  4953.    sa = four * w / five;                           /*********************/
  4954.    sb = sa + five / v;
  4955.    sc = 31.25;
  4956.    piprg = sb - sc / (v * v * v);
  4957.    pierr = piprg - piref;
  4958.    T[8]  = one  / T[7];
  4959.                                                    /*********************/
  4960.                                                    /*   DO NOT REMOVE   */
  4961.                                                    /*   THIS PRINTOUT!  */
  4962.                                                    /*********************/
  4963. #ifndef SILENT
  4964.    printf("     2   %13.4le  %10.4lf  %10.4lf\n",pierr,T[6]-T[5],T[8]);
  4965. #endif
  4966.  
  4967. /*******************************************************/
  4968. /* Module 3.  Calculate integral of sin(x) from 0.0 to */
  4969. /*            PI/3.0 using Trapazoidal Method. Result  */
  4970. /*            is 0.5. There are 17 double precision    */
  4971. /*            operations per loop (6 +, 2 -, 9 *, 0 /) */
  4972. /*            included in the timing.                  */
  4973. /*            35.3% +, 11.8% -, 52.9% *, and 00.0% /   */
  4974. /*******************************************************/
  4975.  
  4976.    x = piref / ( three * (double)m );              /*********************/
  4977.    s = 0.0;                                        /*  Loop 4.          */
  4978.    v = 0.0;                                        /*********************/
  4979.  
  4980.    dtime(TimeArray);
  4981.    for( i = 1 ; i <= m-1 ; i++ )
  4982.    {
  4983.    v = v + one;
  4984.    u = v * x;
  4985.    w = u * u;
  4986.    s = s + u * ((((((A6*w-A5)*w+A4)*w-A3)*w+A2)*w+A1)*w+one);
  4987.    }
  4988.    dtime(TimeArray);
  4989.    T[9]  = T[1] * TimeArray[1] - nulltime;
  4990.  
  4991.    u  = piref / three;
  4992.    w  = u * u;
  4993.    sa = u * ((((((A6*w-A5)*w+A4)*w-A3)*w+A2)*w+A1)*w+one);
  4994.  
  4995.    T[10] = T[9] / 17.0;                            /*********************/
  4996.    sa = x * ( sa + two * s ) / two;                /* sin(x) Results.   */
  4997.    sb = 0.5;                                       /*********************/
  4998.    sc = sa - sb;
  4999.    T[11] = one / T[10];
  5000.                                                    /*********************/
  5001.                                                    /*   DO NOT REMOVE   */
  5002.                                                    /*   THIS PRINTOUT!  */
  5003.                                                    /*********************/
  5004. #ifndef SILENT
  5005.    printf("     3   %13.4le  %10.4lf  %10.4lf\n",sc,T[9],T[11]);
  5006. #endif
  5007.  
  5008. /************************************************************/
  5009. /* Module 4.  Calculate Integral of cos(x) from 0.0 to PI/3 */
  5010. /*            using the Trapazoidal Method. Result is       */
  5011. /*            sin(PI/3). There are 15 double precision      */
  5012. /*            operations per loop (7 +, 0 -, 8 *, and 0 / ) */
  5013. /*            included in the timing.                       */
  5014. /*            50.0% +, 00.0% -, 50.0% *, 00.0% /            */
  5015. /************************************************************/
  5016.    A3 = -A3;
  5017.    A5 = -A5;
  5018.    x = piref / ( three * (double)m );              /*********************/
  5019.    s = 0.0;                                        /*  Loop 5.          */
  5020.    v = 0.0;                                        /*********************/
  5021.  
  5022.    dtime(TimeArray);
  5023.    for( i = 1 ; i <= m-1 ; i++ )
  5024.    {
  5025.    u = (double)i * x;
  5026.    w = u * u;
  5027.    s = s + w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5028.    }
  5029.    dtime(TimeArray);
  5030.    T[12]  = T[1] * TimeArray[1] - nulltime;
  5031.  
  5032.    u  = piref / three;
  5033.    w  = u * u;
  5034.    sa = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5035.  
  5036.    T[13] = T[12] / 15.0;                             /*******************/
  5037.    sa = x * ( sa + one + two * s ) / two;            /* Module 4 Result */
  5038.    u  = piref / three;                               /*******************/
  5039.    w  = u * u;
  5040.    sb = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+A0);
  5041.    sc = sa - sb;
  5042.    T[14] = one / T[13];
  5043.                                                    /*********************/
  5044.                                                    /*   DO NOT REMOVE   */
  5045.                                                    /*   THIS PRINTOUT!  */
  5046.                                                    /*********************/
  5047. #ifndef SILENT
  5048.    printf("     4   %13.4le  %10.4lf  %10.4lf\n",sc,T[12],T[14]);
  5049. #endif
  5050.  
  5051. /************************************************************/
  5052. /* Module 5.  Calculate Integral of tan(x) from 0.0 to PI/3 */
  5053. /*            using the Trapazoidal Method. Result is       */
  5054. /*            ln(cos(PI/3)). There are 29 double precision  */
  5055. /*            operations per loop (13 +, 0 -, 15 *, and 1 /)*/
  5056. /*            included in the timing.                       */
  5057. /*            46.7% +, 00.0% -, 50.0% *, and 03.3% /        */
  5058. /************************************************************/
  5059.  
  5060.    x = piref / ( three * (double)m );              /*********************/
  5061.    s = 0.0;                                        /*  Loop 6.          */
  5062.    v = 0.0;                                        /*********************/
  5063.  
  5064.    dtime(TimeArray);
  5065.    for( i = 1 ; i <= m-1 ; i++ )
  5066.    {
  5067.    u = (double)i * x;
  5068.    w = u * u;
  5069.    v = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5070.    s = s + v / (w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one);
  5071.    }
  5072.    dtime(TimeArray);
  5073.    T[15]  = T[1] * TimeArray[1] - nulltime;
  5074.  
  5075.    u  = piref / three;
  5076.    w  = u * u;
  5077.    sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5078.    sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5079.    sa = sa / sb;
  5080.  
  5081.    T[16] = T[15] / 29.0;                             /*******************/
  5082.    sa = x * ( sa + two * s ) / two;                  /* Module 5 Result */
  5083.    sb = 0.6931471805599453;                          /*******************/
  5084.    sc = sa - sb;
  5085.    T[17] = one / T[16];
  5086.                                                    /*********************/
  5087.                                                    /*   DO NOT REMOVE   */
  5088.                                                    /*   THIS PRINTOUT!  */
  5089.                                                    /*********************/
  5090. #ifndef SILENT
  5091.    printf("     5   %13.4le  %10.4lf  %10.4lf\n",sc,T[15],T[17]);
  5092. #endif
  5093.  
  5094. /************************************************************/
  5095. /* Module 6.  Calculate Integral of sin(x)*cos(x) from 0.0  */
  5096. /*            to PI/4 using the Trapazoidal Method. Result  */
  5097. /*            is sin(PI/4)^2. There are 29 double precision */
  5098. /*            operations per loop (13 +, 0 -, 16 *, and 0 /)*/
  5099. /*            included in the timing.                       */
  5100. /*            46.7% +, 00.0% -, 53.3% *, and 00.0% /        */
  5101. /************************************************************/
  5102.  
  5103.    x = piref / ( four * (double)m );               /*********************/
  5104.    s = 0.0;                                        /*  Loop 7.          */
  5105.    v = 0.0;                                        /*********************/
  5106.  
  5107.    dtime(TimeArray);
  5108.    for( i = 1 ; i <= m-1 ; i++ )
  5109.    {
  5110.    u = (double)i * x;
  5111.    w = u * u;
  5112.    v = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5113.    s = s + v*(w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one);
  5114.    }
  5115.    dtime(TimeArray);
  5116.    T[18]  = T[1] * TimeArray[1] - nulltime;
  5117.  
  5118.    u  = piref / four;
  5119.    w  = u * u;
  5120.    sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5121.    sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5122.    sa = sa * sb;
  5123.  
  5124.    T[19] = T[18] / 29.0;                             /*******************/
  5125.    sa = x * ( sa + two * s ) / two;                  /* Module 6 Result */
  5126.    sb = 0.25;                                        /*******************/
  5127.    sc = sa - sb;
  5128.    T[20] = one / T[19];
  5129.                                                    /*********************/
  5130.                                                    /*   DO NOT REMOVE   */
  5131.                                                    /*   THIS PRINTOUT!  */
  5132.                                                    /*********************/
  5133. #ifndef SILENT
  5134.    printf("     6   %13.4le  %10.4lf  %10.4lf\n",sc,T[18],T[20]);
  5135. #endif
  5136.  
  5137. /*******************************************************/
  5138. /* Module 7.  Calculate value of the definite integral */
  5139. /*            from 0 to sa of 1/(x+1), x/(x*x+1), and  */
  5140. /*            x*x/(x*x*x+1) using the Trapizoidal Rule.*/
  5141. /*            There are 12 double precision operations */
  5142. /*            per loop ( 3 +, 3 -, 3 *, and 3 / ) that */
  5143. /*            are included in the timing.              */
  5144. /*            25.0% +, 25.0% -, 25.0% *, and 25.0% /   */
  5145. /*******************************************************/
  5146.  
  5147.                                                    /*********************/
  5148.    s = 0.0;                                        /* Loop 8.           */
  5149.    w = one;                                        /*********************/
  5150.    sa = 102.3321513995275;
  5151.    v = sa / (double)m;
  5152.  
  5153.    dtime(TimeArray);
  5154.    for ( i = 1 ; i <= m-1 ; i++)
  5155.    {
  5156.    x = (double)i * v;
  5157.    u = x * x;
  5158.    s = s - w / ( x + w ) - x / ( u + w ) - u / ( x * u + w );
  5159.    }
  5160.    dtime(TimeArray);
  5161.    T[21] = T[1] * TimeArray[1] - nulltime;
  5162.                                                    /*********************/
  5163.                                                    /* Module 7 Results  */
  5164.                                                    /*********************/
  5165.    T[22] = T[21] / 12.0;                                  
  5166.    x  = sa;                                      
  5167.    u  = x * x;
  5168.    sa = -w - w / ( x + w ) - x / ( u + w ) - u / ( x * u + w );
  5169.    sa = 18.0 * v * (sa + two * s );
  5170.  
  5171.    m  = -2000 * (long)sa;
  5172.    m = (long)( (double)m / scale );
  5173.  
  5174.    sc = sa + 500.2;
  5175.    T[23] = one / T[22];
  5176.                                                    /********************/
  5177.                                                    /*  DO NOT REMOVE   */
  5178.                                                    /*  THIS PRINTOUT!  */
  5179.                                                    /********************/
  5180. #ifndef SILENT
  5181.    printf("     7   %13.4le  %10.4lf  %10.4lf\n",sc,T[21],T[23]);
  5182. #endif
  5183.  
  5184. /************************************************************/
  5185. /* Module 8.  Calculate Integral of sin(x)*cos(x)*cos(x)    */
  5186. /*            from 0 to PI/3 using the Trapazoidal Method.  */
  5187. /*            Result is (1-cos(PI/3)^3)/3. There are 30     */
  5188. /*            double precision operations per loop included */
  5189. /*            in the timing:                                */
  5190. /*               13 +,     0 -,    17 *          0 /        */
  5191. /*            46.7% +, 00.0% -, 53.3% *, and 00.0% /        */
  5192. /************************************************************/
  5193.  
  5194.    x = piref / ( three * (double)m );              /*********************/
  5195.    s = 0.0;                                        /*  Loop 9.          */
  5196.    v = 0.0;                                        /*********************/
  5197.  
  5198.    dtime(TimeArray);
  5199.    for( i = 1 ; i <= m-1 ; i++ )
  5200.    {
  5201.    u = (double)i * x;
  5202.    w = u * u;
  5203.    v = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5204.    s = s + v*v*u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5205.    }
  5206.    dtime(TimeArray);
  5207.    T[24]  = T[1] * TimeArray[1] - nulltime;
  5208.  
  5209.    u  = piref / three;
  5210.    w  = u * u;
  5211.    sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one);
  5212.    sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one;
  5213.    sa = sa * sb * sb;
  5214.  
  5215.    T[25] = T[24] / 30.0;                             /*******************/
  5216.    sa = x * ( sa + two * s ) / two;                  /* Module 8 Result */
  5217.    sb = 0.29166666666666667;                         /*******************/
  5218.    sc = sa - sb;
  5219.    T[26] = one / T[25];
  5220.                                                    /*********************/
  5221.                                                    /*   DO NOT REMOVE   */
  5222.                                                    /*   THIS PRINTOUT!  */
  5223.                                                    /*********************/
  5224. #ifndef SILENT
  5225.    printf("     8   %13.4le  %10.4lf  %10.4lf\n",sc,T[24],T[26]);
  5226. #endif
  5227.  
  5228. /**************************************************/   
  5229. /* MFLOPS(1) output. This is the same weighting   */
  5230. /* used for all previous versions of the flops.c  */
  5231. /* program. Includes Modules 2 and 3 only.        */
  5232. /**************************************************/ 
  5233.    T[27] = ( five * (T[6] - T[5]) + T[9] ) / 52.0;
  5234.    T[28] = one  / T[27];
  5235.  
  5236. /**************************************************/   
  5237. /* MFLOPS(2) output. This output does not include */
  5238. /* Module 2, but it still does 9.2% FDIV's.       */
  5239. /**************************************************/ 
  5240.    T[29] = T[2] + T[9] + T[12] + T[15] + T[18];
  5241.    T[29] = (T[29] + four * T[21]) / 152.0;
  5242.    T[30] = one / T[29];
  5243.  
  5244. /**************************************************/   
  5245. /* MFLOPS(3) output. This output does not include */
  5246. /* Module 2, but it still does 3.4% FDIV's.       */
  5247. /**************************************************/ 
  5248.    T[31] = T[2] + T[9] + T[12] + T[15] + T[18];
  5249.    T[31] = (T[31] + T[21] + T[24]) / 146.0;
  5250.    T[32] = one / T[31];
  5251.  
  5252. /**************************************************/   
  5253. /* MFLOPS(4) output. This output does not include */
  5254. /* Module 2, and it does NO FDIV's.               */
  5255. /**************************************************/ 
  5256.    T[33] = (T[9] + T[12] + T[18] + T[24]) / 91.0;
  5257.    T[34] = one / T[33];
  5258.  
  5259.  
  5260. #ifndef SILENT
  5261.    printf("\n");
  5262.    printf("   Iterations      = %10ld\n",m);
  5263.    printf("   NullTime (usec) = %10.4lf\n",nulltime);
  5264.    printf("   MFLOPS(1)       = %10.4lf\n",T[28]);
  5265.    printf("   MFLOPS(2)       = %10.4lf\n",T[30]);
  5266.    printf("   MFLOPS(3)       = %10.4lf\n",T[32]);
  5267.    printf("   MFLOPS(4)       = %10.4lf\n\n",T[34]);
  5268. #else
  5269.    { char out[256];
  5270.  
  5271.      sprintf(out, "Set ArmSI$Flops %10ld %10.4lf\n", m, nulltime);
  5272.      system(out);
  5273.      sprintf(out, "Set ArmSI$Flops1 %10.4lf\n", T[28]);
  5274.      system(out);
  5275.      sprintf(out, "Set ArmSI$Flops2 %10.4lf\n", T[30]);
  5276.      system(out);
  5277.      sprintf(out, "Set ArmSI$Flops3 %10.4lf\n", T[32]);
  5278.      system(out);
  5279.      sprintf(out, "Set ArmSI$Flops4 %10.4lf\n", T[34]);
  5280.      system(out);
  5281.    }
  5282. #endif
  5283.  
  5284. }
  5285.  
  5286. /*****************************************************/
  5287. /* Various timer routines.                           */
  5288. /* Al Aburto, aburto@marlin.nosc.mil, 20 Dec 1992    */
  5289. /*                                                   */
  5290. /* dtime(p) outputs the elapsed time seconds in p[1] */
  5291. /* from a call of dtime(p) to the next call of       */
  5292. /* dtime(p).  Use CAUTION as some of these routines  */
  5293. /* will mess up when timing across the hour mark!!!  */
  5294. /*                                                   */
  5295. /* For timing I use the 'user' time whenever         */
  5296. /* possible. Using 'user+sys' time is a separate     */
  5297. /* issue.                                            */
  5298. /*                                                   */
  5299. /*****************************************************/
  5300.  
  5301. /*********************************/
  5302. /* Timer code.                   */
  5303. /*********************************/
  5304. /*******************/
  5305. /*  Amiga dtime()  */
  5306. /*******************/
  5307. #ifdef Amiga
  5308. #include <ctype.h>
  5309. #define HZ 50
  5310.  
  5311. dtime(p)
  5312. double p[];
  5313. {
  5314.    double q;
  5315.  
  5316.    struct   tt {
  5317.       long  days;
  5318.       long  minutes;
  5319.       long  ticks;
  5320.    } tt;
  5321.  
  5322.    q = p[2];
  5323.  
  5324.    DateStamp(&tt);
  5325.  
  5326.    p[2] = ( (double)(tt.ticks + (tt.minutes * 60L * 50L)) ) / (double)HZ;
  5327.    p[1] = p[2] - q;
  5328.    
  5329.    return 0;
  5330. }
  5331. #endif
  5332.  
  5333. /*****************************************************/
  5334. /*  UNIX dtime(). This is the preferred UNIX timer.  */
  5335. /*  Provided by: Markku Kolkka, mk59200@cc.tut.fi    */
  5336. /*  HP-UX Addition by: Bo Thide', bt@irfu.se         */
  5337. /*****************************************************/
  5338. #ifdef UNIX
  5339. #include <sys/time.h>
  5340. #include <sys/resource.h>
  5341.  
  5342. #ifdef hpux
  5343. #include <sys/syscall.h>
  5344. #define getrusage(a,b) syscall(SYS_getrusage,a,b)
  5345. #endif
  5346.  
  5347. struct rusage rusage;
  5348.  
  5349. dtime(p)
  5350. double p[];
  5351. {
  5352.    double q;
  5353.  
  5354.    q = p[2];
  5355.  
  5356.    getrusage(RUSAGE_SELF,&rusage);
  5357.  
  5358.    p[2] = (double)(rusage.ru_utime.tv_sec);
  5359.    p[2] = p[2] + (double)(rusage.ru_utime.tv_usec) * 1.0e-06;
  5360.    p[1] = p[2] - q;
  5361.    
  5362.    return 0;
  5363. }
  5364. #endif
  5365.  
  5366. /***************************************************/
  5367. /*  UNIX_Old dtime(). This is the old UNIX timer.  */
  5368. /*  Use only if absolutely necessary as HZ may be  */
  5369. /*  ill defined on your system.                    */
  5370. /***************************************************/
  5371. #ifdef UNIX_Old
  5372. #include <sys/types.h>
  5373. #include <sys/times.h>
  5374. #include <sys/param.h>
  5375.  
  5376. #ifndef HZ
  5377. #define HZ 60
  5378. #endif
  5379.  
  5380. struct tms tms;
  5381.  
  5382. dtime(p)
  5383. double p[];
  5384. {
  5385.    double q;
  5386.  
  5387.    q = p[2];
  5388.  
  5389.    times(&tms);
  5390.  
  5391.    p[2] = (double)(tms.tms_utime) / (double)HZ;
  5392.    p[1] = p[2] - q;
  5393.    
  5394.    return 0;
  5395. }
  5396. #endif
  5397.  
  5398. /*********************************************************/
  5399. /*  VMS dtime() for VMS systems.                         */
  5400. /*  Provided by: RAMO@uvphys.phys.UVic.CA                */
  5401. /*  Some people have run into problems with this timer.  */
  5402. /*********************************************************/
  5403. #ifdef VMS
  5404. #include time
  5405.  
  5406. #ifndef HZ
  5407. #define HZ 100
  5408. #endif
  5409.  
  5410. struct tbuffer_t
  5411.        {
  5412.         int proc_user_time;
  5413.         int proc_system_time;
  5414.         int child_user_time;
  5415.         int child_system_time;
  5416.        };
  5417. struct tbuffer_t tms;
  5418.  
  5419. dtime(p)
  5420. double p[];
  5421. {
  5422.    double q;
  5423.  
  5424.    q = p[2];
  5425.  
  5426.    times(&tms);
  5427.  
  5428.    p[2] = (double)(tms.proc_user_time) / (double)HZ;
  5429.    p[1] = p[2] - q;
  5430.    
  5431.    return 0;
  5432. }
  5433. #endif
  5434.  
  5435. /******************************/
  5436. /*  BORLAND C dtime() for DOS */
  5437. /******************************/
  5438. #ifdef BORLAND_C
  5439. #include <ctype.h>
  5440. #include <dos.h>
  5441. #include <time.h>
  5442.  
  5443. #define HZ 100
  5444. struct time tnow;
  5445.  
  5446. dtime(p)
  5447. double p[];
  5448. {
  5449.    double q;
  5450.  
  5451.    q = p[2];
  5452.  
  5453.    gettime(&tnow);
  5454.  
  5455.    p[2] = 60.0 * (double)(tnow.ti_min);
  5456.    p[2] = p[2] + (double)(tnow.ti_sec);
  5457.    p[2] = p[2] + (double)(tnow.ti_hund)/(double)HZ;
  5458.    p[1] = p[2] - q;
  5459.    
  5460.    return 0;
  5461. }
  5462. #endif
  5463.  
  5464. /**************************************/
  5465. /*  Microsoft C (MSC) dtime() for DOS */
  5466. /**************************************/
  5467. #ifdef MSC
  5468. #include <time.h>
  5469. #include <ctype.h>
  5470.  
  5471. /* #define HZ CLK_TCK  */
  5472. clock_t tnow;
  5473.  
  5474. dtime(p)
  5475. double p[];
  5476. {
  5477.    double q;
  5478.  
  5479.    q = p[2];
  5480.  
  5481.    tnow = clock();
  5482.  
  5483.    p[2] = (double)tnow / 100.0;
  5484.    p[1] = p[2] - q;
  5485.    
  5486.    return 0;
  5487. }
  5488. #endif
  5489.  
  5490. /*************************************/
  5491. /*  Macintosh (MAC) Think C dtime()  */
  5492. /*************************************/
  5493. #ifdef MAC
  5494. #include <time.h>
  5495.  
  5496. #define HZ 60
  5497.  
  5498. dtime(p)
  5499. double p[];
  5500. {
  5501.    double q;
  5502.  
  5503.    q = p[2];
  5504.  
  5505.    p[2] = (double)clock() / (double)HZ;
  5506.    p[1] = p[2] - q;
  5507.    
  5508.    return 0;
  5509. }
  5510. #endif
  5511.  
  5512. /************************************************************/
  5513. /*  iPSC/860 (IPSC) dtime() for i860.                       */
  5514. /*  Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU  */
  5515. /************************************************************/
  5516. #ifdef IPSC
  5517. extern double dclock();
  5518.  
  5519. dtime(p)
  5520. double p[];
  5521. {
  5522.    double q;
  5523.  
  5524.    q = p[2];
  5525.  
  5526.    p[2] = dclock();
  5527.    p[1] = p[2] - q;
  5528.    
  5529.    return 0;
  5530. }
  5531. #endif
  5532.  
  5533. /**************************************************/
  5534. /*  FORTRAN dtime() for Cray type systems.        */
  5535. /*  This is the preferred timer for Cray systems. */
  5536. /**************************************************/
  5537. #ifdef FORTRAN_SEC
  5538.  
  5539. fortran double second();
  5540.  
  5541. dtime(p)
  5542. double p[];
  5543. {
  5544.    double q,v;
  5545.  
  5546.    q = p[2];
  5547.  
  5548.    second(&v);
  5549.    p[2] = v;
  5550.    p[1] = p[2] - q;
  5551.    
  5552.    return 0;
  5553. }
  5554. #endif
  5555.  
  5556. /***********************************************************/
  5557. /*  UNICOS C dtime() for Cray UNICOS systems.  Don't use   */
  5558. /*  unless absolutely necessary as returned time includes  */
  5559. /*  'user+system' time.  Provided by: R. Mike Dority,      */
  5560. /*  dority@craysea.cray.com                                */
  5561. /***********************************************************/
  5562. #ifdef CTimer
  5563. #include <time.h>
  5564.  
  5565. dtime(p)
  5566. double p[];
  5567. {
  5568.    double    q;
  5569.    clock_t   t;
  5570.  
  5571.        q = p[2];
  5572.  
  5573.        t = clock();
  5574.  
  5575.        p[2] = (double)t / (double)CLOCKS_PER_SEC;
  5576.        p[1] = p[2] - q;
  5577.  
  5578.        return 0;
  5579. }
  5580. #endif
  5581.  
  5582. /********************************************/
  5583. /* Another UNIX timer using gettimeofday(). */
  5584. /* However, getrusage() is preferred.       */
  5585. /********************************************/
  5586. #ifdef GTODay
  5587. #include <sys/time.h>
  5588.  
  5589. struct timeval tnow;
  5590.  
  5591. dtime(p)
  5592. double p[];
  5593. {
  5594.    double q;
  5595.  
  5596.    q = p[2];
  5597.  
  5598.    gettimeofday(&tnow,NULL);
  5599.    p[2] = (double)tnow.tv_sec + (double)tnow.tv_usec * 1.0e-6;
  5600.    p[1] = p[2] - q;
  5601.  
  5602.    return 0;
  5603. }
  5604. #endif
  5605.  
  5606. /*****************************************************/
  5607. /*  Fujitsu UXP/M timer.                             */
  5608. /*  Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */
  5609. /*****************************************************/
  5610. #ifdef UXPM
  5611. #include <sys/types.h>
  5612. #include <sys/timesu.h>
  5613. struct tmsu rusage;
  5614.  
  5615. dtime(p)
  5616. double p[];
  5617. {
  5618.    double q;
  5619.  
  5620.    q = p[2];
  5621.  
  5622.    timesu(&rusage);
  5623.  
  5624.    p[2] = (double)(rusage.tms_utime) * 1.0e-06;
  5625.    p[1] = p[2] - q;
  5626.    
  5627.    return 0;
  5628. }
  5629. #endif
  5630.  
  5631. /*------------- End flops.c code, say good night Carol! --------------*/
  5632.  
  5633. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     0Nick?ReadMeDÿÿÿROÏ#A3000Dòóÿ0$ŴÎO
  5634. #A3020Dòóÿ <ŵÎ] #A3020_2NDòóÿkŵÎ]#A310DòóÿhHzÎM#A310_NoVidDòóÿ¯‡zÎM#A4Dòóÿ[*◰ÎY#A440_RO3Dòóÿ` |ÎO#A5000Dòóÿ,xŶÎJ#A5000/FPADòóÿ§◰ãÎ>$A5000/FPAvDòóÿàãÎ>$A5000iDòóÿÎÎJ$A5000i_3NDòóÿ
  5635. €ÎÎJ$A500_No1Dòóÿ.D☓ÎN    $A500_No2Dòóÿ‹☓ÎN $?ReadMeDÿÿÿROÏ#A3000Dòóÿ0$ŴÎO
  5636. #A3020Dòóÿ <ŵÎ] #A3020_2NDòóÿkŵÎ]#A310DòóÿhHzÎM#A310_NoVidDòóÿ¯‡zÎM#A4Dòóÿ[*◰ÎY#A440_RO3Dòóÿ` |ÎO#A5000Dòóÿ,xŶÎJ#A5000/FPADòóÿ§◰ãÎ>$A5000/FPAvDòóÿàãÎ>$A5000iDòóÿÎÎJ$A5000i_3NDòóÿ
  5637. €ÎÎJ$A500_No1Dòóÿ.D☓ÎN    $A500_No2Dòóÿ‹☓ÎN $ExamplesExamples0NickªThese example !ArmSI files were compiled mostly by Owen Smith - thanks Owen!
  5638. Please send me any interesting figures you get.
  5639.  
  5640. All timings were done in Mode 12 except on the A4, where only Mode 27 makes
  5641. sense. On RISC OS 2 timings were done with SharedCLibrary 3.75 and
  5642. FPEmulator 2.80 since these are now the definitive versions.
  5643.  
  5644. All of the machines are as shipped by Acorn when new except the A440/1 which
  5645. has RISC OS 3.10 in it and both of the A500s. (A standard A500 is RISC OS
  5646. 2.00, MEMC1, ARM2, 8MHz memory. One of them is RISC OS 3.10, MEMC1a, 20MHz
  5647. ARM3, 8MHz memory and the other is  RISC OS 3.10, MEMC1a, 20MHz ARM3, 10MHz
  5648. memory.) The A5000i is my machine (Nick's) and has turbo'd ARM3 and RAM.
  5649. The A5000/FPA is Mike Borcherds'. 
  5650.  
  5651. File       Description                          MIPS     FLOPS    Dhrys   SI
  5652. =============================================================================
  5653. A310       ARM2,MEMC1,RO2                       4.76     22400    4500    1.0
  5654. A310_NoVid As above, no video DMA               4.76     22900    5700    1.1
  5655. A3000      ARM2,MEMC1a,RO2                      4.85     24150    4800    1.1
  5656. A440_RO3   ARM2,MEMC1a,RO3.1                    4.85     15600    4500    1.1
  5657. A3020      ARM250,RO3.11                        7.23     16600    6100    1.6
  5658. A3020_2N   As above, 2N-cycles ROM              7.23     25100    7200    1.7
  5659. A500_No1   20 MHz ARM3,RO3.1,8MHz RAM           10.50    64500    12400   2.6
  5660. A500_No2   As above, 10MHz RAM                  11.01    65800    13700   2.9
  5661. A4         ARM3,RO3.1,Mode 27                   13.33    77900    16300   3.4
  5662. A5000      ARM3,RO3.1                           13.60    78200    16900   3.5
  5663. A5000/FPA  As above, FPA chip                   13.69  2244000    17000   3.5
  5664. A5000/FPAv As above, No video DMA               13.69  2490000    19000   3.8
  5665. A5000i     30MHz ARM3,16.66MHz RAM              16.95    94900    21900   4.5
  5666. A5000i_3N  As above, 3N-cycle ROM, No video     16.95   103100    23800   4.7
  5667. =============================================================================
  5668. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX00.2 SO CSIR ,1/024A lanigirO@ @@@n⇦€Ùt9l€]i+0r€>·v€' ‡t€iè´Vu€«­p t€CÕ‹yt€XböCv€¿3¿gt€þ¢v€0OD2u€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€®GáB◰€¸Ŷk€
  5669. ×£pŴ€ìQ¸€€\•ÂUŴ€R¸M◰€Ãõ(\€
  5670. ×£pŴ€®G!€€ŶëQXŴ@@@@@@€ŵ€◰€z@€PC−€ÿÿÿ☓€þÿÿ}€Ø'€333◰€®GáŴ€è´Ŵ€
  5671. ^Nŵ€Í⇧Ŵ€ö‰©Ŵ€Ŵ€Ŵ€ÔcŴ€Í⇧Ŵ€◰4HŴ€Ŵ@€‘~gy€€ffæN⇦€™@ÿÿÿÿ€ŷ`Z    Ŵ€À?a‹€À?a‹@N@ÿÿÿÿ@<ä@=º@>@>@A@@ä@A@:S@'Í@<p@=:@3X@*ñ@&¦@/µ@=2@2`@0è@0j@)¦@1J@1@.o@-¾@3@3æ@(j@)@.o@-¾@+Ù@8ï@9™@9£@9M@È@@@)8891 tcO 50( 00.2 SO CSIR@@#)9891 beF 42( 08.2v ,rotalumEPF dlO@@@@+)S/bM 9.3 ,zH 0.05 ,ppb 4 ,652x046( 21 edoM@ÿÿÿÿ@@ÿÿÿÿ@@@ÿÿÿÿ€ê–~i€€™€€io{€t$–z€$¹ü{€°ç { WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX+11.3 SO CSIR ,BM4 ,0004/0203/0103A dednapxE@ @@@nL€½7l€±Hoq€Ã@×>u€Ã@×>s€‹p!u€ºDõVs€Ì<¹&t€¸RÏv€Ñ:ªt€¨Ù-u€±Hot€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€{®☓€3333€€=
  5672. ×3ŵ€ázn€€ö(\ŵ€Ŷë☓€•Âõ(€€R¸5ŵ€\•Âu€€Ŷë!ŵ@ú@@@@@€@ŵ€◰€»À&@€@iŒ€flÒb)☓€ÙM)W|€ŵÀ¸2€ö(\g◰€•ÂõhŴ€ó⇧%?Ŵ€¼†Bŵ€¤ <]Ŵ€qV~BŴ€8Œ:?Ŵ€@Ŵ€fflC*ŵ€´–Ð^Ŵ€i‘FŴ€ÿÿÿ?Ŵ@€ønyŴ€ffæ#⇦€´>™@ÿÿÿÿ€¡QÄ<€€À›€À›@N @ÿÿÿÿ@8@9©@8l@8j@=F@=!@=!@5.@@6î@7¾@,s@+@Ò@(¾@9¼@*@'¿@%ð@ã@&    @&    @p@Y@*@+¦@ ‘@ã@p@Y@„@3[@3m@3Ð@3k@<@ @@)2991 peS 92( 11.3 SO CSIR@N)@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@@ÿÿÿÿ@€@ÿÿÿÿ€>Þã=€€…€€)í>z€ã¥œDz€ /]z€ÐDØpz   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX+11.3 SO CSIR ,BM4 ,0004/0203/0103A dednapxE@ @@@n…€½7l€±Hoq€¢\?u€=°ã?s€‹p!u€@ÕèUs€Ì<¹&t€¸RÏv€‰r0t€Ê½À,u€±Hot€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€{®☓€3333€€)\•2ŵ€ázn€€ ŵ€Ŷë☓€•Âõ(€€=
  5673. ×3ŵ€\•Âu€€
  5674. ×£ ŵ@ú@@@@@€ŵ€◰€»À&@€@iŒ€flÒb)☓€ÙM)W|€ŵÀ¸2€q=
  5675. g◰€•ÂõhŴ€ó⇧%?Ŵ€¼†Bŵ€”Ŵ§[Ŵ€qV~BŴ€ÈeÅ@Ŵ€@Ŵ€fflC*ŵ€¤ <]Ŵ€i‘FŴ€ÿÿÿ?Ŵ@€¸þ:Ŵ€
  5676. ⇦€33sb™@ÿÿÿÿ€|
  5677. ÍŴ€ñU‹€ñU‹@N @ÿÿÿÿ@>j@?k@?@?@Bh@B6@B6@<¥@+™@=°@>P@6r@-Ã@*°@3á@?[@5W@3Ä@3’@.`@3Ô@3Ô@(¸@(@5k@6@$*@.^@(¼@(@,Ù@;g@;⇨@;À@;⇨@<@ @@)2991 peS 92( 11.3 SO CSIR@N)@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@@ÿÿÿÿ@€@ÿÿÿÿ€⇩‡Ø    Ŵ€™€Éå?ŵ€Þq⇩{€$–ÿ{€à-‘ {€>èÙ,{   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX.2 SO CSIR ,013A lanigirO@ @@@n☓€½7l€ B2r€vÝ[w€””&%t€®#Yu€­×ô t€ï†zt€+ŵÿ-w€½7u€7Óv€¦Z 3u€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€
  5678. ×£@◰€¸Ŷk~€ö(\OŴ€Ãõ(€€HázTŴ€×£pM◰€\•Âu~€ö(\OŴ€Ãõ(€€q=
  5679. WŴ@@@@@@€ŵ€◰€z@€PC−€ÿÿÿ☓€þÿÿ}€Ø'€ŶëQ◰€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ@€4ñäh€€Œ−−]⇦€ÍÌ™@ÿÿÿÿ€oV}~€€@"›€@"›@N @ÿÿÿÿ@;¶@<@=7@=8@@…@@]@@⇧@7@$@8&@9b@*X@!¾@ê@$Z@7à@*w@'+@.`@$ï@/¹@/z@.B@-{@*Ç@,@(-@$:@.B@-{@"«@7§@8Ã@8£@8C@È@@@)8891 tcO 50( 00.2 SO CSIR@@#)9891 beF 42( 08.2v ,rotalumEPF dlO@@@@+)S/bM 9.3 ,zH 0.05 ,ppb 4 ,652x046( 21 edoM@ÿÿÿÿ@@ÿÿÿÿ@ @ÿÿÿÿ€>Þã=€€™€€ç§hz€B>èYz€ /]z€ýöu`z   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX.2 SO CSIR ,013A lanigirO@ @@@n☓€½7l€ B2r€vÝ[w€””&%t€ÐËXu€­×ô t€2Ûzt€3»î-w€&¡ôu€⇧M+v€È>È2u€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€
  5680. ×£@◰€¸Ŷk~€ö(\OŴ€Ãõ(€€HázTŴ€×£pM◰€\•Âu~€ö(\OŴ€Ãõ(€€q=
  5681. WŴ@@@@@@€ŵ€◰€z@€PC−€ÿÿÿ☓€ýÿÿyŵ€0 €ŶëQ◰€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ€Ŵ@€`¬ºŴ€ffæ/⇦€ÍÌ°1™@ÿÿÿÿ€Æª{Ŵ€À§z‹€À§z‹@N @ÿÿÿÿ@;¼@<@=;@=;@@‘@@b@@’@7@&;@8*@9g@+−@$>@ŵ@&s@7ä@+¾@(Ù@/6@'@0U@0@.ô@.O@+ó@-@)¿@&~@.ó@.O@$ï@7¸@8Î@8¨@8H@È@@@)8891 tcO 50( 00.2 SO CSIR@@#)9891 beF 42( 08.2v ,rotalumEPF dlO@@@@+)S/bM 9.3 ,zH 0.05 ,ppb 4 ,652x046( 21 edoM@ÿÿÿÿ@@@ @ÿÿÿÿ€pp€€™€€<NÑ{€;pÎ{€—L {€Çº¸{   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX'01.3 SO CSIR ,BM4 ,elbatrop 4A dednapxE@@X@nL€Ùt9l€o2r€?
  5682. °[t€¿3¿gs€ê Ä}t€Ry¢$s€[h`r€|…äjt€Á™ŵ7s€S^jt€îTKs€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€R¸]◰€Ãõ(Ŵ€=
  5683. ×ŵ€fffŴ€
  5684. ×£Pŵ€ázfŶ€Ãõ(<Ŵ€ŶëQ◰€Ház4Ŵ€R¸u◰@@AV@@@@€@ŵ€◰€»À&@€@iŒ€◰DŶ€Äx%}€`☓€®GU☓€¤p=Jŵ€-ùÅŴ€I‹$)◰€xº5Ŵ€Û¶m[Ŵ€L‡_{Ŵ€333◰€`¼”=◰€Ñ^B;ŵ€Ò ŵ€zfiç◰@€wîèQŵ€vŷ€4~‰@ÿÿÿÿ€ùÎr]ŵ€⇧’€⇧’@N@ÿÿÿÿ@Gŷ@HE@Hê@I@I@I…@I◰@G­@CÔ@G@GÍ@D7@B@@Þ@CR@G”@Dŵ@D@DÇ@BÎ@Eb@E⇨@D_@Da@C?@D'@BÏ@BÀ@Dc@DY@B¶@Gô@H@H @H"@<@ @(H@)2991 rpA 03( 01.3 SO CSIR@×±@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 0.6 ,zH 0.14 ,ppb 4 ,084x046( 72 edoM@@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€0ýÒOŵ€•€¥,C€€Ée|€D⇧lg|€s×r|€’~{|ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,1/044A lanigirO@ @@@n…€½7l€()0r€‹p!v€‹p!t€ºDõVu€­×ô t€2Ûzt€%nDv€Õ«Èht€OU¡v€¦Z 3u€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€®GáB◰€¸Ŷk€ö(\oŴ€ìQ¸€€HázTŴ€R¸M◰€Ãõ(\€áznŴ€®G!€€q=
  5685. WŴ@@@@@@€ŵ€◰€z@€PC−€C¶ó}☓€“RJ!}€¢6(€333◰€®GáŴ€è´Ŵ€
  5686. ^Nŵ€½☓öŴ€ö‰©Ŵ€Ŵ€Ŵ€ÔcŴ€½☓öŴ€◰4HŴ€Ŵ@€þDÁh€€33³]⇦€33ï ™@ÿÿÿÿ€<³q1€€@ *›€@ *›@N @ÿÿÿÿ@5ü@7Ŵ@7@7@;ö@;­@;­@3T@`@4ä@5Ö@(”@-@X@$+@7e@&ª@$@#*@Î@#⇩@#⇩@Ü@Í@&¿@(@
  5687. ⇦@Ì@Ü@Í@¨@1@1A@1£@1A@<@ @@)2991 rpA 03( 01.3 SO CSIR@@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@@ÿÿÿÿ@€@ÿÿÿÿ€-Ð-€€…€€³{ò0z€?ÆÜ5z€oðŶIz€B>èYz WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,BM4 ,0005A@ @@@nL€½7l€v0br€ºDõVt€|zlKs€ª%et€O¨§s€(›Zr€;×÷at€yUg5s€åÊ Zt€ $ s€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€ö(\W◰€ìQ¸Ŵ€ŶëQ(ŵ€\•ÂŴ€ìQ¸nŵ€HázlŶ€)\•BŴ€Ŷë◰€=
  5688. ×CŴ€ìQ¸~◰@@AV@@@@€@ŵ€◰€»À&@€@iŒ€flÒb)☓€ÙM)W|€`☓€Œ−−Y☓€=
  5689. ×Sŵ€ö(\Ŵ€i¬-◰€)OŴ€P⇦³rŴ€©ókŵ€Œ−−◰€>ÔD◰€i/¡=ŵ€}Ë·ŵ€Ïó<◰@€T;pZŵ€ffflŷ€D•@ÿÿÿÿ€N-}^ŵ€"’€"’@N @ÿÿÿÿ@GÅ@Hn@H«@Hñ@Iu@I}@Iz@G}@Cª@G @G–@D0@B @A@C_@G€@D€@CÊ@D@Bý@E]@E@Dn@Db@CË@Cñ@C@CE@Da@D—@B¼@G @Gõ@H@Gï@<@ @@)2991 rpA 03( 01.3 SO CSIR@
  5690. ¨Q@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€ú¥_Zŵ€•€¥,C€€çû©q|€s×r|€Ñ’\~|€oŴ}s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,BM4 ,0005A@ @@@nL€½7l€v0br€ý oVt€ `Js€µFct€O¨§s€4´Xr€;×÷at€yUg5s€åÊ Zt€ $ s€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€ö(\W◰€ Ŵ€Œ−−)ŵ€q=
  5691. Ŵ€ìQ¸nŵ€fffnŶ€=
  5692. ×CŴ€Ŷë◰€=
  5693. ×CŴ€ìQ¸~◰@@AV@@@@€@ŵ€◰€‰£&@€@ŵŒ€DëE)☓€ß„W|€`☓€q=
  5694. [☓€HázTŵ€ö(\Ŵ€nÛ¶-◰€%´–PŴ€F]tŴ€©ókŵ€ÌÌÌ◰€>ÔD◰€i/¡=ŵ€}Ë·ŵ€Ïó<◰@€xçm[ŵ€333kŷ€Œ−Ý•@ÿÿÿÿ€{oG€Ø‘€Ø‘@N @ÿÿÿÿ@-.@5@M¸@M½@Mþ@Mû@Mÿ@Jé@Fä@L„@LÂ@L™@L◰@L‹@LU@L@KÜ@LR@MÖ@M¬@M÷@Mû@Mn@Mr@Iî@IŴ@Je@M¸@Mr@Mr@Kä@Mœ@M­@M±@M¶@<@ @@)2991 rpA 03( 01.3 SO CSIR@ e@pihc rotareleccA PF MRA@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@ÿÿÿÿ@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€ìÄÎ⇦€“€øÂdj~€+QŴ€[Ó¼kŴ€333ŵ€2U06ŵ  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,BM4 ,0005A@ @@@n €½7l€v0br€ý oVt€ `Js€ª%et€O¨§s€(›Zr€;×÷at€yUg5s€(›Zt€ $ s€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€ö(\W◰€ Ŵ€Œ−−)ŵ€\•ÂŴ€ìQ¸nŵ€HázlŶ€=
  5695. ×CŴ€Ŷë◰€=
  5696. ×CŴ€ìQ¸~◰@@AV@@@@€◰€◰€‰£&@€@ŵŒ€DëE)☓€ŷ‰£&ŵ€`☓€\•ÂY☓€HázTŵ€ö(\Ŵ€nÛ¶-◰€%´–PŴ€P⇦³rŴ€©ókŵ€Œ−−◰€>ÔD◰€i/¡=ŵ€‡Ø⇨ŵ€Ïó<◰@€1ó:vŵ€Œ−−Qŷ€•@ÿÿÿÿ€/ñv]€f‘€f‘@N @ÿÿÿÿ@-¼@@M½@MÅ@N@N@N@Jò@Fî@L‡@LË@L‘@L“@Lª@Lh@L!@Kí@L]@M×@M²@Mý@N@Mn@Mr@J@I–@Jk@M¼@Mr@Ms@Kñ@M£@Mµ@M¶@M·@<@ @@)2991 rpA 03( 01.3 SO CSIR@ e@pihc rotareleccA PF MRA@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@ÿÿÿÿ@ÿÿÿÿ@@€@ÿÿÿÿ€3*#⇦€“€«ÏÕV~€†¢#aŴ€¿}ŵ€¯“e$ŵ€M☓Gŵ  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,BM4 ,0005A@ @@@n €½7l€á̯fq€e⇩-t€ŵQIs€’–51t€íí„dr€ÿåZ4r€*8<t€gêu s€Ì<¹&t€iŵ¨{r€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€ÍÌÌ☓€R¸EŴ€¤p=Zŵ€®GAŴ€áz◰€ŷ€¸ŶkŴ€H◰€ŵ€Ŷë☓@@AV@@@Ŵ@€◰€◰€oÅþoŷ@€`tKŒ€ËþÉs◰€ºêÕ|€`☓€Œ−−Ŷ€Ãõ(◰€`,ùEŴ€²>4V◰€?,Rŵ€ÒEŵ€@    o4ŵ€gff2◰€ã­l◰€¡½☓vŵ€.ßòMŵ€·mÛ6◰@€²Ñ◰€ÍÌÌ6ŷ€ÍÌÓ*•@ÿÿÿÿ€µ ò◰€ÿs‘€ÿs‘@N @ÿÿÿÿ@I@Ia@Ië@IÒ@Jh@J”@Jk@HÃ@E›@H)@H¬@E¸@Cé@C-@E@H—@F@E£@F‘@E@Fó@G@F@F%@E4@Ef@Dò@D÷@F@F7@Dí@Hí@I@I@I@<@ @@)2991 rpA 03( 01.3 SO CSIR@ø@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€iŴ◰€•€¥,C€€%Ŵ}€‰ð}€&ä◰}€UÁ¨$}s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,BM4 ,0005A@'@h@nL€½7l€á̯fq€e⇩-t€ŵQIs€Ô_¯0t€ø~br€ÿåZ4r€*8<t€O¨§s€3&t€iŵ¨{r€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€ÍÌÌ☓€R¸EŴ€¤p=Zŵ€®GAŴ€{®◰€ŷ€¸ŶkŴ€¤p=B◰€
  5697. ×£ŵ€Œ−−☓@@AV@@@Ŵ@€@ŵ€◰€oÅþoŷ@€`tKŒ€Óÿ Ŷ€mÅþoŴ€`☓€ö(\Ŷ€Ãõ(◰€`,ùEŴ€²>4V◰€?,Rŵ€ÒEŵ€Œ:¿6ŵ€gff2◰€ã­l◰€ÚKhoŵ€NìÄNŵ€·mÛ6◰@€,³−◰€(ŷ€:•@ÿÿÿÿ€T5°◰€yY‘€yY‘@N @ÿÿÿÿ@I1@IÍ@J0@J:@JË@J¿@JÁ@It@FK@Im@IÎ@G2@Ey@D’@F⇧@I²@GT@FÐ@GJ@E¤@G~@G‹@F⇦@Fv@FÚ@G3@Ee@E›@F⇦@Fx@E·@Im@Iu@Iŵ@IŴ@<@ @@)2991 rpA 03( 01.3 SO CSIR@ø@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 9.8 ,zH 2.95 ,ppb 4 ,253x698( 93 edoM@ÿÿÿÿ@ÿÿÿÿ@@€@ÿÿÿÿ€¦_ú◰€•€€x $(}€¾Á&}€3ı.}€î|?5}s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,epytotorp 005A@ @@@n…€½7l€±Hor€Ø·›u€‹p!t€¡¶#u€öéxLs€ùœPs€}­Ku€−Ess€$u€IÑÊ=s€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€{®◰€®Gáz€€ö(\oŴ€ŶëQ€€{®'ŵ€333=Ŷ€Ãõ(Ŵ€\•Âeŵ€¸Ŷ Ŵ€¸ŶK◰@@AV@@@@€ŵ€◰€z@€PC−€C¶ó}☓€“RJ!}€`☓€(☓€Ŷë!ŵ€ó⇧%?€€?4Ö◰€½☓öŴ€ö‰)Ŵ€.+JŴ€lŵ€a¼”◰€finŵ€ßò-_Ŵ€’$Irŵ@€¡kŵ€ÍÌÌ!€33A‰@ÿÿÿÿ€3pz7ŵ€€«1’€€«1’@N @ÿÿÿÿ@EÜ@FÄ@Gŷ@G›@HŒ@H†@H™@F{@AÅ@F"@Få@B•@?à@=@A‡@Fd@Bë@B.@BL@@r@C~@C¯@Bp@Bi@A«@B^@@Ŷ@@:@Bm@Bc@@¿@F@Fœ@FÅ@F«@<@ @@)2991 rpA 03( 01.3 SO CSIR@@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€(vb'ŵ€‰€€ùé7|€ãÇ—;|€µ7øB|€◰ÀJ|  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ArmSX01.3 SO CSIR ,epytotorp 005A@ @@@nL€½7l€Ã@×>r€T¦—u€−Ess€$"ü u€yUg5s€ùœPs€}­Ku€¢'[s€Âô½u€IÑÊ=s€½7r€Ö8œv€½7t€G¬Å'u€½7t€⇦œSIt€è£…8v€)›Zt€Y·Qu€¦´þu€=
  5698. ×3◰€®GŴ€ÍÌÌ ŵ€333s€€ÍÌÌ<ŵ€×£p=Ŷ€Ãõ(Ŵ€ìQ¸~ŵ€×£pŴ€Ãõ(L◰@@AV@@@@€@ŵ€◰€R@3H@€€ås−€Wn]K☓€ÊR)}€`☓€Ãõ(0☓€¸Ŷ+ŵ€ïîîn€€i¬◰€ÊÀÓ-Ŵ€]tÑEŴ€>ä²bŴ€lŵ€a¼”◰€¤ <ŵ€¾å[~Ŵ€’$Irŵ@€ÑLC0ŵ€fff€ÍÌtU‰@ÿÿÿÿ€æ¸;ŵ€€¾.’€€¾.’@N @ÿÿÿÿ@Fm@G7@Gç@Gü@HÑ@HÚ@Hå@Fŵ@Aâ@F@FÂ@BX@?³@>­@Ah@Fp@BÄ@B+@BÐ@@ã@C·@Cø@B~@Bw@Ac@B3@@›@@À@B{@Bh@@©@Fi@Fô@Fñ@Fü@<@ @@)2991 rpA 03( 01.3 SO CSIR@@#)1991 ceD 90( 78.2v ,rotalumEPF dlO@@@@+)S/bM 8.3 ,zH 6.94 ,ppb 4 ,652x046( 21 edoM@@ÿÿÿÿ@ÿÿÿÿ@€@ÿÿÿÿ€nÛ¶-ŵ€‰€€ŷÉTA|€úíë@|€§WJ|€pÎ⇦R|  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickdhryAÿÿÿQ›‡vH&dhryAÿÿÿQ›‡vH&hhNick­WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  5699.  ****************************************************************************
  5700.  *
  5701.  *                   "DHRYSTONE" Benchmark Program
  5702.  *                   -----------------------------
  5703.  *                                                                            
  5704.  *  Version:    C, Version 2.1
  5705.  *                                                                            
  5706.  *  File:       dhry.h (part 1 of 3)
  5707.  *
  5708.  *  Date:       May 25, 1988
  5709.  *
  5710.  *  Author:     Reinhold P. Weicker
  5711.  *                      Siemens AG, E STE 35
  5712.  *                      Postfach 3240
  5713.  *                      8520 Erlangen
  5714.  *                      Germany (West)
  5715.  *                              Phone:  [xxx-49]-9131-7-20330
  5716.  *                                      (8-17 Central European Time)
  5717.  *                              Usenet: ..!mcvax!unido!estevax!weicker
  5718.  *
  5719.  *              Original Version (in Ada) published in
  5720.  *              "Communications of the ACM" vol. 27., no. 10 (Oct. 1984),
  5721.  *              pp. 1013 - 1030, together with the statistics
  5722.  *              on which the distribution of statements etc. is based.
  5723.  *
  5724.  *              In this C version, the following C library functions are used:
  5725.  *              - strcpy, strcmp (inside the measurement loop)
  5726.  *              - printf, scanf (outside the measurement loop)
  5727.  *              In addition, Berkeley UNIX system calls "times ()" or "time ()"
  5728.  *              are used for execution time measurement. For measurements
  5729.  *              on other systems, these calls have to be changed.
  5730.  *
  5731.  *  Collection of Results:
  5732.  *              Reinhold Weicker (address see above) and
  5733.  *              
  5734.  *              Rick Richardson
  5735.  *              PC Research. Inc.
  5736.  *              94 Apple Orchard Drive
  5737.  *              Tinton Falls, NJ 07724
  5738.  *                      Phone:  (201) 389-8963 (9-17 EST)               
  5739.  *                      Usenet: ...!uunet!pcrat!rick
  5740.  *
  5741.  *      Please send results to Rick Richardson and/or Reinhold Weicker.
  5742.  *      Complete information should be given on hardware and software used.
  5743.  *      Hardware information includes: Machine type, CPU, type and size
  5744.  *      of caches; for microprocessors: clock frequency, memory speed
  5745.  *      (number of wait states).
  5746.  *      Software information includes: Compiler (and runtime library)
  5747.  *      manufacturer and version, compilation switches, OS version.
  5748.  *      The Operating System version may give an indication about the
  5749.  *      compiler; Dhrystone itself performs no OS calls in the measurement loop.
  5750.  *
  5751.  *      The complete output generated by the program should be mailed
  5752.  *      such that at least some checks for correctness can be made.
  5753.  *
  5754.  ***************************************************************************
  5755.  *
  5756.  *  History:    This version C/2.1 has been made for two reasons:
  5757.  *
  5758.  *              1) There is an obvious need for a common C version of
  5759.  *              Dhrystone, since C is at present the most popular system
  5760.  *              programming language for the class of processors
  5761.  *              (microcomputers, minicomputers) where Dhrystone is used most.
  5762.  *              There should be, as far as possible, only one C version of
  5763.  *              Dhrystone such that results can be compared without
  5764.  *              restrictions. In the past, the C versions distributed
  5765.  *              by Rick Richardson (Version 1.1) and by Reinhold Weicker
  5766.  *              had small (though not significant) differences.
  5767.  *
  5768.  *              2) As far as it is possible without changes to the Dhrystone
  5769.  *              statistics, optimizing compilers should be prevented from
  5770.  *              removing significant statements.
  5771.  *
  5772.  *              This C version has been developed in cooperation with
  5773.  *              Rick Richardson (Tinton Falls, NJ), it incorporates many
  5774.  *              ideas from the "Version 1.1" distributed previously by
  5775.  *              him over the UNIX network Usenet.
  5776.  *              I also thank Chaim Benedelac (National Semiconductor),
  5777.  *              David Ditzel (SUN), Earl Killian and John Mashey (MIPS),
  5778.  *              Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley)
  5779.  *              for their help with comments on earlier versions of the
  5780.  *              benchmark.
  5781.  *
  5782.  *  Changes:    In the initialization part, this version follows mostly
  5783.  *              Rick Richardson's version distributed via Usenet, not the
  5784.  *              version distributed earlier via floppy disk by Reinhold Weicker.
  5785.  *              As a concession to older compilers, names have been made
  5786.  *              unique within the first 8 characters.
  5787.  *              Inside the measurement loop, this version follows the
  5788.  *              version previously distributed by Reinhold Weicker.
  5789.  *
  5790.  *              At several places in the benchmark, code has been added,
  5791.  *              but within the measurement loop only in branches that 
  5792.  *              are not executed. The intention is that optimizing compilers
  5793.  *              should be prevented from moving code out of the measurement
  5794.  *              loop, or from removing code altogether. Since the statements
  5795.  *              that are executed within the measurement loop have NOT been
  5796.  *              changed, the numbers defining the "Dhrystone distribution"
  5797.  *              (distribution of statements, operand types and locality)
  5798.  *              still hold. Except for sophisticated optimizing compilers,
  5799.  *              execution times for this version should be the same as
  5800.  *              for previous versions.
  5801.  *              
  5802.  *              Since it has proven difficult to subtract the time for the
  5803.  *              measurement loop overhead in a correct way, the loop check
  5804.  *              has been made a part of the benchmark. This does have
  5805.  *              an impact - though a very minor one - on the distribution
  5806.  *              statistics which have been updated for this version.
  5807.  *
  5808.  *              All changes within the measurement loop are described
  5809.  *              and discussed in the companion paper "Rationale for
  5810.  *              Dhrystone version 2".
  5811.  *
  5812.  *              Because of the self-imposed limitation that the order and
  5813.  *              distribution of the executed statements should not be
  5814.  *              changed, there are still cases where optimizing compilers
  5815.  *              may not generate code for some statements. To a certain
  5816.  *              degree, this is unavoidable for small synthetic benchmarks.
  5817.  *              Users of the benchmark are advised to check code listings
  5818.  *              whether code is generated for all statements of Dhrystone.
  5819.  *
  5820.  *              Version 2.1 is identical to version 2.0 distributed via
  5821.  *              the UNIX network Usenet in March 1988 except that it corrects
  5822.  *              some minor deficiencies that were found by users of version 2.0.
  5823.  *              The only change within the measurement loop is that a
  5824.  *              non-executed "else" part was added to the "if" statement in
  5825.  *              Func_3, and a non-executed "else" part removed from Proc_3.
  5826.  *
  5827.  ***************************************************************************
  5828.  *
  5829.  * Defines:     The following "Defines" are possible:
  5830.  *              -DREG=register          (default: Not defined)
  5831.  *                      As an approximation to what an average C programmer
  5832.  *                      might do, the "register" storage class is applied
  5833.  *                      (if enabled by -DREG=register)
  5834.  *                      - for local variables, if they are used (dynamically)
  5835.  *                        five or more times
  5836.  *                      - for parameters if they are used (dynamically)
  5837.  *                        six or more times
  5838.  *                      Note that an optimal "register" strategy is
  5839.  *                      compiler-dependent, and that "register" declarations
  5840.  *                      do not necessarily lead to faster execution.
  5841.  *              -DNOSTRUCTASSIGN        (default: Not defined)
  5842.  *                      Define if the C compiler does not support
  5843.  *                      assignment of structures.
  5844.  *              -DNOENUMS               (default: Not defined)
  5845.  *                      Define if the C compiler does not support
  5846.  *                      enumeration types.
  5847.  *              -DTIMES                 (default)
  5848.  *              -DTIME
  5849.  *                      The "times" function of UNIX (returning process times)
  5850.  *                      or the "time" function (returning wallclock time)
  5851.  *                      is used for measurement. 
  5852.  *                      For single user machines, "time ()" is adequate. For
  5853.  *                      multi-user machines where you cannot get single-user
  5854.  *                      access, use the "times ()" function. If you have
  5855.  *                      neither, use a stopwatch in the dead of night.
  5856.  *                      "printf"s are provided marking the points "Start Timer"
  5857.  *                      and "Stop Timer". DO NOT use the UNIX "time(1)"
  5858.  *                      command, as this will measure the total time to
  5859.  *                      run this program, which will (erroneously) include
  5860.  *                      the time to allocate storage (malloc) and to perform
  5861.  *                      the initialization.
  5862.  *              -DHZ=nnn
  5863.  *                      In Berkeley UNIX, the function "times" returns process
  5864.  *                      time in 1/HZ seconds, with HZ = 60 for most systems.
  5865.  *                      CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY
  5866.  *                      A VALUE.
  5867.  *
  5868.  ***************************************************************************
  5869.  *
  5870.  *  Compilation model and measurement (IMPORTANT):
  5871.  *
  5872.  *  This C version of Dhrystone consists of three files:
  5873.  *  - dhry.h (this file, containing global definitions and comments)
  5874.  *  - dhry_1.c (containing the code corresponding to Ada package Pack_1)
  5875.  *  - dhry_2.c (containing the code corresponding to Ada package Pack_2)
  5876.  *
  5877.  *  The following "ground rules" apply for measurements:
  5878.  *  - Separate compilation
  5879.  *  - No procedure merging
  5880.  *  - Otherwise, compiler optimizations are allowed but should be indicated
  5881.  *  - Default results are those without register declarations
  5882.  *  See the companion paper "Rationale for Dhrystone Version 2" for a more
  5883.  *  detailed discussion of these ground rules.
  5884.  *
  5885.  *  For 16-Bit processors (e.g. 80186, 80286), times for all compilation
  5886.  *  models ("small", "medium", "large" etc.) should be given if possible,
  5887.  *  together with a definition of these models for the compiler system used.
  5888.  *
  5889.  **************************************************************************
  5890.  *
  5891.  *  Dhrystone (C version) statistics:
  5892.  *
  5893.  *  [Comment from the first distribution, updated for version 2.
  5894.  *   Note that because of language differences, the numbers are slightly
  5895.  *   different from the Ada version.]
  5896.  *
  5897.  *  The following program contains statements of a high level programming
  5898.  *  language (here: C) in a distribution considered representative:           
  5899.  *
  5900.  *    assignments                  52 (51.0 %)
  5901.  *    control statements           33 (32.4 %)
  5902.  *    procedure, function calls    17 (16.7 %)
  5903.  *
  5904.  *  103 statements are dynamically executed. The program is balanced with
  5905.  *  respect to the three aspects:                                             
  5906.  *
  5907.  *    - statement type
  5908.  *    - operand type
  5909.  *    - operand locality
  5910.  *         operand global, local, parameter, or constant.                     
  5911.  *
  5912.  *  The combination of these three aspects is balanced only approximately.    
  5913.  *
  5914.  *  1. Statement Type:                                                        
  5915.  *  -----------------             number
  5916.  *
  5917.  *     V1 = V2                     9
  5918.  *       (incl. V1 = F(..)
  5919.  *     V = Constant               12
  5920.  *     Assignment,                 7
  5921.  *       with array element
  5922.  *     Assignment,                 6
  5923.  *       with record component
  5924.  *                                --
  5925.  *                                34       34
  5926.  *
  5927.  *     X = Y +|-|"&&"|"|" Z        5
  5928.  *     X = Y +|-|"==" Constant     6
  5929.  *     X = X +|- 1                 3
  5930.  *     X = Y *|/ Z                 2
  5931.  *     X = Expression,             1
  5932.  *           two operators
  5933.  *     X = Expression,             1
  5934.  *           three operators
  5935.  *                                --
  5936.  *                                18       18
  5937.  *
  5938.  *     if ....                    14
  5939.  *       with "else"      7
  5940.  *       without "else"   7
  5941.  *           executed        3
  5942.  *           not executed    4
  5943.  *     for ...                     7  |  counted every time
  5944.  *     while ...                   4  |  the loop condition
  5945.  *     do ... while                1  |  is evaluated
  5946.  *     switch ...                  1
  5947.  *     break                       1
  5948.  *     declaration with            1
  5949.  *       initialization
  5950.  *                                --
  5951.  *                                34       34
  5952.  *
  5953.  *     P (...)  procedure call    11
  5954.  *       user procedure      10
  5955.  *       library procedure    1
  5956.  *     X = F (...)
  5957.  *             function  call      6
  5958.  *       user function        5                                         
  5959.  *       library function     1                                               
  5960.  *                                --                                          
  5961.  *                                17       17
  5962.  *                                        ---
  5963.  *                                        103
  5964.  *
  5965.  *    The average number of parameters in procedure or function calls
  5966.  *    is 1.82 (not counting the function values aX *
  5967.  *
  5968.  *  2. Operators
  5969.  *  ------------
  5970.  *                          number    approximate
  5971.  *                                    percentage
  5972.  *
  5973.  *    Arithmetic             32          50.8                                 
  5974.  *
  5975.  *       +                     21          33.3                              
  5976.  *       -                      7          11.1                              
  5977.  *       *                      3           4.8
  5978.  *       / (int div)            1           1.6
  5979.  *
  5980.  *    Comparison             27           42.8
  5981.  *
  5982.  *       ==                     9           14.3
  5983.  *       /=                     4            6.3
  5984.  *       >                      1            1.6
  5985.  *       <                      3            4.8
  5986.  *       >=                     1            1.6
  5987.  *       <=                     9           14.3
  5988.  *
  5989.  *    Logic                   4            6.3
  5990.  *
  5991.  *       && (AND-THEN)          1            1.6
  5992.  *       |  (OR)                1            1.6
  5993.  *       !  (NOT)               2            3.2
  5994.  * 
  5995.  *                           --          -----
  5996.  *                           63          100.1
  5997.  *
  5998.  *
  5999.  *  3. Operand Type (counted once per operand reference):
  6000.  *  ---------------
  6001.  *                          number    approximate
  6002.  *                                    percentage
  6003.  *
  6004.  *     Integer               175        72.3 %
  6005.  *     Character              45        18.6 %
  6006.  *     Pointer                12         5.0 %
  6007.  *     String30                6         2.5 %
  6008.  *     Array                   2         0.8 %
  6009.  *     Record                  2         0.8 %
  6010.  *                           ---       -------
  6011.  *                           242       100.0 %
  6012.  *
  6013.  *  When there is an access path leading to the final operand (e.g. a record
  6014.  *  component), only the final data type on the access path is counted.       
  6015.  *
  6016.  *
  6017.  *  4. Operand Locality:                                                      
  6018.  *  -------------------
  6019.  *                                number    approximate
  6020.  *                                          percentage
  6021.  *
  6022.  *     local variable              114        47.1 %
  6023.  *     global variable              22         9.1 %
  6024.  *     parameter                    45        18.6 %
  6025.  *        value                        23         9.5 %
  6026.  *        reference                    22         9.1 %
  6027.  *     function result               6         2.5 %
  6028.  *     constant                     55        22.7 %
  6029.  *                                 ---       -------
  6030.  *                                 242       100.0 %
  6031.  *
  6032.  *
  6033.  *  The program does not compute anything meaningful, but it is syntactically
  6034.  *  and semantically correct. All variables have a value assigned to them
  6035.  *  before they are used as a source operand.
  6036.  *
  6037.  *  There has been no explicit effort to account for the effects of a
  6038.  *  cache, or to balance the use of long or short displacements for code or
  6039.  *  data.
  6040.  *
  6041.  ***************************************************************************
  6042.  */
  6043.  
  6044. /* Compiler and system dependent definitions: */
  6045.  
  6046. #ifndef TIME
  6047. #undef TIMES
  6048. #define TIMES
  6049. #endif
  6050.                 /* Use times(2) time function unless    */
  6051.                 /* explicitly defined otherwise         */
  6052.  
  6053. #ifdef MSC_CLOCK
  6054. #undef HZ
  6055. #undef TIMES
  6056. #include <time.h>
  6057. #define HZ     CLK_TCK
  6058. #endif
  6059.                /* Use Microsoft C hi-res clock */
  6060.  
  6061. #ifdef TIMES
  6062. #include <sys/types.h>
  6063. #include <sys/times.h>
  6064.                 /* for "times" */
  6065. #endif
  6066.  
  6067. #define Mic_secs_Per_Second     1000000.0
  6068.                 /* Berkeley UNIX C returns process times in seconds/HZ */
  6069.  
  6070. #ifdef  NOSTRUCTASSIGN
  6071. #define structassign(d, s)      memcpy(&(d), &(s), sizeof(d))
  6072. #else
  6073. #define structassign(d, s)      d = s
  6074. #endif
  6075.  
  6076. #ifdef  NOENUM
  6077. #define Ident_1 0
  6078. #define Ident_2 1
  6079. #define Ident_3 2
  6080. #define Ident_4 3
  6081. #define Ident_5 4
  6082.   typedef int   Enumeration;
  6083. #else
  6084.   typedef       enum    {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5}
  6085.                 Enumeration;
  6086. #endif
  6087.         /* for boolean and enumeration types in Ada, Pascal */
  6088.  
  6089. /* General definitions: */
  6090.  
  6091. #include <stdio.h>
  6092.                 /* for strcpy, strcmp */
  6093.  
  6094. #define Null 0 
  6095.                 /* Value of a Null pointer */
  6096. #define true  1
  6097. #define false 0
  6098.  
  6099. typedef int     One_Thirty;
  6100. typedef int     One_Fifty;
  6101. typedef char    Capital_Letter;
  6102. typedef int     Boolean;
  6103. typedef char    Str_30 [31];
  6104. typedef int     Arr_1_Dim [50];
  6105. typedef int     Arr_2_Dim [50] [50];
  6106.  
  6107. typedef struct record 
  6108.     {
  6109.     struct record *Ptr_Comp;
  6110.     Enumeration    Discr;
  6111.     union {
  6112.           struct {
  6113.                   Enumeration Enum_Comp;
  6114.                   int         Int_Comp;
  6115.                   char        Str_Comp [31];
  6116.                   } var_1;
  6117.           struct {
  6118.                   Enumeration E_Comp_2;
  6119.                   char        Str_2_Comp [31];
  6120.                   } var_2;
  6121.           struct {
  6122.                   char        Ch_1_Comp;
  6123.                   char        Ch_2_Comp;
  6124.                   } var_3;
  6125.           } variant;
  6126.       } Rec_Type, *Rec_Pointer;
  6127.  
  6128.  
  6129. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickooNickÊWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickCodeDýÿÿo-:(Code2DýÿÿŒ;,:`(DhrystonesDøÿÿòN;Êo)Flops20Døÿÿ’N;Êÿ)OldModuleDëÿÿû⇨;Œ(Template3DDìÿÿ⇩œ\Îã**TemplatesDìÿÿ”\β)+CodeDýÿÿo-:(Code2DýÿÿŒ;,:`(DhrystonesDøÿÿòN;Êo)Flops20Døÿÿ’N;Êÿ)OldModuleDëÿÿû⇨;Œ(Template3DDìÿÿ⇩œ\Îã**TemplatesDìÿÿ”\β)+ResourcesResourcesNick€êê¦êVê ñ ñÿ_-éï2Æ ãHÌåLÌå@ÜåDÜå€áDåÿôã áÿfl½è ñÿ_-é ãïï á€ãð0ã á2Æ ãL°Oâ0 ã@àãAÄã á áHÌå á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á áLÌå@ÜåDÜå€áÄå á áHÌå›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›à›àLÌå@ÜåDÜå€áàå á áHÌåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœåœå⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧å⇧åLÌå@ÜåDÜå€áü å á áHÌåÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿ⇧èÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèÿœèLÌå@ÜåDÜå€áÄ•å á áHÌåüêúêøêöêôêòêðêîêìêêêèêæêäêâêàêÞêÜêÚêØêÖêÔêÒêÐêÎêÌêÊêÈêÆêÄêÂêÀê¾ê¼êºê¸ê¶ê´ê²ê°ê®ê¬êªê¨ê¦ê¤ê¢ê êfiê†êŒê—ê„ê“ê‹ê‘ê‰ê…ê⇩ê⇦êŷê☓êŵê€ê~ê|êzêxêvêtêrêpênêlêjêhêfêdêbê`ê^ê\êZêXêVêTêRêPêNêLêJêHêFêDêBê@ê>ê<ê:ê8ê6ê4ê2ê0ê.ê,ê*ê(ê&ê$ê"ê êêêêêêêêêê ê
  6130. êêêêêê~êýÿÿêûÿÿêùÿÿê÷ÿÿêõÿÿêóÿÿêñÿÿêïÿÿêíÿÿêëÿÿêéÿÿêçÿÿêåÿÿêãÿÿêáÿÿêßÿÿêÝÿÿêÛÿÿêÙÿÿê×ÿÿêÕÿÿêÓÿÿêÑÿÿêÏÿÿêÍÿÿêËÿÿêÉÿÿêÇÿÿêÅÿÿêÃÿÿêÁÿÿê¿ÿÿê½ÿÿê»ÿÿê¹ÿÿê·ÿÿêµÿÿê³ÿÿê±ÿÿê¯ÿÿê­ÿÿê«ÿÿê©ÿÿê§ÿÿê¥ÿÿê£ÿÿê¡ÿÿêflÿÿê‡ÿÿêœÿÿê−ÿÿê–ÿÿê”ÿÿê›ÿÿê’ÿÿê•ÿÿê™ÿÿê⇧ÿÿê⇨ÿÿêÿÿêŶÿÿê◰ÿÿêŴÿÿêÿÿê}ÿÿê{ÿÿêyÿÿêwÿÿêuÿÿêsÿÿêqÿÿêoÿÿêmÿÿêkÿÿêiÿÿêgÿÿêeÿÿêcÿÿêaÿÿê_ÿÿê]ÿÿê[ÿÿêYÿÿêWÿÿêUÿÿêSÿÿêQÿÿêOÿÿêMÿÿêKÿÿêIÿÿêGÿÿêEÿÿêCÿÿêAÿÿê?ÿÿê=ÿÿê;ÿÿê9ÿÿê7ÿÿê5ÿÿê3ÿÿê1ÿÿê/ÿÿê-ÿÿê+ÿÿê)ÿÿê'ÿÿê%ÿÿê#ÿÿê!ÿÿêÿÿêÿÿêÿÿêÿÿêÿÿêÿÿêÿÿêÿÿêÿÿêÿÿê ÿÿê    ÿÿêÿÿêÿÿêÿÿêÿÿêÿÿÿêLÌå@ÜåDÜå€á •åòã áÿfl½èÿ_-é ãïï á€ãð0ã á2Æ ãL°Oâ0 ã@àãAÄã, ã áHÌå á RâüÿÿLÌå@ÜåDÜå€á•å, ã á áHÌå›à RâüÿÿLÌå@ÜåDÜå€áܕ倠 ã á áHÌåœå⇧å RâûÿÿLÌå@ÜåDÜå€á¤•å€  ã áHÌåÿ⇧èÿœè RâûÿÿLÌå@ÜåDÜå€áp•å, ã áHÌåÿÿÿê RâüÿÿLÌå@ÜåDÜå€á@•åòã áÿfl½è ãï á áBï8•åV ãPUâýÿÿBï$flå@à•åð áerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ðê Na6P¿⇩6P”¸=Ph¸=Ph¿@Paë?P5¦@P{º6fL&Ô'ö7)89çÂ+_" $ŵ)AÞ/´&m'„7⇧Á+_"Ä(_%;.PåÖ$PJ)¾.Pdfl.P€Â.^@.ß',ù!@-Þ 2*î#d$P*Â.]A.ÞU%Ë(›2P™¯2Pp<3Pä3Pÿÿÿÿÿÿÿÿ’Éì’Éìÿÿÿÿ’Øì’ØìÿÿÿÿÁîîÿÿÿÿîîÿÿÿÿŴ    î    Ŵ    îÿÿÿÿŴî    ŴîÿÿÿÿŴ)î    Ŵ)îÿÿÿÿŴ9î    Ŵ9îÿÿÿÿŴIî    ŴIîŴYî    ŴYîŴiî    ŴiîŴyî    ŴyîŴ⇨î    Ŵ⇨îŴ−î    Ŵ−îŴ©î    Ŵ©îŴ»î    Ŵ¹îŴËîŴÎîŴÛîŴÞîÿÿÿÿ    î        îÿÿÿÿî    îÿÿÿÿ)î    )îÿÿÿÿ9î    9îÿÿÿÿIî    IîÿÿÿÿYî    Yîiî    iîyî    yîÿÿÿÿ⇨î    ⇨îÿÿÿÿ−î    −îÿÿÿÿ©î    ©îÿÿÿÿ¹î    ¹îÉî    Éîÿÿÿÿñ‘îñ‘îÿÿÿÿñ°îñ°îÿÿÿÿñÐîñÐîÿÿÿÿñðîñðîÿÿÿÿÿÿÿÿ%ÿ_-éï á€ãð0ã á>>Oâ•OOâh€Oâ’Øì`€Oâ¡ØìX€Oâ±ØìP‘Oâ2Ơ㠤峠ãP áŶãð0ã á ãïð5ã á° ã´èqã
  6131. pã
  6132.  •âP ã¢èPUâüÿÿHÌåÉî    ÉîÉî    ÉîÉî    ÉîLÌå@ÜåDÜå€á›åPá◰Å
  6133. `à°⇧à ã◰å 0◰âØÿÿêQã3´è •âP ã¢èPUâüÿÿHÌå¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹î¹î    ¹îLÌå@ÜåDÜå€á›åPá◰Å
  6134. `à°⇧à ã◰å 0◰â¢ÿÿê´è •âPP ã¢èPUâüÿÿHÌåñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîñðîLÌå@ÜåDÜå€á›åPá◰Å
  6135. `à°⇧àP ã◰å 0◰âîþÿêòã áÿfl½èWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | This simple Obey file is for moving modules from
  6136. | RAM back to ROM (having RMFaster'd them)
  6137. | Call with 'OldModule <modulename>'
  6138.  
  6139. RMKill %0
  6140. RMReInit %0
  6141. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Åêfl‰ª½Œ    −        ÎŒèkŒ¶v−…⇧−ùò−ªºnŒ­u−«™Œ·yŒs›−ø¸−Vªªø)Œ(©ª @ª>
  6142. ªû$Œ!>ª>ÿ©>"ªß½−Ò¨Œ§à©R÷©    %ª¦Í©+ª⇩ŒPU−KQ−>S−O−PU−KQ−?E−O−−©ô—Œ3ªÞ−−󥌆2ŒfiÒ©-â−*%©U◰ŒQP−GK−O<−◰−4©œÕ−Iœª3»©•IŒKo©‡©ŒMª’>ª◰ª—−‡ª‰JŒÔ9−„ò©á−−¤¤ŒÌ/Œ_±©{‹−}IŒ HªÓ3ŒÉ›Œz’−,¡ª~AŒä-ŒÛi−UŶŒQP−HK−O=−Y−D_−^d−´©³µª¸¹ªº²ª¼·ª±¶ª°»ª¯®ªÝ„−£oª„Ö−ò¢ŒJ|ŒM‘TB−bZ−F@− I−x«©›·−¡r−£>ŒFªmqªmqªilª*õ©>1ª–0ŒC•ª:â−1ö©Ç?ŒE‘ª05ªÈDŒtþ©„⇨ŒqBªqmªlmª{iª6vª¿©^ ª8ñ−<³©#€©è −r;©:ª5æ−84©9¾©ŷ÷©]ª2å−7&©"”©\ª­©[ª"ù©⇧­©w«©›·−£q−.¢©“–©âü−ò*−eé−€zªŵŴªôzŒz(ªz(ª;Tªxç−zt©ó−z(ªŶ¼−­&ŒªvŒflÂ−fbªcÅ©aÆ©⇩⇨−Ã−dª“Ä−µk−=™©'ЩÁeŒŵ☓−`ŷ©ý©r ª®²−‘°−.1−L¯©óZŒ­−y«©›·−£p−¢©Ŵ ªgË©­hª$â−ë#−î|−ïm−íl−+%−–Œ−↌yw−Ê©ó Œã|Œ%1−­−O☓ªŴŒú©ÑvŒ~QªN–ª0â−vrªp”ª…Pª−¿ ©Sfi©ªÜŒêYŒ3)−¦¥−\ÁŒì¦−gf−jh−ש¹´−LR−!¾ŒN`−cW−Va−"−N`−cW−CA−X−¨vŒ«ªðŒ6'−,7−ö/−[ÀŒª©©GÏ©U⇦©XÚ©(ê−¥3−¬©¦]−nì−jÀ©¡}Œ⇦Ù©¬vª‹uªØsŒ§©êWŒ3)−Œ−−−−é
  6143. −−‘©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª
  6144. − −    −− 0%,h◰]¬uD{v“²\€bp\X]Ð\À^Ð2*]^gH\È◰¢c¯ý®Í¼ÇbÝwQ lø•ÿl| ‹õ_ÿ¥ãðœ×☓éÐZ¾ðþ?Ò¹ôÏlPöÀéÀ»ð kô ¯`éÿÿ2ND`®(û½Ø¿H»±ú®3ülþÝÔàØÖ ¼Ø    (öñôd     Ñϱ¸<çedXîï1ýò˾:ðοûôEÖäÜ#úOú¶æ3ôµð·[y€BÃÿÿªto¬ÑÎßGͲR èþbÒÁ⇦ûNYÏÐ_Y‡ÿÿ ` úfl_Äÿÿ8\ð\V\\\Áªý◰
  6145. üÿ{ð°òïäðœ×ÂS¤DŒìqù¯{ýìþÏ]⇧kt®€¯œ€]€® À®u^®Ŵ ]
  6146. ¶tî®ŴþÎïûÿ±¯øÿ´
  6147. ®ùÿÑÿÌð k÷ kólkôkÿlaA^Àtkô⇧÷½ù§®⇦ýñll¬® íÿi9¯Ç·€®ðÿ¯H ±¶D°ÚñÏ{ü®þï®
  6148. p®€{ñ®ü¿¬®‘'¯êOl⇧õ®À®úo®€¯H⇧±¿$®`®õ¯†&2køl®Ä¯¯,0&j“\Rk¯æàÀ \Æ®yÿ®¿ÿ\d®†ÿ°®üÿ d®Mø¯¦ÿ³Aï¿ÿ0kÐ (#k½|lll>l·kK⇧¿…Ûÿÿ||®pp¡·ð±ðº°ÑPZ²…î\À^0:hè^ÀkÌœTt­`{ô®`®Xv®¤ù¯À†«Ü®ø¯¶4kü°¼ïll ®ôßlkø¯l¯ø•†kü"®äÏ|®ôÿ®à³@®Dàkø|¯ÄÏ*kÄ.:]Tj`l¬k¼{Ð\d\ôÎ`®½üÿ°Ð¯ î0¬®÷•|    ¹÷?²ÿ®°ñ/®þï«Årñ°•þ±ÿ°¸    ð¿õÿœô®ÐíòoËoè¿‘−Œ®0—J_€Û@ÌJ_€Þ‘U²ŷþûÿn-C\äpþÿ&'3$<\¥ >gÛÿ}ÛŴ-|    `V{ÿÈ    à® ü_`®ð•l\~¯‘ß»r°¯~ÏܱŴ •Þ¼$¯åÿ¶c}ùõ€flUÄŒû ã?Îãå,Oâ?‘è
  6149.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  6150. P á@ ã  á0àã°[â)ºÕä
  6151. QâªQã
  6152. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  6153. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  6154. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿêð árcc 4.00
  6155.                WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     «êV3ª⇧†    −        Ùô−æŒËfl−«ª−ìê−ïî−ьŇ−Ã2Œbª`aªÌ_Œ±Í−Ï›−Íñ¹Û³«g¬Ñ€ºlªØò−i°«hÏ«ÒpºÓqºÔrºjsª³Œ³UŒ¾TŒÙΫðeŒc.Œ‘Q−m−    À¹däËfl”»³Öœ´SŒþþ©ýت׺ÿÖªÉÕŒÔüªþ(ºb7¼q¼ÚËÞp»aËÛ‹»’¼ÛËqÇËÒËœ™®−R³©eP«°−»’⇨†cлjg¬³€Œ´QŒ$È©­Ò−³•−RPºQË⇩kÊ“–−ËJË&‘ºà»ï»Ì    »1Ë2Ë¿◰¼’t¬ë»ì¼y,Ìn^¬¨†§¥−ó·¹0˹¼oI¬⇧_¬½¹̳eŒ´OŒT%ŒX‘4ÉÅ»ÒeŒ¢¬−N³©PS»Ŵ¬„⇦†Ð”¹gºfl¢º—­»M³©ÿ´−&謁mÜ«Ù_»_ÚºâV¼0_Ë_Z¼ã~¼¬Ò−³¡−SLºPËTŵº±E¼◰g¬Ëi(˼¼tr¬Þk¼´uº:oÊj-ÌwM¬MË)xº☓q¬è
  6156. » àÊ”o¼³flœ´KŒõªôÓªóÒªòѪñЪðϪÊÎŒ+«R    [    7üË    ÍÊ#nËN‘Ë•#¼#æËN‰Ë™#¼#æËæ…»Ä!¼ mËÒËœ…¯−J³©PS»¼‹J¬
  6157. »âm¬?+¼J>¼[íÊI>¼>þËìH«>[ÌþG»<A¼9Ìè9«fií»á-¬sºË›ßªÞ*«⇩%¼&æËs⇨ËÕtºN|Êjvºz⇧Ëk“ºy¬lËozºo ̳”œ´IŒº»ÌøªË÷ªÊöªÉîªV*ŒÈ°    Ìý/¼ü<¼¬<¼<þËþ«»ª<¼6þË“Å»ÒËœ™¯−H³©PS»¼‡K¬+/»Èx¬%    ¼O¼ ÝË$Ë# ¼ Ì"ËK¼ ÝËËÃëºç☓¬‡fiºEü»BêÊ2úËŴ„Ë8~º75¼5ûËû6»>4¼4÷Ë÷=»55¼3ûËÆ4»–ËUfÊ]gºŶg¬!^Ë”|¼G³©´©ÇõªÆôªÅóªÄòªÃñªÂðªÁûªÀúª¿ùª¾øª½÷ª¼öª,«U    ÈË    »Ê#iËæ⇦»#¼#æËæŷ»Ŷ#¼#æËæ☓»å#¼$~Ëhݺ◰#¼#æËæŵ»Ŵ#¼#æË总#¼!æËgÄ»Ëq¼¯Ò−³⇩−SFºPËHË,…ºw
  6158. Ë:¼J ¼ÇËÿ»¼ÿËÿ»F ¼ÇË    ËæC¬>DËþO»N>¼AþËBËAA¼>ÌþK»ê9¼◰†ËåÀ«™k¬;:Ë,ôË{{¬¾«}R¬ŷ\¬` »v
  6159. ̳”œ´EŒõªôºªó¹ªò¸ªñ·ªð¶ªûµªú´ªù³ªø²ª÷±ªö°ª¯ºY-ŒN‘È“¼®¬f    ¼|#¼#æËæ{»z#¼#æËæy»x#¼#æËrå»Ü$¬#eËæw»v#¼#æËæu»t#¼#æËæs»Ä!¼ dËÒËœ⇩¯−D³©PS»¼”J¬ »)mÌ!Ëø »¼øËø»¼øËø»¼9üË<DËþO»N<¼<þËþM»L<¼@þË@ËÄ6¼}(¼–u¬'*Ëò˯a¼LfÊhgÊ”º®×»`eº³e†´>ŒK'Œ_‘È’¼ÌŶßËÉW¼QlÌݼO\̯Ò−³‰−S:ºPËG˸⇦º„`¬ËŷáËTÌnÊËYÌ\ÝË·P¼8¼Ø¼e(¬£†¶¤−é»y̵½¹gÄ«]    Ë⇨ºÈËd ˳”œ´9Œº­ôª¬óª«òªªñª©ðª¨ûª§úª¦ùª¥øª¤÷ª£öªɹS,ŒW‘b‘È4¹"Ì<œËþ¤»£<¼<þËþ¢»¡<¼<þËþ »ü<¼=?Ì©*¼#çË稻§#¼#çË离¥#¼!çË6ÄËÒËœ⇧®−7³©PS»'¼‰F¬
  6160. /»:}ÌËÿ»¼ÿËÿ»G ¼ ÇËÇF»    ¼CÌDäºCA¼>ÌþN»M>¼AþËAËK>¼9þËŒê»A>Ìp½Ë-flºö.¼€2̼~ºX|Êc}ÊV—ºSXË1.ËîY»ŵ»Ëb−ÊUŒºZì»Wð»[ù»íãºé\«C;ËÂñ» ¬¡f¬í−»Á뻜{¬†b¬›õ»ëì»y¶Ë\•ÊÎ⇩Œ¹YŒäÜ−CªµÝ−Ô@ŒµŒBã©?µ©Õ©ãµ−µAŒÖ=ŒµŒ@ã©<µ©×©ãµ−µ?Œê;Œ\[ª^]ªZ!ŒL‘\⇨−a‘`‘]‘-‘zl−x,−y1−-−zl−02−s−l-−3z−s0−-−zl−05−s−l-−6z−s0−Ã−_ª²Ì−º‹−83« ªÈƹIJ»\²ËDdÊêcŒ Zªd−^‘‘)ª¦ý−üí−ÛŒ#
  6161. ª6ª'å−ª5ª1    ª−™ É ¸©ïõ−âö−çŒ("−¼»−u•†è¼−Ŷ☓−⇦ŷ−úÞ−ÐÇ−ek−…†g{−~q−p|−−g{−~q−.+−r−ÁŒïWŒéö−) −$*−ë&−t‰†øù−ûÂ−Ú©©©á©!ç−»(−‘Äɼw−‘è−Ó©º"Œ0à©Xª4ªßŒ÷¿−çŒ("−/Œ−−−−–É
  6162. −−‘ó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−óó−
  6163. − −    −−P    oŒ−%E−I@−ŵ<−◰9−j7−P    „œÉnG−”−É/=− —−}8−P    ›OÉfiM−J−€H−hD−ŴC−†?−‹>ÉfF−iB−#;−iA−v:− (%\ÝeFare°®xf\€o\X]Ð\À^Ð2]l]^gH] äºc¯ýÈ/Œ{! ‹õ_'=T þÜ⇦fl¹õiFH¹ôÏ`ðàkô<Ô
  6164. cO®äôlH¸¯i÷ Dûóü PÄ¿î<=⇦s    è»É稛îsªÇ™À—mà£ã¸nœÐt#±)AÃps¾µfi×ŵú_wÑÐi®tÚºuÁç⇩¸¨ª°ªª»UU´C.·½ÑÇû!ÀÞº²°±¯µ33±Í̯¯@¸ÀºÀ°@®A”¶¿ª®ÀÊ3CMA¯€{±¯t◰☓ºñ৭¸] |=¤ÔåÙNÂa ×ºÖ ÕäÚá“Õ úOú¶¿ÍKÒKQ€B☓⇨œ?vd\10± ý¿ö
  6165. DÍ
  6166. ªoHI›£Õ3ì1½6ba©ÎÀnNÚœ§YÏÐ_\[Mªª#UUÉÿÿ ]`¥ŷ⇧☓¯
  6167. ðÅ⇦l!êô¸EÄê›nȪª;?7ÂÀ輤+VKŶ€ëÌ^$ŵ⇦Â@Í…>®€ÀÍu>^ ®ô¾¯_·ÿ•PÄ®øÿ¯´²¯ðûÿ ]ó]y{øŴF^Àsú\|kx…½ù§®⇦ôoÏ8´Çòl®`±0®ðÿ¯ji›_”±l5°Úñϯ€²Ô jJ±4f°‰®`®øï®üϯ00&jæk×ÎàÀ±±d°û÷õkúkÿ|…hy®îVÛÿÿ||®pp¡·ð±ðº°ÑPZ²(þ^T]]à]Ü^l_—äaÉ‘°$à*kÄ.]€{ k´kÌl :>\ôàflø°•þ¾¿ñÿœøî@ €ÉôŒ®—_àÛ Ì_àÞ‘U²ŷþúÿn \t` Hûÿ\R,M'>>3\ST[X3O=6#B1  \wÚÕÿŴ-¡-Û kýkýký¿÷ÏlllÅÿ  kà  kð kÜ kü ¯ö¿   kÄ  k  kú  ⇧Ø " ´Äfl      kn\“k⇩*6 $kè⇧‰ > *k‹\X ±fi•    k¸2lkô°ÂÏ   . k´   k® kø B kªl   kâ    kÖ  ®Æ•l®ðl{úkìll l´2‘4kz\ŷk⇩  k‹       kz\^:kÈ<kp4,"&kv  R 4¯v•&kÔ {Æ)4kÀ{÷l8` {÷lký⇧ýkøkú|œòkÿl kûkù{þ|l    ®ñfl ®    `®€⇧ð {þkül®ú•⇧ó l¯ÿ®û¿|llkü®ùfll|…kú ¶í•  kükÿ«þkî|lkúœükÿl{ý{ül®‘ {þ{ÿ®ü¿{ýl kþ{ü®°|l®û¿¬l® ⇧ü kþ{ü kú®Ð|¶þflký®þïlký†® | {ý®À|lll®û¯l|¯¯þ/Çúflkÿkÿl{ûl®úflkÿkükþ{ýl®ýfl| ký{ýl® kÿll{úl®°|l ®þ﯅®û¿…l‹•⇨®øÿÜù$¯åÿ¶c"…ç+áŷÂ'+íÆ@®©~`)¨ ä—−û ã?Îãå,Oâ?‘è
  6168.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  6169. P á@ ã  á0àã°[â)ºÕä
  6170. QâªQã
  6171. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  6172. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  6173. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿêð árcc 4.00
  6174.        WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿtQsysInfo⇩h½ÅóprogInfo`{¸áxfersend¦úþ−JfpuInfoD@‰¸&ÔÌÐÿÿÿÿÿ  öÿÿ=0ÿÿÿÿ~
  6175. “þÿÿ
  6176. ìÿÿÿ@+,/ðþÿÿÖÿÿÿÇ/ÿÿÿÿ6“ÿÿÿBÄÿÿÿ5ñBÿÿÿÿlÿÿÿ"…ÿÿÿÇfÿÿÿÿ/hÿÿÿÄ‘ÿÿÿÇtÿÿÿÿDÿÿÿdÿÿÿÇzÿÿÿÿ/@ÿÿÿCdÿÿÿÇ⇦ÿÿÿÿ@ÿÿÿ<ÿÿÿǸÿÿÿÿ/ÿÿÿÖ<ÿÿÿÇÇÿÿÿÿôþÿÿÿÿÿÇÚÿÿÿÿv¸öÿÿŵ ÷ÿÿ87<Untitled>ÌþÿÿìþÿÿÇRAM speed/ÈþÿÿÖìþÿÿÇèÿÿÿÿ¤þÿÿÄþÿÿÇDRAM refresh/ þÿÿ×ÄþÿÿÇõÿÿÿÿ
  6177. býÿÿ
  6178. €þÿÿ@ 8þÿÿ
  6179. \þÿÿÇData bus28þÿÿº\þÿÿÇÿÿÿÿ YþÿÿÄ4þÿÿÇ$ÿÿÿÿ ÖþÿÿÚ,þÿÿ<7<Untitled>èýÿÿ
  6180.  þÿÿÇVIDCÿÿÿèýÿÿÄ þÿÿÇ)ÿÿÿÿ p¨÷ÿÿLÌ÷ÿÿ'0ÿÿÿÿÀýÿÿäýÿÿÇMÿÿÿÿÀýÿÿÄäýÿÿÇZÿÿÿÿ |÷ÿÿº ÷ÿÿÇARMÿÿÿÿ—ýÿÿþ¼ýÿÿÇProcessor—ýÿÿļýÿÿÇbÿÿÿÿ ÿ|÷ÿÿÍ ÷ÿÿÇfÿÿÿÿ
  6181. pýÿÿú“ýÿÿÇIdledlepýÿÿÄ“ýÿÿÇlÿÿÿÿ i¼öÿÿÍàöÿÿÇoÿÿÿÿ
  6182. pÈúÿÿ|Ôüÿÿ87<Untitled>ýÿÿÆ(ýÿÿÇARM speedøýÿÿÇ,ýÿÿÇuÿÿÿÿ jØüÿÿFüüÿÿÇÿÿÿÿ¬üÿÿÊÐüÿÿÇARM index_¬üÿÿÇÐüÿÿdžÿÿÿÿ
  6183. ¸úÿÿ
  6184. Pýÿÿ@¡¢sDùÿÿçlùÿÿÇ¥ÿÿÿÿ2☓üÿÿʨüÿÿDZÿÿÿÿº\üÿÿ:€üÿÿÇGroup 1_\üÿÿÇ€üÿÿÇÌÿÿÿÿ
  6185. T÷ÿÿ x÷ÿÿÇÑÿÿÿÿº4üÿÿJXüÿÿÇGroup 1a_4üÿÿÇXüÿÿÇÜÿÿÿÿ
  6186. ýT÷ÿÿÍx÷ÿÿÇáÿÿÿÿº üÿÿ:0üÿÿÇGroup 2_ üÿÿÇ0üÿÿÇçÿÿÿÿ
  6187. lùÿÿJ‘ùÿÿÇìÿÿÿÿºäûÿÿ:üÿÿÇGroup 3_äûÿÿÇüÿÿÇþÿÿÿÿ
  6188. ,÷ÿÿP÷ÿÿÇMFLOPS(3) FPº¼ûÿÿ:àûÿÿÇGroup 4_¼ûÿÿÇàûÿÿÇÿÿÿÿ
  6189. ý,÷ÿÿÍP÷ÿÿÇÿÿÿÿ“ûÿÿʸûÿÿÇÿÿÿÿºlûÿÿ:‘ûÿÿÇGroup 1_lûÿÿÇ‘ûÿÿÇ#ÿÿÿÿ
  6190. DùÿÿºhùÿÿÇLCD ASICºDûÿÿFhûÿÿÇGroup 1a_DûÿÿÇhûÿÿÇ(ÿÿÿÿ
  6191. ÷ÿÿÚ(÷ÿÿÇDhrystoneºûÿÿ:@ûÿÿÇGroup 2_ûÿÿÇ@ûÿÿÇ-ÿÿÿÿ
  6192. ý÷ÿÿÍ(÷ÿÿÇ2ÿÿÿÿºôúÿÿ:ûÿÿÇGroup 3_ôúÿÿÇûÿÿÇ8ÿÿÿÿ
  6193. slùÿÿë“ùÿÿÇ=ÿÿÿÿ2ºÌúÿÿ:ðúÿÿÇGroup 4_ÌúÿÿÇðúÿÿÇDÿÿÿÿ
  6194. ¼öÿÿNàöÿÿÇSIÿÿÿÿ6ùÿÿ
  6195. ¦úÿÿ@IJ\úÿÿº€úÿÿÇMEMCtypes\úÿÿë☓úÿÿÇMÿÿÿÿ24úÿÿºXúÿÿÇIOCtypes4úÿÿï\úÿÿÇSÿÿÿÿ2 úÿÿº0úÿÿÇIOEBypes úÿÿï4úÿÿÇ[ÿÿÿÿ2äùÿÿºúÿÿÇVIDCtypesäùÿÿÓ úÿÿÇgÿÿÿÿ2¼ùÿÿºàùÿÿÇARMtypes¼ùÿÿëäùÿÿÇoÿÿÿÿ2“ùÿÿº¸ùÿÿÇFPAtypes“ùÿÿë¼ùÿÿÇflÿÿÿÿ2þ÷ÿÿ
  6196. "ùÿÿ@ª«ØøÿÿøøÿÿÇ®ÿÿÿÿsÔøÿÿëüøÿÿǾÿÿÿÿ2°øÿÿ:ÐøÿÿÇÑÿÿÿÿs¬øÿÿëÔøÿÿÇãÿÿÿÿ2⇦øÿÿ:¨øÿÿÇÿÿÿÿs☓øÿÿë¬øÿÿÇ#ÿÿÿÿ2`øÿÿ:€øÿÿÇ6ÿÿÿÿs\øÿÿë☓øÿÿÇEÿÿÿÿ28øÿÿ:XøÿÿÇdÿÿÿÿs4øÿÿë\øÿÿÇvÿÿÿÿ2s øÿÿë4øÿÿÇ◰ÿÿÿÿ2¨öÿÿ
  6197. ê÷ÿÿ@—−$ùÿÿp8ùÿÿ†ÿÿÿÿ&Ô÷ÿÿ‹ø÷ÿÿ±ÿÿÿÿ'Öðýÿÿ
  6198. þÿÿ<7<Untitled>ÖÈýÿÿÞÜýÿÿ<7<Untitled>Ö ýÿÿ„´ýÿÿ<7<Untitled>ÖxýÿÿÞ…ýÿÿ<7<Untitled>Ø´üÿÿLÈüÿÿ<7<Untitled>ØdüÿÿPxüÿÿ<7<Untitled>Ø<üÿÿ$Püÿÿ<7<Untitled>ØüÿÿX(üÿÿ<7<Untitled>Øìûÿÿ\üÿÿ<7<Untitled>ØÄûÿÿLØûÿÿ<7<Untitled>ØtûÿÿL⇦ûÿÿ<7<Untitled>ØLûÿÿL`ûÿÿ<7<Untitled>Ø$ûÿÿL8ûÿÿ<7<Untitled>ØüúÿÿLûÿÿ<7<Untitled>ØÔúÿÿLèúÿÿ<7<Untitled>Þ☓÷ÿÿv—÷ÿÿ<7<Untitled>Þ\÷ÿÿvp÷ÿÿ<7<Untitled>Þ4÷ÿÿvH÷ÿÿ<7<Untitled>Þ ÷ÿÿv ÷ÿÿ<7<Untitled>ÞÄöÿÿÞØöÿÿ<7<Untitled>6
  6199. Va ÇØÿÿÿÿ$Ðÿÿÿ€åÿÿÿÿ$hþÿÿ “þÿÿûÿÿÿÿ $8ýÿÿ@`ýÿÿÿÿÿÿ$…úÿÿ‘¸úÿÿ-ÿÿÿÿŒÿÿÿ"ºÿÿÿaÇDÿÿÿÿSystem InformationR4450nS (4 n-cycles)Standard A310 running RISC OS v2.00Available RAM1024KAvailable ROM2048K (+512K in 3 extension ROMs)              High ROM speed125nS (Paged mode)Low ROM speed125nS (8MHz)During video refresh onlyR432000000 bytes/S100%29.64%300 Series issue 1, RISCOS 2DRAM refresh0.0625%70%1.0000%1.0004.68 MIPS300 Series, MEMC1, 8MHz ARM20.72R4Not presentInstruction set breakdown:0.75General FP0.491.0000.81Peripheral cntrlr0.810.811.000Looped Instructions:0.810.810.811.0000.8182C7100.81R4MEMC1UnknownIOEB type 1UnknownARM1, ARM2, ARM2as, ARM250, ARM3, ARM61, ARM600Not fittedR4RISC OS version3.10 (30 Apr 1992)Video screen modeMode 60 (1280x480, 4 bpp, 55.1 Hz, 18.5 Mb/S)Unique machine ID&12345678 87654321Floating pointSoftware FPE v2.80 (02-Feb-91)Dhrystone results49.5 µS/loop25000.1 dhrystones/SR4 Additional details  Speed indexes (conducted in Mode 32) Machine type RAM/ROM information  Data bus bandwidth allocation  CPU information  Chip set information Machine type®PBHÿÿÿÿ ☓ ÜþÿÿÈ=0xÿÿÿÿ    ¤4ÿÿÿTdÿÿÿ=·OKtitled>þfiÄÿÿÿ⇩øÿÿÿ=a⇧¡(fi⇦ÿÿÿ⇩¼ÿÿÿ=a¤À(fiLÿÿÿ⇩€ÿÿÿ=aÃÛ(fiÿÿÿ⇩Dÿÿÿ=aÞð>ÌÿÿÿŒôÿÿÿbNameled>þ…ÿÿÿ†¸ÿÿÿbPurpose>þPÿÿÿŒxÿÿÿbAuthors>þÿÿÿ†@ÿÿÿbVersion>þAbout this programArmSI - speed indexerR2Measures system performanceR2© J.Abbott & Nick SmithR23.20H (05-Nov-92)R2Z°r`ÿÿÿÿ☓üÿÿ=Save as:>F¨ÿÿÿ⇦ìÿÿÿa׸¹ `ÿÿÿ¸‘ÿÿÿ=ñÍÎÂXÿÿÿ“ÿÿÿ=aÙÜ sfile_3f2;pptr_handpptr_writeOKR6,3.äÌ €ÿÿÿÿÿ $øÿÿÌ€=0Xÿÿÿÿ ⇦
  6200. lùÿÿÂj@st"†ÿÿÿ*ÀÿÿÿÇwÿÿÿÿºtÿÿÿ—ÿÿÿÇSTFitled>ºLÿÿÿpÿÿÿÇLDFitled>$ÿÿÿ:HÿÿÿÇÿÿÿÿºüþÿÿ ÿÿÿÇFLTitled>ºÔþÿÿøþÿÿÇFIXitled>¬þÿÿ:ÐþÿÿÇ−ÿÿÿÿº☓þÿÿ¨þÿÿÇMVFitled>º\þÿÿ€þÿÿÇMNFitled>º4þÿÿXþÿÿÇABSitled>º þÿÿ0þÿÿÇRNDitled>ºäýÿÿþÿÿÇSQTitled>º¼ýÿÿàýÿÿÇLOGitled>º“ýÿÿ¸ýÿÿÇLGNitled>ºlýÿÿ‘ýÿÿÇEXPitled>ºDýÿÿhýÿÿÇSINitled>ºýÿÿ@ýÿÿÇCOSitled>ºôüÿÿýÿÿÇTANitled>ºÌüÿÿðüÿÿÇASNitled>º¤üÿÿÈüÿÿÇACSitled>º|üÿÿ üÿÿÇATNitled>Tüÿÿ:xüÿÿǪÿÿÿÿº,üÿÿPüÿÿÇADFitled>ºüÿÿ(üÿÿÇMUFitled>ºÜûÿÿüÿÿÇSUFitled>º´ûÿÿØûÿÿÇRSFitled>º…ûÿÿ°ûÿÿÇDVFitled>ºdûÿÿ⇦ûÿÿÇRDFitled>º<ûÿÿ`ûÿÿÇPOWitled>ºûÿÿ8ûÿÿÇRPWitled>ºìúÿÿûÿÿÇRMFitled>ºÄúÿÿèúÿÿÇFMLitled>º†úÿÿÀúÿÿÇFDVitled>ºtúÿÿ—úÿÿÇFRDitled>ºLúÿÿpúÿÿÇPOLitled>$úÿÿjHúÿÿǼÿÿÿÿºüùÿÿ úÿÿÇCMFitled>ºÔùÿÿøùÿÿÇCNFitled>º¬ùÿÿÐùÿÿÇCMFEtled>º☓ùÿÿ¨ùÿÿÇCNFEtled>Äÿÿÿ*èÿÿÿÇFP index2ôÿÿÿîÇÐÿÿÿÿ,8⇦ùÿÿDðÿÿÿ 7<Untitled>î@ÇFP speed(4@Çõÿÿÿÿ Äÿÿÿ‰èÿÿÿÇÿÿÿÿ
  6201. tÿÿÿ‰—ÿÿÿÇÿÿÿÿ
  6202. Lÿÿÿ‰pÿÿÿÇ ÿÿÿÿ
  6203. üþÿÿ‰ ÿÿÿÇÿÿÿÿ
  6204. Ôþÿÿ‰øþÿÿÇÿÿÿÿ
  6205. ☓þÿÿ‰¨þÿÿÇÿÿÿÿ
  6206. \þÿÿ‰€þÿÿÇÿÿÿÿ
  6207. 4þÿÿ‰XþÿÿÇ$ÿÿÿÿ
  6208.  þÿÿ‰0þÿÿÇ)ÿÿÿÿ
  6209. äýÿÿ‰þÿÿÇ.ÿÿÿÿ
  6210. ¼ýÿÿ‰àýÿÿÇ3ÿÿÿÿ
  6211. “ýÿÿ‰¸ýÿÿÇ8ÿÿÿÿ
  6212. lýÿÿ‰‘ýÿÿÇ=ÿÿÿÿ
  6213. Dýÿÿ‰hýÿÿÇBÿÿÿÿ
  6214. ýÿÿ‰@ýÿÿÇGÿÿÿÿ
  6215. ôüÿÿ‰ýÿÿÇLÿÿÿÿ
  6216. Ìüÿÿ‰ðüÿÿÇQÿÿÿÿ
  6217. ¤üÿÿ‰ÈüÿÿÇVÿÿÿÿ
  6218. |üÿÿ‰ üÿÿÇ[ÿÿÿÿ
  6219. ,üÿÿ‰PüÿÿÇ`ÿÿÿÿ
  6220. üÿÿ‰(üÿÿÇeÿÿÿÿ
  6221. Üûÿÿ‰üÿÿÇjÿÿÿÿ
  6222. ´ûÿÿ‰ØûÿÿÇoÿÿÿÿ
  6223. …ûÿÿ‰°ûÿÿÇtÿÿÿÿ
  6224. dûÿÿ‰⇦ûÿÿÇyÿÿÿÿ
  6225. <ûÿÿ‰`ûÿÿÇ~ÿÿÿÿ
  6226. ûÿÿ‰8ûÿÿÇ◰ÿÿÿÿ
  6227. ìúÿÿ‰ûÿÿÇ⇦ÿÿÿÿ
  6228. Äúÿÿ‰èúÿÿÇ™ÿÿÿÿ
  6229. †úÿÿ‰ÀúÿÿÇ‹ÿÿÿÿ
  6230. túÿÿ‰—úÿÿÇ–ÿÿÿÿ
  6231. Lúÿÿ‰púÿÿdžÿÿÿÿ
  6232. üùÿÿ‰ úÿÿÇ¡ÿÿÿÿ
  6233. Ôùÿÿ‰øùÿÿǦÿÿÿÿ
  6234. ¬ùÿÿ‰ÐùÿÿÇ«ÿÿÿÿ
  6235. ☓ùÿÿ‰¨ùÿÿÇ°ÿÿÿÿ
  6236. fiÌÿÿÿ¢àÿÿÿ$7<Untitled>fi|ÿÿÿB‘ÿÿÿ$7<Untitled>fiTÿÿÿBhÿÿÿ$7<Untitled>fiÿÿÿBÿÿÿ$7<Untitled>fiÜþÿÿBðþÿÿ$7<Untitled>fi…þÿÿB þÿÿ$7<Untitled>fidþÿÿBxþÿÿ$7<Untitled>fi<þÿÿBPþÿÿ$7<Untitled>fiþÿÿB(þÿÿ$7<Untitled>fiìýÿÿBþÿÿ$7<Untitled>fiÄýÿÿBØýÿÿ$7<Untitled>fi†ýÿÿB°ýÿÿ$7<Untitled>fitýÿÿB⇦ýÿÿ$7<Untitled>fiLýÿÿB`ýÿÿ$7<Untitled>fi$ýÿÿB8ýÿÿ$7<Untitled>fiüüÿÿBýÿÿ$7<Untitled>fiÔüÿÿBèüÿÿ$7<Untitled>fi¬üÿÿBÀüÿÿ$7<Untitled>fi☓üÿÿB—üÿÿ$7<Untitled>fi4üÿÿBHüÿÿ$7<Untitled>fi üÿÿB üÿÿ$7<Untitled>fiäûÿÿBøûÿÿ$7<Untitled>fi¼ûÿÿBÐûÿÿ$7<Untitled>fi“ûÿÿB¨ûÿÿ$7<Untitled>filûÿÿB€ûÿÿ$7<Untitled>fiDûÿÿBXûÿÿ$7<Untitled>fiûÿÿB0ûÿÿ$7<Untitled>fiôúÿÿBûÿÿ$7<Untitled>fiÌúÿÿBàúÿÿ$7<Untitled>fi¤úÿÿB¸úÿÿ$7<Untitled>fi|úÿÿB‘úÿÿ$7<Untitled>fiTúÿÿBhúÿÿ$7<Untitled>fiúÿÿBúÿÿ$7<Untitled>fiÜùÿÿBðùÿÿ$7<Untitled>fi´ùÿÿBÈùÿÿ$7<Untitled>fi…ùÿÿB ùÿÿ$7<Untitled>$L€µÿÿÿÿ ,øÿÿÂXùÿÿaÓÔ "@ùÿÿnpùÿÿa×ÿÿÿÿùÿÿx<ùÿÿaìÿÿÿÿp ùÿÿÌ@ùÿÿa ÿÿÿÿ\0øÿÿbXùÿÿa€ ¾ðøÿÿjùÿÿ`Iterations¾Ìøÿÿºìøÿÿaÿÿÿÿ¾¨øÿÿ¢Èøÿÿ`MFLOPS(1)¸ðøÿÿdùÿÿa,ÿÿÿÿ
  6237. ¸Ìøÿÿdìøÿÿa2ÿÿÿÿ
  6238. ¸¨øÿÿdÈøÿÿa6ÿÿÿÿ
  6239. ¸☓øÿÿd¤øÿÿa;ÿÿÿÿ
  6240. ¸`øÿÿd€øÿÿa@ÿÿÿÿ
  6241. ¸<øÿÿd\øÿÿaEÿÿÿÿ
  6242. ¾☓øÿÿ¢¤øÿÿ`MFLOPS(2)¾`øÿÿ¢€øÿÿ`MFLOPS(3)¾<øÿÿ¢\øÿÿ`MFLOPS(4)Floating Point InformationR4Memory transferRegister transferUnary operationsBinary operationsRegister comparison8MHz ARM2, Software FPEmulator v2.504.68 MFLOPS0.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.00 Floating Point instructions R4 Flops20 benchmarks IEEE Double precisionIEEE Double precisionR4NullTime (µsec)123451230.400.400.400.40derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿt\sysInfoÐprogInfoÕÙxfersend®fpuInfo@Ītÿÿÿÿ  ÷ÿÿÌ=0XÿÿÿÿxÐÿÿÿà1@kÿÿÿÿ,ÿÿÿÆPÿÿÿÇŴÿÿÿÿÄÔÿÿÿÐüÿÿÿ1ñ7“ÿÿÿÿ¤ÿÿÿÄÿÿÿǸÿÿÿÿ ÿÿÿ´ÈÿÿÿÇÆÿÿÿÿ|ÿÿÿ†ÿÿÿÇÌÿÿÿÿ|ÿÿÿ3 ÿÿÿÇÚÿÿÿÿ@Tÿÿÿ
  6243. tÿÿÿÇüÿÿÿÿTÿÿÿÆxÿÿÿÇ ÿÿÿÿ,ÿÿÿLÿÿÿÇÿÿÿÿ\÷ÿÿhü÷ÿÿ87<Untitled>ÿÿÿ$ÿÿÿÇRAM speedÿÿÿÆ(ÿÿÿÇ,ÿÿÿÿÜþÿÿüþÿÿÇDRAM refreshÜþÿÿÇÿÿÿÇ9ÿÿÿÿþÿÿÿ¤þÿÿBÔþÿÿ1@Sÿÿÿÿ |þÿÿú þÿÿÇData bus |þÿÿ¨ þÿÿÇsÿÿÿÿ GTþÿÿ²xþÿÿÇ☓ÿÿÿÿ Ä\þÿÿÈpþÿÿ<×<Untitled>,þÿÿúPþÿÿÇVIDCÿÿÿ§,þÿÿ²PþÿÿÇ⇨ÿÿÿÿ Vøÿÿ2(øÿÿ'‘ÿÿÿÿþÿÿ
  6244. (þÿÿÇ­ÿÿÿÿ³þÿÿ²(þÿÿǺÿÿÿÿ Ø÷ÿÿ¬ü÷ÿÿÇARMÿÿÿÿÜýÿÿ¶þÿÿÇProcessor³Üýÿÿ²þÿÿÇÂÿÿÿÿ KØ÷ÿÿ³ü÷ÿÿÇÆÿÿÿÿ
  6245. ´ýÿÿŒØýÿÿÇIdledle³´ýÿÿ²ØýÿÿÇÌÿÿÿÿ O÷ÿÿ³<÷ÿÿÇÏÿÿÿÿ
  6246. \ûÿÿh$ýÿÿ87<Untitled>Týÿÿ¶xýÿÿÇARM speed°Týÿÿ³xýÿÿÇÕÿÿÿÿ V(ýÿÿ2LýÿÿÇßÿÿÿÿüüÿÿº ýÿÿÇARM indexKüüÿÿ³ ýÿÿÇüÿÿÿÿ
  6247. þÿÿÿ|ýÿÿR¬ýÿÿ1@ÿÿÿÿe—ùÿÿÝÀùÿÿÇÿÿÿÿ2ÔüÿÿºøüÿÿÇÿÿÿÿ¦¬üÿÿ&ÐüÿÿÇGroup 1K¬üÿÿ³ÐüÿÿÇ:ÿÿÿÿ
  6248. °÷ÿÿ<Ô÷ÿÿÇ?ÿÿÿÿ¦☓üÿÿ6¨üÿÿÇGroup 1aK☓üÿÿ³¨üÿÿÇJÿÿÿÿ
  6249. ç°÷ÿÿ³Ô÷ÿÿÇOÿÿÿÿ¦\üÿÿ&€üÿÿÇGroup 2K\üÿÿ³€üÿÿÇUÿÿÿÿ
  6250. Äùÿÿ:èùÿÿÇZÿÿÿÿ¦4üÿÿ&XüÿÿÇGroup 3K4üÿÿ³XüÿÿÇlÿÿÿÿ
  6251. ⇦÷ÿÿ¬÷ÿÿÇqÿÿÿÿ¦ üÿÿ&0üÿÿÇGroup 4K üÿÿ³0üÿÿÇ~ÿÿÿÿ
  6252. ã⇦÷ÿÿ³¬÷ÿÿÇ◰ÿÿÿÿäûÿÿºüÿÿÇ⇨ÿÿÿÿ¦¼ûÿÿ&àûÿÿÇGroup 1K¼ûÿÿ³àûÿÿÇfiÿÿÿÿ
  6253. †ùÿÿªÀùÿÿÇLCD ASIC¦“ûÿÿ2¸ûÿÿÇGroup 1aK“ûÿÿ³¸ûÿÿÇ£ÿÿÿÿ
  6254. `÷ÿÿ¬☓÷ÿÿÇDhrystone¦lûÿÿ&‘ûÿÿÇGroup 2Klûÿÿ³‘ûÿÿǨÿÿÿÿ
  6255. ã`÷ÿÿ³☓÷ÿÿÇ­ÿÿÿÿ¦Dûÿÿ&hûÿÿÇGroup 3KDûÿÿ³hûÿÿdzÿÿÿÿ
  6256. eÀùÿÿÝèùÿÿǸÿÿÿÿ2¦ûÿÿ&@ûÿÿÇGroup 4Kûÿÿ³@ûÿÿÇ¿ÿÿÿÿ
  6257. ÷ÿÿ@<÷ÿÿÇSIÿÿÿÿþÿÿÿÜúÿÿV ûÿÿ1@Äÿÿÿÿ´úÿÿªØúÿÿÇMEMCtypee°úÿÿÝØúÿÿÇÛÿÿÿÿ2…úÿÿª°úÿÿÇIOCtypee⇦úÿÿá°úÿÿÇáÿÿÿÿ2dúÿÿª⇦úÿÿÇIOEBypee`úÿÿá⇦úÿÿÇéÿÿÿÿ2<úÿÿª`úÿÿÇVIDCtypee8úÿÿÝ`úÿÿÇõÿÿÿÿ2úÿÿª8úÿÿÇARMtypeeúÿÿÝ8úÿÿÇýÿÿÿÿ2ìùÿÿªúÿÿÇFPAtypeeèùÿÿÝúÿÿÇ-ÿÿÿÿ2\ùÿÿ…ùÿÿ1@8ÿÿÿÿ0ùÿÿ PùÿÿÇMÿÿÿÿ_,ùÿÿ×TùÿÿÇ]ÿÿÿÿ2ùÿÿ,(ùÿÿÇpÿÿÿÿ_ùÿÿ×,ùÿÿÇŵÿÿÿÿ2àøÿÿ,ùÿÿÇ°ÿÿÿÿ_Üøÿÿ×ùÿÿÇÂÿÿÿÿ2¸øÿÿ,ØøÿÿÇÕÿÿÿÿ_´øÿÿ×ÜøÿÿÇäÿÿÿÿ2‘øÿÿ,°øÿÿÇÿÿÿÿ_…øÿÿ×´øÿÿÇÿÿÿÿ2_døÿÿ×…øÿÿÇ"ÿÿÿÿ2þÿÿÿ,øÿÿR\øÿÿ1@7ÿÿÿÿW0øÿÿsTøÿÿ1@Gÿÿÿÿo0øÿÿËTøÿÿ1@YÿÿÿÿÄ4þÿÿøHþÿÿ<×<Untitled>Ä þÿÿÌ þÿÿ<×<Untitled>Ääýÿÿ☓øýÿÿ<×<Untitled>ļýÿÿÌÐýÿÿ<×<Untitled>Äýÿÿ8ýÿÿ<×<Untitled>Ä´üÿÿ<Èüÿÿ<×<Untitled>Ä…üÿÿ üÿÿ<×<Untitled>ÄdüÿÿDxüÿÿ<×<Untitled>Ä<üÿÿHPüÿÿ<×<Untitled>Äüÿÿ8(üÿÿ<×<Untitled>ÄÄûÿÿ8Øûÿÿ<×<Untitled>Ćûÿÿ8°ûÿÿ<×<Untitled>Ätûÿÿ8⇦ûÿÿ<×<Untitled>ÄLûÿÿ8`ûÿÿ<×<Untitled>Ä$ûÿÿ88ûÿÿ<×<Untitled>Äà÷ÿÿ\ô÷ÿÿ<×<Untitled>ĸ÷ÿÿ\Ì÷ÿÿ<×<Untitled>Ä‘÷ÿÿ\¤÷ÿÿ<×<Untitled>Äh÷ÿÿ\|÷ÿÿ<×<Untitled>Ä ÷ÿÿÄ4÷ÿÿ<×<Untitled>System Information RAM/ROM information:450nS (4 n-cycles)Standard A310 running RISC OS v2.00Available RAM1024KAvailable ROM2048K (+512K in 3 extension ROMs)High ROM speed125nS (Paged mode)Low ROM speed125nS (8MHz)During video refresh only Data bus bandwidth allocation:32000000 bytes/S100%29.64%300 Series issue 1, RISCOS 2DRAM refresh0.0625%70%1.0000%1.0004.68 MIPS300 Series, MEMC1, 8MHz ARM20.72 ARM information:Not presentInstruction set breakdown:0.75General FP0.491.0000.81Peripheral cntrlr0.81MFLOPS(3) FP0.811.000Looped Instructions:0.810.810.811.0000.8182C7100.81 Chip set information:MEMC1UnknownIOEB type 1UnknownARM1, ARM2, ARM2as, ARM250, ARM3, ARM61, ARM600Not fitted Additional details:RISC OS version3.10 (30 Apr 1992)Video screen modeMode 60 (1280x480, 4 bpp, 55.1 Hz, 18.5 Mb/S)Unique machine ID&12345678 87654321Floating pointSoftware FPE v2.80 (02-Feb-91)Dhrystone results49.5 µS/loop25000.1 dhrystones/S Speed indexes:Conducted in MODE32®tFHÿÿÿÿ☓ ,ÿÿÿ—=0—ÿÿÿÿ
  6258. ¤4ÿÿÿTdÿÿÿ=·OKtitled>þŒÌÿÿÿŷüÿÿÿ=a«ÿÿÿÿ(Œ—ÿÿÿŷÈÿÿÿ=aÁÿÿÿÿ(Œdÿÿÿŷ“ÿÿÿ=aÝÿÿÿÿ(Œ0ÿÿÿŷ`ÿÿÿ=aóÿÿÿÿ>ÐÿÿÿŒøÿÿÿbName:led>þ†ÿÿÿ†ÈÿÿÿbPurpose:>þhÿÿÿŒ‘ÿÿÿbAuthors:>þ4ÿÿÿ†\ÿÿÿbVersion:>þÿÿÿŒ8ÿÿÿersion:>þAbout this programArmSI - speed indexerMeasures system performanceJ.Abbott & Nick Smith3.20H (05-Nov-92)V¨VPÿÿÿÿ☓üÿÿ=Save as:>H¨ÿÿÿ⇩ìÿÿÿa׸¹ `ÿÿÿ¸‘ÿÿÿ=ñÍÎÀ`ÿÿÿö‘ÿÿÿ=‘ÇOKtitled>dsfile_3f2;pptr_handpptr_write,ä¾ €ÿÿÿÿ ÿ <øÿÿÌ€=0øÿÿÿÿ ŶúÿÿÿL€1@ÿÿÿÿ"
  6259. ¤ÿÿÿÈÿÿÿÇ0ÿÿÿÿ¦|ÿÿÿþ ÿÿÿÇSTFitled>¦TÿÿÿþxÿÿÿÇLDFitled>
  6260. ,ÿÿÿ&PÿÿÿÇ@ÿÿÿÿ¦ÿÿÿþ(ÿÿÿÇFLTitled>¦ÜþÿÿþÿÿÿÇFIXitled>
  6261. ´þÿÿ&ØþÿÿÇRÿÿÿÿ¦…þÿÿþ°þÿÿÇMVFitled>¦dþÿÿþ⇦þÿÿÇMNFitled>¦<þÿÿþ`þÿÿÇABSitled>¦þÿÿþ8þÿÿÇRNDitled>¦ìýÿÿþþÿÿÇSQTitled>¦ÄýÿÿþèýÿÿÇLOGitled>¦†ýÿÿþÀýÿÿÇLGNitled>¦týÿÿþ—ýÿÿÇEXPitled>¦LýÿÿþpýÿÿÇSINitled>¦$ýÿÿþHýÿÿÇCOSitled>¦üüÿÿþ ýÿÿÇTANitled>¦ÔüÿÿþøüÿÿÇASNitled>¦¬üÿÿþÐüÿÿÇACSitled>¦☓üÿÿþ¨üÿÿÇATNitled>
  6262. \üÿÿ&€üÿÿÇcÿÿÿÿ¦4üÿÿþXüÿÿÇADFitled>¦ üÿÿþ0üÿÿÇMUFitled>¦äûÿÿþüÿÿÇSUFitled>¦¼ûÿÿþàûÿÿÇRSFitled>¦“ûÿÿþ¸ûÿÿÇDVFitled>¦lûÿÿþ‘ûÿÿÇRDFitled>¦DûÿÿþhûÿÿÇPOWitled>¦ûÿÿþ@ûÿÿÇRPWitled>¦ôúÿÿþûÿÿÇRMFitled>¦ÌúÿÿþðúÿÿÇFMLitled>¦¤úÿÿþÈúÿÿÇFDVitled>¦|úÿÿþ úÿÿÇFRDitled>¦TúÿÿþxúÿÿÇPOLitled>
  6263. ,úÿÿVPúÿÿÇuÿÿÿÿ¦úÿÿþ(úÿÿÇCMFitled>¦ÜùÿÿþúÿÿÇCNFitled>¦´ùÿÿþØùÿÿÇCMFEtled>¦…ùÿÿþ°ùÿÿÇCNFEtled>
  6264. ÌÿÿÿðÿÿÿÇFP indexüÿÿÿÚ Ç⇨ÿÿÿÿ,$‘ùÿÿ0øÿÿÿ 7<Untitled>
  6265. $ÚHÇFP speed$ HÇ®ÿÿÿÿ 
  6266. ÌÿÿÿzðÿÿÿǺÿÿÿÿ
  6267. |ÿÿÿz ÿÿÿÇ¿ÿÿÿÿ
  6268. TÿÿÿzxÿÿÿÇÄÿÿÿÿ
  6269. ÿÿÿz(ÿÿÿÇÉÿÿÿÿ
  6270. ÜþÿÿzÿÿÿÇÎÿÿÿÿ
  6271. …þÿÿz°þÿÿÇÓÿÿÿÿ
  6272. dþÿÿz⇦þÿÿÇØÿÿÿÿ
  6273. <þÿÿz`þÿÿÇÝÿÿÿÿ
  6274. þÿÿz8þÿÿÇâÿÿÿÿ
  6275. ìýÿÿzþÿÿÇçÿÿÿÿ
  6276. ÄýÿÿzèýÿÿÇìÿÿÿÿ
  6277. †ýÿÿzÀýÿÿÇñÿÿÿÿ
  6278. týÿÿz—ýÿÿÇöÿÿÿÿ
  6279. LýÿÿzpýÿÿÇûÿÿÿÿ
  6280. $ýÿÿzHýÿÿÇÿÿÿÿ
  6281. üüÿÿz ýÿÿÇÿÿÿÿ
  6282. ÔüÿÿzøüÿÿÇ
  6283. ÿÿÿÿ
  6284. ¬üÿÿzÐüÿÿÇÿÿÿÿ
  6285. ☓üÿÿz¨üÿÿÇÿÿÿÿ
  6286. 4üÿÿzXüÿÿÇÿÿÿÿ
  6287.  üÿÿz0üÿÿÇÿÿÿÿ
  6288. äûÿÿzüÿÿÇ#ÿÿÿÿ
  6289. ¼ûÿÿzàûÿÿÇ(ÿÿÿÿ
  6290. “ûÿÿz¸ûÿÿÇ-ÿÿÿÿ
  6291. lûÿÿz‘ûÿÿÇ2ÿÿÿÿ
  6292. DûÿÿzhûÿÿÇ7ÿÿÿÿ
  6293. ûÿÿz@ûÿÿÇ<ÿÿÿÿ
  6294. ôúÿÿzûÿÿÇAÿÿÿÿ
  6295. ÌúÿÿzðúÿÿÇFÿÿÿÿ
  6296. ¤úÿÿzÈúÿÿÇKÿÿÿÿ
  6297. |úÿÿz úÿÿÇPÿÿÿÿ
  6298. TúÿÿzxúÿÿÇUÿÿÿÿ
  6299. úÿÿz(úÿÿÇZÿÿÿÿ
  6300. ÜùÿÿzúÿÿÇ_ÿÿÿÿ
  6301. ´ùÿÿzØùÿÿÇdÿÿÿÿ
  6302. …ùÿÿz°ùÿÿÇiÿÿÿÿ
  6303. ⇩Ôÿÿÿ‰èÿÿÿ$×<Untitled>⇩☓ÿÿÿ.—ÿÿÿ$×<Untitled>⇩\ÿÿÿ.pÿÿÿ$×<Untitled>⇩ ÿÿÿ. ÿÿÿ$×<Untitled>⇩äþÿÿ.øþÿÿ$×<Untitled>⇩“þÿÿ.¨þÿÿ$×<Untitled>⇩lþÿÿ.€þÿÿ$×<Untitled>⇩Dþÿÿ.Xþÿÿ$×<Untitled>⇩þÿÿ.0þÿÿ$×<Untitled>⇩ôýÿÿ.þÿÿ$×<Untitled>⇩Ìýÿÿ.àýÿÿ$×<Untitled>⇩¤ýÿÿ.¸ýÿÿ$×<Untitled>⇩|ýÿÿ.‘ýÿÿ$×<Untitled>⇩Týÿÿ.hýÿÿ$×<Untitled>⇩,ýÿÿ.@ýÿÿ$×<Untitled>⇩ýÿÿ.ýÿÿ$×<Untitled>⇩Üüÿÿ.ðüÿÿ$×<Untitled>⇩´üÿÿ.Èüÿÿ$×<Untitled>⇩…üÿÿ. üÿÿ$×<Untitled>⇩<üÿÿ.Püÿÿ$×<Untitled>⇩üÿÿ.(üÿÿ$×<Untitled>⇩ìûÿÿ.üÿÿ$×<Untitled>⇩Äûÿÿ.Øûÿÿ$×<Untitled>⇩†ûÿÿ.°ûÿÿ$×<Untitled>⇩tûÿÿ.⇦ûÿÿ$×<Untitled>⇩Lûÿÿ.`ûÿÿ$×<Untitled>⇩$ûÿÿ.8ûÿÿ$×<Untitled>⇩üúÿÿ.ûÿÿ$×<Untitled>⇩Ôúÿÿ.èúÿÿ$×<Untitled>⇩¬úÿÿ.Àúÿÿ$×<Untitled>⇩☓úÿÿ.—úÿÿ$×<Untitled>⇩\úÿÿ.púÿÿ$×<Untitled>⇩ úÿÿ. úÿÿ$×<Untitled>⇩äùÿÿ.øùÿÿ$×<Untitled>⇩¼ùÿÿ.Ðùÿÿ$×<Untitled>⇩“ùÿÿ.¨ùÿÿ$×<Untitled>þÿÿÿLùÿÿÞ|ùÿÿ1@nÿÿÿÿ"
  6304. $ùÿÿfDùÿÿÇŵÿÿÿÿX$ùÿÿ´Dùÿÿ Ç—ÿÿÿÿ¬øøÿÿXùÿÿIterationsÿ¬Ôøÿÿ¨ôøÿÿ®ÿÿÿÿ¬°øÿÿfÐøÿÿ¾ÿÿÿÿ¬…øÿÿ`¬øÿÿÈÿÿÿÿ¬høÿÿh⇦øÿÿÒÿÿÿÿ¬DøÿÿddøÿÿÜÿÿÿÿªøøÿÿVùÿÿæÿÿÿÿ ªÔøÿÿVôøÿÿìÿÿÿÿ ª°øÿÿVÐøÿÿðÿÿÿÿ ª…øÿÿV¬øÿÿõÿÿÿÿ ªhøÿÿV⇦øÿÿúÿÿÿÿ ªDøÿÿVdøÿÿÿÿÿÿÿ Floating Point Information Floating Point instructionsMemory transferRegister transferUnary operationsBinary operationsRegister comparison8MHz ARM2, Software FPEmulator v2.504.68 MFLOPS0.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.00 Flops20 benchmarksIEEE Double precisionIEEE Double precisionNullTime (µsec)MFLOPS(1)MFLOPS(2)MFLOPS(3)MFLOPS(4)123451230.340.340.340.34nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BasicCDûÿÿÓ¯H<n&,!BootDëÿÿ-âftª,!HelpGÿÿÿÛ$*G-!RunGëÿÿú¸fi*«,!SpritesFùÿÿ
  6305. 7¸€x-TemplatesDìÿÿ4èD<÷-›!BasicCDûÿÿÓ¯H<n&,!BootDëÿÿ-âftª,!HelpGÿÿÿÛ$*G-!RunGëÿÿú¸fi*«,!SpritesFùÿÿ
  6306. 7¸€x-TemplatesDìÿÿ4èD<÷-›!Basic!BasicNick=
  6307. ô > !BasicCPÈ−6,229,1:òA_:B_$="Info":òC_:òD_:È−66¸E_%:îŶòF_("Error: "+ö$+" at line "+Ãfi)@õ:È−262369,,G_%,E_%¸H_%:È−66¸I_%:È”I_%>E_%:E_%+=100:Î:ȉH_%Ê(
  6308. É0:òJ_2É2:È−262341,,G_%<É3:È−262342,,G_%F
  6309. É6:òK_P
  6310. É9:òL_ZÉ17,18:òM_dË:ýN_%:È−262365:àn ÝòF_(e$):çfl=17È−262383:òO_:áx çfl=1046áŵEçP_%=¹ï3:È−6,21,3:!G_%=0:$(G_%+4)=e$:È−262367,G_%,1,"Basic":òO_:á…3!G_%=0:$(G_%+4)=e$:È−262367,G_%,1,"Basic":òO_:á„©ÝòC_:ÞQ_% 256,R_% 256,S_% 256:ÞT_$(77):U_%=59:V_%=3:W_%=14:X_%=(U_%-V_%)ŴW_%:Y_%=W_%*X_%+V_%-1:Z_$="Press <SPACE>, or click MOUSE, to return to the Desktop.":N_%=£:á ÝòD_:ÞG_%&300,a_%&300:Þb_%&100,c_% 11:d_$="!Basic":Þd_%©(d_$)+1:Þe_% 12,f_% 12:È−262336,200,&4B534154,"Basic":òg_:òh_:òJ_:áªâÝòg_:È−262361,,"<Basic$Dir>.Templates":$c_%=B_$:È−262363,,G_%,b_%,b_%+&100,-1,c_%,0:È−262337,,G_%¸i_%:È−262362:ój_$,k_%:$a_%=j_$:l_%=(©(j_$)-2)*16:a_%!12=&70207:a_%!20=44:a_%!24=0:m_%=a_%+28:ãi%=1¸k_%:ón_%,o_%,p_$:!m_%=n_%´ ço_%=-1…¾m_%!4=o_%:m_%!8=&7000021ÈÌ:m_%!4=i_%:m_%!8=&7000001Ò1Í:$(m_%+12)=p_$:a%=(©p_$+1)*16:ça%>l_% l_%=a%Üm_%+=24:í:a_%!16=l_%:óq_%:áæÜ Basic+,15ðÜ 0,-1,"List Voices"úÜ 2,-1,"Reset Voices"Ü 0,-1,"List Fonts"Ü 0,-1,"Delete Fonts"Ü 2,-1,"ROM Fonts""Ü 2,-1,"*Wipe RAM",Ü 0,-1,"MouseStep 3"6Ü 2,-1,"MouseStep 5"@Ü 0,-1,"Mode Info"JÜ 0,-1,"*Shut (ALL)"TÜ 0,-1,"*Modules"^Ü 0,-1,"Zap Windows"hÜ 2,-1,"Open Root $"rÜ 0,999,"Info"|Ü &80,-1,"Quit"ŷÜ 5‘-Ýòr_(s_%,t_%,u_%):È−262356,,s_%,t_%,u_%:ጼÝòh_:êv_%,w_%,x_%,y_%,z_%:e_$="xx:xx:xx":$d_%="S"+d_$:$e_%="Basic":È−262377,40,,d_$¸,,,v_%,w_%,,x_%:È−53,x_%,4¸,,y_%:v_%=v_%<<y_%:È−53,x_%,5¸,,z_%:w_%=w_%<<z_%:ç©e_$*16>v_%…v_%=©e_$*16¤Ŷ!G_%=-1:G_%!4=0:G_%!8=-8:G_%!12=G_%!4+v_%-16:G_%!16=30+w_%:G_%!20=&1700310B:G_%!24=e_%:G_%!28=d_%:G_%!32=©e_$:È−262338,,G_%¸__%:á®ÝòJ_:ç$e_%<>Á’$,17,5)…¸C$e_%=Á’$,17,5):!G_%=-2:G_%!4=__%:G_%!8=0:G_%!12=0:È−262349,,G_%ÂÍ:áÌÝòK_:ȉ(G_%!12)ÊÖÉ-2:ȉ(G_%!8)Êà0É1:ò`_:ÿ("FX 138 0 135"):ÿ("WimpTask Basic")êÉ4:òA`("")ô*É2:òr_(a_%,!G_%-120,120+44*k_%+24*q_%)þËË:á*ÝòL_:B`%=!G_%:Ô1,-1,176-8*B`%,3:ȉB`%Ê
  6311. É0:òC`&
  6312. É1:òD`0
  6313. É2:òE`:
  6314. É3:òF`D0É4:ÿ("Set Font$Path Resources:$.Fonts."):òE`NÉ5:*RAMWipeX É6:È–⇦3b É7:È–⇦5l
  6315. É8:òG`v É9:*Shut€1É10:ò`_:ÿ("FX 138 0 135"):ÿ("WimpTask Basic")⇩ É11:òH`“;É12:*Filer_OpenDir IDEFS::IDE4.$ 32 960 464 800 -si -snfiÉ13¨É14:N_%=¹²Ë:á¼ÝòM_:ȉG_%!16ÊÆ É0:N_%=¹Ð
  6316. É3:òI`ÚË:áäMÝòI`:êT%:f$=Ä250," "):f$="":T%=G_%+44:È”?T%<>0:f$+=½?T%:T%+=1:Î:ȉG_%!40Êî$É&FFF,&FFE,&FEA,&FEB:òJ`("Type")øÉ&FFB:òA`(f$)É&FF9:òK`(f$) É&FF7:ÿ("Print "+f$):òO_É&1000,&2000:òL`(f$) :òJ`("Dump")*-Ë:G_%!12=G_%!8:G_%!16=4:È−262375,17,G_%:á4ÝòA`(M`$):*FX 202 160>çM`$<>""…ÿ("DIR "+¤N`(M`$))HEò`_:M`$=" -load "+M`$:ÿ("FX 138 0 129"):ÿ("WimpTask Basic"+M`$):áR0ÝòC`:$f_%="Voices list":È−262383,f_%:*Voices\È−262383:áfGÝòD`:ãO`%=10¸32:È−262532,0,O`%:í:È 1:*ChannelVoice 1 WaveSynth-Beepp1ãO`%=2¸8:ÿ("ChannelVoice "+ÃO`%+" 0"):í:òC`:ázÙÝòG`:êP`%,m%,Q`%,R`%,S`%,T`%,U`%,V`%:êW`%,X`%,X%,Y%,Y`%,Z`%,a`%:È−6,135¸,,P`%:m%=-1:È−53,m%,1¸,,Q`%:È−53,m%,2¸,,R`%:È−53,m%,3¸,,S`%:È−53,m%,4¸,,T`%:È−53,m%,5¸,,U`%:È−53,m%,7¸,,V`%:È−53,m%,11¸,,W`%:È−53,m%,12¸,,X`%☓S`%=S`%+1:çS`%=64 S`%=256‰ËQ`%=Q`%+1:R`%=R`%+1:X%=W`%+1:Y%=X`%+1:b`%=0.5+V`%/1024:Y`%=X%*2^T`%:Z`%=Y%*2^U`%:$f_%="Mode Info":È−262383,f_%:ï14:È−262384,11:ñ'⇨26"Mode ";P`%:a`%=34:È−262384,8:ñÄ59,"-"):ñ'"  Colours = ";S`%;⇩a`%);—Ïñ"ScreenSize = ";b`%;" Kbytes":ñ'"  Text  =  ";Q`%;" x ";R`%;⇩a`%);:ñ"Pixel size = ";2^T`%;" x ";2^U`%:ñ'"  Pixels = ";X%;" x ";Y%;⇩a`%);:ñ"OS units = ";Y`%;" x ";Z`%:ï15:ñ'Ä59,"-"):È−262384,7:È−262383:ᢱÝòE`:$f_%="Font List":È−262383,f_%:ï14:È−262384,8:ñ" Font families currently installed :-"':È−262384,7:È−262289,,S_%,0,-1¸,S_$,C%:çC%=-1ñ" System Font only."':ï15:È−262383:á¬<c%=0:A$="":X%=V_%:õ:È−262289,,S_%,c%,-1¸,S_$,c%:çc%<>-1…¶6B$=ÀS_$,§S_$,".")-1):çB$<>A$ñ⇩X%)B$;:X%+=W_%:A$=B$ÀçX%>Y_% X%=V_%:ñÊÍ:ýc%=-1:ñ:ï15:È−262383:áÔrÝòF`:$f_%="Delete Fonts ?":È−262383,f_%:õ:Û:ï14:È−35,"Font$Path",R_%,256,0,3¸,,c`%:R_%?c`%=13:d`$=$R_%:çc`%<3…Þ-ñ'" System Font only."':*Set Font$Path ""èÈ−262383:áò¢Í:n%=0:È−262384,8:ñ" Font directories currently installed :-"':È−262384,7:õ:L%=©d`$:k%=§d`$,","):D$=Àd`$,k%-1):ç–D$>64 n%+=1:T_$(n%)=D$:ñ⇨1;½(64+n%);") ";ÀD$)ü×d`$=Âd`$,L%-k%):ýk%=0:ï15:ñ'Ä59,"-"):È−262384,11:ñ" Delete any directories ?":È−262384,7:ñ'" Choose A),B),...      , or click MOUSE to abort : ";:õ:È–e`%,f`%,g`%:ýg`%=0:õ:Z$=¿(0):È–e`%,f`%,g`%:h`%=(–(Z$)€&5F)-64Fý(h`%>0€h`%<=n%)☓g`%>0:çg`%=0Ô1,-1,128,3:ÿ("FontRemove "+T_$(h`%))ýg`%>0:È−262383,-1:á2ÝòH`:!Q_%=-2:È−262347,,Q_%:i`%=Q_%!28:çi`%=-1á$Lõ:!Q_%=i`%:È−262347,,Q_%:j`%=Q_%!28:È−262375,3,Q_%,i`%:i`%=j`%:ýj`%=-1:á.(ÝòO_:È−262353,-1,-1E8,-1E8,1E9,1E9:á8ÝÝòK`(f$):ên%,o%,b%,t%,h%,u%,v%,x%,y%,m%,z$,m$:È−262383,G_%+44:ñ'⇨6"1) *ScreenLoad"''⇨6"2) Display Sprite details":ñ'⇨6"3) *IconSprites"''⇨6"4) *ToolSprites"''⇨6"5) *Dump":ñ''" Press  <1>, <2>, <3>, <4>  or  <5>  :- ";BKõ:Z$=¾:ý§"12345"+½13,Z$)>0:ñ':È−6,21,0:çZ$="5"È−262383,-1:òJ`("Dump"):áL#È−6,229,1:È−6,135¸,,k`:çZ$="1"…V‘È−262383,-1:ï20,26:Û:ÿ("ScreenLoad "+f$):È–î:ï4:ñ" Press ANY key to return to the Desktop :- ";:õ:È−6,121,0¸,A:ýA=&FF:õ:È−6,121,0¸,A:ýA<>&FF`;Í:çZ$="3"Û:ÿ("IconSprites "+f$):ñ'" *IconSprites Done."j9çZ$="4"Û:ÿ("ToolSprites "+f$):ñ'" *ToolSprites Done."t çZ$="2"…~åh%=‰f$:Û:ï14:ñ" Sprite information:":ñ'"   Name"⇨(8)"hor x ver   Mode   Colours   Mask   Palette":ñÄ59,"="):l`%=¤m`:n`%=¤m`:b%=-4:ãt%=1¸l`%:Ï#h%=n`%+b%:b%+=n`%:n`%=¤m`:ñ⇨2;:ãu%=1¸12:ïŒ#h%:í:x%=¤m`:y%=¤m`:v%=-¤m`+¤m`-31:m%=¤m`⇦!çm%=•#h%-4 o`$="No"⇧o`$="Yes"‹çm%ŵ¤m` p`$="Yes"⇧p`$="No "†~P`%=¤m`:È−53,P`%,9¸,,u%:x%=(32*(x%+1)+v%)Ŵ2^u%:ñ⇩15,¼)⇨(3-©(Ãx%));x%" x ";y%+1;:È−53,P`%,3¸,,q`%:q`%=q`%+1:çq`%=64…q`%=256¦>ñ⇩28,¼);P`%⇩36,¼);q`%⇩45,¼)p`$"     "o`$:í:Ù#h%:È−262383:á°Í:çZ$="1"È−262383,-1ºç§"234",Z$)>0È−262383Äç§"134",Z$)>0È−262371,k`ÎáØ+ݤm`:=Œ#h%+Œ#h%*2^8+Œ#h%*2^16+Œ#h%*2^24âÝòL`(f$):êŶ:îŶêòr`:òO_:áì@ÿ("Filer_OpenDir "+f$):òs`("Catalogue/CSD of ",f$):*FX 229 0öNï14:ÿ("FileInfo "+f$+".*"):ÿ("Dir "+f$):ñ''f$+" is now the CSD.":òr`:òO_:á!ÝòJ`(a$):òs`(a$,f$):*FX 229 0
  6317. ï14:ÿa$+" "+f$:ç¤t`=£…òr` ç¤t`=¹…Fï2,1,27,1,64,1,27,1,77,3:u`%=¹:v`%=£:w`%=£:x`%=£:òZ_:õ:òy`:çz`%=¹…(ï2,1,12,3:_`%=’:õý’>_`%+302Í:çP_%=¹…<_ï2,1,27,1,108,1,2,1,27,1,67,1,70,1,27,1,78,1,4,3:ï12:ï2:ÿ("Type "+f$):ï2,1,10,1,10,3:ï7:òZ_F Í:ý``%=¹P Í:òO_:áZUÝòr`:Ô1,-1,80,3:ï15:ñ'ÄAa%-1,"-"):È−262384,8:ñ'Z_$:È−262384,7:êx%,y%,Ba%:*FX 21,0d>õ:È–x%,y%,Ba%:ýBa%=0:õ:È–x%,y%,Ba%:ý(Ba%<>0☓¦-99):*FX 21,0náx>ݤN`(M`$):Ca=©(M`$)-1:È”§M`$,".",Ca)=0:Ca-=1:Î:=ÀM`$,Ca-1)ŵÚÝòs`(t$,f$):P`%=ë:t$=t$+": "+¤Da(f$):È−53,P`%,1¸,,Aa%:È−53,P`%,2¸,,Ea%:Ea%=Ea%-4:ï26,4::È−262384,128+14:È−262384,7:ï28,0,1,Aa%,0,12:ñ⇩(Aa%-©t$)Ŵ2,0);t$:ï28,0,Ea%-1,Aa%,Ea%-2,12:È−262384,128+1:ï28,0,Ea%-2,Aa%,1:ï12…ï28,1,Ea%-2,Aa%-1,1:ñ:á„hݤDa(a$):êp%:p%=©a$:È”Áa$,p%,1)=" "€p%>0:p%-=1:Î:a$=Àa$,p%):È”Áa$,p%,1)<>"."€p%>0:p%-=1:Î:=Áa$,p%+1) .Ýòy`:êx%,y%,Ba%:P_%=£:z`%=£:``%=£:*FX 21,0ª:õ:È–x%,y%,Ba%:ýBa%=0:õ:È–x%,y%,Ba%:ç¦-33…P_%=¹:òFa(33)´ç¦-64…z`%=¹:òFa(64)¾ ç¦-101…ÈYï2,1,27,1,64,1,27,1,77,3:ï2,1,27,1,69,3:u`%=£:v`%=¹:w`%=£:x`%=£:ï11,11,7:òGa:òFa(101)Ò Í:ç¦-86…ÜIï2,1,27,1,64,1,27,1,77,3:u`%=¹:v`%=£:w`%=£:x`%=£:ï11,11,7:òGa:òFa(86)æ Í:ç¦-51…ðXï2,1,27,1,64,1,27,1,77,3:ï2,1,27,1,71,3:u`%=£:v`%=£:w`%=¹:x`%=£:ï11,11,7:òGa:òFa(51)ú Í:ç¦-83…lï2,1,27,1,64,1,27,1,77,3:ï2,1,27,1,120,1,1,1,27,1,112,1,1,3:u`%=£:v`%=£:w`%=£:x`%=¹:ï11,11,7:òGa:òFa(83)Í:ç(Ba%<>0☓¦-99)…``%=¹%ý(``%=¹)☓(P_%=¹)☓(z`%=¹):*FX 21,0"á,ŷÝòZ_:Ô1,-1,80,3:ï15:ñ'ÄAa%-1,"-"):È−262384,8:ñ'Z_$:È−262384,7:ñ'⇨12"OR   <Print> = Print file ,       <Page Up> = Form feed":òGa:á6sÝòGa:çu`%=¹ñ'⇨8"<N> =";:ï23,17,5|:ñ" Normal ";:ï23,17,5|:ñ", <D> = Double Strike , <B> = Bold , <C> = Courier "@nçw`%=¹ñ'⇨8"<N> = Normal , <D> =";:ï23,17,5|:ñ" Double Strike ";:ï23,17,5|:ñ", <B> = Bold , <C> = Courier "Jnçv`%=¹ñ'⇨8"<N> = Normal , <D> = Double Strike , <B> =";:ï23,17,5|:ñ" Bold ";:ï23,17,5|:ñ", <C> = Courier "Toçx`%=¹ñ'⇨8"<N> = Normal , <D> = Double Strike , <B> = Bold , <C> =";:ï23,17,5|:ñ" Courier ";:ï23,17,5|:ñ" "^áhlÝò`_:*KEY0 LISTO3|M VDU2,1,27,1,108,1,2,1,27,1,67,1,70,1,27,1,78,1,4,1,27,1,77,3|M|L|M|O|B|MLIST|M|M|C|Gr¯*KEY1 MO.14|MVDU28,0,25,80,0|MVDU19,0,16,208,208,208:VDU19,0,24,192,192,192|MVDU19,7,16,0,60,60|MVDU23,0,10,96|||MVDU23,0,11,7|||MLISTO1|ML.|N|L|MOSCLI"FX21,0":P.SPC25|K|M|¯*KEY2 MO.14|MVDU28,0,25,80,0|MVDU19,0,16,208,208,208:VDU19,0,24,192,192,192|MVDU19,7,16,0,60,60|MVDU23,0,10,96|||MVDU23,0,11,7|||MLISTO3|ML.|N|L|MOSCLI"FX21,0":P.SPC25|K|Mŷ-*KEY3 |L|M*CAT|G|MP.STRING$(80,"_")|K|J|M‘*KEY4 |L|M*CAT|MP.STRING$(80,"_")|K|M|MLIST ,20|M|M|GP.SPC15;"Press 'RETURN' to save, or 'ESCAPE' to abort :";SPC32|K|MSAVEŒ*KEY5 RUN|M¤*KEY6 CRUNCH 31|MREN.|M®ª*KEY7 MO.14|MVDU28,0,25,80,0|MVDU19,0,16,208,208,208:VDU19,0,24,192,192,192|MVDU19,7,16,0,60,60|MVDU23,0,10,96|||MVDU23,0,11,7|||M*MOD.|O|M|N              *RMKILL  |H¸o*KEY8 VDU2,1,12,1,27,1,64,3|MLISTO1|MP.'"Form feed generated."''"Printer reset to default typeface."'|L|M|GÂd*KEY9 VDU2,1,27,1,64,3|MLISTO1|MP.'"Printer reset and default (Draft) typeface selected."'|L|M|GÌR*KEY10 VDU2,1,27,1,70,1,27,1,71,3|MLISTO1|MP.'"Double Strike selected."'|L|M|GÖR*KEY11 VDU2,1,27,1,72,1,27,1,69,3|MLISTO1|MP.'"Bold typeface selected."'|L|M|Gà’*KEY13 P." Print = Print listing."''" F8  = Form feed + Reset to Draft."'" F9  = Reset to Draft."'" F10 = Double Strike."'" F11 = Bold."'|L|Mê-*KEY12 SYS"Wimp_CommandWindow",-1|MQUIT|MôáþÝòFa(Ha%):õý¬¦(-Ha%):á2ÝòA_:È−6,161,28¸,,v%:v%=v%☓%10:È−6,162,28,v%:áNݤt`:Ia%=„(-4):ï2,1,0,1,0,1,0:Ñ=0:õý’>10:Ja%=¬(„(-4)<Ia%):È−6,21,3:ï3:=Ja%ÿ  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  6318. | !Boot file for !Basic
  6319. |
  6320. IconSprites <Obey$Dir>.!Sprites
  6321. Set Copy$Options A ~C ~D F ~L ~N ~P Q R ~S ~T ~V
  6322. | This file has been innoculated against the Extend Virus
  6323. ||ÿs     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | Basic !Run file
  6324. |
  6325. IconSprites <Obey$Dir>.!Sprites
  6326. Set Basic$Dir <Obey$Dir>
  6327. Set Alias$RAMWipe WIPE RAM::0.$.* ~C F R ~V
  6328. WimpSlot -min 32k -max 32k
  6329. Run <Basic$Dir>.!BasicC     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  6330. Help for !Basic.
  6331.  
  6332. !Basic is a front-end for Basic programmers.
  6333.  
  6334. Clicking <Select> on the iconbar icon will drop you into Basic.
  6335. Clicking <Menu> gives a selection of useful items.
  6336. Clicking <Adjust> gives a list of installed Modules, and the
  6337. opportunity to Kill some!
  6338.  
  6339. Dropping "Basic" type programs on the icon will drop you into
  6340. Basic and list the program ( and sets the CSD to the source Dir).
  6341.  
  6342. Function Key F1 will list the program. F2 gives a LISTO3 listing,
  6343. F5 will Run the program, F6 does a Crunch 31, F7 lists Modules, etc.
  6344.  
  6345. Dropping Directories/Applications on the icon will make them the CSD
  6346. and will open their Filer Windows.
  6347.  
  6348. Dropping "Sprite" type files will give a list of options.
  6349.  
  6350. Other filetypes will be either "Typed" or "Dumped".
  6351.  
  6352.  
  6353. N.B In all cases pressing function key F12 gets you back to the Desktop.
  6354.  
  6355. ____________________________________________________________________________
  6356.  
  6357.   This programme is Copyright.
  6358.    Author:
  6359.    R.A.Swetman,
  6360.      45 Claude Road,
  6361.         Roath,
  6362.           Cardiff.   
  6363. ____________________________________________________________________________orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |l!basic¬… ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªÊÌÌfffÇÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªÊÌ<vÌÌvÌÌÌÌÌÌÌÌLÌÌÌ|ÇÌÌÌÌÌ̬ªªÊÌlÆÌLvÌÌÌffÆÌÌfÃÌÌ<ÃÌÌUfÆ̬ªªÊÌcfvf6ÌÌfÆ<fÌlFFÌÌfÄÌlfÌf̬ªªÊÌfÆÌ<fÂLfÌ<fÌfÄdÄlfÄÌeÆÌÌ̬ªªÊLgÌÌSfÌffÌSf\fÌfÅflÆ\fÅÌf̬ªªÊLfffffUÆdffff\fUTÄlffÅffE̬ªªÊÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª−−−−−−−−−−−−−−−−−−−−−−−−−−−−ªªîîîîîîîîîîîîîîîîîîîîîîîîîîîªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÷,ËInfonfomô“ø´ÿÿÿÿ☓ †þÿÿ´=Xÿÿÿÿ—|‹¨=kr—H‹t=Çu“!—‹@=––­—àÿÿÿ‹ =ç°È:|„¤Name:led>
  6364. H„pPurpose:>„<Author:d>
  6365. àÿÿÿ„Version:>About this program!BasicR2`BASIC' front-end, + UtilitiesR2©  Tony Swetman  1996R2 1.00     (24 Oct 1996)R2orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      Nick!BootFëÿÿIñf¿.!HelpFÿÿÿ¡ŷ©Ç„.!RunFëÿÿ„Â%Ç¿ .!SpritesFùÿÿ©&Ç… .!Sprites22FùÿÿïÅà.BASIChelpFøÿÿfl})Çrf/SpritesFùÿÿj&Ǥ.TemplatesFìÿÿ´j$Çè.Templates2Fìÿÿ9Å£ÇÖ.WimpToolsEúÿÿ"ÿþh¨0!BootFëÿÿIñf¿.!HelpFÿÿÿ¡ŷ©Ç„.!RunFëÿÿ„Â%Ç¿ .!SpritesFùÿÿ©&Ç… .!Sprites22FùÿÿïÅà.BASIChelpFøÿÿfl})Çrf/SpritesFùÿÿj&Ǥ.TemplatesFìÿÿ´j$Çè.Templates2Fìÿÿ9Å£ÇÖ.WimpToolsEúÿÿ"ÿþh¨0!BASIChelp!BASIChelp Nick)IconSprites <Obey$Dir>.!Sprites WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     BASIChelp Help File
  6366. --------------------
  6367.  
  6368. This is a simple desktop aid for BASIC programmers who do programming from
  6369. the desktop. It gives on-line BASIC help, as produced by the 'HELP xxx'
  6370. BASIC command, but does so in a desktop window so you don't have to resort
  6371. to entering BASIC when you need to look up a command. Simply click on the
  6372. large arrows either side of the command box to browse through the 165
  6373. entries currently stored in the program.
  6374.  
  6375. If you know what you are looking for, it will probably be quicker to search
  6376. directly for it. Simply go through the menu and type in the text to search
  6377. for. You can do this in upper or lower case (or both...) since the string
  6378. will automatically be converted to upper case for the search. The first
  6379. command which is matched or partly matched by the search string will be
  6380. displayed, so it helps to be as accurate as possible.
  6381.  
  6382. This program was written on an A5000 with BBC BASIC V module 1.05, so the
  6383. commands and text may not be completely accurate for some versions of this
  6384. modules. If a lot of the command explanations mean nothing to you, don't
  6385. worry - they mean nothing to me either. I have made no attempt to make the
  6386. terminology clear etc. but have simply reproduced the help text my BASIC
  6387. module offered me when I typed in each command.
  6388.  
  6389. On a final note, this program uses the excellent WimpTools module, which I
  6390. got from the August 1994 Acorn User cover disc. There will be problems if
  6391. this module is removed by RMKill, RMClear and the like before the program
  6392. is quitted, so beware. This actually represents my first completed attempt
  6393. at writing a desktop program. Although I have a pretty extensive knowledge
  6394. of programming in BASIC I had never understood how to write desktop programs
  6395. until I found the WimpTools program, manual and demo on the cover disc,
  6396. which somehow made it all clear. I would recommend WimpTools to anyone who
  6397. finds desktop programming really complicated - it is so simple to create
  6398. menus, load templates, alter icon/menu item states and so on. And it doesn't
  6399. take up that much room in your module area, either.
  6400.  
  6401. Written by Chris Grant
  6402.             Welfengasse 15
  6403.              D-82487 Oberammergau
  6404.               GERMANYWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Dir <Obey$Dir>
  6405. RMEnsure WimpTools 1.40 RMLoad <Obey$Dir>.WimpTools
  6406. RMEnsure WimpTools 1.40 Error I need version 1.40 or later of WimpTools.
  6407. WimpSlot -min 64K -max 64K
  6408. Run <Obey$Dir>.BASIChelp WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ‘€!basichelp,, wwwwwwwwwwwwwwwwww88888888888888Hww◰☓☓☓☓☓☓☓´»»☓☓☓Ŷww8H@@»»»KHXww◰☓☓☓☓☓☓☓´»»☓☓☓Ŷww8H@HHHHHHXww◰☓☓☓☓☓´»»⇧☓☓☓☓Ŷww8H@H»»»»@HXww◰☓☓´»»»»⇧☓☓☓☓☓Ŷww8HHH»»»@8Xww◰☓☓☓´»»⇧☓☓☓☓☓☓Ŷww8H@»»»H@HH8Xww◰☓☓☓»»»⇧´»»☓☓☓Ŷww8H@»»»»»»K8Xww◰☓☓☓☓»»»»⇧☓☓☓☓ŶwwXXXXXXXXXXXXXXXwwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!basichelp!,,uwwwwwwwwwwwwwwwW7xŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴu88888888888888XxŴ◰◰◰◰◰◰◰◰»⇧◰◰◰◰u88888888¸»»888XxŴ◰◰€»»»⇧◰◰u88888888»»»;88XxŴ◰◰◰◰◰◰◰³»»◰◰◰◰u8800»;8XxŴ◰◰◰◰◰◰◰◰◰◰◰◰◰◰u88888888888888XxŴ◰€◰»»◰◰◰u888888»»»;8888XxŴ◰◰◰◰»»»»◰◰◰◰◰◰u88»;»»»88XxŴ◰◰³◰³»»⇧◰◰◰◰◰◰u88888¸»»;88888XxŴ◰◰€»»»◰◰◰u88888»»»888888XxŴ◰◰◰³»»⇧◰◰◰◰◰◰◰u880¸»»;88XxŴ◰◰◰»»»◰◰◰◰◰◰◰◰u8888»»»8888888XxŴ◰€»»»€»⇧◰◰u8888»»»;¸»»888XxŴ◰◰◰³»»»»»»◰◰◰◰u88¸»»»»»;8XxŴ◰◰◰◰»»»»»◰◰◰◰◰u888888»»»;8888XxŴ◰◰◰◰◰◰◰◰◰◰◰◰◰◰uXXXXXXXXXXXXXXXxŶŶŶŶŶŶŶŶŶŶŶŶŶŶŶvuwwwwwwwwwwwwwwwWWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ¨Ìback ,ü @$twD$twGtDBwwGD4t@DBwwDD433t twwDD33#"2t twGDD33""2tBwGD433""2t twGDD33""2t twwDD33#"2tp'BwwDD433tq'rBwwGD4tw'rw#twGtpwww7#twðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÌforward ,ü wGBGtwGBDGCDtww$DG33CDDww$DG#"233DDwwGG#!""33DDtwGG#""33CDtw$G#!""33DDtwGG#"233DDwwGG33CDDww$rGCDtww$'rGtwG2w'rwwG2swwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿD¡ProginfoåMain°~¶Vÿÿÿÿ☓ (ÿÿÿ=0Infoal>eÈÿÿÿfiøÿÿÿbTitle:¼“ÿÿÿ„ÄÿÿÿbAuthor:¼`ÿÿÿ„‘ÿÿÿ`Purpose:¼,ÿÿÿ„\ÿÿÿ`Version:¼“Èÿÿÿòøÿÿÿ=Xc““ÿÿÿòÄÿÿÿ=fr“`ÿÿÿò‘ÿÿÿ=u⇦“0ÿÿÿò\ÿÿÿ=⇧fi!BASIChelpR2Chris GrantR2On-line BASIC helpR21.00 28th Apr 1996R2"æÞÚÿÿÿÿÿ þÿÿ¼='Øÿÿÿÿ þÿÿ¬¨ÿÿÿ=âãpÿÿÿ¤†ÿÿÿæÿÿÿÿ)@ÿÿÿ¤lÿÿÿçÿÿÿÿ)ÿÿÿ¤<ÿÿÿèÿÿÿÿ)àþÿÿ¤ ÿÿÿéÿÿÿÿ)°þÿÿ¤Üþÿÿêÿÿÿÿ)€þÿÿ¤¬þÿÿëÿÿÿÿ)Pþÿÿ¤|þÿÿìÿÿÿÿ) þÿÿ¤Lþÿÿíÿÿÿÿ)Ò°ÿÿÿêøÿÿÿ=Çîï öÀÿÿÿnìÿÿÿ!òó ⇩Àÿÿÿìÿÿÿ!üý BASIChelpr3r3sforwardsbackrks     WonderWorks     ÿÿÿÿD”ProginfoÙýMainü äÿÿÿÿ☓ (ÿÿÿ=0Infoal>eÈÿÿÿfiøÿÿÿb Title:¼“ÿÿÿ„ÄÿÿÿbAuthor:¼`ÿÿÿ„‘ÿÿÿ`Purpose:¼,ÿÿÿ„\ÿÿÿ`Version:¼“Èÿÿÿòøÿÿÿ=Xÿÿÿÿ““ÿÿÿòÄÿÿÿ=cÿÿÿÿ“`ÿÿÿò‘ÿÿÿ=oÿÿÿÿ“0ÿÿÿò\ÿÿÿ=ŵÿÿÿÿ!BASIChelpChris GrantOn-line BASIC help1.00 28th Apr 1996"æÞÚÿÿÿÿÿ þÿÿ¼='Øÿÿÿÿ þÿÿ¬¨ÿÿÿ=âÿÿÿÿpÿÿÿ¤†ÿÿÿãÿÿÿÿ)@ÿÿÿ¤lÿÿÿäÿÿÿÿ)ÿÿÿ¤<ÿÿÿåÿÿÿÿ)àþÿÿ¤ ÿÿÿæÿÿÿÿ)°þÿÿ¤Üþÿÿçÿÿÿÿ)€þÿÿ¤¬þÿÿèÿÿÿÿ)Pþÿÿ¤|þÿÿéÿÿÿÿ) þÿÿ¤Lþÿÿêÿÿÿÿ)Ò°ÿÿÿêøÿÿÿ=Çëÿÿÿÿ öÀÿÿÿnìÿÿÿ!ìí ⇩Àÿÿÿìÿÿÿ!ö÷ BASIChelpsforwardsbackWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ® ã(•â  flå0Ñå0#à0ÁåŴâQáùÿÿ•âïïræìÏÝÇ͉◰ßÛÇÚ‰îfifififi–fififiŵfifififië—−‡®üëþëïú6UÛöG,™áöoÀÅ⇦Í2;U☓}dÚ¤SMN‹AvË»×¢¹6Íå ⇧Œá[Èóã«F3ø‡å+Jlq^8UÑÚSwÍ8âü>H¨œ9Z‰Ìþæ©ÇxÓÜTò®„NhUÇ];³^Ë»ÆôOKŴ× Ún(A?gg,E6èdŴ£T‘}a]ö
  6409. )y”¨çDaÈW⇩)bÆ/óŷºZÏfl÷©Ä‘q5¶W_èoÖæ‹= ~YÏý&ÖÞF°mŶ§pG~b»y•ìù*ßN9⇦ %8,‰fi1;ßMÑ*ÉÇÚiÉOÞÇDÁ·ŴòHµdôÙ⇩l8bÅÇQoXÿfizÐXò>ø½Ô+ü#òÆ#§m⇨RíJܽúÇ;ó◰=„û&¥w3F6ϼd²ŷfl)KÕùJIX½55ÂGªºŴ=E5¯™cu¼!«­ðAµ¶qÔD•üØ‹8ÖDÂ_#ª5ô5−|7Â
  6410.     ä3û4jêþÔ:⇦m⇧ÄaHÖG¨9kŴwß I„°    8W²Ë<ÒÂG?;2R¨xWÎîñ³<c^T‰) þ»¿Ŷ2"3ë†R)NÃÑÙŷ¦¹ó)õ/ëC•Bŷ'ç◰½êæ◰@BéýB™−ÌY€ÞðflIè×⇩OÊ+ûåêŒñ3}◰”E0Öö4*Ú›°ûd´êe,´ëÂOÿ†]OO°⇨r MøqqZ3ZA—\|m4«☓ã– y›3¾%/ω¨U‰/ LZu9$ÖùR+bÙ j{¥¬6−£Y_éK†⇧Ѷ\·×J·Y•=õ ™B©Å«;My/Î,›h‹›6¤QÁfi‹$ñzŷösY3eÔ»ÖÛ¨nÜ⇦â‹äÅ}¥´”¥Ä¹n!®’/QQwDßKXâþ†{:—± 3>| j¬tCQúa _²ã+7`ÝÄú#DzÎ
  6411. _ª@P€ì §ÝL)+YHSBÕmÉ렰ݨv¼àï£Ø−ß◰B¹áVÌý|t/Ýe(<Àö5Hòÿ³’j¬‹þWw\|w?ÏTfi¾ŵOë>J•.¾!“ ‡ÞÃt‹‘1<É„só’<n⇩0
  6412. Ãö`    {>‡⇧ŵý{!0U~"rJ)⇦e/³s⇦Mñ^WÐÜŶ´¤ýW"õfi²ÃÈvïk¬‡yC™Q Τ¿8ïlÅ›“sÛOÑJÛÞøO9\ç÷ãW@ØjW~
  6413. ÄflnäK@ Õôã Ë1    Å}C    ›(–¤A4îŷ•üUÂÆe(Ú}ð¸ï☓Ó¯½hÃrÍuFjÑA½ãDÖà
  6414. ¯zÿ.&Ú–⇦6RJ.¹HÌy>^GZ¼çç ëò×N3g6‘øHPR
  6415. ǵIÞħ º    Üô½
  6416. ›ofl/Ü9xCâm#™ªq$o€ÔZVq—óykÛœfiEn»xÖx8Q†;•þSŒO½ñœÊfl¸J`H îÓ
  6417. ¥“à„ttE§c]'iVÛGu=ÉÅ8Ô•ª⇨L¾¥oè3tãÓþS+=1ýólw.¥hþ¨‰=¦kª\?"ñØÄÚÆ;€{⇦%€Ù°È…Ôç¦4−ÊgàЪ§7ñ—NE4…Ö‹\¦Ï’ogwFó–⇧¥ÿhñ-Æ1ò …è&ho⇦6#sÝ·#N¾<)ÖÊÿÿÙc3`G‰5lůBÖŒÁ@êÂI\*>³®y2†:@å=©Ã"óz"‰RflÒA†l/(Ýú*§ôui†wI wà◰hŴùÑk⇨Ðú§vζUàØHÞ+Þ¥óŵc~⇨Çu&·,±^£!{[ßÔt-HÌéU+´r“-¡ÂåâRR›Ŵ⇧`Ø⇧,⇩/ç©ËyUo-®;*¿ã‹Ì&ÈJŶ{jTdÒNc…° ☓»ßØ'ç«Àöþ[±\/*=hÚŴ@5 õe#Æ^˵g(ueϽª€Cr☓¹…¸{¶’´§¶Àé…⇦O£¬S±^$Mfiù¬fi'¶…v¯*þŒBŶy÷õ¤Q$ŷ7ǽ¨ çàãnœÞ$‰la¨§+‰ø-¸Q−j–„JJZ€⇦Û&”• é—Në£=d{wbmñ‰ðv£­^¹•X!iÕ=l ÑwbÑçè¸È‰Ñçt¯Ã☓¤3ÖòZ¼èdç`ig☓¹ Ôþ4fõTtîºTílO*c 
  6418. –ŵ…îZ‡°S³éU⇦G1fiŶÕÞcì¶:7q3€ÁùPÉßflE=ð_Èîðbe    ^¤;GpçU†Ŵ|) Jè9]ð#Ùû$ŵÍ–⇩Ôï ËîÃ6æ7Ó{ úØ+F]âm2|hrŒ¡fB5fil_”T`(TðTË;⇨*fiX±d²'¨⇦Úu„~%e‘õ    Î~ð/°Âóã3Ó‹ß⇩ `ýTtÇ®ævª«ETå„6ŵªBfi™ûDŶÝŶÅù¹^iýëâví-$h§ÐŴQ¸ÓO»0Ý«ãæ−²èp!-Þé•Qe¸-M]p Áɳ9H¹~Ò«ÒzÞ45€®¦fl (6−\F¼v"õ™fl}L…H–XòdcÚàÃ"Û«€]ä:QKfi2mõÆ×õ,ÏêÌs/gÞ²º¶dMü(Hu;m¼Â—$FŴÏ5⇨¯+    „ëŷO$|é:gi µŷâµÅ=3­PêÉn]òhµ`F§<‘⇨³
  6419. −ÏÄêl.ÑÇn×:%û@ãúäD½,ßãÎAö{~Þ    ¯â[U*TãúÂ⇦Yk:bê¾½sË&fùul"c<ÖÐDX¹?2§¨³»}µñ—Ŵkë#þ_FáÞ=
  6420. P‡+å5@¸Ô„Y'ÍÃ}ëLQvŶ@Fº>g÷¹­Þú·‰ùÒi"›−Âs$ïklu?Ì(ÿwHÃl‰°äû0îz”\b m%⇩ìn
  6421. ^fl*ßò•¢ÒꫪOŴ+º⇦ðqîñÐÊÓŵbØŷE ’fiŴåŵÿáÓŵ ø:Mc¬â‰5ÑÿïѯTýTÚ¦=Œ\}­    7®fi¼Ó•,¨0àx¸¨⇦Ë#ü¨Ý¥Óh⇨©’²ìU¿!?å=.¯§q™c}‘±Ŵ−ùO•)–|¶ Æ¦‰`¿àE‰ &†ò!°™U]Ö–•yÆÀïì−ܼªÒg ¾m(Ú=−/ßÚ²Nj©Ñ+17±“nŒR€sãðà©Ê–<◰%²¢.Ë4¨†”©"Ho}¦(m?`].í¨Dȵ߾fiKª]:Ó8cÙ|HO`Ë'-"—6¦½ç}UK_I9Q«áú–q ÕÿŵA/úŒ«Vøäµ!ç™tÇð…õb]⇦¸CK€7ŵóDŴ²òv_öï5´%ì™â,™ÃÅ◰Hô,«g5$5'flIãÿ5C\>œ−$bjW⇦8@b†Ŵ–²oÍ»⇧?,§©}£4Gõ¡@?…«Ë‘/Q\7“gKa¢#$¨kì{43ì¹Òrè¡Sj¡/ã{Cªè☓ r3PK{ùZ©†⇦•BX€¥À−—Íä⇩ÅpÁ—°¢⇦K ;àÈäøŵÀT¨Á½[¨0Å/*£b[8¥à›ðv 
  6422. à}6x¡W(4"•äÝÂØÆ奷ÃflíÀ☓7±'Ry0n@¢ón>Ärw=âPàjó©
  6423. ?UKwáì~ÀÅ.ÐïàªÑÚäŴ¹èQa® /]ùe¤5Å]°¶gQüFF>úÎ. £¥¤ü5&gŷQqSœ?ÛÞ{kØ<”æZu€óàÙüßÖZû_mŒrà⇧☓Sè_ŵ¢ä4‰«    <!ªú+†ÛÃXÙ;£c±û\*®Äv%)¾po TJäx4ýËP@¾õA⇨fñçËLèe18Ò?p nù~NÊ]¬”Zø”.áøìJ±⇦⇦Ö¢¸-MåÀ—"Ðûߤ‡ŷß®·|U!/9†È‘fl§ŷÙç90Kº&)VdÓ◰BÃì™−ø¨îqÅåêfl5t̤y¤U=RÂG§!¶éê]vryÕÜQuUX8Wò9ÕúÍÆR§Äfiß²r±nQ=ÌË,¯’Â37¿INÀËä®⇩Öìh(•‡uònôD€H;ì9Ñ[ôFSA>bfòÚì ›ñ¸$Ýŷù2ÑŶ>ªÝ¶±C7ÔÄ"yŒ?`⇧hYR⇩ÎýÇ⇨çjÒ}vs|$=t^hÔåÞJ¹epýÕ2vfiªëös    a³…·O„…Y@•ŵ@B¿›A¹0ü’ÎZ>AQ¼ç/ß| Ù£…M‰ÿꇌ1C’~Ø<E»¥²ÂÆóO.Öú¸ÅÍÈÈ]Ô ÓKÄϯUÜB…?(¢[óío„æ ☓j−Õm−Äwõö$÷¢@Cºb⇦Õ1÷éB·àB(Ç]»®£íÌ"DŴMÊÄ€8Ú#xÊÏ
  6424. bÇaêû¸Þá•b◰]O[§◰ªÎc
  6425. +®û☓Bw(ÌÕ⇨­JºÍø‹‘É­&◰KϬÏÿÇNÀã◰“Àòaás⇩f„B·í×ÌEXÎ%_•Þî® Í¨E!´Ã…7¹¯Ö¹
  6426. È,−aŒä€ßoî◰i×ŴZV’ÏO™­fiÙè7æ@Gu%    !{—»LõÏb<ðEëÞ±A‡£4Fîvµ¥‡xv¢ûàbJY¦oA    ~“    ÕÐö&Gcæ&T¤¼l◰ú\ñ⇦¶rP°Ù™ºÀÉ”-ï¨åÖª*WOUöd0H±VóI\çfiŒ¾BoT¿q‡'−3”−ã⇧(K◰p~Æs¹…¸A@¤◰Ýê¤WO•aj
  6427. ”ÛJèL§ã}SC‡ÀC·Ò¡m.’„ŷÏŵhp,rÀ¢óBVìÉ¡    òkU u0ïE‹◰¹S@êWËIù^−.hâò9)
  6428. Ê?0!«?ÛP¼I1\-öÛ!ùCÝŴöIÿ²ªu¸Þ;⇦õ™gIk€ÒüŷQÊ€Nn-ØÎŶŒñ6Ðf?¢ÿàÖsi“;F ?nŒ£JÖ·u¢1{+'’!7­pÙ¸LåÃ%^a÷”Û“ ;g&îMnTMç‰ùp¸@¸+Í—³^Wû◰0¬÷#X¼ŒÙ•Ô_™£U]⇩Œ†™I\Ïã`×Á¼Ý$‰y*)B –SL·¿ôa×8◰Ú¥eJ¢7ÀQo4gíË~Û“Jv©}‡­´Å‰F­£=È.´ù¯Ôœ−8É9S¨Å¸ö;÷>IäŵàÞ–þä%®îàk…•Wì'¿b;3öÒÆ‹fi-−^ìEë7²0ÁdÇ]„9ʇ
  6429. úõùÓÅ    ­☓ÄbvÙ¸DHUö†MÇI‹!N8YÒÛÍkSÂ11J±I◰«”ׇBOvøë±    ‘ÑðØ<ÄB,«⇦⇦â~ÆuÓ¼&⇨™K~¡ ÍÚÓ㣮†‘ïñ⇩›…ìïýçíÆËÂÞ…“ìñ⇧›fi“íñ⇧›fl—œ“@++ 1ŵX⇩Ŷ…‰ÏÚ‰ÂÇÀˉ…Ŷmŷ0Ŵflfi£®ôxf7†—†‡‡—ŵ†fifiŵ⇦Œìœ‡ŒflœŒŵïñ⇩êñ⇧ŵëñ⇧“f7†–Œfi—†èñ⇧“péñ⇧⇦flfifiŵÌ⇧⇦flfifiŵÝ⇧⇦flfifiŵÙ⇧⇦†fififiŵÇ⇧⇦flfififiŵæñ⇧⇦fiì“pçñ⇧⇦flfifiŵäñ⇧⇦flfifiŵåñ⇧⇦flfifiŵâñ⇩ŷíñ⇧“f7†–Œfi—Œŵèñ⇧ŵ…‹áÌË×⇩êÇÜ‘€ýÞÜÇÚËÝ…ŵãñ⇧“\àñ“\áñ“\þñ“f7⇦Œ−í„flŵ◰flŵfiŵ…•…Ŷïñ⇩ÿñ⇧“@+\üñ£®èýñ⇧›“úñ⇧›“[“úñ⇧›
  6430. ûñ“Súñ⇧›“f7⇦Œ−íïëŵèñ⇧“f7†—†‡—œŵëñ⇧ŵ⇦Œìœ‡ŒflœŒ“N£¯¶⇧s
  6431. ûñ“DÜ⇧ŵß⇧“f7†—†‡Œ‡ŵŵÌ⇧Ü⇧“f Ü⇧d£¯î½g†“f7†—†‡ŒflŵŵÌ⇧£¯ä·g‡“f7†—†‡Œ†ŵŵÌ⇧“ýñ⇧›£¯ú⇧g—“\øñŷ•Ì⇧ŵÌ⇧•ŒŵÌ⇧•„ŵÌ⇧•fl†ŵÌ⇧•fl—£¯ð¿g–“ß⇧›
  6432. ùñŷÌ⇧£¯Æ´gfl−ŵfl„“IŷÌ⇧•fl—›fi"ß⇧›£¯Ü§e“›ß⇧£¯>…s\øñŷÖ⇧ŵ×⇧ŵöñ⇧ŵ÷ñ⇧ŵôñ⇧“f öñ⇧d£¯
  6433.  gfl“I÷ñ⇧‹fi"£¯•\Ïñ“f7⇦Œ−턆ŵ…ãÏÇÀ…ŵçñ⇧“ýñ⇧›£¯l™b“Iôñ⇧›flfi"ìñ⇧◰›fl“Iìñ⇧‹fi"ìñ⇧›íñ⇧£¯x•Iôñ⇧›flfl"ìñ⇧Ŷ›fl“Iìñ⇧‘íñ⇧"ìñ⇧›fi£¯N©\Ïñ£¯D«c£¯Z g†“I÷ñ⇧‹fi"£¯P¾f7⇦Œ−íïflŵäñ⇧£¬¦²b“f7†—†‡œ—ŵŵäñ⇧ŵÖ⇧◰—Œŵ×⇧£¬²«c£¬⇦ gŒ“I÷ñ⇧‹fi"£¬fi•\Ïñ“f7⇦Œ−턆ŵ…ãÏÇÀ…ŵçñ⇧“ýñ⇧›£¬ê™b“Iôñ⇧›flfi"ìñ⇧Ŷ›fl“Iìñ⇧‘íñ⇧"ìñ⇧›fi£¬ö•Iôñ⇧›flfl"ìñ⇧◰›fl“Iìñ⇧‹fi"ìñ⇧›íñ⇧£¬Ì©\Ïñ£¬Â«c£¬Ø©e“O£¬:ës
  6434. ùñŷÌ⇧“Dß⇧ŵÌñ⇩“f7†—†‡œ−ŵŵäñ⇧ŵÌ⇧ŵj†œœŵ…‰…ŵŵŵÌñ⇩“I    Ìñ⇩ŵ…€…‹‘fi"£¬·Íñ⇩›nÌñ⇩ŵ    Ìñ⇩ŵ…€…◰fl£¬h£b“Íñ⇩›Ìñ⇩£¬t¢c“f Íñ⇩d£¬@¿g…ýËÏÜÍÆ…“\æñ£¬V¾g…ÿÛÇÚ…“ß⇧›£­¬¸e“f7⇦Œ−íï†ŵäñ⇧“›ß⇧£­☓âs\æñ“æñ⇩›
  6435. ÊñŷoÌñ⇩ŵ    Ìñ⇩ŵ…€…Ŷfl“MËñ⇧›fiíñ⇧“I    âñ⇩ŷËñ⇧ŵæñ⇩‹‘fi"\ÈñŷËñ⇧“O£­ü±CËñ⇧“+flŵ…àÁ‰ÃÏÚÍƉÈÁÛÀÊ€…“O£­Ô•s\ÈñŷÈñ⇧“ìñ⇧›Èñ⇧“\Ïñ“Iýñ⇧›"£­ ³ýñ⇧›“f7⇦Œ−턆ŵ…ãÏÇÀ…ŵçñ⇧£­©c“O£­dús
  6436. ÊñŷÉñ⇩“MËñ⇧›flŷÉñ⇩“Éñ⇧›9ŷoÉñ⇩ŵËñ⇧ŵfl“IÉñ⇧‘–—.Éñ⇧‹fl†‡"oÉñ⇩ŵËñ⇧ŵfl›ŷÉñ⇧◰‡†£­\£CËñ⇧“›Éñ⇩£ª¾¼s\àñ“Iêñ⇧‹‡fifi"£ª⇩⇧f7†—†‡—flŵŵ…‹áÌË×⇩êÇÜ‘€úËÃÞÂÏÚË݆…£ª€⇦b“f7†—†‡—flŵŵ…‹áÌË×⇩êÇÜ‘€úËÃÞÂÏÚËÝ…£ªìœc“f7⇦Œ−íïïŵŵÙ⇧ŵÇ⇧ŵÇ⇧Ŷ⇦flfififiŵçñ⇧ŵãñ⇧Æñ⇧“f7†—†‡—†“O£ªÚs\áñ“f7⇦Œ−íï‡ŵäñ⇧ŵÝ⇧ŵflœfiŵ…™…Ŷïñ⇩Ŷ…ŵçÀÈÁŵýËÏÜÍÆŵÿÛÇÚ…ŵÀ⇧“f7⇦Œ−í–†ŵåñ⇧ŵ…ýËÏÜÍÆ…ŵfl−œÀ⇧“f7⇦Œ−í–‡ŵÀ⇧ŵ……ŵ⇦„fiŵæñ⇧ŵflfl“f7⇦Œ−í–èŵäñ⇧ŵfiŵ…þÜÁÉÇÀÈÁ…ŵçñ⇧“f7⇦Œ−í–èŵäñ⇧ŵflŵåñ⇧“O£ªj⇦s\þñ“Y“MËñ⇧›fiíñ⇧“]âñ⇩ŷËñ⇧“CËñ⇧“O£«¤ær‰…ïìý…ŵ…ïíý…ŵ…ïêøïâ…ŵ…ïàê…ŵ…ïþþëàê…ŵ…ïýí…ŵ…ïýà…ŵ…ïúà…ŵ…ïûúá…ŵ…ìëïú…£«ºçr‰…ìëïúý…ŵ…ìéëú…ŵ…ìþûú…ŵ…íïââ…ŵ…íïýë…ŵ…íæïçà…ŵ…íæü⇩…ŵ…íçüíâë…ŵ…íâëïü…£«°ær‰…íâáýë…ŵ…íâé…ŵ…íâý…ŵ…íáý…ŵ…íáûàú…ŵ…íáâáü…ŵ…íáâáûü…ŵ…íüûàíæ…ŵ…êïúï…£«ŷår‰…êëè…ŵ…êëé…ŵ…êëâëúë…ŵ…êçã…ŵ…êçø…ŵ…êüïù…ŵ…ëêçú…ŵ…ëââçþýë…ŵ…ëâýë…ŵ…ëàê…£«†är‰…ëàêíïýë…ŵ…ëàêçè…ŵ…ëàêþüáí…ŵ…ëàêùæçâë…ŵ…ëàøëâáþë…ŵ…ëáè…ŵ…ëáü…ŵ…ëøïâ…£«‹âr‰…ëüâ…ŵ…ëüü…ŵ…ëüüáü…ŵ…ëöþ…ŵ…ëöú…ŵ…èïâýë…ŵ…èçââ…ŵ…èà…ŵ…èáü…ŵ…éíáâ…ŵ…éëú…£«èær‰…éëú⇩…ŵ…éáýûì…ŵ…éáúá…ŵ…æëâþ…ŵ…æçãëã…ŵ…çè…ŵ…çàåë÷…ŵ…çàåë÷⇩…ŵ…çàþûú…£«þår‰…çàýúïââ…ŵ…çàýúüŷ…ŵ…çàú…ŵ…âëèú⇩ŷ…ŵ…âëà…ŵ…âëú…ŵ…âçìüïü÷…ŵ…âçàë…ŵ…âçýú…£«ôår‰…âçýúá…ŵ…âà…ŵ…âáïê…ŵ…âáíïâ…ŵ…âáé…ŵ…âáãëã…ŵ…âøïü…ŵ…ãçê⇩ŷ…ŵ…ãáê…ŵ…ãáêë…£«Êçr‰…ãáøë…ŵ…ãáûý뉅ŵ…ãáûý뉅ŵ…ãáûý뉅ŵ…àëù…ŵ…àëöú…ŵ…àáú…ŵ…áèè…ŵ…áâê…£«Àær‰…áà…ŵ…áþëàçà…ŵ…áþëàáûú…ŵ…áþëàûþ…ŵ…áü…ŵ…áüçéçà…ŵ…áýíâç…ŵ…áúæëüùçýë…£«Öâr‰…áøëüâï÷…ŵ…þïéë…ŵ…þç…ŵ…þâáú…ŵ…þáçàú…ŵ…þáý…ŵ…þüçàú…ŵ…þüáí…ŵ…þúü…ŵ…ÿûçú…£«,år‰…üïê…ŵ…üëïê…ŵ…üëíúïàéâë…ŵ…üëã…ŵ…üëàûãìëü…ŵ…üëþëïú…ŵ…üëþáüú…ŵ…üëýúáüë…£«"çr‰…üçéæú⇩ŷ…ŵ…üàê…ŵ…üûà…ŵ…ýïøë…ŵ…ýéà…ŵ…ýçà…ŵ…ýáûàê…ŵ…ýþí…ŵ…ýÿü…ŵ…ýúëþ…£«8är‰…ýúáþ…ŵ…ýúü⇩…ŵ…ýúüçàé⇩ŷ…ŵ…ýúëüëá…ŵ…ýûã…ŵ…ýûãâëà…ŵ…ýùïþ…ŵ…ý÷ý…ŵ…úïìŷ…£«çr‰…úïà…ŵ…úëãþá…ŵ…úëöúâáïê…ŵ…úëöúýïøë…ŵ…úæëà…ŵ…úçãë…ŵ…úçàú…ŵ…úá…ŵ…úáþ…£«çr‰…úüïí뉅ŵ…úüïí뉅ŵ…úüûë…ŵ…úùçà…ŵ…úùçàá…ŵ…ûàúçâ…ŵ…ûýü…ŵ…øïâ…ŵ…øêû…£«çr‰…øáçíë…ŵ…øáçíëý…ŵ…øþáý…ŵ…ùïçú…ŵ…ùæëà…ŵ…ùæçâë…ŵ…ùçêúæ…ŵ…î⇧‰…ŵ…î⇧‰…£«ª£«f³s\üñ“DÜ⇧ŵÚ⇧“•éñ⇧›1“I1‹‘fl"£«^◰Ú⇧›‡“⇩ŷéñ⇧ŶŒ›X⇩Ŷ…‰ÏÚ‰ÂÇÀˉ…Ŷmŷ0ŴflfiŶŷfi£«Tµb“Ú⇧›fl“⇩ŷéñ⇧ŶŒ›X⇩Ŷŷfi£¨ ⇩c“f7†—†‡—−ŵéñ⇧ŵÚ⇧ŵïñ⇩ŵÜ⇧“IÜ⇧›†"£¨ŵf7⇦Œ−íïëŵèñ⇧“f7†—†‡—œŵëñ⇧ŵ⇦Œìœ‡ŒflœŒ“N£¨ä©c“O£¨Æés\Ïñ“Çñ⇩›……“Äñ⇩›……“Åñ⇩›……“Âñ⇩›……“Ãñ⇩›……“Àñ⇩›……“Áñ⇩›……“Þñ⇩›……“f ìñ⇧d£¨>ógfi“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÃÏÉÀÇÚÛÊË…“Äñ⇩›…ŷÏÌÝÁÂÛÚˉØÏÂÛË‰ÁȉωÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£¨
  6437. ãgfl“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÏÜ͉ÍÁÝÇÀˉÁȉυ“Äñ⇩›…ÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£¨ôg†“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛˉÁȉÚÆË…“Äñ⇩›…ÝÞËÍÇÈÇËʉÏÀÏÂÁÉÛˉÞÁÜÚ‰Á܉ÌÛÈÈËÜ€…£¨bæg‡“Çñ⇩›…ìÇÚÙÇÝˉÂÁÉÇÍωÏÀʉÌËÚÙËËÀ‰ÚÙÁ…“Äñ⇩›…ÇÀÚËÉËÜÝ€‰þÜÇÁÜÇÚ׉—€…£¨NôgŒ“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÏÞÞËÀÊ݉ωÈÇÂˉÚÁ‰ÚÆË…“Äñ⇩›…ÞÜÁÉÜÏÉÏÀʉÜËÀÛÃÌËÜ݉ÚÆˉÀËÙ‰ÂÇÀËÝ€…£¨Z÷gœ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉïýíçç‰ÍÁÊˉÁÈ…“Äñ⇩›…ÚÆˉÈÇÜÝÚ‰ÍÆÏÜÏÍÚË܉ÚÁ‰Ï‰ÝÚÜÇÀÉ€…£©¦åg—“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÏÜ͉ÝÇÀˉÁȉυ“Äñ⇩›…ÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£©²àg−“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÏÜ͉ÚÏÀÉËÀÚ‰ÁÈ…“Äñ⇩›…ωÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£©fiÖg„“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÉËÀËÜÏÚË݉ÂÇÀˉÀÛÃÌËÜ݉ÈÁÜ…“Äñ⇩›…Ú×ÞÇÀɉÇÀ‰Ï‰ÞÜÁÉÜÏÀ…“Âñ⇩›…ïûúá‰õ‹ÌÏÝˉÀÛÃÌËÜ‘õŵ‹ÝÚËÞ‰ÝÇÔË‘ó󅣩àêg–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÍÛÜÜËÀÚ…“Äñ⇩›…ÃÇÍÜÁÌËÏÚ‰ÀÛÃÌËÜ€…£©Ì8gflfi“Çñ⇩›…ìëïúý‰‹ËÖÞÜËÝÝÇÁÀ‘“‰ÝËÚ‰ÚÆˉÀÛÃÌË܉ÁÈ…“Äñ⇩›…ÃÇÍÜÁÌËÏÚ݉ÇÀ‰Ï‰ÌÏÜ€…“Âñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰ìëïúý‰ÉÇØË݉ÚÆˉÍÛÜÜËÀÚ…“Ãñ⇩›…ÀÛÃÌË܉ÁȉÃÇÍÜÁÌËÏÚÝ€…£©$Êgflfl“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀËÖÚ‰Ì×ÚˉÈÜÁÃ…“Äñ⇩›…ÚÆˉÝÞËÍÇÈÇËʉÈÇÂË“…“Âñ⇩›…ìéëú™‹ÍÆÏÀÀË‘€…£©9gfl†“Çñ⇩›…ìþûú™‹ÍÆÏÀÀË‘ŵ‹ÀÛÃÌËÜ‘“‰ÞÛÚ‰Ì×ÚˉÚÁ…“Äñ⇩›…ÁÞËÀ‰ÈÇÂË€…“Âñ⇩›…ìþûú™‹ÍÆÏÀÀË‘ŵ‹ÝÚÜÇÀÉ‘õ”ó“‰ÞÛÚ‰ÝÚÜÇÀÉ…“Ãñ⇩›…ÚÁ‰ÁÞËÀ‰ÈÇÂËŵ‰ÙÇÚÆõÁÛÚó‰ÀËÙÂÇÀË€…£©~égfl‡“Çñ⇩›…íïâ≋ËÖÞÜËÝÝÇÁÀ‘õŵ‹ØÏÜÇÏÌÂË‘óð“‰íÏÂÂ…“Äñ⇩›…ÃÏÍÆÇÀˉÍÁÊË€…£©JÌgflŒ“Çñ⇩›…íïý뉋ËÖÞÜËÝÝÇÁÀ‘‰á蓉ÝÚÏÜÚ‰ÁÈ…“Äñ⇩›…íïý뀀ùæëà€€áúæëüùçý뀀ëàêíïýë…“Åñ⇩›…ÝÚÜÛÍÚÛÜË€…£¦¬Ŵgflœ“Çñ⇩›…âÁÏʉÏÀʉÜÛÀ‰Ï‰ÀËÙ‰ìïýçí‰ÞÜÁÉÜÏÀ…£¦¢ògfl—“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÁÀˉÍÆÏÜÏÍÚËÜ…“Äñ⇩›…ÝÚÜÇÀɉÁȉÚÆˉÝÛÞÞÂÇËʉïýíçç‰ÍÁÊË€…£¦‰þgfl−“Çñ⇩›…íçüíâë‰õèçââó‰ÖÞÁÝŵ×ÞÁÝŵÜÏÊÇÛÝ“…“Äñ⇩›…ÊÜÏÙ‰ÍÇÜÍÂˉÁÛÚÂÇÀˉõÝÁÂÇÊó€…£¦Œ™gfl„“Çñ⇩›…èÁÜÉËډωØÏÜÇÏÌÂËÝ€…£¦‘Œgfl–“Çñ⇩›…íâáý뙋ÍÆÏÀÀË‘“‰ÍÂÁÝˉÝÞËÍÇÈÇËʉÈÇÂË€…£¦æ⇩g†fi“Çñ⇩›…íÂËÏ܉ÉÜÏÞÆÇÍ݉ÝÍÜËËÀ€…£¦ü‰g†fl“Çñ⇩›…íÂËÏ܉ÚËÖÚ‰ÝÍÜËËÀ€…£¦òäg††“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÍÁÝÇÀˉÁȉυ“Äñ⇩›…ÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£¦ÞÈg†‡“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀÛÃÌË܉ÁÈ…“Äñ⇩›…ÍÆÏÜÏÍÚËÜ݉þüçàúËʉÝÇÀÍˉÚÆˉÂÏÝÚ…“Åñ⇩›…ÀËÙÂÇÀË€…£¦ ³g†Œ“Çñ⇩›…ýÏÃˉÏ݉íáâáûü€…£¦6Mg†œ“Çñ⇩›…íáâáûü‰Ï‰õúçàú‰Úó“‰ÝËÚ‰ÚËÖÚ‰ÈÁÜËÉÜÁÛÀÊ…“Äñ⇩›…ÍÁÂÁÛ܉õÏÀʉÚÇÀÚó‰ŷÌÏÍÅÉÜÁÛÀʉfl†„ŶÏ€…“Âñ⇩›…íáâáûü‰ÏŵÞ“‰ÝËÚ‰ÞÏÂËÚÚˉËÀÚÜ׉ÈÁÜ…“Ãñ⇩›…ÂÁÉÇÍωÍÁÂÁÛ܉ωÚÁ‰ÞÆ×ÝÇÍωÍÁÂÁÛ܉ހ…“Áñ⇩›…íáâáûü‰ÏŵÜŵÉŵÌ“‰ÝËÚ‰ÞÏÂËÚÚˉËÀÚÜ׉ÈÁ܉υ£¦dÞñ⇩›…ÚÁ‰ÚÁ‰Üŵ‰Éŵ‰Ìŵ‰ÞÆ×ÝÇÍωÍÁÂÁÛÜ€…£¦zMg†—“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÜËÃÁØË݉ÚÆˉÝÞËÍÇÈÇËÊ…“Äñ⇩›…ÝÞÏÍË݉ÈÜÁÉÚÆˉÍÛÜÜËÀÚ‰ÞÜÁÉÜÏÀ…“Åñ⇩›…íüûàí手ËÖÞÜËÝÝÇÁÀ‘€…“Âñ⇩›…úÆˉÌÇÚ݉ÇÀ‰ÚÆˉÀÛÃÌË܉ÃËÏÀ“…“Ãñ⇩›…fl“‰ÝÞÏÍË݉ÇÀ‰ÝÚÏÚËÃËÀÚ݉‰‰‰‰‰‰‰‰…“Àñ⇩›…†“‰üëã‰ÝÚÏÚËÃËÀÚ݉ŷËÖÍËÞÚ‰ÈÇÜÝÚ…£§¾ÿÁñ⇩›…‡“‰ËÃÞÚ׉ÝÚÏÚËÃËÀÚ݉‰‰‰‰‰‰‰‰‰‰‰‰…“Þñ⇩›…Œ“‰ËÃÞÚ׉ÂÇÀË݉‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰…£§⇩g†−“Çñ⇩›…çÀÚÜÁÊÛÍË݉ÂÇÀˉÁȉêïúï‰ÚÁ‰Ìˉüëïꀅ“Äñ⇩›…úÆˉÂÇÝÚ‰ÁȉÇÚËÃ݉Ç݉ÝËÞÏÜÏÚËʉÌ×…“Åñ⇩›…ÍÁÃÃÏÝ€…“Ãñ⇩›…âáíïâ‰êïúïŵ‰üëýúáüë‰êïúï“…“Àñ⇩›…ÝÏØˉÏÀʉÜËÝÚÁÜˉÍÛÜÜËÀÚ‰êïúï‰ÞÁÇÀÚËÜ€…£§øg†„“Çñ⇩›…êËÈÇÀˉÈÛÀÍÚÇÁÀ‰Á܉ÞÜÁÍËÊÛÜË“…“Åñ⇩›…êëè‰èàÒþüáí‹ÀÏÃË‘õŷ‹ÞÏÜÏÃËÚË܉ÂÇÝÚ‘ó€…“Ãñ⇩›…ëÀʉÈÛÀÍÚÇÁÀ‰ÙÇÚƉ›‹ËÖÞÜËÝÝÇÁÀ‘”‰ËÀÊ…“Àñ⇩›…ÞÜÁÍËÊÛÜˉÙÇÚƉëàêþüá퀅£§Ðúg†–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛˉÇÀ…“Äñ⇩›…ÊËÉÜËË݉ÁȉωÀÛÃÌË܉ÇÀ‰ÜÏÊÇÏÀÝ€…£§<%g‡fi“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÊËÂËÚË݉ωÂÇÀË݉ÌËÚÙËËÀ…“Äñ⇩›…ÚÆˉÝÞËÍÇÈÇËʉÀÛÃÌËÜÝ€…“Âñ⇩›…êëâëú뉋ÝÚÏÜÚ‰ÂÇÀˉÀÛÃÌËÜ‘ŵ…“Ãñ⇩›…‹ËÀʉÂÇÀˉÀÛÃÌËÜ‘…£§fg‡fl“Çñ⇩›…êçã‰ÈÜËÊŷflfifiŵflfifi“…“Äñ⇩›…ÍÜËÏÚˉÏÀʉÇÀÇÚÇÏÂÇÝˉÏÀ‰ÏÜÜÏ×€…“Åñ⇩›…êçã‰ÈÜËÊ⇧‰flfifi“…“Âñ⇩›…ÏÂÂÁÍÏÚˉÝÞÏÍˉÈÁ܉ωÌ×ÚˉÏÜÜÏ׉ËÚÍ€…“Ãñ⇩›…êçãŷÈÜËÊŷ“‰ÈÛÀÍÚÇÁÀ…“Àñ⇩›…ÉÇØË݉ÚÆˉÀÛÃÌË܉ÁȉÊÇÃËÀÝÇÁÀÝ€…£§XãÁñ⇩›…êçãŷÈÜËÊŷŵÀ“‰ÈÛÀÍÚÇÁÀ…“Þñ⇩›…ÉÇØË݉ÚÆˉÝÇÔˉÁȉÚÆˉÀ⇨ÚƉÊÇÃËÀÝÇÁÀ€…£¤¤óg‡†“Çñ⇩›…çÀÚËÉË܉ÊÇØÇÝÇÁÀŵ‰ÜÁÛÀÊËʉÚÁÙÏÜÊ݉ÔËÜÁŵ…“Äñ⇩›…ÌËÚÙËËÀ‰ÚÙÁ‰ÇÀÚËÉËÜÝ€‰þÜÇÁÜÇÚ׉‡€…£¤°èg‡‡“Çñ⇩›…êüïù‰õì÷ó‰Öŵד‰ÉÜÏÞÆÇÍ݉ÊÜÏÙ‰ÚÁ…“Äñ⇩›…õÜËÂÏÚÇØˉÌ×ó‰Öŵ×€…£¤†‹g‡Œ“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÍÏÂÂ݉ÚÆˉïüã‰ìïýçí…“Äñ⇩›…ëÊÇÚÁÜ€…£¤èûg‡œ“Çñ⇩›…ëââçþýë‰õèçââó‰Öŵ×ŵÃÏÄŵÃÇÀõŵÏÀÉÂËó“…“Äñ⇩›…ÊÜÏÙ‰ËÂÂÇÞÝˉÁÛÚÂÇÀˉõÝÁÂÇÊó€…£¤ôrg‡—“Çñ⇩›…þÏÜÚ‰ÁȉÚÆˉç耀úæëà€€ëâýë‰ÝÚÜÛÍÚÛÜË€…“Åñ⇩›…çȉÈÁÛÀʉÏÚ‰ÚÆˉÝÚÏÜÚ‰ÁȉÂÇÀËŵ‰ÇÚ‰ÇÝ…“Âñ⇩›…ÞÏÜÚ‰ÁȉÚÆˉÌÂÁÍʼnç耀úæëà€€ëâý뀀ëàêçè…“Ãñ⇩›…ÝÚÜÛÍÚÛÜË€‰ëâýë‰ÍÏÀ‰ÏÂÝÁ‰ÏÞÞËÏ܉ÇÀ…“Àñ⇩›…áà‰€€‰éáúáÒéáýûìÒþüáí‰ÚÁ‰ÝËÚ‰ÚÆË…£¤"·Áñ⇩›…ÊËÈÏÛÂÚ‰ÁÞÚÇÁÀ€…£¤8g‡−“Çñ⇩›…ëà꓉ÝÚÏÚËÃËÀÚ‰ÃÏÜÅÇÀɉËÀʉÁȉÞÜÁÉÜÏÃ…“Äñ⇩›…ËÖËÍÛÚÇÁÀ€…“Âñ⇩›…ëàꛋËÖÞÜËÝÝÇÁÀ‘“‰ÏÂÚË܉ÏÃÁÛÀÚ‰ÁÈ…“Ãñ⇩›…ÃËÃÁÜ׉ÏÂÂÁÍÏÚËʉÚÁ‰ìïýç퀅“Áñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰ëàê‰ÉÇØË݉ÚÆˉËÀʉÏÊÊÜËÝÝ…“Þñ⇩›…ÁȉÃËÃÁÜ׉ÛÝËÊ€…£¤|ëg‡„“Çñ⇩›…ëÀʉÁȉíïýë‰ÝÚÜÛÍÚÛÜˉÏÚ‰ÝÚÏÜÚ‰ÁȉÂÇÀË€…“Äñ⇩›…ýËˉíïý뀅£¤Hég‡–“Çñ⇩›…ëÀʉÁȉÌÂÁÍʼnçè‰ÝÚÜÛÍÚÛÜˉÏÚ‰ÝÚÏÜÚ‰ÁÈ…“Äñ⇩›…ÂÇÀË€‰ýËˉç者£¤TgŒfi“Çñ⇩›…ëÀʉÁȉÞÜÁÍËÊÛÜˉÊËÈÇÀÚÇÁÀ€…£¥ªfigŒfl“Çñ⇩›…ëÀʉÁȉùæçâë‰ÝÚÜÛÍÚÛÜË€‰ýËˉùæçâ뀅£¥ ãgŒ†“Çñ⇩›…ëàøëâáþë‰ÚÏÅË݉flŒ‰ÀÛÃËÜÇ͉ÞÏÜÏÃËÚËÜÝ…“Äñ⇩›…ÝËÞÏÜÏÚËʉÌ׉ÍÁÃÃÏÝ€…£¥…ËgŒ‡“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉úüûë‰ÇȉÏÚ‰ËÀʉÁÈ…“Äñ⇩›…ÁÞËÀ‰ÈÇÂË”‰ËÂÝˉèïâýë“…“Âñ⇩›…ëá虋ÍÆÏÀÀË‘€…£¥îügŒŒ“Çñ⇩›…ìÇÚÙÇÝˉÂÁÉÇÍωËÖÍÂÛÝÇØË◰Á܉ÌËÚÙËËÀ…“Äñ⇩›…ÚÙÁ‰ÇÀÚËÉËÜÝ€‰þÜÇÁÜÇÚ׉−€…£¥úègŒœ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ËØÏÂÛÏÚË݉ωÝÚÜÇÀÉ“…“Åñ⇩›…ëøïâŷ……†☓öŶfl……€…£¥ÆägŒ—“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÂÇÀˉÀÛÃÌË܉ÁÈ…“Äñ⇩›…ÚÆˉÂÏÝÚ‰ËÜÜÁÜ€…£¥ÒågŒ−“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉËÜÜÁ܉ÀÛÃÌËÜ…“Äñ⇩›…ÁȉÚÆˉÂÏÝÚ‰ËÜÜÁÜ€…£¥>$gŒ„“Çñ⇩›…þÏÜÚ‰Áȉáà‰ëüüáü”‰âáíïâ‰ëüüáü‰ÏÀÊ…“Äñ⇩›…üëýúáüë‰ëüüáü‰ÝÚÏÚËÃËÀÚÝ€…“Âñ⇩›…íÏÛÝˉÏÀ‰ËÜÜÁÜ“…“Ãñ⇩›…ëüüáü‰õëöúó‰‹ÀÛÃÌËÜ‘ŵ‹ÝÚÜÇÀÉ‘€…£¥ágŒ–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉËÖÞÁÀËÀÚÇωÁÈ…“Äñ⇩›…ωÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£¥bgœfi“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÂËÀÉÚƉŷËÖÚËÀÚ…“Äñ⇩›…ÁȉÏÀ‰ÁÞËÀ‰ÈÇÂË“‰ëöú™‹ÍÆÏÀÀË‘€…“Âñ⇩›…ëöú™‹ÍÆÏÀÀË‘›‹ËÖÞÜËÝÝÇÁÀ‘‰ÝËÚ݉ÚÆË…“Ãñ⇩›…ÂËÀÉÚƉÁȉÏÀ‰ÁÞËÀ‰ÈÇÂË€…£¥Zçgœfl“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÂÁÉÇÍωØÏÂÛË…“Äñ⇩›…⇨ÈÏÂÝË⇨‰Ç€Ë€‰fi€…£¢¦ågœ†“Çñ⇩›…èçââ‰õì÷ó‰Öŵד‰ÈÂÁÁʉÈljÈÜÁÃ…“Äñ⇩›…õÜËÂÏÚÇØˉÚÁó‰ÞÁÇÀÚ‰Öŵ×€…£¢²øgœ‡“Çñ⇩›…íωωÈÛÀÍÚÇÁÀ‰ÙÇÚƉèàÈÜËÊŷÖŵ×“…“Äñ⇩›…ÊËÈÇÀˉÁÀˉÙÇÚƉêëè‰èàÈÜËÊŷÏŵÌ€…£¢fiùgœŒ“Çñ⇩›…èáü‰‹ØÏÜÇÏÌÂË‘‰›‰‹ÝÚÏÜÚ‰ØÏÂÛË‘‰úá…“Äñ⇩›…‹ÂÇÃÇÚ‰ØÏÂÛË‘‰õýúëþ‰‹ÝÚËÞ‰ÝÇÔË‘ó€…£¢êgœœ“Çñ⇩›…éíáâ‰Ï‰õúçàú‰Úó“‰ÝËÚ‰ÉÜÏÞÆÇÍÝ…“Äñ⇩›…ÈÁÜËÉÜÁÛÀʉÍÁÂÁÛ܉õÏÀʉÚÇÀÚó…“Åñ⇩›…ŷÌÏÍÅÉÜÁÛÀʉfl†„ŶÏ€…“Ãñ⇩›…éíá≋ÏÍÚÇÁÀ‘ŵωõúçàú‰Úó“‰ÝËÚ‰ÉÜÏÞÆÇÍÝ…“Àñ⇩›…ÈÁÜËÒÌÏÍÅÉÜÁÛÀʉÍÁÂÁÛ܉ÏÀʉÏÍÚÇÁÀ€…£¢ØÌgœ—“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉïýíçç‰ØÏÂÛˉÁÈ…“Äñ⇩›…ÚÆˉÀËÖÚ‰ÍÆÏÜÏÍÚË܉ÇÀ‰ÚÆˉÇÀÞÛÚ‰ÝÚÜËÏÀ…£¢$9gœ−“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀËÖÚ‰ÇÀÞÛÚ…“Äñ⇩›…ÍÆÏÜÏÍÚË܉Ï݉ωÁÀˉÍÆÏÜÏÍÚË܉ÝÚÜÇÀÉ€…“Âñ⇩›…éëú⇩™‹ÍÆÏÀÀË‘‰ÉÇØË݉ÀËÖÚ‰ÝÚÜÇÀɉÈÜÁÃ…“Ãñ⇩›…ÚÆˉÈÇÂË€…£¢ægœ„“Çñ⇩›…éáýû쉋ÂÇÀˉÀÛÃÌËÜ‘“‰ÍωÝÛÌÜÁÛÚÇÀˉÏÚ…“Äñ⇩›…ÂÇÀˉÀÛÃÌËÜ€…£¢hŒgœ–“Çñ⇩›…éáúቋÂÇÀˉÀÛÃÌËÜ‘“‰ÉÁ‰ÚÁ‰ÂÇÀˉÀÛÃÌËÜ€…£¢~æg—fi“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÉÇØË݉ÆËÂÞ‰ÁÀ‰ÛÝÏÉˉÁȉÚÆË…“Äñ⇩›…ÇÀÚËÜÞÜËÚËÜ€…£¢JÎg—fl“Çñ⇩›…úÆÇ݉ÞÝÛËÊÁ◰ØÏÜÇÏÌÂˉÜËÏÊ݉Á܉ÝËÚ݉ÚÆË…“Äñ⇩›…ÏÊÊÜËÝ݉ÁȉÚÆˉËÀʉÁȉìïýçí⇨݉ÃËÃÁÜ×€…£¢Vg—†“Çñ⇩›…ýÇÀÉÂˉÂÇÀˉÇÈ“‰ç艋ËÖÞÜËÝÝÇÁÀ‘‰õúæëàó…“Äñ⇩›…‹ÝÚÏÚËÃËÀÚÝ‘‰õëâý뉋ÝÚÏÚËÃËÀÚÝ‘ó€…“Âñ⇩›…ìÂÁÍʼnÇÈ“‰ç艋ËÖÞÜËÝÝÇÁÀ‘‰úæëà‹ÀËÙÂÇÀË‘…“Ãñ⇩›…‰‰‰‰‰‰‰‰‰‰‰‰‹ÂÇÀËÝ‘‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰…££‰ñÀñ⇩›…ÁÞÚÇÁÀÏ“‰ëâý뉋ÂÇÀËÝ‘‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰…“Áñ⇩›…‰‰‰‰‰‰‰‰‰‰ëàêç艉‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰…££Œ|g—‡“Çñ⇩›…çàåë÷‰fi‰ÚÁ‰‡†−—−“‰ÈÛÀÍÚÇÁÀ‰ÙÏÇÚÝ…“Äñ⇩›…‹ÀÛÃÌËÜ‘‰ÍËÀÚÇÝËÍÁÀÊ݉ÚÁ‰ÜËÏʉÍÆÏÜÏÍÚËÜ…“Âñ⇩›…çàåë÷‰◰†œœ‰ÚÁ‰◰fl“‰ÈÛÀÍÚÇÁÀ‰ÍÆËÍÅÝ…“Ãñ⇩›…ÝÞËÍÇÈÇ͉ÅË׉ÈÁ܉úüûëÒèïâý뀅“Áñ⇩›…çàåë÷‰◰†œ—“‰ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÁÞËÜÏÚÇÀÉ…££È⇦Þñ⇩›…Ý×ÝÚËÉÀÛÃÌËÜ€‰ýËˉÏÞÞËÀÊÇÖ€…££Þŷg—Œ“Çñ⇩›…íæü⇩ŷçàåë÷€€€“‰ÝËˉçàåë÷€…££Ôg—œ“Çñ⇩›…çàþûú‰õâçàëóõ⇨ÒúïìÒýþíóõ……ÊÇÝÞÂÏ×…“Äñ⇩›…ÝÚÜÇÀÉ……óõŵÒ”ó‹ØÏÜÇÏÌÂË‘“‰ÇÀÞÛÚ‰ÈÜÁÃ…“Åñ⇩›…ÛÝËÜ€…“Ãñ⇩›…çàþûú™‹ÍÆÏÀÀË‘ŵ‹ÂÇÝÚ‰ÁȉØÏÜÇÏÌÂËÝ‘“…“Àñ⇩›…ÇÀÞÛÚ‰ÊÏÚωÈÜÁÉÁÞËÀ‰ÈÇÂË€…££üg——“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÞËÜÃÏÀËÀÚÂ׉ÇÀÝÚÏÂÂ݉υ“Äñ⇩›…ÂÇÌÜÏÜד‰ÝËˉæëâþ‰âçìüïü÷€…££nÊg—−“Çñ⇩›…çàýúüŷ‹ÝÚÜÇÀÉ‘ŵ‹ÝÛ̉ÝÚÜÇÀÉ‘…“Äñ⇩›…õŵ‹ÝÚÏÜÚ‰ÞÁÝÇÚÇÁÀ‘ó‰ÈÇÀʉÝÛ̉ÝÚÜÇÀÉ…“Åñ⇩›…ÞÁÝÇÚÇÁÀ€…££póg—„“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀËÏÜËÝÚ‰ÇÀÚËÉËÜ…“Äñ⇩›…ÂËÝ݉ÚÆÏÀ‰Á܉ËßÛωÚÁ‰ÚÆˉÀÛÃÌËÜ€…££\fg—–“Çñ⇩›…âëèú⇩ŷ‹ÝÚÜÇÀÉ‘ŵ‹ÀÛÃÌËÜ‘“‰ÉÇØË݉ÂËÈÚ◰…“Äñ⇩›…ÃÁÝÚ‰ÀÛÃÌË܉ÁȉÍÆÏÜÏÍÚËÜ݉ÈÜÁÉÝÚÜÇÀÉ€…“Âñ⇩›…âëèú⇩ŷ‹ÝÚÜÇÀÉ‘“‰ÉÇØË݉ÂËÈÚÃÁÝÚ‰âëà◰fl…“Ãñ⇩›…ÍÆÏÜÏÍÚËÜÝ€…“Áñ⇩›…âëèú⇩ŷ‹ÝÚÜÇÀɉØÏÜÇÏÌÂË‘õŵ‹ÍÁÛÀÚ‘ó›…£ ⇩ŴÞñ⇩›…‹ÝÚÜÇÀÉ‘“‰ÁØËÜÙÜÇÚˉÍÆÏÜ݉ÈÜÁÉÝÚÏÜÚ€…£ €’g−fi“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÂËÀÉÚƉÁȉυ“Äñ⇩›…ÝÚÜÇÀÉ€…£ ì☓g−fl“Çñ⇩›…áÞÚÇÁÀωÞÏÜÚ‰ÁȉÏÝÝÇÉÀÃËÀÚ€…£ âÈg−†“Çñ⇩›…âçìüïü÷‰‹ÝÚÜÇÀÉ‘“‰ÈÛÀÍÚÇÁÀ݉ÏÀÊ…“Äñ⇩›…ÞÜÁÍËÊÛÜË݉ÁȉÚÆˉÀÏÃËʉÞÜÁÉÜÏÉÍÏÀ…“Åñ⇩›…ÌˉÛÝËÊ€…£ ÄÍg−‡“Çñ⇩›…êÜÏىωÂÇÀË“‰âçàë‰Öflŵ×flŵÖ†ŵ׆…“Åñ⇩›…þÏÜÚ‰Áȉçàþûú‰âçàë‰Á܉âçàë‰çàþûú…“Âñ⇩›…ÝÚÏÚËÃËÀÚ€…£ &>g−Œ“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÂÇÝÚ݉ÚÆˉÞÜÁÉÜÏÓ…“Åñ⇩›…âçýú‰õ‹ÂÇÀˉÀÛÃÌËÜ‘óõŵõ‹ÂÇÀˉÀÛÃÌËÜ‘óó…“Âñ⇩›…õçè‹ÞÏÚÚËÜÀ‘ó€…“Àñ⇩›…âÇÝÚ‰ÝËÍÚÇÁÀ‰õÇȉÞÏÚÚËÜÀó€…£ qg−œ“Çñ⇩›…âçýúቋÁÞÚÇÁÀ‰ÀÛÃÌËÜ‘€‰ìÇÚ݉ÃËÏÀ“◰…“Åñ⇩›…fi“‰ÝÞÏÍˉÌËÈÁÜˉÂÇÀˉ‰‰‰‰‰‰‰…“Âñ⇩›…fl“‰ÇÀÊËÀÚ‰ÝÚÜÛÍÚÛÜˉ‰‰‰‰‰‰‰‰…“Ãñ⇩›…†“‰ÝÞÂÇÚ‰ÂÇÀË݉ÏÚ‰“‰‰‰‰‰‰‰‰‰…“Àñ⇩›…‡“‰ÊÁÀ⇨Ú‰ÂÇÝÚ‰ÂÇÀˉÀÛÃÌË܉‰‰…“Áñ⇩›…Œ“‰ÂÇÝÚ‰ÚÁÅËÀ݉ÇÀ‰ÂÁÙË܉ÍÏÝË…£ BÊg−—“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀÏÚÛÜÏÂ…“Äñ⇩›…ÂÁÉÏÜÇÚÆÉŷÌÏÝˉË‰ÁȉωÀÛÃÌËÜ…“Åñ⇩›…ŷ‹ÈÏÍÚÁÜ‘€…£¡¤Ŵg−−“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÂÁÏÊ݉ωÀËÙ‰ÞÜÁÉÜÏÀ…£¡ºig−„“Çñ⇩›…âáíï≋ÂÇÝÚ‰ÁȉØÏÜÇÏÌÂËÝ‘“‰ÃÏÅˉÚÆÇÀÉÝ…“Äñ⇩›…ÞÜÇØÏÚˉÚÁ‰ÈÛÀÍÚÇÁÀ‰Á܉ÞÜÁÍËÊÛÜË€…“Âñ⇩›…âáíïâ‰êïúÝÏØˉêïúï‰ÞÁÇÀÚË܉ÁÀ‰ÝÚÏÍÅ€…“Àñ⇩›…âáíïâ‰ëüüáü“‰ÝÏØˉËÜÜÁ܉ÍÁÀÚÜÁ‰ÝÚÏÚÛÝ…“Áñ⇩›…ÁÀ‰ÝÚÏÍÅ€…£¡èÊg−–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÍÁÃÃÁÀ…“Äñ⇩›…ÂÁÉÏÜÇÚÆÉŷÌÏÝˉflfi‰ÁȉωÀÛÃÌËÜ…“Åñ⇩›…ŷ‹ÈÏÍÚÁÜ‘€…£¡ÊÏg„fi“Çñ⇩›…úÆÇ݉ÞÝÛËÊÁ◰ØÏÜÇÏÌÂˉÜËÏÊ݉Á܉ÝËÚ݉ÚÆË…“Äñ⇩›…ÏÊÊÜËÝ݉ÁȉÚÆˉÝÚÏÜÚ‰ÁȉÚÆˉØÏÜÇÏÌÂËÝ€…£¡Ö‹g„fl“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÂÇÝÚ݉ωØÏÜÇÏÌÂË݉ÇÀ…“Äñ⇩›…ÛÝË€…£¡"{g„†“Çñ⇩›…ãçê⇩ŷ‹ÝÚÜÇÀÉ‘ŵ‹ÞÁÝÇÚÇÁÀ‘“‰ÉÇØË݉ωÁÈ…“Äñ⇩›…ÝÚÜÇÀɉÝÚÏÜÚÇÀɉÈÜÁÉÞÁÝÇÚÇÁÀ€…“Âñ⇩›…ãçê⇩ŷ‹ÝÚÜÇÀÉ‘ŵ‹ÞÁÝÇÚÇÁÀ‘ŵ‹ÍÁÛÀÚ‘“…“Ãñ⇩›…ÉÇØË݉ÝÁÃˉÁȉÝÚÜÇÀɉÈÜÁÉÞÁÝÇÚÇÁÀ€…“Áñ⇩›…ãçê⇩ŷ‹ÝÚÜÇÀɉØÏÜÇÏÌÂË‘ŵ‹ÞÁÝÇÚÇÁÀ‘…£¡fiÞñ⇩›…õŵ‹ÍÁÛÀÚ‘ó›‹ÝÚÜÇÀÉ‘“‰ÁØËÜÙÜÇÚˉÍÆÏÜÝ€…£¡fag„‡“Çñ⇩›…üËÃÏÇÀÊË܉ÏÈÚË܉ÇÀÚËÉË܉ÊÇØÇÝÇÁÀ…“Äñ⇩›…ÌËÚÙËËÀ‰ÚÙÁ‰ÇÀÚËÉËÜÝ€‰þÜÇÁÜÇÚ׉‡€…“Âñ⇩›…úÆˉãáê‰ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÝßÛÏÜˉÜÁÁÚ…“Ãñ⇩›…ÁȉÚÆˉÝÛÉÁȉÚÆˉÝßÛÏÜË݉ÁȉωÚÆË…“Àñ⇩›…ËÂËÃËÀÚ݉ÇÀ‰ÀÛÃËÜÇ͉ÏÜÜÏ×€…£¡TÅg„Œ“Çñ⇩›…ãáê뉋ÀÛÃÌËÜ‘“‰ÝËÚ‰ÝÍÜËËÀ‰ÃÁÊË€…“Åñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰ãáêë‰ÉÇØË݉ÚÆˉÍÛÜÜËÀÚ…“Âñ⇩›…ÝÍÜËËÀ‰ÃÁÊË€…£¾¶èg„œ“Çñ⇩›…ãáøë‰õì÷ó‰Öŵד‰ÉÜÏÞÆÇÍ݉ÃÁØˉÚÁ…“Äñ⇩›…õÜËÂÏÚÇØˉÌ×ó‰Öŵ×€…£¾ŵng„—“Çñ⇩›…ãáûýë‰Öŵ×ŵÔõŵÚó“‰ÝËÚ݉Öŵ׉ÚÁ‰ÃÁÛÝË…“Äñ⇩›…ÞÁÝÇÚÇÁÀ”‰Ô‰ÚÁ‰ÌÛÚÚÁÀ‰ÝÚÏÚˉõÚ‰ÚÁ‰ÚÇÃËó…“Âñ⇩›…ãáûýë‰üëíúïàéâë‰Öŵ×ŵÙÇÊÚÆŵÆËÇÉÆÚ“…“Ãñ⇩›…ÍÁÀÝÚÜÏÇÀ‰ÃÁÛÝˉÃÁØËÃËÀÚ‰ÚÁ‰ÇÀÝÇÊË…“Àñ⇩›…ÜËÍÚÏÀÉÂË€…£¾ðg„−“Çñ⇩›…ãáûýë‰áà‰õÏó“‰ÝËÚ݉ÃÁÛÝˉÞÁÇÀÚË܉fl…“Äñ⇩›…õÁ܉Ïó…“Âñ⇩›…ãáûýë‰áè蓉ÚÛÜÀ‰ÃÁÛÝˉÞÁÇÀÚË܉ÁÈÈ€…“Àñ⇩›…ãáûýë‰ýúëþ‰ÏõŵÌó“‰ÝËÚ݉ÃÁÛÝˉÝÚËÞ…“Áñ⇩›…ÃÛÂÚÇÞÂÇË܉ÚÁ‰ÏŵωõÁ܉ÏŵÌó€…£¾>    g„„“Çñ⇩›…ãáûýë‰úá‰Öŵד‰ÞÁÝÇÚÇÁÀ݉ÃÁÛÝˉÏÀÊ…“Äñ⇩›…ÞÁÇÀÚË܉ÏÚ‰Öŵ×€…“Âñ⇩›…ãáûýë‰íáâáûü‰ÏŵÜŵÉŵÌ“‰ÝËÚ‰ÃÁÛÝË…“Ãñ⇩›…ÞÏÂËÚÚˉËÀÚÜ׉ÈÁ܉ωÚÁ‰Üŵ‰Éŵ‰Ì…“Àñ⇩›…ÞÆ×ÝÇÍωÍÁÂÁÛÜ€…£¾l‹g„–“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉËÜÏÝË݉ÚÆˉÍÛÜÜËÀÚ…“Äñ⇩›…ÞÜÁÉÜÏÀ…£¾xÈg–fi“Çñ⇩›…àëöú‰õ‹ØÏÜÇÏÌÂË‘õŵ‹ØÏÜÇÏÌÂË‘óðó“…“Äñ⇩›…ÍÂÁÝË݉ÁÀˉÁ܉ÝËØËÜωèáü€€àëöú…“Åñ⇩›…ÝÚÜÛÍÚÛÜËÝ€…£¾Zòg–fl“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀÛÃÌË܉ÙÇÚƉÏÂÂ…“Äñ⇩›…ÌÇÚ݉ÇÀØËÜÚËʉŷfi‰⇦‰fl‰ËÖÍÆÏÀÉËÊ€…£¿¦õg–†“Çñ⇩›…áè蓉ÚÛÜÀ‰ÍÛÜÝÁ܉ÁÈÈ€…“Åñ⇩›…þÏÜÚ‰Áȉúüïíë‰áèèŵ‰áà‰ëüüáü‰áèè…“Âñ⇩›…ÝÚÏÚËÃËÀÚÝ€…£¿⇦ég–‡“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÜËÍÁØËÜ݉ÚÆˉÞÜÁÉÜÏÉÄÛÝÚ…“Äñ⇩›…ÏÈÚË܉ωàëù€…£¿“g–Œ“Çñ⇩›…áà“‰ÍÛÜÝÁ܉ÁÀ€…“Åñ⇩›…áà‰ëüüáü‰õâáíïâÒáèèó“‰ÊËÈÇÀˉËÜÜÁÜ…“Âñ⇩›…ÆÏÀÊÂËÜ€…“Àñ⇩›…áà‰‹ËÖÞÜËÝÝÇÁÀ‘‰éáúáÒéáýûìÒþüá퀀€ëâýë“…“Áñ⇩›…ÍωÈÜÁÉÝÞËÍÇÈÇËʉÇÚËÉÂÇÝÚ‰ÇÚËÀ…£¿Âæg–œ“Çñ⇩›…áÞËÀ‰ÈÁ܉çÀÞÛÚ“‰ÚÆˉÈÛÀÍÚÇÁÀ‰ÁÞËÀ݉υ“Äñ⇩›…ÈÇÂˉÈÁ܉ÇÀÞÛÚ€…£¿.äg–—“Çñ⇩›…áÞËÀ‰ÈÁ܉áÛÚÞÛÚ“‰ÚÆˉÈÛÀÍÚÇÁÀ‰ÁÞËÀ݉υ“Äñ⇩›…ÈÇÂˉÈÁ܉ÁÛÚÞÛÚ€…£¿:úg–−“Çñ⇩›…áÞËÀ‰ÈÁ܉ûÞÊÏÚË“‰ÚÆˉÈÛÀÍÚÇÁÀ‰ÁÞËÀ݉υ“Äñ⇩›…ÈÇÂˉÈÁ܉ÇÀÞÛÚ‰ÏÀʉÁÛÚÞÛÚ€…£¿æg–„“Çñ⇩›…ìÇÚÙÇÝˉÂÁÉÇÍωÁ܉ÌËÚÙËËÀ‰ÚÙÁ…“Äñ⇩›…ÇÀÚËÉËÜÝ€‰þÜÇÁÜÇÚ׉−€…£¿ég––“Çñ⇩›…áüçéçà‰Öŵד‰ÝËÚ݉Öŵ׉Ï݉ÚÆˉÀËÙ…“Äñ⇩›…ÉÜÏÞÆÇÍ݉fiŵfi‰ÞÁÇÀÚ€…£¿~Êgflfifi“Çñ⇩›…áýíâ牋ÝÚÜÇÀÉ‘“‰ÉÇØˉÝÚÜÇÀɉÚÁ…“Äñ⇩›…áÞËÜÏÚÇÀɉý×ÝÚËÉíÁÃÃÏÀʉâÇÀË…“Åñ⇩›…çÀÚËÜÞÜËÚËÜ€…£¿@úgflfifl“Çñ⇩›…çÊËÀÚÇÈÇË݉ÍÏÝˉËÖÍËÞÚÇÁÀωÝËÍÚÇÁÀ…“Äñ⇩›…ÏÚ‰ÝÚÏÜÚ‰ÁȉÂÇÀË€‰ýËˉíïý뀅£¼¬ógflfi†“Çñ⇩›…áøëüâï÷‰‹ÝÚÜÇÀɉÏÜÜÏב“‰ÝËÚ‰ÏÀ‰ÏÜÜÏ×…“Äñ⇩›…ÁȉÈÇÂËÀÏÃË݉ÈÁ܉ÁØËÜÂÏ׉ÂÇÌÜÏÜÇËÝ€…£¼¸Îgflfi‡“Çñ⇩›…úÆÇ݉ÞÝÛËÊÁ◰ØÏÜÇÏÌÂˉÜËÏÊ݉Á܉ÝËÚ݉ÚÆË…“Äñ⇩›…ÏÊÊÜËÝ݉ÁȉÚÆˉÝÚÏÜÚ‰ÁȉÚÆˉÞÜÁÉÜÏÀ…£¼☓ægflfiŒ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛˉÁȉ⇨ÞÇ⇨…“Äñ⇩›…‡€flŒflœ–†—œ‡œ€…£¼‘figflfiœ“Çñ⇩›…þâáú‰ÀŵÖŵד‰ÉÜÏÞÆÇÍ݉ÁÞËÜÏÚÇÁÀ‰À€…£¼æzgflfi—“Çñ⇩›…þáçàú‰õì÷ó‰Öŵד‰ÝËÚ‰ÞÇÖˉÏÚ…“Äñ⇩›…õÜËÂÏÚÇØˉÚÁó‰Öŵ×€…“Âñ⇩›…þáçàú‰úá‰Öŵד‰ÞÁÝÇÚÇÁÀ‰ÞÁÇÀÚË܉ÏÚ…“Ãñ⇩›…Öŵ׉ÇȉÀÁÚ‰ÂÇÀÅËʉÚÁ‰ÃÁÛÝË€…“Áñ⇩›…þáçàúŷÖŵ×“‰ÉÇØË݉ÚÆˉÂÁÉÇÍωÍÁÂÁÛÜ…“Þñ⇩›…ÁȉωÉÜÏÞÆÇÍ݉ÞÁÇÀÚ€…£¼*ãgflfi−“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÖ◰ÍÁÁÜÊÇÀÏÚË…“Äñ⇩›…ÁȉÚÆˉÚËÖÚ‰ÍÛÜÝÁÜ€…£¼6ygflfi„“Çñ⇩›…þüçàú‰õ⇨ÒúïìÒýþíóõ……ÊÇÝÞÂÏ׉ÝÚÜÇÀÉ……ó…“Äñ⇩›…õ‹ËÖÞÜËÝÝÇÁÀ‘óõ”ó“…“Âñ⇩›…ÞÜÇÀÚ‰ÇÚËÃ݉ÇÀ‰ÈÇËÂÊ݉ÊËÈÇÀËʉÌ׉î⇧‰◰…“Ãñ⇩›…ÝËˉæëâþ‰î⇧…“Áñ⇩›…þüçàú™‹ÍÆÏÀÀË‘ŵ‹ÂÇÝÚ‰ÁȉËÖÞÜËÝÝÇÁÀÝ‘“…“Þñ⇩›…ÞÜÇÀÚ‰ÊÏÚωÚÁ‰ÁÞËÀ‰ÈÇÂË€…£¼zògflfi–“Çñ⇩›…íωωÞÜÁÍËÊÛÜˉÙÇÚƉþüáíÈÜËÊŷÖŵ×”…“Äñ⇩›…ÊËÈÇÀˉÁÀˉÙÇÚƉêëè‰þüáíÈÜËÊŷÏŵÌ€…£¼F=gflflfi“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÞÁÝÇÚÇÁÀ‰ÇÀ‰Ï…“Äñ⇩›…ÈÇÂË“‰þúü™‹ÍÆÏÀÀË‘€…“Âñ⇩›…þúü™‹ÍÆÏÀÀË‘›‹ËÖÞÜËÝÝÇÁÀ‘‰ÝËÚ݉ÚÆË…“Ãñ⇩›…ÞÁÝÇÚÇÁÀ‰ÇÀ‰Ï‰ÈÇÂË€…£½¾×gflflfl“Çñ⇩›…âËÏØˉÚÆˉÇÀÚËÜÞÜËÚËÜ€…“Åñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰ÿûçú‰ÉÇØË݉úüûë‰Çȉìïýçí…“Âñ⇩›…ÙÏ݉ËÀÚËÜËʉÙÇÚƉω◰ßÛÇÚ‰ÁÞÚÇÁÀ€…£½€ûgflfl†“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛˉÇÀ…“Äñ⇩›…ÜÏÊÇÏÀ݉ÁȉωÀÛÃÌË܉ÇÀ‰ÊËÉÜËËÝ€…£½ìËgflfl‡“Çñ⇩›…üëïꉋÂÇÝÚ‰ÁȉØÏÜÇÏÌÂËÝ‘“‰ÜËÏʉÚÆË…“Äñ⇩›…ØÏÜÇÏÌÂË݉ÇÀ‰ÚÛÜÀ‰ÈÜÁÉêïúï…“Åñ⇩›…ÝÚÏÚËÃËÀÚÝ€…£½Î8gflflŒ“Çñ⇩›…üëíúïàéâë‰õèçââó‰ÖÂÁŵ×ÂÁŵÙÇÊÚÆ…“Äñ⇩›…õŵÆËÇÉÆÚó‰õúá‰ÖÂÁŵ×ÂÁó“…“Âñ⇩›…êÜÏىωÜËÍÚÏÀÉÂˉÁÛÚÂÇÀˉõÝÁÂÇÊó‰ÁÜ…“Ãñ⇩›…ÍÁÞ׉õÃÁØËó‰ÚÆˉÜËÍÚÏÀÉÂË€…£½&⇩gflflœ“Çñ⇩›…çÉÀÁÜË݉ÜËÝÚ‰ÁȉÂÇÀË€…£½<Ügflfl—“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÜËÀÛÃÌËÜ݉ÚÆˉÂÇÀË݉ÇÀ…“Äñ⇩›…ÚÆˉÞÜÁÉÜÏÓ…“Âñ⇩›…üëàûãìëü‰õ‹ÌÏÝˉÀÛÃÌËÜ‘õŵ‹ÝÚËÞ‰ÝÇÔË‘óó…£½ögflfl−“Çñ⇩›…ýÚÏÜÚ‰Áȉüëþëïú€€ûàúçâ‰ÝÚÜÛÍÚÛÜË”…“Äñ⇩›…ÝÚÏÚËÃËÀÚ‰ÊËÂÇÃÇÚË܉ÀÁÚ‰ÜËßÛÇÜËÊ€…£½jÆgflfl„“Çñ⇩›…þÜÇÀÚ‰ÂÏÝÚ‰ËÜÜÁ܉ÃËÝÝÏÉË€…“Åñ⇩›…üëþáüú⇩‰ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÝÚÜÇÀɉÁȉÂÏÝÚ…“Âñ⇩›…ËÜÜÁ܉ÝÚÜÇÀÉ€…£½LMgflfl–“Çñ⇩›…üëýúáüë‰õŶóõ‹ÀÛÃÌËÜ‘ó“‰ÜËÝÚÁÜˉÚÆË…“Äñ⇩›…ÊÏÚωÞÁÇÀÚË܉ÚÁ‰ÈÇÜÝÚ‰Á܉ÉÇØËÀ‰ÂÇÀËŵ…“Åñ⇩›…Á܉ÃÁØˉÈÁÜÙÏÜʉ‹ÀÛÃÌËÜ‘‰ÂÇÀË݉ÈÜÁÃ…“Âñ⇩›…ÚÆˉÝÚÏÜÚ‰ÁȉÚÆˉÀËÖÚ‰ÂÇÀË€…“Ãñ⇩›…üëýúáüë‰êïúÜËÝÚÁÜˉêïúï‰ÞÁÇÀÚËÜ…“Àñ⇩›…ÈÜÁÉÝÚÏÍÅ€…£º°éÁñ⇩›…üëýúáüë‰ëüüáü“‰ÜËÝÚÁÜˉËÜÜÁ܉ÍÁÀÚÜÁÂ…“Þñ⇩›…ÝÚÏÚÛ݉ÈÜÁÉÝÚÏÍÅ€…£º†hgfl†fi“Çñ⇩›…üçéæú⇩ŷ‹ÝÚÜÇÀÉ‘ŵ‹ÀÛÃÌËÜ‘“‰ÉÇØË݉ÜÇÉÆÚ…“Äñ⇩›…ÃÁÝÚ‰ÀÛÃÌË܉ÁȉÍÆÏÜÏÍÚËÜ݉ÈÜÁÉÝÚÜÇÀÉ€…“Âñ⇩›…üçéæú⇩ŷ‹ÝÚÜÇÀÉ‘“‰ÉÇØË݉ÜÇÉÆÚÃÁÝÚ…“Ãñ⇩›…ÍÆÏÜÏÍÚËÜ€…“Áñ⇩›…üçéæú⇩ŷ‹ÝÚÜÇÀɉØÏÜÇÏÌÂË‘õŵ‹ÍÁÛÀÚ‘ó›…£ºÊfiÞñ⇩›…‹ÝÚÜÇÀÉ‘“‰ÁØËÜÙÜÇÚˉÍÆÏÜÏÍÚËÜ݉ÏÚ‰ËÀÊ€…£ºÀqgfl†fl“Çñ⇩›…üà꓉èÛÀÍÚÇÁÀ‰ÉÇØË݉ωÜÏÀÊÁÉÇÀÚËÉËÜ€‰…“Äñ⇩›…üàêŷÀ‰ÙÆËÜˉÀ‹fi“‰ÇÀÇÚÇÏÂÇÝˉÜÏÀÊÁɉ‰…“Åñ⇩›…ÀÛÃÌË܉ÉËÀËÜÏÚÁ܉ÌÏÝËʉÁÀ‰À€…“Âñ⇩›…üàêŷfi“‰ÂÏÝÚ‰üàêŷfl‰ØÏÂÛË€‰‰‰‰‰‰‰‰‰‰‰‰…“Ãñ⇩›…üàêŷfl“‰ÜÏÀÊÁÉÜËωfi€€fl€‰‰‰‰‰‰‰‰‰‰‰‰‰…£ºêÀñ⇩›…üàêŷÀ‰ÙÆËÜˉÀ‘fl“‰ÜÏÀÊÁÉØÏÂÛˉÌËÚÙËËÀ…“Áñ⇩›…fl‰ÏÀʉçàúŷÀ€…£ºÿgfl††“Çñ⇩›…íÂËÏ܉ØÏÜÇÏÌÂË݉ÏÀʉÝÚÏÜÚ‰ËÖËÍÛÚÇÁÀ‰ÏÚ…“Äñ⇩›…ÌËÉÇÀÀÇÀɉÁȉÞÜÁÉÜÏÀ…£ºf‹gfl†‡“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÝÏØË݉ÚÆˉÍÛÜÜËÀÚ…“Äñ⇩›…ÞÜÁÉÜÏÀ…£ºrÆgfl†Œ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛËÝ…“Äñ⇩›…◰flŵ‰fiŵ‰fl‰ÈÁ܉ÀËÉÏÚÇØËŵ‰ÔËÜÁŵ‰ÞÁÝÇÚÇØË…“Åñ⇩›…ÀÛÃÌËÜÝ€…£ºTçgfl†œ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÝÇÀˉÁȉυ“Äñ⇩›…ÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£» =gfl†—“Çñ⇩›…ýáûàꉋÍÆÏÀÀË‘ŵ‹ÏÃÞÂÇÚÛÊË‘ŵ‹ÞÇÚÍÆ‘ŵ…“Äñ⇩›…‹ÊÛÜÏÚÇÁÀ‘õŵ‹ÝÚÏÜÚ‰ÌËÏÚ‘ó“…“Åñ⇩›…ÃÏÅˉωÝÁÛÀÊ€…“Ãñ⇩›…ýáûàê‰áàÒáè蓉ËÀÏÌÂËÒÊÇÝÏÌÂˉÝÁÛÀÊÝ€…£»—ògfl†−“Çñ⇩›…çÀ‰þüçàú‰Á܉çàþûú‰ÝÚÏÚËÃËÀÚÝŵ‰ÞÜÇÀÚÝ…“Äñ⇩›…ÁÛÚ‰À‰ÝÞÏÍËÝ“…“Âñ⇩›…þüçàú‰ýþíŷflfi€…£»úþgfl†„“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÝßÛÏÜˉÜÁÁÚ…“Äñ⇩›…ÁȉωÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£»Æ‡gfl†–“Çñ⇩›…þÏÜÚ‰ÁȉÚÆˉèáü€€úကýúëþ‰ÝÚÜÛÍÚÛÜË€…£»Ü²gfl‡fi“Çñ⇩›…ýÚÁÞ‰ÞÜÁÉÜÏÀ…£»ÒÆgfl‡fl“Çñ⇩›…ýúü⇩õÐó‹ÀÛÃÌËÜ‘“‰ÉÇØË݉ÝÚÜÇÀÉ…“Äñ⇩›…ÜËÞÜËÝËÀÚÏÚÇÁÀ‰õÇÀ‰ÆËÖó‰ÁȉωÀÛÃÌËÜ…“Åñ⇩›…ŷ‹ÈÏÍÚÁÜ‘€…£»4ógfl‡†“Çñ⇩›…ýúüçàé⇩ŷ‹ÀÛÃÌËÜ‘ŵ‹ÝÚÜÇÀÉ‘“‰ÉÇØËÝ…“Äñ⇩›…ÝÚÜÇÀɉÜËÞÂÇÍÏÚËʉÚÆˉÀÛÃÌË܉ÁȉÚÇÃËÝ€…£»ögfl‡‡“Çñ⇩›…ýúëüëቋÍÆÏÀÀË‘ŵ‹ÞÁÝÇÚÇÁÀ‘“‰ÝËÚ‰ÚÆË…“Äñ⇩›…ÝÚËÜËÁ‰ÞÁÝÇÚÇÁÀ‰ÈÁ܉ωÍÆÏÀÀË€…£»lãgfl‡Œ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÝÛÉÁȉÏÂÂ…“Äñ⇩›…ËÂËÃËÀÚ݉ÇÀ‰ÏÀ‰ÏÜÜÏ×€…£»xûgfl‡œ“Çñ⇩›…ýûãâëà‰ÉÇØË݉ÚÆˉÚÁÚωÂËÀÉÚƉÁȉÏÂÂ…“Äñ⇩›…ËÂËÃËÀÚ݉ÇÀ‰Ï‰ÝÚÜÇÀɉÏÜÜÏ×€…£»Dégfl‡—“Çñ⇩›…ýùïþ‰‹ØÏÜÇÏÌÂË‘ŵ‹ØÏÜÇÏÌÂË‘“…“Äñ⇩›…ËÖÍÆÏÀÉˉÚÆˉÍÁÀÚËÀÚÝ€…£»P gfl‡−“Çñ⇩›…úÆˉý÷ý‰ÝÚÏÚËÃËÀÚ‰ÍÏÂÂ݉ÚÆˉÁÞËÜÏÚÇÀÉ…“Äñ⇩›…Ý×ÝÚËÓ…“Âñ⇩›…ý÷ý‰‹ËÖÞÜËÝÝÇÁÀ‘‰õŵ‹ËÖÞÜËÝÝÇÁÀ‘óð…“Ãñ⇩›…õúቋØÏÜÇÏÌÂË‘õŵ‹ØÏÜÇÏÌÂË‘óð…“Àñ⇩›…õ”‹ØÏÜÇÏÌÂË‘ó󅣸fi>gfl‡„“Çñ⇩›…çÀ‰þüçàú‰Á܉çàþûú‰ÝÚÏÚËÃËÀÚÝ“…“Åñ⇩›…úïì‰ÚÁ‰ÍÁÂÛÃÀ‰À“‰þüçàú‰úïìŷflfiÝ⇩€…“Ãñ⇩›…úïì‰ÚÁ‰ÝÍÜËËÀ‰ÞÁÝÇÚÇÁÀ‰Öŵד…“Àñ⇩›…þüçàú‰úïìŷflfiŵ†fiÝ⇩€…£¸öâgfl‡–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÚÏÀÉËÀÚ‰Áȉυ“Äñ⇩›…ÀÛÃÌË܉ŷ‹ÈÏÍÚÁÜ‘€…£¸Â$gflŒfi“Çñ⇩›…úëãþቋËÖÞÜËÝÝÇÁÀ‘“‰ÝËÚ‰ÚÆˉÝÁÛÀÊ…“Äñ⇩›…ÃÇÍÜÁÌËÏÚ‰ÚËÃÞÁ€…“Âñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰úëãþá‰ÉÇØË݉ÚÆˉÍÛÜÜËÀÚ…“Ãñ⇩›…ÃÇÍÜÁÌËÏÚ‰ÚËÃÞÁ€…£¸:ógflŒfl“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÂÁÏÊ݉ωÀËÙ‰ÞÜÁÉÜÏÃŵ…“Äñ⇩›…ÍÁÀØËÜÚÇÀɉÈÜÁÉÚËÖÚ‰ÈÁÜÉÇȉÜËßÛÇÜËÊ€…£¸-gflŒ†“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÝÏØË݉ÚÆˉÍÛÜÜËÀÚ‰ÞÜÁÉÜÏÃ…“Äñ⇩›…Ï݉ÚËÖÚ‰õÙÇÚƉωâçýúá‰ÁÞÚÇÁÀó€…“Âñ⇩›…úëöúýïøëõቋËÖÞÜËÝÝÇÁÀ‘ŵó‰‹ÝÚÜÇÀÉ‘…£¸h7gflŒ‡“Çñ⇩›…þÏÜÚ‰ÁȉÚÆˉç耀úæëà‰ÝÚÜÛÍÚÛÜË€‰çÈ…“Äñ⇩›…úæëà‰Ç݉ÈÁÂÂÁÙËʉÌ׉ωÀËÙÂÇÀˉÇÚ…“Åñ⇩›…ÇÀÚÜÁÊÛÍË݉ωÌÂÁÍʼnÝÚÜÛÍÚÛÜËÊ…“Âñ⇩›…ç耀úæëà€€ëâý뀀ëàêç者£¸@2gflŒŒ“Çñ⇩›…úÆÇ݉ÞÝÛËÊÁ◰ØÏÜÇÏÌÂˉÜËÏÊ݉Á܉ÝËÚ݉ÚÆË…“Äñ⇩›…ÍÁÃÞÛÚÏÚÇÁÀωÜËωÚÇÃˉÍÂÁÍÅ€…“Âñ⇩›…úçãë⇩‰ÜËÏÊ݉Á܉ÝËÚ݉ÚÆˉÊÇÝÞÂÏ×…“Ãñ⇩›…ØËÜÝÇÁÀ‰ÁȉÚÆˉÍÂÁÍÅ€…£¹¸ggflŒœ“Çñ⇩›…úçàú‰ÏŵÚ“‰ÝËÚ‰ÚÆˉÚÇÀÚ‰ÈÁÜ…“Äñ⇩›…íáâáûüÒéíáâÒÈÁÜËÒÌÏÍʼnωÚÁ‰Ú‰ÇÀ‰†œ—…“Åñ⇩›…ÍÁÂÁÛ܉ÃÁÊËÝ€‰ïÂÝÁ‰ÏØÏÇÂÏÌÂˉÏ݉υ“Âñ⇩›…ÝÛÈÈÇÖ‰ÚÁ‰éíáâ‰ÏÀʉíáâáûü€…“Àñ⇩›…ï݉ωÈÛÀÍÚÇÁÀ‰úçàúŷÖŵ×‰ÉÇØË݉ÚÆˉÚÇÀÚ…£¹æÁñ⇩›…ÁȉωÞÁÇÀÚ‰ÇÀ‰†œ—‰ÍÁÂÁÛ܉ÃÁÊËÝ€…£¹ü⇩gflŒ—“Çñ⇩›…úᓉÞÏÜÚ‰Áȉèáü€€úက…£¹òègflŒ−“Çñ⇩›…úáþ“‰ÉÇØË݉ÚÆˉÏÊÊÜËÝ݉ÁȉÚÆˉËÀʉÁÈ…“Äñ⇩›…ÚÆˉÞÜÁÉÜÏÀ…£¹ÞgflŒ„“Çñ⇩›…úüïíë‰õýúëþó‰áàÒáèèÒþüáíÒ‹ÀÛÃÌËÜ‘“…“Äñ⇩›…ÚÜÏÍˉõÇÀ‰ÝÇÀÉÂˉÝÚËÞ‰ÃÁÊËó‰ÁÀ‰Á܉ÁÈÈ…“Åñ⇩›…Á܉ÞÜÁÍËÊÛÜˉÁ܉ÈÛÀÍÚÇÁÀ‰ÍÏÂÂ݉ÁÜ…“Âñ⇩›…ÂÇÀË݉ÌËÂÁÙ‰ÚÆˉÀÛÃÌËÜ€…£¹6gflŒ–“Çñ⇩›…úüïíë‰úቋÝÚÜÇÀÉ‘“‰ÝËÀʉωÁÛÚÞÛÚ‰ÚÁ…“Äñ⇩›…ÝÚÜËÏÉ‹ÝÚÜÇÀÉ‘…“Âñ⇩›…úüïíë‰íâáý듉ÍÂÁÝˉÝÚÜËÏÉÁÛÚÞÛÚ€…“Ãñ⇩›…ëÖÞÜËÝÝÇÁÀ“‰úüïíë‰ÉÇØË݉ÆÏÀÊÂˉÁȉÚÆË…“Àñ⇩›…ÝÚÜËÏÃ…£¹dègflœfi“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÂÁÉÇÍωØÏÂÛË…“Äñ⇩›…⇨ÚÜÛË⇨‰Ç€Ë€‰◰fl€…£¹pàgflœfl“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÍÁÀØËÜÚ݉ÚÆˉÞÜÁÉÜÏÉÚÁ…“Äñ⇩›…ÚËÖÚ‰ÏÀʉÍÏÂÂ݉úÙÇÀ€…£¹\Égflœ†“Çñ⇩›…úÆÇ݉ÍÁÃÃÏÀʉÍÁÀØËÜÚ݉ÚÆˉÞÜÁÉÜÏÉÚÁ…“Äñ⇩›…ÚËÖÚ‰ÙÇÚƉωâçýú‰ÁÞÚÇÁÀ‰ÏÀʉÍÏÂÂÝ…“Åñ⇩›…úÙÇÀ€…£¶¾ægflœ‡“Çñ⇩›…ûàúç≋ËÖÞÜËÝÝÇÁÀ‘“‰ËÀʉÁÈ…“Äñ⇩›…üëþëïú€€ûàúçâ‰ÝÚÜÛÍÚÛÜË€…£¶⇩øgflœŒ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉØÏÂÛˉÜËÚÛÜÀËÊ…“Äñ⇩›…Ì׉ωÃÏÍÆÇÀˉÍÁÊˉÜÁÛÚÇÀË€…£¶„ðgflœœ“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉÀÛÃËÜÇ͉ØÏÂÛË…“Äñ⇩›…ÁȉωÚËÖÚÛωÝÚÜÇÀɉˀɀ‰øïâ……†‡……€…£¶âgflœ—“Çñ⇩›…øêû‰‹ÀÛÃÌËÜ‘õ”Òóõŵ‹ÀÛÃÌËÜ‘õ”Òóó“…“Äñ⇩›…ÂÇÝÚ‰ÁȉØÏÂÛË݉ÚÁ‰ÌˉÝËÀÚ‰ÚÁ‰ØÊÛ€…“Âñ⇩›…ŵ‰ÁÀÂ׉◰‰„‰ÌÇÚÝ€‰‰‰‰…“Ãñ⇩›…”‰fl—‰ÌÇÚÝ€‰‰‰‰‰‰‰‰‰‰…“Àñ⇩›…Ò‰„‰Ì×ÚË݉ÁȉÔËÜÁËÝ€…£¶ÐÇgflœ−“Çñ⇩›…øáçí뉋ÍÆÏÀÀË‘ŵ‹ÝÚÜÇÀÉ‘“‰ÏÝÝÇÉÀ‰Ï…“Äñ⇩›…ÀÏÃËʉÝÁÛÀʉÏÂÉÁÜÇÚÆÉÚÁ‰ÚÆˉØÁÇÍË…“Åñ⇩›…ÍÆÏÀÀË€…£¶2þgflœ„“Çñ⇩›…øáçí뉋ËÖÞÜËÝÝÇÁÀ‘“‰ÝËÚ‰ÚÆˉÀÛÃÌËÜ…“Äñ⇩›…ÁȉÝÁÛÀʉØÁÇÍˉÍÆÏÀÀËÂÝ€…£¶ãgflœ–“Çñ⇩›…úÆÇ݉ÈÛÀÍÚÇÁÀ‰ÉÇØË݉ÚÆˉ×◰ÍÁÁÜÊÇÀÏÚË…“Äñ⇩›…ÁȉÚÆˉÚËÖÚ‰ÍÛÜÝÁÜ€…£¶j⇦gfl—fi“Çñ⇩›…ùÏÇÚ‰ÈÁ܉ØËÜÚÇÍωÝ×ÀÍ€…£¶`ßgfl—fl“Çñ⇩›…ùæëà‰‹ËÖÞÜËÝÝÇÁÀ‘õŵ‹ËÖÞÜËÝÝÇÁÀ‘óð“…“Äñ⇩›…ÇÊËÀÚÇÈÇË݉ÍÏÝˉÝËÍÚÇÁÀ‰ÏÚ‰ÝÚÏÜÚ‰ÁÈ…“Åñ⇩›…ÂÇÀË€‰ýËˉíïý뀅£¶Bâgfl—†“Çñ⇩›…ùæçâ뉋ËÖÞÜËÝÝÇÁÀ‘“‰ÝÚÏÜÚ‰ÁÈ…“Äñ⇩›…ùæçâ뀀ëàêùæçâë‰ÝÚÜÛÍÚÛÜË€…£·®›gfl—‡“Çñ⇩›…ùçêú手ËÖÞÜËÝÝÇÁÀ‘“‰ÝËÚ‰ÙÇÊÚƉÁÈ…“Äñ⇩›…ÁÛÚÞÛÚ€…£·ºgfl—Œ“Çñ⇩›…úÆÇ݉ÞÝÛËÊÁ◰ØÏÜÇÏÌÂˉÜËÏÊ݉Á܉ÝËÚÝ…“Äñ⇩›…ÚÆˉÀÛÃÌË܉ÞÜÇÀÚ‰ÈÁÜÃÏÚ“‰þüçàú‰î⇧…“Åñ⇩›…ÉÇØË݉ωÀÛÃÌËÜŵ‰ÌÛÚ‰âøïü‰ÏÀʉî⇧›…“Âñ⇩›…ÛÝˉÝÚÜÇÀÉ݉ÊËÚÏÇÂËʉÁÀ‰ÀËÖÚ‰ÞÏÉË€…“Ãñ⇩›…ï‰ÞÏÜÚ݉ÁÞÚÇÁÀÏ€‰ŵ‰Á܉€‰ÇÀ‰ÚÆË…£·èÌÀñ⇩›…ÞÜÇÀÚ݉ŵ‰Á܉€‰Ï݉ÚÆˉÊËÍÇÃωÞÁÇÀÚ€…“Áñ⇩›…âËÏÊÇÀɉŶ‰ÃËÏÀ݉î⇧‰ÏÞÞÂÇË݉ÚÁ‰ýúü⇩…“Þñ⇩›…ÏÂÝÁ€…£·Êcgfl—œ“Çñ⇩›………é‹ÀÛÃÌËÜ‘€‹ÀÛÃÌËÜ‘……‰ÉËÀËÜωÈÁÜÃÏÚ…“Äñ⇩›…ÈÇËÂʉÏÀʉÀÛÃÌË܉ÁȉÊÇÉÇÚÝ…“Âñ⇩›………ë‹ÀÛÃÌËÜ‘€‹ÀÛÃÌËÜ‘……‰ËÖÞÁÀËÀÚ‰ÈÁÜÃÏÚ…“Ãñ⇩›…ÈÇËÂʉÏÀʉÀÛÃÌË܉ÁȉÊÇÉÇÚÝ…“Áñ⇩›………è‹ÀÛÃÌËÜ‘€‹ÀÛÃÌËÜ‘……‰ÈÇÖËʉÈÁÜÃÏÚ…£·8€Þñ⇩›…ÈÇËÂʉÏÀʉÀÛÃÌË܉ÁȉÊÇÉÇÚ݉ÏÈÚË܉⇨€⇨…£·te“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ–ŵâñ⇩ŷìñ⇧ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵflŵÇñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ†ŵÄñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ‡ŵÅñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵŒŵÂñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵœŵÃñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ—ŵÀñ⇩ŵçñ⇧“f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ−ŵÁñ⇩ŵçñ⇧£·T±f7⇦Œ−í„ìŵ…ãÏÇÀ…ŵ„ŵÞñ⇩ŵçñ⇧“O£QnderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |°,8€|ô$WimpToolssWimp Tools    1.43 (20 Jun 1994) by Matt Lewis © Weird Sheep Softwareç@-é  áÀ†å\〽 ã; ãï Ŵå ãŵåŵ倽è@-é:〽À†å†å0ã
  6438. †å0 ã @…â ãá @☓â◰0 áãùÿÿ
  6439. êP ã “ç2ãPŶâ 5ãùÿÿ ã   áèWSWimpToolsVersionTaskIconPopOpenWindowOpenPaneWindowPopOpenPaneWindowCloseWindowToggleIconSetIconSelectGetIconSelectStateSetIconEnableGetIconEnableStateSetIconTextGetIconTextSetIconValidationGetIconValidationSetWindowTitleGetWindowTitleUpdateWindowMakeMenuHeaderMakeMenuItemSetMenuItemTextGetMenuItemTextMakeMenuItemLastSetMenuItemTickGetMenuItemTickSetMenuItemMessageGetMenuItemMessageSetMenuItemEnableGetMenuItemEnableSetMenuItemOptionsGetMenuItemOptionsAttachSubMenuLoadMenusIconBarMenuMenuAdjustMakeMenuGetTextStartDragSendSaveSendLoadSendSaveAckSendLoadAckLoadTemplatesWindowConvertParameterGetTemplateInfoLoseTemplateFontsRegisterDeRegisterLoadSpritesGetLeaf@-é-éÀ†å1[ãGÊ ’ á‘⇨à    ð áOê"êtê|êªê¶êÃêÖêâêîêúêêê$ê6êAê^êkê~ê⇧ê­ê·ê¿êÈêÑêØêáêèêñê)ê.êöêê0êCêeêþêÁê(êIê[êqêŴêµêÜê9êGêwê”êê½è€½è½è@½èâ‰ãð°á½è•âøÿÿ꜀Icon/Menu string is not indirectedâ•âìÿÿ꜀WimpLib does not recognise that SWIP㉠Ýÿÿ
  6440. ïWimp Library Version 1.42 (20 Jun 1994)
  6441.  
  6442. #Ðÿÿê@-é  á Rã ³ £«|è@-é á  á Rã ³ £«|è@-é á  á Rã ³ £«|è-é1ãåÿÿ…âŴåËïŽè°ÿÿê4ã
  6443. -é áéÿÿë0 á½è€’å‘’å ’å     Jà‘’å°’å    °Kà‘ á…â(Ŵâ€Ŵå ŴåÎïœÿÿjð-é@’å
  6444. @☓à P’å PŶà`’å
  6445. `ŷàp’å pà0ŴåËïð½h‰ÿÿj@ŴåPŴå `ŴåpŴå€−å€Ŵåð½èÅïŶÿÿj     á0ŴåÅïŴÿÿê-é…â4ã»ÿÿŴåËï½hyÿÿj€àã€Ŵå◰|ï½ètÿÿê-é1ã ÿÿ…âŴåÆï½èlÿÿê€@-ép á…âŴåpŴ倀½è-é3ã−ÿÿõÿÿëÎï j‘’å„    â¶ ã ‘)à      á‘Ŵå °ŴåÍïjàãZã ½èRÿÿê-é3ãŶÿÿáÿÿëÎïj„â‘Ŵå„ ã ‘ŴåÍï½èEÿÿê-é3ãxÿÿÔÿÿëÎï?ÿÿj‘’å„    âàãYã ½è8ÿÿê-é3ãkÿÿÇÿÿëÎïj”â‘Ŵå” ã ‘ŴåÍï½è+ÿÿê-é3ã^ÿÿºÿÿëÎïj‘’å”    âàãYã ½èÿÿê-é3ãQÿÿ­ÿÿëÎï
  6446. j‘’å ãÿÿ
  6447. ‘ ã‘Ŵå ‘Ŵå‘ á ’å$°’åPëÍï½è ÿÿê-é3ã>ÿÿŒÿÿëÎïj‘’å ãŴ
  6448. ’å½èþþÿê-é3ã1ÿÿ™ÿÿëÎï
  6449. j‘’å ãûþÿ
  6450. ‘ á‘Ŵå ‘Ŵå‘ á  ’åÿ° ã0ëÍï½èëþÿê-é3ãÿÿzÿÿëÎïj‘’å ãèþÿ
  6451.  ’å½èßþÿê-é3ãÿÿ…âŴåÌïj<€’å ã
  6452. ‘ áL ’åT°’åë½èÏþÿê½è•âÎþÿê œ€Window title string is not indirectedho-é3ãôþÿ…âŴåÌïj<€’å ãL Ŵ
  6453. L ’å½è³þÿê-é1ãßþÿ…âŴåËï
  6454. j ’åã
  6455. àï’å ’å 0’å@’å áàãѽèflþÿê‘ á  á ° ãÝë‘flå ‘€å €å,‘ ã‘€å‘ ã‘€å€â‹þÿê3ã
  6456. H€flå4ã⇩⇦ ŵ €å€€å‘ á  áÿ° ãÇë 0€å4ã°€@€€à 倀å
  6457. 0 á€â{þÿê!! €å€à å€å€€å  €â‘ á ° ã²ë€ânþÿꀀâŵ⇦àŴŴ⇦à‘—å ãoþÿ
  6458.  —å‘ á°—å¦ëcþÿꀀâŵ⇦àŴŴ⇦à—å ã ⇦\þÿ
  6459. —åZþÿꀀâŵ⇦àŴŴ⇦à—倠à〠â
  6460. à€€ã⇦åPþÿꀀâŵ⇦àŴŴ⇦à‘àã—å    à â€á⇦åFþÿꀀâŵ⇦àŴŴ⇦à —åã ãà>þÿꀀâŵ⇦àŴŴ⇦à‘àã—å    à â€á⇦å4þÿꀀâŵ⇦àŴŴ⇦à —åã ãà,þÿꀀâŵ⇦àŴŴ⇦à”àã—å    à%â€á⇦å"þÿꀀâŵ⇦àŴŴ⇦à —åã ãàþÿê3ã
  6461. -é áKþÿë  á½è€€âŵ⇦àŴŴ⇦à ⇦åþÿêæê þÿêŵ-ép á…âŴå ãŴåŴåD ã ŴåŴåP€•â—çŴåWã Ŵâ‘ á ° ã;ëê ŴåàãŴå‘ áCë °ŴåWã0ŴåÂïŵ½èìýÿê0p1p=1pp€âràŴqà–å åãýÿêp€âràŴqà–åÞýÿê-造á…âÏï j ’å@ Bâ`0 ã‘⇦â,0◰â −åã0◰‘⇨â€ãøÿÿ
  6462.  áÔï½èÊýÿê-造á…âÏïj‘’åã
  6463.  á  ã0 ãÔï½è¼ýÿê`Óå€6ã€⇦0◰ð -6ã€⇦0◰ð ?6ã€⇦0◰ð >6ã€⇦0◰ð ☓6ãu0◰ð áÀ-造ã‘Óå#9ã0◰€€
  6464. ‘ á,  ãÎë ã: [ãEÊ‘ á  áÑë0⇨âü◰å €€å,€ ã€€å €å‘ ã‘€å€â€ ãÀsåÍÿÿëÌÿÿëËÿÿëÊÿÿëÉÿÿë‘à㑀呠á,  ã²ë  ⇦ÿ° €€å [ã    Êp€å‘ á  €â²ë0⇨â€â‘Så,9ãäÿÿ
  6465. ê|ãp€å°€å €å‘à㑀呠ᠠá£ë0⇨â⇩â€â‘Så,9ãÔÿÿ
  6466. À½è`ýÿêÀ½è•â_ýÿ꜀Incorrect menu desription string!FiÀ½è•âRýÿ꜀Menu title too long!r,Cø-é3ã|ýÿ€ á‘ á…â€ŴåËï@jp’å ’å Jàp’å°’å°Kà‘ŴåÎï7jp ãpŴåp’åp⇩àpŴå p’åp⇧à pŴåp’åp⇩àpŴåp’åp⇧àpŴåp ãpŴåpŴåqàã pŴå$pŴåp áè•â9ïj¡ ã ãïýÿjã
  6467. C…â€Ŵå‘ŴåÎïj’åã
  6468. ã ã ’ Ŵ áÅ ã;…â0◰â@◰â$ïàãê…âÐïj ã‘àø½èýüÿê ãìÿÿ
  6469.  ’åpã ’ êÿÿ
  6470.   ’åÒä Pãíÿÿº;0ãúÿÿ
  6471.  €ãs0ã àÿÿ
  6472. Òä Pãäÿÿº;0ãñÿÿ
  6473. ùÿÿêDragASprite_Startin-é‘ áÏïj €’å€Ŵ倒å€Ŵ倒å€Ŵ倒堀Ŵå$@Ŵ倠㠀Ŵ倠ã€Ŵå(‘Ŵå‘ á, Ŵâÿ° ãóë ë/€⇧â°flå €à€Ŵå ã ’å0’åçï½èÀüÿêüÿÿÿ-é‘ á’å Ŵå ãŴå, Ŵâÿ° ãøë/⇧â4°å àŴå ã ’å0’åçï½è¬üÿê-é, Ŵâ<‘•â° ãéë ’å€’å €Ŵ倠ã€Ŵå<€ ã€Ŵå€àã$€Ŵå ã0 ãçï½è−üÿê<Wimp$Scrap> -é’å Ŵå ãŴå,‘ŴâÞë/⇧âÔ°å àŴå ã ’å0’åçï½è☓üÿêp-造á6ã@ @à
  6474.  ã| ãÆäpGâ7ãûÿÿ‘ á` ãp ã[…â⇦flåŶåÛïj6ã
  6475. pâ-霅â ⇦â° ãªë½è@‘ŴåÁïj⇦å€⇦âëÿÿêàã⇦å áp½è\üÿêp½è•â[üÿê?œ€Error while loading templates!*ÿÿPãvÊŴ á€⇦àð áêê!ê+ê;êEꀠ㑠㠒çzãO
  6476. Zá€⇦‘⇨øÿÿ     á9üÿêrã0•6üÿ
  6477. rã,•€ ã ’çzã@
  6478. Zá€⇦ùÿÿ⇦â€à*üÿêiconbarbackdropÿÿÿ€ ã‘ ã ’çzã9
  6479. Yá€⇦‘⇨øÿÿ’çüÿêrãLOüÿ
  6480. rãPO€ ã‘ ã ’çzã)
  6481. Yá€⇦‘⇨øÿÿ⇦â€à    üÿꀠᑠá ⇦âë—å{ãüÿ
  6482. pã"
  6483. €⇦âöÿÿꀠᑠᠠã ⇦â ë{ã       õûÿ
  6484. —åpã ŵâ€⇦âóÿÿê•âïûÿ꜀No such window handle!e•âæûÿ꜀No such window number!•âÝûÿê    œ€No such window!•âÖûÿ꜀Bad conversion routine number in R0!999-造ã Ñç2ã
  6485. ŵïj BâRãúÿÿÊ€⇦â Xãôÿÿº½èºûÿꀆåX㪀⇦ 倆呠㠠 ã ã    á
  6486. ⇨‘ á€âãøÿÿê    €⇦စ尠〢…à  ⇩â
  6487.  á°⇩ä°⇩ä°⇩ä°⇩ä°⇩ä°⇩ä°⇩ä°⇩äœûÿê•âœûÿ꜀Too many tasks!  This module can only register 31 tasks.",w€ ã‘ á †å    á
  6488.     ‘àá     
  6489. à …å †å:ã J …å€ŵ…à €⇦â‘ ã ã     —ç2ãj‘⇨â Yãøÿÿºqûÿê•âqûÿ꜀Bad task id!@-造㑠᠆堠  á½ñÿÿ
  6490. €ŵ…à €⇦â—å0ã½# ãïj0ã
  6491. @☓â0 á ãïj ⇦å@ŵå ãŵå‘ á  á     á     ã €â.ïj
  6492.  ã €â.ï½èCûÿê½è•âBûÿ꜀Sprite file not found!ÿ•â9ûÿ꜀RMA has been already allocated for sprites for this module!ÿÿÿê•â&ûÿê
  6493. œ€SWI not implemented in this version of WimpTools.  Please contact Matt Lewis, Field House, Primrose Hill, Cowbridge, South Glam, CF7 7DU, for an updated version of this module.ÿÿÿ-造á‘Ðä.9〠 YãúÿÿÊ á½èìúÿêF-é   ãÙäÚäPáQ±°à³ºPá÷ÿÿ
  6494. ° ãŷ½èB-é  á°àãÙä0á°  Pãúÿÿªŵ½è@-é     áÙä.0ã      Pãúÿÿª‘ á€½è@-é° ãÙä Pã¼⇧³º
  6495. 0á°⇧øÿÿ€½è@-éÙäÊä°[âûÿÿ°Ê倽è@-é ãÙçÊç€â P᪠Qãøÿÿª ãÊç°€â  ⇩à€½è@-é° ã Ùç P㺰⇧âÿ[ãùÿÿº@½è•ââ‰ãð°á€½èœ€Text string is too long for WimpLibïJump's gone too far!!!!!!!!!!!!!!!!!!!!€½èrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!HelpEÿÿÿ¬®ºU1!RunEëÿÿ…÷¸eO 1!SpritesEùÿÿ¯Fâe`1CompilerEûÿÿ®µN«…w2SpritesEùÿÿ }³eìÔ3TemplatesEìÿÿöSÑeg1TokensEÿÿÿ³ÊeØ1!HelpEÿÿÿ¬®ºU1!RunEëÿÿ…÷¸eO 1!SpritesEùÿÿ¯Fâe`1CompilerEûÿÿ®µN«…w2SpritesEùÿÿ }³eìÔ3TemplatesEìÿÿöSÑeg1TokensEÿÿÿ³ÊeØ1!BBC!BBCNick
  6496.                          
  6497.                           SSSSSS
  6498.                           SSSSSS     fff  t
  6499.                           SSS    ooo f   ttt
  6500.                           SSS    o o ff   t
  6501.                           SSSSSS ooo f    tt
  6502.                           SSSSSS
  6503.                           SSSSSS  t       fff fff
  6504.                              SSS ttt u u  f   f
  6505.                              SSS  t  u u  ff  ff
  6506.                           SSSSSS  tt uuu  f   f
  6507.                           SSSSSS
  6508.                         
  6509.                            Written by Peter Jones
  6510.                        
  6511.                               ©SoftStuff 1994
  6512.                     
  6513.                              Written using Zap
  6514.                     
  6515.                            Templates on TemplED
  6516.      
  6517.                                Help for BBC
  6518.                             ==================
  6519.      
  6520.      Info
  6521.      ====
  6522.      
  6523.                  +---------------------------------------+
  6524.                  |                                       |
  6525.                  |    Name : BBC                         |                   
  6526.                  |                                       |    
  6527.                  | Purpose : A Basic BASIC Compiler      |  
  6528.                  |                                       |    
  6529.                  |  Author : Peter Jones, © SoftStuff    |
  6530.                  |                                       |
  6531.                  | Version : 0.1 (27-Oct-1994)           |         
  6532.                  |                                       |
  6533.                  +---------------------------------------+
  6534.      
  6535.      © SoftStuff at all times
  6536.      
  6537.      All  files  contained within this one are to  be  distributed  in 
  6538.      their entirety.
  6539.      
  6540.      Written by Peter Jones 
  6541.      
  6542.      This is my first attempt at a BASIC compiler, something which I have 
  6543.      been meaning to do for a long time. It is at yet very basic, and not
  6544.      very much  will compile  first time,  or at all.  
  6545.  
  6546.                             By the same author
  6547.                             ==================
  6548.      
  6549.      LeapFrog            A  fully  multitasking  key  stage  4   maths 
  6550.                          project for primary school children. Included 
  6551.                          are worksheets,  marksheets, and notes on the 
  6552.                          program and  how  to  implement  it  in   the 
  6553.                          classroom.   A   great  pack   for   teachers 
  6554.                          everywhere.
  6555.                   UPDATED 23-Oct-1994
  6556.                   
  6557.      Shredder            Literally  shreds  any file  or directory you 
  6558.                   by overwritting with 0s.
  6559.                   
  6560.      ShadeIcon           A  small  utility   to “grey out”  an   icon, 
  6561.                   anywhere on the desktop. At present,it cannot 
  6562.                   unshade an icon.             
  6563.                           
  6564.      JumboCalc           A  large and  beuatiful  desktop  calculator, 
  6565.                   with the same functions as Acorn's Calc.
  6566.                        
  6567.                                 Any ideas?
  6568.                                 ==========
  6569.      
  6570.      If  you have any ideas,  or feal the urge to send me some  money, 
  6571.      write to the below address. 
  6572.      
  6573.                SoftStuff
  6574.                4 Prospect Cottasges
  6575.                Long Barn Road
  6576.                Weald
  6577.                Sevenoaks
  6578.                Kent
  6579.                TN14 6NH
  6580.      
  6581.                                              Bye for now, Peter Jones
  6582.            
  6583.      
  6584. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WimpSlot -min 300k -max 300k
  6585. Set BBCmp$Dir <Obey$Dir>
  6586.  
  6587. Run <BBCmp$Dir>.Compiler WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     dT!bbc¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ@ """"""www'"""""B """rw'"""rww"""B ""r'""""""""w""B "r'""""""""""w"B "'""""www"""""'B "'""""w"r'""""'B r"""""w"r'""""rB r"""""www"""""rB r"""""w"r'""""rB "'""""w"r'""""'B "'""""w"r'""""'B "r'"""www""""w"B ""r'""""""""w""B """rww"""rww"""B """"""www'"""""B@DDDDDDDDDDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ\äCompiler@Áinfofsave&€Ú|ÿÿÿÿ XüÿÿÔ='—ÿÿÿÿ
  6588. À¬ÿÿÿ°øÿÿÿ<Untitled>ÿ°ÿÿÿ®ôÿÿÿ=1µ½À\ÿÿÿ°¨ÿÿÿ0<Untitled>ÿÀ ÿÿÿ°Xÿÿÿ0<Untitled>ÿÂÿÿÿ®Tÿÿÿ=1ÂÇÂ`ÿÿÿ®¤ÿÿÿ=1ÌØ ¬ÿÿÿ²øÿÿÿ5Ûÿÿÿÿ\ÿÿÿ²¨ÿÿÿ=ÜÝ ÿÿÿ²XÿÿÿàáÿÿÿªTÿÿÿ ¤TÿÿÿÿBBC version 1.40 © SoftStuffCompiler5,3Saver5,3© SoftStuffr1r2r2ê¼@ÿÿÿÿ☓ XüÿÿÔ='h0—ÿÿÿÿÜýÿÿ(øÿÿÿ?1'«¬☓ýÿÿ(Øýÿÿ?1·¶·About this programshello;r1sunreg;r1l|“€ÿÿÿÿ  XüÿÿÔ='8ÿÿÿÿØ☓ÿÿÿNìÿÿÿ?aMNÊ☓ÿÿÿ@ìÿÿÿ€<Deleted> <ÿÿÿtÿÿÿ=ñ[ÿÿÿÿÿ ÿÿÿp4ÿÿÿÇSize:led>ÿ Ðþÿÿpÿÿÿ€<Deleted>ÿ †þÿÿpÌþÿÿ€<Deleted>ÿlÿÿÿ4ÿÿÿÇbc
  6589. Compilation completesfile_ff8;r4Objectr2orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     THEN=&8c
  6590. ELSE=&8b
  6591. PROC=&f2
  6592. DEF=&dd
  6593. ENDPROC=&e1
  6594. GOTO=&e5
  6595. GOSUB=&e4
  6596. RETURN=&f8
  6597. END=&e0
  6598. REM=244
  6599. ERROR=133
  6600. INKEY=&a6
  6601. GET=165
  6602. INPUT=232
  6603. GETSTR=190
  6604. PRINT=&f1
  6605. VDU=&ef
  6606. SPCB=137
  6607. MODE=235
  6608. CLS=&db
  6609. CLG=218
  6610. MOVE=&ec
  6611. DRAW=&df
  6612. PLOT=240
  6613. CIRCLE=256+143
  6614. RECTANGLE=256+147
  6615. ELLIPSE=256+157
  6616. FILL=256+144
  6617. COLOUR=251
  6618. GCOL=230
  6619. SWAP=256+148
  6620. TIMERI=&91
  6621. TIMELE=&d1
  6622. RND=&b3
  6623. ABS=148
  6624. SIN=&b5
  6625. COS=&9b
  6626. SQR=&b6
  6627. PI=&af
  6628. NOT=172
  6629. AND=128
  6630. OR=132
  6631. EOR=13
  6632. TINT=256+156
  6633. ON=238
  6634. OFF=135
  6635. WAIT=256+150
  6636. FOR=&e3
  6637. TO=&b8
  6638. STEP=&88
  6639. NEXT=&ed
  6640. REP=&f5
  6641. UNT=&fd
  6642. WHILE=256+149
  6643. ENDWH=206
  6644. IF=&e7
  6645. ORIGIN=256+145
  6646. POINT=176
  6647. SOUND=&d4
  6648. VOICES=256+160
  6649. MOUSE=256+151
  6650. DIV=129
  6651. MOD=131
  6652. DIM=222
  6653. 0
  6654. CALL=&d6
  6655. SYS=256+153
  6656. MALLOC=12
  6657. LEFTSTR=192
  6658. MIDSTR=193
  6659. RIGHTSTR=194
  6660. STRSTR=195
  6661. STRINGSTR=196
  6662. OSCLI=255
  6663. EQ=&3d
  6664. GT=&3e
  6665. LT=&3c
  6666. LB=&28
  6667. RB=&29
  6668. TR=&b9
  6669. FL=&a3
  6670. PLUS=&2b
  6671. MINUS=&2d
  6672. SLASH=&2f
  6673. TIMES=&2a
  6674. SQUOTE=&27
  6675. TAB=&8a
  6676. DQUOTE=&22
  6677. COMMA=&2c
  6678. SCOL=&3b
  6679. COL=&3a
  6680. SPC=32
  6681. EOLN=&d
  6682. EOP=&fa
  6683. GEQ=1
  6684. LEQ=2
  6685. NEQ=3
  6686. ID=4
  6687. LBL=5
  6688. CONST=6
  6689. STRING=7
  6690. SID=8
  6691. PLUSEQ=9
  6692. MINUSEQ=10
  6693. AID=11
  6694. LINO=&8d
  6695. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  6696.     ô BBCô The Basic BASIC Compilerô © SoftStuff 1994ô Written by Peter Jones 7ô Shareware - send £5 to address given in text file(:2    òinit<:FÈ” ¬ quit%P    òpollZÎdÈ− "Wimp_CloseDown"nàx:ŵ Ý òinit…multitask%=¹„compiling%=£ Þ stuff% 155ªsavename$="Object"´chkfornonints%=£¾ns=100:nl=100Èchkforesc%=0ÒòtokenassÜÞ program 10000æ;Þ consts%(64),conststring$(64),arrayentries%(64),MP%(8)ðÞ st$(ns),sa(ns),stp(ns)úÞ lino(nl),lina(nl)S$=Ä40," "):S$="":NL%=0$for=&E3:to=&B8:step=&88:next=&ED"+rep=&F5:unt=&FD:while=256+149:endwh=206,if=&E7:then=&8C:else=&8B6 proc=&F2:def=&DD:endproc=&E1@!goto=&E5:gosub=&E4:return=&F8J end=&E0Trem=244:error=133h*inkey=&A6:get=165:input=232:getstr=190|print=&F1:vdu=&EF:spcb=137ŷmode=235:cls=&DB:clg=218‘move=&EC:draw=&DF:plot=240ŒAcircle=256+143:rectangle=256+147:ellipse=256+157:fill=256+144¤$colour=251:gcol=230:tint=256+156®on=238:off=135:wait=256+150¸origin=256+145:point=176Âsound=&D4:voices=256+160Ìmouse=256+151àdiv=129:mod=131êdim=222:swap=256+148ô!timeri=&91:timele=&D1:rnd=&B3þ*abs=148:sin=&B5:cos=&9B:sqr=&B6:pi=&AF"not=172:and=128:or=132:eor=130"call=&D6:sys=256+153:malloc=12&@leftstr=192:midstr=193:rightstr=194:strstr=195:stringstr=1960oscli=255Deq=&3D:gt=&3E:lt=&3CNlb=&28:rb=&29:tr=&B9:fl=&A3X plus=&2B:minus=&2D:slash=&2Fb times=&2A:squote=&27:tab=&8Al!dquote=&22:comma=&2C:scol=&3Bv"col=&3A:spc=32:eoln=&D:eop=&FA€ geq=1:leq=2:neq=3:id=4:lbl=5⇩const=6:string=7:sid=8“pluseq=9:minuseq=10:aid=11fi lino=&8D¨#SN%=0:jm=0:NC%=5:NCST%=0:NAE%=0²!X1%=0:X2%=0:Y1%=0:Y2%=0:W%=Z%¼BC%=0:vmem=0:smem=0:amem=0Ðfilename$=""ÚÞ block% &267,imenu% 99ä;Þ compilerind% &C2,name% 11,infoind% &29, saveind% &12Fî6quit%=£:app$="The Basic BASIC Compiler":iconsel%=0ø+È− "Wimp_Initialise",200,&4B534154,app$!î Ŷ òerror(ö$+" at line "+Ãfi)  file%=‰"<BBCmp$Dir>.Sprites"size%=¢#file%+4:Ù#file% Þ sparea% size%*!sparea%=size%:sparea%!8=1646È−"OS_SpriteOp",&10A,sparea%,"<BBCmp$Dir>.Sprites">3È− "Wimp_OpenTemplate",,"<BBCmp$Dir>.Templates"H$name%="info"RCÈ− "Wimp_LoadTemplate",,block%,infoind%,infoind%+&29,-1,name%,0\block%!64=sparea%f*È− "Wimp_CreateWindow",,block% ¸ info%p!block%=info%zÈ− "Wimp_CloseTemplate"☓$È− "Wimp_GetWindowState",,block%‰ È− "Wimp_OpenWindow",,block%—opened%=¹:opentime%=’¢3È− "Wimp_OpenTemplate",,"<BBCmp$Dir>.Templates"¬$name%="Compiler"¶KÈ− "Wimp_LoadTemplate",,block%,compilerind%,compilerind%+&C2,-1,name%,0Àblock%!64=sparea%Ê1È− "Wimp_CreateWindow",,block% ¸ compilerwin%Ô$name%="save"ÞDÈ− "Wimp_LoadTemplate",,block%,saveind%,saveind%+&12F,-1,name%,0èblock%!64=sparea%ò-È− "Wimp_CreateWindow",,block% ¸ savewin%üÈ− "Wimp_CloseTemplate",$name%="BBC":Þ valid% 12:$valid%="s!BBC"òshadeicon(compilerwin%,4)IBar_Icon%=¤create_icon(-1,0,-15,130,122,&1700310B,"",name%,valid%,12)$ $imenu%="BBC". imenu%?12=78 imenu%?13=2B imenu%?14=7L imenu%?15=0V imenu%!16=130` imenu%!20=44j imenu%!24=0t m%=imenu%+28~  m%!0=&0⇦ m%!4=info%‹ m%!8=(7<<24) ☓ %10001† $(m%+12)="Info"¦  m%+=24° m%!0=&80º  m%!4=0Ä m%!8=(7<<24)☓ %10001Π$(m%+12)="Quit"Øáâ:ì Ý òpollö%È− "Wimp_Poll",0,block% ¸ reason%ȉ reason% Ê
  6697. É 0:ònopoll$É 2:È− "Wimp_OpenWindow",,block%%É 3:È− "Wimp_CloseWindow",,block%(É 6:òclick(block%!12)2É 7:òstartsave<É 8:òkeypress(block%!24)FÉ 9:òmenuselectP&É 17,18:òmessagerecieve(block%!16)ZËdán:xÝ òreport(err$,flag%)ŵname$=app$….ç flag% € 16 … name$="Message from "+name$„!block%=255 $(block%+4)=err$+½0ª9È− "Wimp_ReportError",block%,flag%,name$ ¸ ,errclick%´á¾:ÈÝ òerror(a$)Òòreport(a$,1)ÜÈ− "Wimp_CloseDown"æ Ù# file%ðàúá:Ý òclick(win%)ȉ win% Ê"É -2:òibar(block%!8),EÉ info%:ç opened%=¹ … !block%=info%:È− "Wimp_CloseWindow",,block%6-É compilerwin% : òcompileclick(block%!16)@É savewin% : òsaveclickJËTá^:hGÝ ¤create_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%)r!block%=whan%|block%!4=ix%ŷblock%!8=iy%‘block%!12=ix%+iw%Œblock%!16=iy%+ih%¤block%!20=flag%®ç ptr1%=0 …¸$(block%+24)=text$ÂÌÌblock%!24=ptr1%Öblock%!28=ptr2%àblock%!32=ptr3%êÍô+È− "Wimp_CreateIcon",,block% ¸ ihandle%þ=ihandle%:Ý òibar(button%)ȉ button% Ê&É 1,4:!block%=compilerwin%0$È− "Wimp_GetWindowState",,block%:-block%!28=-1:È− "Wimp_OpenWindow",,block%D(É 2:òshowmenu(imenu%,!block%-64,184)NËXáb:lÝ òshowmenu(menu%,mx%,my%)v'È− "Wimp_CreateMenu",,menu%,mx%,my%€á⇩:“Ý òmenuselectfi sel1%=!block%:sel2%=block%!4¨$È− "Wimp_GetPointerInfo",,block%²button%=block%!8¼ȉ sel1% ÊÆÉ 1:quit%=¹ÐËÚ%ç button%=1 òshowmenu(imenu%,0,0)äáî:øÝ òmessagerecieve(code%)ȉ code% Ê   É 0 : quit%=¹  É 2 : òsaveit   É 3 : òshred*Ë4á>:H Ý òshredR filename$=¤string(block%+44)\@ç block%!40<>&FFB … òreport("This isn't a BASIC file!",17):áfòshadeicon(compilerwin%,4)p#òiconputtext(compilerwin%,7,"")z#òiconputtext(compilerwin%,8,"")☓*òiconputtext(compilerwin%,6,filename$)‰#òwindowbringtotop(compilerwin%)—á¢:¬Ý ¤string(ptr%)¶êa$ÀÈ” ?ptr%<>0Êa$+=½(?ptr%):ptr%+=1ÔÎÞ=a$è:ò'Ý òiconputtext(window%,icon%,text$)ü"!block%=window%:block%!4=icon%    "È− "Wimp_GetIconState",,block%    "!block%=window%:block%!4=icon%    block%!8=0:block%!12=0    $$(block%!28)=text$    ."È− "Wimp_SetIconState",,block%    8á    B:    L Ý òwindowbringtotop(window%)    V!block%=window%    `$È− "Wimp_GetWindowState",,block%    jblock%!28=-1    t È− "Wimp_OpenWindow",,block%    ~á    ⇦:    ‹Ý òcompileclick(icon%)    †ȉ block%!8 Ê    ¦1  É 2 : òshowmenu(imenu%,!block%-64,block%!4)    °Ë    ºȉ icon% Ê    Ä É 1 : òcompile    Î& É 4 : òwindowbringtotop(savewin%)    Ø É 2 : òmultiloop    âË    ìá    ö:
  6698. Ý òcompile
  6699.  
  6700. @ç filename$="" … òreport("There's nothing to compile!",17):á
  6701.  òruntime
  6702. filename%=‰(filename$)
  6703. (filel%=¢#filename%
  6704. 2T%=¤CH:A%=¤CH:òLX
  6705. <,òiconputtext(compilerwin%,7,"Compiling")
  6706. Fcompiling%=¹
  6707. Pá
  6708. Z:
  6709. dÝ òendcompile
  6710. n*òconstants:òwindowbringtotop(savewin%)
  6711. x6òiconputtext(savewin%,6,Ã(¨(MCL%/10.24)/100)+" k")
  6712. ŵ&òiconputtext(savewin%,2,savename$)
  6713. …$òputcaret(savewin%,2,©savename$)
  6714. „òFIX
  6715.  compiling%=£
  6716. ª+òiconputtext(compilerwin%,7,"Compiled")
  6717. ´ òunshadeicon(compilerwin%,4)
  6718. ¾    BC%=0
  6719. ÈÙ#filename%
  6720. Òá
  6721. Ü:
  6722. æ
  6723. Ýòsave
  6724. ð(ÿ"SAVE Hello "+Ã~program+" +"+Ã~MCL%
  6725. úÿ"Settype Hello Absolute" á : ÝòS1 "á ,ÝòS2 6á @ݤCH:BC%+=1:=Œ#filename% J(ÝòA:òS1:û3:çA%>127 Ö tokenprint ⇧ïA% T!òS2:A%=¤CH:çA%=200 A%=256+¤CH ^á hÝòLX rçT%=eoln €A%=255 T%=eop |çT%=eop:á ŷçT%=eoln òNL ‘çA%=spc:õòA:ýA%<>spc Œ笤AL(A%) å™d~K ¤òIG ®çS$="MALLOC" T%=malloc:á ¸çÂS$)="$" T%=sid:òS:á Âçchkfornonints% … ÌGçÂS$)<>"%" òS1:òreport(" Only integer variables allowed",17):òSUBER ÖÍ àçA%=lb T%=aid ⇧T%=id êòS ôá þçA%<>proc å™T\L T%=A%:òA:笤AL(A%) T%=0:á  òIG:òS:á Fç¤DN(A%) òDNG ⇧çA%=–"&" òHEXDNG ⇧çA%=dquote òSG ⇧çA%=lino òLG ⇧òTG &á 0*ݤAL(A%):=(A%>64€A%<91)☓(A%>96€A%<123) :ݤDN(A%):=(A%>47€A%<58) D+ݤDNOH(A%):=(A%>47€A%<58)☓(A%>64€A%<71) NÝòLG XN%=¤L(¤CH,¤CH,¤CH) bT%=lino:A%=¤CH:S$=ÃN% lòS:òS1:û3:òS2 vá €ÝòIG ⇩<S$="":õ:S$+=½A%:òA:ý¬(¤DN(A%)☓¤AL(A%))€A%<>–"%"€A%<>–"$" “á fi    ÝòDNG ¨1S$="":õ:S$+=½A%:òA:ý¬¤DN(A%):T%=const:N=»S$:á ²T%=const:N=»S$ ¼á ÆUÝòHEXDNG:S$="":õ:S$+=½A%:òA:ý¬¤DNOH(A%):T%=const:È−"OS_ReadUnsigned",16,S$ ¸,,N:á ÐÝòSG:S$="":òA ÚHõS$+=½A%:òS1:û3:ïA%:òS2:A%=¤CH:ýA%=dquote ☓A%=eoln:çA%=eoln òERR ⇧òA äçA%=dquote å™dZL î/T%=string:conststring$(NCST%)=S$:NCST%+=1:á øÝòTG2çT%=next €A%=comma T%=col:A%=next:òS1:û3:òS2:á FçA%=times €(T%=eoln ☓T%=col) S$="":õS$+=½A%:òA:ýA%=eoln:T%=times:á T%=A%:òA çT%=gt €A%=eq T%=geq:òA*çT%=lt €A%=eq T%=leq:òA4çT%=lt €A%=gt T%=neq:òA> çT%=plus €A%=eq T%=pluseq:òAH"çT%=minus €A%=eq T%=minuseq:òAR!çT%=rem È”A%<>eoln:òA:Î:å™TVM\,çT%=col €A%=col õòA:ý(A%<>col)€(A%<>spc)fçT%=col €A%=eoln T%=A%:òApázÝòNL☓LI%=A%*256+¤CH:LL%=¤CH‰lino(NL%)=LI%:lina(NL%)=P%—NL%+=1:òS1¢ û2:A%=32¬    òS2:á¶ÝòSÀSN%=-1:õ:SN%+=1Ê*ý(st$(SN%)=S$€stp(SN%)=T%)☓st$(SN%)=""Ôçst$(SN%)="" …Þwst$(SN%)=S$:NS%=NS%+1:stp(SN%)=T%:çT%=id sa(SN%)=vmem:vmem+=4 ⇧çT%=sid sa(SN%)=smem:smem+=1 ⇧çT%=aid sa(SN%)=NAE%*4èÍòáü
  6726. ÝòINFOòS2á
  6727. Ýòprog$5òiconputtext(compilerwin%,8,Ã(¨(BC%/filel%*100))).çT%=eop òEND:òendcompile:á8òstate:çT%=col ☓T%=eoln òLXBáL ÝòstateV ȉ T% Ê`É eoln ☓T%=col ☓T%=elsejÉ malloc: òmalloctÉ call: òcall~É aid: òassignarray⇦É id: òassign‹É sid: òasstring†É dim: òdim¦É oscli: òoscli°É proc: òprocºÉ rep: òrepÄÉ while: òwhileÎÉ gosub: ògosubØÉ return: òreturnâÉ vdu: òvduìÉ print: òprintöÉ input:  òinputÉ end: òend
  6728. É sound: òsoundÉ voices: òvoicesÉ move: òmove(É draw: òdraw2É cls: òLX:òVDL(12)<É mode: òmodeFÉ plot: òplotPÉ wait: òwaitZÉ gcol: ògcoldÉ on: òLX:òCONnÉ off: òLX:òCOFFxÉ clg: òLX:òVDL(16)ŵÉ colour: òcolour…É circle: òcircle„É mouse: òmouse É rectangle: òrectangleªÉ ellipse: òellipse´É fill: òfill¾É origin: òoriginÈÉ if: òifÒÉ for: òforÜÉ goto: ògotoæÉ def: òdefðÉ times: òstarcommandúÉ timele: òtimeÉ swap: òswapÉ sys: òsysË"'ç(T%<>eoln €T%<>col €T%<>else) òERR,á6:@®Ýòmalloc:êST%:òLX:òC(string):òLX:òC(comma):òLX:òC(id):ST%=SN%:òLX:çT%<>eoln €T%<>col òC(comma):òLX:òC(id):òMALLOC(NCST%-1,sa(ST%),sa(SN%)):òLX ⇧òMALLOC(NCST%-1,sa(ST%),0)JáTÝòcall:ê SF%:òLX:òexp^:SF%=0:È” T%<>eoln €T%<>col òC(comma):òLX:òexp:SF%+=1:ÎhòCALL(SF%):árÝòdef:ê NP%,PS%,ST%|òLX:òC(proc):ST%=SN%:òLXŷçT%<>lb sa(ST%)=P%:å™dLP‘PS%=P%:òPS(1)ŒòLX:òC(id):òPP(sa(SN%))¤òLX:NP%+=1:çT%=comma å™tZP®òC(rb):òLX¸V%=P%:P%=PS%:òPS(NP%):P%=V%ÂòPSX:sa(ST%)=P%:òJSR(PS%)ÌçT%=eop ☓T%=endproc å™d`PÖ%òstate:çT%=col ☓T%=eoln òLX:å™dLPàòC(endproc):òLXêçNP%<>0 òPF(NP%,PS%)ô
  6729. òRTS:áþ:Ýòend:òEND:òLX:á:6Ýògosub:òLX:òC(lino):òJM(SN%):stp(SN%)=gosub:òLX:á&Ýòreturn:òLX:òRTS:á0::Ýòassign:ê ST%,T1%:ST%=SN%D<òLX:T1%=T%:çT%=pluseq ☓T%=minuseq òLDA(sa(ST%)):òLX:òexpN9çT1%=pluseq òADD ⇧çT1%=minuseq òSUB ⇧ òC(eq):òLX:òexpXòSTA(sa(ST%)):áb:l#Ýòassignarray:ê ST%,T1%:ST%=SN%v"òLX:òC(lb):òLX:òexp:òC(rb):òLX€òC(eq):òLX:òexp⇩òSTAarr(sa(ST%)):á“
  6730. Ýòdim:fidòLX:òC(aid):arrayentries%(NAE%)=amem:NAE%+=1:òLX:òC(lb):òLX:òC(const):amem+=N*4+4:òLX:òC(rb):òLX¨çT%=comma å™t^Q²á¼Ýòproc:êST%:ST%=SN%ÆòLX:çT%<>lb å™ddQÐòLX:òexp:çT%=comma å™dPQÚòC(rb):òLXäòJM(ST%):áî:ø    ÝòvduòLX òexpçT%=scol òVDD ⇧òVDU -çT%=comma å™TBR ⇧çT%=scol òLX:ç¤EXP å™TLR*á4:> ÝòcolourHòLXR#òexp:çT%<>comma òVDL(17):òVDU:á\NòC(comma):òVDL(19):òVDU:òLX:òexp:çT%<>comma òVDU:òVDL(0):òVDL(0):òVDL(0):áf7òC(comma):òVDL(16):òVDU:òLX:òexp:òVDU:òLX:òexp:òVDUpáz
  6731. Ýòmove☓òLX:òexp:òC(comma)‰òLX:òexp:òPLTL(4)—á¢:¬
  6732. Ýòdraw¶òLX:òexp:òC(comma)ÀòLX:òexp:òPLTL(5)ÊáÔ:Þ#Ýòmode:òLX:òVDL(22):òexp:òVDU:áè:òAÝòplot:òLX:òexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òPLOT:áü:Ýòwait:òLX:òWAIT:á:=Ýògcol:òVDL(18):òLX:òexp:çT%=comma òVDU:òLX:òexp ⇧òVDL(0)$
  6733. òVDU:á.:8#Ýòcircle:òLX:F%=T%:çF%=fill òLXB.òexp:òC(comma):òLX:òexp:òC(comma):òPLTL(4)L,òLX:òexp:òLDL(0):òPLTL(145+(F%=fill)*-8)Vá`&Ýòrectangle:òLX:çT%=fill òLX:å™DtSjIòexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òRECT:át.òexp:òC(comma):òLX:òexp:òC(comma):òPLTL(4)~)òLX:òexp:òC(comma):òLX:òexp:òPLTL(97)⇦=Ýòorigin:òVDL(29):òLX:òexp:òC(comma):òVDD:òLX:òexp:òVDD:á‹á†3Ýòfill:òLX:òexp:òC(comma):òLX:òexp:òPLTL(133):á¦Ýòif:ê L1%,L2%° òLX:òexpºL1%=P%:òJMC(0)Ä,çT%=then òLX:çT%=lino òJM(SN%):òLX:å™dXSÎ
  6734. òstateØçT%=col:òLX:å™dNSâ+çT%<>else V%=P%:P%=L1%:òJMC(V%):P%=V%:áì.L2%=P%:òJMP(0):V%=P%:P%=L1%:òJMC(V%):P%=V%öòLXçT%=lino òJM(SN%):òLX:å™TTT
  6735.  
  6736. òstateçT%=col:òLX:å™TJT!V%=P%:P%=L2%:òJMP(V%):P%=V%:á(:2Ýòfor:êST%,L1%:òLX<òC(id):ST%=SN%:òLXFòC(eq):òLX:òexpPòSTA(sa(ST%))ZòC(to):òLX:òexpdçT%=step òLX:òexp ⇧òLDL(1)nòLX:L1%=P%xçT%=eop ☓T%=next å™tLTŵ%òstate:çT%=col ☓T%=eoln òLX:å™DxT…,òC(next):òLX:òESCAPE:òNXT(sa(ST%),L1%):á„: .Ýògoto:òLX:òC(lino):òESCAPE:òJM(SN%):òLX:áª:´Ýòrep:êL1%:òLX:L1%=P%¾çT%=eop ☓T%=unt å™dRTÈ%òstate:çT%=col ☓T%=eoln òLX:å™t~TÒòC(unt):òLX:òexpÜòESCAPE:òJMC(L1%):áæ:ðÝòwhile:ê L1%,L2%:L1%=P%úòLX:òexp:L2%=P%:òJMC(0)çT%=eop ☓T%=endwh å™TXU%òstate:çT%=col ☓T%=eoln òLX:å™TDU#òC(endwh):òLX:òESCAPE:òJMP(L1%)"V%=P%:P%=L2%:òJMC(V%):P%=V%,á6:@ ÝòsoundJòLX:òexp:òC(comma)TòLX:òexp:òC(comma)^òLX:òexp:òC(comma)hòLX:òexp:òSNDrá|:ŷÝòvoices:òLX:òexp:òVOICES:á‘:ŒYÝòswap:ê ST%:òLX:òC(id):ST%=SN%:òLX:òC(comma):òLX:òC(id):òSWAP(sa(ST%),sa(SN%)):òLX:á¤:®&Ýòtime:òLX:òC(eq):òLX:òexp:òTIME:á¸Ýòmouse:êST1%,ST2%:òLXÂ|çT%=id ST1%=SN%:òLX:òC(comma):òLX:òC(id):ST2%=SN%:òLX:òC(comma):òLX:òC(id):òMOUSESTATUS(sa(ST1%),sa(ST2%),sa(SN%)):òLX:áÌ çT%=on …ÖòLX:ç¤EXP òexp ⇧òLDL(1)àòMOUSELINKêáôÍþ$çT%=off òLX:òLDL(0):òMOUSELINK:áxçT%=colour òVDL(19):òLX:òexp:òVDU:òC(comma):òVDL(25):òLX:òexp:òVDU:òC(comma):òLX:òexp:òVDU:òC(comma):òLX:òexp:òVDU:á1çT%=to òLX:òexp:òC(comma):òLX:òexp:òMOUSETO:áçT%=step …&IòLX:òexp:çT%<>comma òMOUSESTEP1A:á ⇧òC(comma):òLX:òexp:òMOUSESTEP2A:á0Í:_çT%=rectangle òLX:òexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òMOUSEREC:áD
  6737. òERR:áNFÝòstarcommand:òLX:conststring$(NCST%)=S$:NCST%+=1:òSTAR(NCST%-1):áX:bUÝòsys:ê SF%,SS%:òLX:çT%=const N%=N ⇧òC(string):È− "OS_SWINumberFromString",,S$¸N%lFòLX:SF%=0:È” T%<>eoln €T%<>col €T%<>to òC(comma):òLX:òexp:SF%+=1:Îv*çT%<>eoln €T%<>col òC(to) ⇧SS%=0:å™tJV€oòLX:òC(id):MP%(0)=sa(SN%):òLX:SS%=1:È” T%<>eoln €T%<>col:òC(comma):òLX:òC(id):MP%(SS%)=sa(SN%):òLX:SS%+=1:Î⇩òSYS(N%,SF%,SS%)“áfi*Ýòasstring:êST%:ST%=SN%:òLX:òC(eq):òLX¨çT%=leftstr òleftstr(ST%):á²çT%=midstr òmidstr(ST%):á¼!çT%=rightstr òrightstr(ST%):áÆòstringexpÐçT%<>col €T%<>eoln òERRÚòSTORESTR(sa(ST%))äáî:ø9Ýòoscli:òLX:òC(lb):òLX:òstringexp:òC(rb):òOSCLI:òLX:á: Ýòstringexp òEMPTYTB çT%=string òCONSTR(NCST%-1)*çT%=sid òSTR(sa(SN%))4çT%=getstr òGETSTR>òLX:çT%=plus òLX:å™T`WHáRSÝòleftstr(ST%):òLX:òstringexp:òC(comma):òLX:òexp:òC(rb):òLEFTSTR(sa(ST%)):òLX:á\dÝòmidstr(ST%):òLX:òstringexp:òC(comma):òLX:òexp:òC(comma):òLX:òexp:òC(rb):òMIDSTR(sa(ST%)):òLX:áfUÝòrightstr(ST%):òLX:òstringexp:òC(comma):òLX:òexp:òC(rb):òRIGHTSTR(sa(ST%)):òLX:áp ÝòprintzòLX☓&çT%=squote òVDL(13):òVDL(10):å™DzW‰çT%=scol å™DzW—"çT%=sid òPRISTR(sa(SN%)):å™DzW¢(çT%=string òPRICONSTR(NCST%-1):å™DzW¬ çT%=spcb òLX:òexp:òSPC:å™tDW¶çT%=comma òVDL(32):å™DzWÀNçT%=tab T1%=T%:òVDL(31):òLX:òexp:òVDU:òC(comma):òLX:òexp:òVDU:òC(rb):å™DzWÊç¤EXP òexp:òPRIEXP:å™tDWÔçT%<>scol òVDL(13):òVDL(10)ÞáèÝòinput:òLXò,çT%=string òPRICONSTR(NCST%-1):òLX:å™TFXü+òVDL(–"?"):çT%=comma ☓T%=scol òLX ⇧òERR0çT%=sid òstringinput ⇧çT%=id òvarinput ⇧òERRá(Ýòstringinput:òSINPUT(sa(SN%)):òLX:á$%Ýòvarinput:òVINPUT(sa(SN%)):òLX:á.ªÝ¤EXP:= T%=plus ☓T%=minus ☓T%=lb ☓T%=inkey ☓T%=id ☓T%=aid ☓T%=const ☓T%=sqr ☓T%=sin ☓T%=rnd ☓T%=cos ☓T%=pi ☓T%=fl ☓T%=tr ☓T%=get ☓T%=not ☓T%=point ☓T%=tint ☓T%=timeri8:BÝòexp:êT1%:òeexpLçT%<>or €T%<>eor áVT1%=T%:òLX:òexp`çT1%=or òOR ⇧çT1%=eor òEORját:~Ýòeexp:êT1%:òaexp⇦çT%<>and á‹T1%=T%:òLX:òeexp†çT1%=and òAND¦á°Ýòaexp:êT1%:òsexpº8çT%<>gt €T%<>lt €T%<>geq €T%<>leq €T%<>eq €T%<>neq áÄT1%=T%:òLX:òsexpÎYçT1%=gt òGTT ⇧çT1%=lt òLTT ⇧çT1%=geq òGEQ ⇧çT1%=leq òLEQ ⇧çT1%=eq òEQU ⇧çT1%=neq òNEQØáâ
  6738. ÝòsexpìOçT%=plus òLX:òterm ⇧çT%=minus òLX:òterm:òNEG ⇧çT%=not òLX:òterm:òNOT ⇧òtermöAçT%=plus òLX:òterm:òADD:å™dvX ⇧çT%=minus òLX:òterm:òSUB:å™dvXá
  6739. $Ýòfactor:ê ST%,TF%:ST%=SN%:TF%=£)çT%=plus ☓T%=minus ☓T%=not TF%=T%:òLX"çT%=id òLX:òLDA(sa(ST%)):å™ttY(BçT%=aid òLX:òC(lb):òLX:òlerm:òC(rb):òLDAarr(sa(ST%)):òLX:å™ttY2çT%=const òLX:òLDL(N):å™ttY<çT%=lb òLX:òexp:òLX:å™ttYF"çT%=inkey òLX:òlerm:òINK:å™ttYP çT%=abs òLX:òlerm:òABS:å™ttYZçT%=get òLX:òGET:å™ttYd çT%=sqr òLX:òlerm:òSQR:å™ttYn6çT%=rnd òLX:òC(lb):òLX:òlerm:òC(rb):òRND:òLX:å™ttYxCçT%=point òLX:òlerm:òC(comma):òLX:òlerm:òPOINT:òC(rb):òLX:å™ttYŵMçT%=tint òLX:òC(lb):òLX:òlerm:òC(comma):òLX:òlerm:òRTINT:òC(rb):òLX:å™ttY…çT%=timeri òLX:òRTIME:å™ttY„çT%=tr òLX:òLDL(-1):å™ttY çT%=fl òLX:òLDL(0):å™ttYª òC(1):á´    òkerm¾áÈ
  6740. ÝòtermÒ òfactorÜpçT%=times òLX:òfactor:òMUL:å™d\Y ⇧ç(T%=slash ☓T%=div) òLX:òfactor:òDIV:å™d\Y ⇧çT%=mod òLX:òfactor:òMOD:å™d\Yæáð
  6741. ÝòlermúWçT%=plus òLX:òfactor ⇧çT%=minus òLX:òfactor:òNEG ⇧çT%=not òLX:òfactor:òNOT ⇧òfactorá
  6742. Ýòkerm"çTF%=minus òNEG ⇧çTF%=not òNOT"á,:6ÝòC(A%):çT%=A% á@òS1:ñ''" Missing ";J|çA%>127 €A%<>lino Ö tokenprint ⇧çA%=1 òreport("Missing expression",17); ⇧çA%=lino òreport("Missing line number",17) ⇧ïA%T    å™DrZ^)ÝòERR:òS1:òreport(" Syntax error",17)h ÝòSUBERrñ:Ù#filename%:à|ÝòtokenassŷÞ tokenspace 128‘ãpass=0¸2 ⇦2ŒP%=tokenspace¤[OPT pass®.tokenprint¸STMFD R13!,{R14}:MOV R5,R14ÂUCMP R0,#255:ADRHI R12,tokenbuff:SUBHI R0,R0,#256:STRHI R0,tokenbuff:MOVHI R0,#200ÌADR R14,back:ADD PC,R5,#&4CÖ    .backà.tokenploopêLDRB R0,[R1],#1ôCMP R0,#&7FþSWICC "OS_WriteC"BCC tokenploopLDMFD R13!,{PC}.tokenbuff EQUD(0)&]í:áDÝòruntimeN2stackp=12:constbase=11:tempstring=10:varbase=9Xãpass=0¸2 ⇦2bP%=programl[OPT passv.go B setup€.division⇩YLDMEA R12!,{R0,R1}:€S R6,R0,#1<<31:RSBMI R0,R0,#0:ŵ R5,R6,R1:CMP R1,#0:RSBMI R1,R1,#0“%MOV R2,#0:MOV R3,#0:MOV R4,#1<<31fix.divisionloop MOVS R0,R0,ASL#1:ADC R2,R2,R2:CMP R2,R1:SUBGE R2,R2,R1:☓RGE R3,R3,R4:MOVS R4,R4,LSR#1:BNE divisionloop¨5CMP R5,#0:RSBMI R3,R3,#0:CMP R6,#0:RSBMI R2,R2,#0²MOV PC,R14¼]:ç chkforesc% …Æ[OPT pass:.escapecodeÐGMOV R0,#&7E:SWI "OS_Byte":ADR R0,escapeblock:SWI "OS_GenerateError"Ú1.escapeblock EQUD(17):EQUS"Escape"+½0:ALIGN:]äÍî [OPT pass:.constoff EQUD(0):.arraytableoff EQUD(0):.conststringoff EQUD(0):.stringoff EQUD(0):.tempstringoff EQUD(0):.arraydataoff EQUD(0):.stackoff EQUD(0)ø
  6743. .setup5LDR constbase,constoff:ADD constbase,PC,constbase BLDR R0,arraytableoff:ADD R0,R0,constbase:STR R0,[constbase,#0]<LDR R1,conststringoff:ADD R1,R1,R0:STR R1,[constbase,#4] 7LDR R2,stringoff:ADD R2,R2,R1:STR R2,[constbase,#8]*=LDR tempstring,tempstringoff:ADD tempstring,tempstring,R24ADD varbase,tempstring,#256>@LDR R3,arraydataoff:ADD R3,R3,varbase:STR R3,[constbase,#12]H,LDR stackp,stackoff:ADD stackp,stackp,R3RSTMEA R12!,{R13,R14}\½SWI "OS_WriteS":EQUS"Compiled using the Basic BASIC Compiler by Peter Jones":EQUB(13):EQUB(10):EQUS"© SoftStuff 1994":EQUB(13):EQUB(10):EQUS"Unregistered version":EQUB(10):EQUB(0):ALIGNf]ípáz:☓CÝòESCAPE:çchkforesc% [SWI "OS_ReadEscapeState":BCS escapecode:]‰á—4ÝòSND:[LDMEA R12!,{R0-R3}:SWI "Sound_Control":]á¢^ÝòVOICES:[LDMEA R12!,{R0}:MOV R1,#0:MOV R2,#0:MOV R3,#0:MOV R4,#0:SWI "Sound_Configure":]á¬ÝòVDL(L%):[SWI 256+L%:]á¶-ÝòVDU:[LDMEA R12!,{R0}:SWI "OS_WriteC":]áÀsÝòVDD:[LDMEA R12!,{R0}:€ R1,R0,#&FF00:MOV R1,R1,ASR#8:€ R0,R0,#&FF:SWI "OS_WriteC":MOV R0,R1:SWI "OS_WriteC":]áÊ>ÝòPLTL(L%):[LDMEA R12!,{R1,R2}:MOV R0,#L%:SWI "OS_Plot":]áÔ[ÝòPOINT:[LDMEA R12!,{R0,R1}:SWI "OS_ReadPoint":CMP R4,#0:MVNMI R2,#0:STMEA R12!,{R2}:]áÞ[ÝòRTINT:[LDMEA R12!,{R0,R1}:SWI "OS_ReadPoint":CMP R4,#0:MVNMI R3,#0:STMEA R12!,{R3}:]áè/ÝòPLOT:[LDMEA R12!,{R0-R2}:SWI "OS_Plot":]áòÚÝòRECT:[LDMEA R12!,{R3,R4}:MOV R0,#4:MOV R1,R3:MOV R2,R4:SWI "OS_Plot":LDMEA R12,!{R3,R4}:MOV R0,#1:MOV R1,R3:MOV R2,#0:SWI "OS_Plot":MOV R1,#0:MOV R2,R4:SWI "OS_Plot":MOV R1,R3:RSB R1,R1,#0:MOV R2,#0:SWI "OS_Plot"ü5MOV R1,#0:MOV R2,R4:RSB R2,R2,#0:SWI "OS_Plot":]ásÝòMOUSESTATUS(A1%,A2%,A3%):[SWI "OS_Mouse":STR R0,[varbase,#A1%]:STR R1,[varbase,#A2%]:STR R2,[varbase,#A3%]:]á=ÝòMOUSELINK:[LDMEA R12!,{R1}:MOV R0,#106:SWI "OS_Byte":]á☓ÝòMOUSETO:[LDMEA R12!,{R2,R3}:MOV R1,tempstring:MOV R0,#3:STRB R0,[R1]:STR R2,[R1,#1]:STR R3,[R1,#3]:MOV R0,#21:SWI "OS_Word":]á$ÝòMOUSESTEP1A:[LDMEA R12!,{R2}:MOV R1,tempstring:MOV R0,#2:STRB R0,[R1]:STRB R2,[R1,#1]:STRB R2,[R1,#2]:MOV R0,#21:SWI "OS_Word":]á.⇩ÝòMOUSESTEP2A:[LDMEA R12!,{R2,R3}:MOV R1,tempstring:MOV R0,#2:STRB R0,[R1]:STRB R2,[R1,#1]:STRB R3,[R1,#2]:MOV R0,#21:SWI "OS_Word":]á8ÕÝòMOUSEREC:[LDMEA R12!,{R2-R5}:ADD R4,R4,R2:ADD R5,R5,R3:MOV R1,tempstring:MOV R0,#1:STRB R0,[R1]:STRB R2,[R1,#1]:MOV R2,R2,LSR#8:STRB R2,[R1,#2]:STRB R3,[R1,#3]:MOV R3,R3,LSR#8:STRB R3,[R1,#4]:STRB R4,[R1,#5]BoMOV R4,R4,LSR#8:STRB R4,[R1,#6]:STRB R5,[R1,#7]:MOV R5,R5,LSR#8:STRB R5,[R1,#8]:MOV R0,#21:SWI "OS_Word":]áL%ÝòCON:[SWI "OS_RestoreCursors":]áV%ÝòCOFF:[SWI "OS_RemoveCursors":]á`'ÝòWAIT:[MOV R0,#19:SWI "OS_Byte":]ájÀÝòINK:ê P1%:P1%=P%:ãpass=0¸2⇦2:P%=P1%:[OPTpass:LDMEA R12!,{R1}:CMP R1,#0:€PL R2,R1,#&FF00:MOVPL R2,R2,LSR#8:€PL R1,R1,#&FF:MOVPL R3,#0:MOVMI R2,#255:MOVMI R3,#255:MOV R0,#129:SWI "OS_Byte"tiCMP R3,#0:BEQ inkeywait:CMP R1,#255:MVNEQ R1,#0:.inkeywait:]çchkforesc% [CMP R2,#&1B:BEQ escapecode:]~[STMEA R12!,{R1}:]í:á⇦FÝòABS:[LDMEA R12!,{R0}:CMP R0,#0:RSBMI R0,R0,#0:STMEA R12!,{R0}:]á‹8ÝòGET:[SWI "OS_ReadC":]çchkforesc% [BCS escapecode:]†[STMEA R12!,{R0}:]á¦~ÝòTIME:[MOV R0,#0:STRB R0,[tempstring,#5]:LDMEA R12!,{R0}:STR R0,[tempstring]:MOV R0,#2:MOV R1,tempstring:SWI "OS_Word":]á°]ÝòRTIME:[MOV R0,#1:MOV R1,tempstring:SWI "OS_Word":LDR R0,[tempstring]:STMEA R12!,{R0}:]áº◰ÝòSYS(N%,N1%,N2%):NU%=0:È”NU%<N1%:[LDMEA R12!,{NU%}:]NU%+=1:Î:[SWI N%:]NU%=0:È”NU%<N2%:[STR NU%,[varbase,#MP%(NU%)]:]NU%+=1:Î:áÄ:Î|ÝòLDL(Q):çQ>=0€Q<256 [MOV R0,#Q:] ⇧ çQ<0€Q>=-255 [MVN R0,#(“(Q)-1):] ⇧[LDR R0,[constbase,#NC%*4]:]:consts%(NC%)=Q:NC%+=1Ø[STMEA R12!,{R0}:]áâ6ÝòLDA(A%):[LDR R0,[varbase,#A%]:STMEA R12!,{R0}:]áì6ÝòSTA(A%):[LDMEA R12!,{R0}:STR R0,[varbase,#A%]:]áölÝòSWAP(A%,FA%):[LDR R0,[varbase,#A%]:LDR R1,[varbase,#FA%]:STR R1,[varbase,#A%]:STR R0,[varbase,#FA%]:]á›ÝòLDAarr(A%):[LDR R0,[constbase,#12]:LDR R8,[constbase,#0]:LDR R1,[R8,#A%]:ADD R0,R0,R1:LDMEA R12!,{R1}:LDR R2,[R0,R1,LSL#2]:STMEA R12!,{R2}:]á
  6744. ŷÝòSTAarr(A%):[LDR R0,[constbase,#12]:LDR R8,[constbase,#0]:LDR R1,[R8,#A%]:ADD R0,R0,R1:LDMEA R12!,{R1,R2}:STR R2,[R0,R1,LSL#2]:]á=ÝòADD:[LDMEA R12!,{R0,R1}:ADD R0,R0,R1:STMEA R12!,{R0}:]á=ÝòSUB:[LDMEA R12!,{R0,R1}:SUB R0,R0,R1:STMEA R12!,{R0}:]á(=ÝòMUL:[LDMEA R12!,{R1,R2}:MUL R0,R1,R2:STMEA R12!,{R0}:]á2)ÝòDIV:[BL division:STMEA R12!,{R3}:]á<)ÝòMOD:[BL division:STMEA R12!,{R2}:]áFRÝòGTT:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNGT R0,#0:MOVLE R0,#0:STMEA R12!,{R0}:]áPRÝòLTT:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNLT R0,#0:MOVGE R0,#0:STMEA R12!,{R0}:]áZRÝòGEQ:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNGE R0,#0:MOVLT R0,#0:STMEA R12!,{R0}:]ádRÝòLEQ:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNLE R0,#0:MOVGT R0,#0:STMEA R12!,{R0}:]ánRÝòEQU:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNEQ R0,#0:MOVNE R0,#0:STMEA R12!,{R0}:]áxOÝòNEQ:[LDMEA R12!,{R0,R1}:CMP R0,R1:MVNNE R0,#0:ìQ R0,#0:STMEA R12!,{R0}:]áŵ:ÝòNEG:[LDMEA R12!,{R0}:RSB R0,R0,#0:STMEA R12!,{R0}:]á…7ÝòNOT:[LDMEA R12!,{R0}:MVN R0,R0:STMEA R12!,{R0}:]á„;ÝòAND:[LDMEA R12!,{R0,R1}:€ R0,R0,R1:STMEA R12!,{R0}:]á ;ÝòOR:[LDMEA R12!,{R0,R1}:☓R R0,R0,R1:STMEA R12!,{R0}:]áª;ÝòEOR:[LDMEA R12!,{R0,R1}:ŵ R0,R0,R1:STMEA R12!,{R0}:]á´¼ÝòRND:[SWI "OS_ReadMonotonicTime":LDR R1,[constbase,#16]:ADD R0,R0,R1::STR R0,[constbase,#16]:LDMEA R12!,{R1}:STMEA R12!,{R0,R1}:BL division:CMP R2,#0:RSBMI R2,R2,#0:STMEA R12!,{R2}:]á¾ÝòJMP(A%):[B A%:]áÈ4ÝòJSR(A%):[ADD R0,R15,#4:STMEA R12!,{R0}:B A%:]áÒ2ÝòJMC(A%):[LDMEA R12!,{R0}:CMP R0,#0:BEQ A%:]áÜ­ÝòNXT(A%,FA%):[LDMEA R12,{R0,R1}:LDR R2,[varbase,#A%]:ADD R2,R2,R1:STR R2,[varbase,#A%]:CMP R1,#0:MOVLT R1,R0:MOVLT R0,R2:MOVLT R2,R1:CMP R2,R0:BLE FA%:SUB R12,R12,#8:]áæ!ÝòEND:[LDMEA R12!,{R13,PC}:]áð ÝòJM(S%)ú?P%=S%:P%!1=jmjm=P%:P%+=12áÝòRTS:[LDMEA R12!,{R15}:]á":,1ÝòEMPTYTB:[MOV R0,#13:STRB R0,[tempstring]:]á6ÝÝòCONSTR(A%):[MOV R2,tempstring:.fndeosloop:LDRB R0,[R2],#1:CMP R0,#13:BNE fndeosloop:SUB R2,R2,#1:MOV R1,#A%:LDR R8,[constbase,#4]:ADD R1,R8,R1,ASL#8:.strloop:LDRB R0,[R1],#1:STRB R0,[R2],#1:CMP R0,#13:BNE strloop:]á@ÜÝòSTR(FA%):[MOV R2,tempstring:.fndeosloop:LDRB R0,[R2],#1:CMP R0,#13:BNE fndeosloop:SUB R2,R2,#1:MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.strloop:LDRB R0,[R1],#1:STRB R0,[R2],#1:CMP R0,#13:BNE strloop:]áJ†ÝòGETSTR:[MOV R2,tempstring:.fndeosloop:LDRB R0,[R2],#1:CMP R0,#13:BNE fndeosloop:SUB R2,R2,#1:SWI "OS_ReadC":STRB R0,[R2]:MOV R0,#13:STRB R0,[R2,#1]:]áTflÝòSINPUT(FA%):[MOV R0,#FA%:LDR R8,[constbase,#8]:ADD R0,R8,R0,ASL#8:MOV R1,#255:MOV R2,#32:MOV R3,#128:SWI "OS_ReadLine":]çchkforesc% [BCS escapecode:]á ⇧á^æÝòVINPUT(FA%):[MOV R0,#FA%:LDR R8,[constbase,#8]:ADD R0,R8,R0,ASL#8:MOV R1,#255:MOV R2,#32:MOV R3,#128:SWI "OS_ReadLine":MOV R1,R0:MOV R0,#10:SWI "OS_ReadUnsigned":MOV R0,R2:STMEA R12!,{R0}:LDMEA R12!,{R0}:STR R0,[varbase,#A%]h&]çchkforesc% [BCS escapecode:]á ⇧ár¨ÝòSTORESTR(FA%):[MOV R2,tempstring:MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.storestrloop:LDRB R0,[R2],#1:STRB R0,[R1],#1:CMP R0,#13:BNE storestrloop:]á|ÛÝòLEFTSTR(FA%):ê P1%:P1%=P%:ãpass=0¸2⇦2:P%=P1%:[OPTpass:LDMEA R12!,{R4}:MOV R2,tempstring:MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.storestrloop:LDRB R0,[R2],#1:STRB R0,[R1],#1:CMP R0,#13:BEQ strendearlyŷLSUBS R4,R4,#1:BNE storestrloop:.strendearly:MOV R0,#13:STRB R0,[R1]:]í:á‘àÝòMIDSTR(FA%):ê P1%:P1%=P%:ãpass=0¸2⇦2:P%=P1%:[OPTpass:LDMEA R12!,{R3,R4}:ADD R2,tempstring,R3:MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.storestrloop:LDRB R0,[R2],#1:STRB R0,[R1],#1:CMP R0,#13:BEQ strendearlyŒLSUBS R4,R4,#1:BNE storestrloop:.strendearly:MOV R0,#13:STRB R0,[R1]:]í:á¤õÝòRIGHTSTR(FA%):[:LDMEA R12!,{R4}:MOV R2,#0:MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.fndeosloop:LDRB R0,[tempstring,R2]:ADD R2,R2,#1:CMP R0,#13:BNE fndeosloop:SUB R2,R2,R4:SUBS R2,R2,#1:MOVMI R2,tempstring:ADDPL R2,tempstring,R2®P.storestrloop:LDRB R0,[R2],#1:STRB R0,[R1],#1:CMP R0,#13:BNE storestrloop:]ḋÝòPRISTR(FA%):[MOV R1,#FA%:LDR R8,[constbase,#8]:ADD R1,R8,R1,ASL#8:.pristrloop:LDRB R0,[R1],#1:CMP R0,#13:SWINE "OS_WriteC":BNE pristrloop:]á›ÝòPRICONSTR(A%):[MOV R1,#A%:LDR R8,[constbase,#4]:ADD R1,R8,R1,ASL#8:.pristrloop:LDRB R0,[R1],#1:CMP R0,#13:SWINE "OS_WriteC":BNE pristrloop:]áÌÚÝòPRIEXP:êP1%:P1%=P%:ãpass=0¸2⇦2:P%=P1%:[OPT pass:LDMEA R12!,{R0}:MOV R1,tempstring:MOV R2,#200:SWI "OS_BinaryToDecimal":RSBS R3,R2,#10:BEQ nospc:MOV R0,#32:.spcloop:SWI "OS_WriteC":SUBS R3,R3,#1:BNE spcloop:.nospcÖ]MOV R1,tempstring:.priloop:LDRB R0,[R1],#1:SWI "OS_WriteC":SUBS R2,R2,#1:BNE priloop:]í:áà[ÝòSPC:[LDMEA R12!,{R1}:MOV R0,#32:.spcloop:SWI "OS_WriteC":SUBS R1,R1,#1:BNE spcloop:]áêSÝòSTAR(A%):[MOV R0,#A%:LDR R8,[constbase,#4]:ADD R0,R8,R0,ASL#8:SWI "OS_CLI":]áô.ÝòOSCLI:[MOV R0,tempstring:SWI "OS_CLI":]áþ²ÝòMALLOC(A%,FA1%,FA2%):[MOV R1,#A%:LDR R8,[constbase,#4]:ADD R1,R8,R1,ASL#8:MOV R0,#&FF:MOV R3,#1:SWI "OS_File":STR R2,[varbase,#FA1%]:]çFA2%<>0 [STR R3,[varbase,#FA2%]:]á ⇧á tÝòCALL(N%):NU%=0:È”NU%<N%:[LDMEA R12!,{NU%}:]NU%+=1:Î:[LDMEA R12!,{R7}:ADD R8,PC,#4:STMEA R12!,{R8}:MOV PC,R7:]á 
  6745. ÝòLFIX LI%=»st$(SN%):I%=-1:õI%+=1 &"ýLI%=lino(I%):sa(SN%)=lina(I%) 0á :    ÝòFIX D çjm=0 á N SN%=0:õ X(çstp(SN%)=lino ☓stp(SN%)=gosub òLFIX bSN%+=1:ýst$(SN%)="" lõP%=jm:jm=P%!1 vNçstp(?P%)=proc òJSR(sa(?P%)) ⇧çstp(?P%)=gosub òJSR(sa(?P%)) ⇧òJMP(sa(?P%)) €    ýjm=0 ⇩á “Ýòconstants fiáconstants=P%:!constoff=P%-setup-12:arraytables=constants+NC%*4:!arraytableoff=NC%*4:conststrings=arraytables+NAE%*4+4:!conststringoff=NAE%*4+4:!stringoff=NCST%*256:!tempstringoff=smem*256:!arraydataoff=vmem:!stackoff=amem ¨6çNC%>5 ãC%=5¸NC%-1:!(constants+C%*4)=consts%(C%):í ²Eç NCST%>0 ãC%=0¸NCST%-1:$(conststrings+C%*256)=conststring$(C%):í ¼Aç NAE%>0 ãC%=0¸NAE%-1:!(arraytables+C%*4)=arrayentries%(C%):í ÆIMCL%=P%-program+!arraytableoff+!conststringoff+!stringoff:BPL%=filel% Ðá Ú: ä$Ý òputcaret(window%,icon%,char%) î7È− "Wimp_SetCaretPosition",window%,icon%,,,-1,char% øá!:! Ý òsaveclick!ȉ block%!16 Ê! &  É 0 : ç block%!8 € 64 … òdragbox!*Ë!4á!>:!HÝ òdragbox!R!block%=savewin%!\% È− "Wimp_GetWindowState",,block%!f ox%=block%!4-block%!20!p oy%=block%!16-block%!24!z block%!4=0!☓# È− "Wimp_GetIconState",,block%!‰% block%!4=5:block%!8=ox%+block%!8!— block%!12=oy%+block%!12!¢ block%!16=ox%+block%!16!¬ block%!20=oy%+block%!20!¶ block%!24=0:block%!28=0!À block%!32=&7FFFFFFF!Ê block%!36=&7FFFFFFF!Ô È− "Wimp_DragBox",,block%!Þá!è:!òÝ òstartsave!ü% È− "Wimp_GetPointerInfo",,block%", block%!20=block%!12:block%!24=block%!16") block%!28=!block%:block%!32=block%!4" block%!36=1000"$ !block%=64:block%!12=0". block%!16=1:block%!40=&FF8"80 $(block%+44)=¤getleaf(¤gettext(savewin%,2))"B8 È− "Wimp_SendMessage",18,block%,block%!20,block%!24"Lá"V:"` Ý ¤getleaf(a$)"j È” §a$,".")"t a$=Áa$,§a$,".")+1)"~ Î"⇦  =a$+½0"‹:"†Ý òsaveit"¦    òdoit"° block%!12=block%!8"º block%!16=3:!block%=256"Ä8 È− "Wimp_SendMessage",18,block%,block%!20,block%!24"Î2!block%=savewin%:È− "Wimp_CloseWindow",,block%"Ø3 !block%=savewin%:È− "Wimp_CloseWindow",,block%"âá"ì:"öÝ ¤gettext(window%,icon%)#"!stuff%=window%:stuff%!4=icon%#
  6746. "È− "Wimp_GetIconState",,stuff%#=$(stuff%!28)#:#(Ý òkeypress(key%)#2
  6747. ȉ ¹ Ê#</  É key%=13 € !block%=savewin% : òquicksave#F"   : È−"Wimp_ProcessKey",key%#P  Ë#Z  á#d:#nÝ òquicksave#x% ç §(¤gettext(savewin%,2)),".") …#ŵ
  6748.  òdoit#… Ì#„> òreport("To save, drag the icon to a directory viewer",1)#  Í#ª3 !block%=savewin%:È− "Wimp_CloseWindow",,block%#´ á#¾:#È Ý òdoit#Òname$=¤string(block%+44)#Ü.ÿ("SAVE "+name$+" "+Ã~program+" +"+Ã~MCL%)#æÿ("Settype "+name$+" FF8")#ðá#ú:$Ý òshadeicon(window%,icon%)$"!block%=window%:block%!4=icon%$"block%!8=1<<22:block%!12=1<<22$""È− "Wimp_SetIconState",,block%$,á$6:$@!Ý òunshadeicon(window%,icon%)$J"!block%=window%:block%!4=icon%$T"È− "Wimp_GetIconState",,block%$^block%!8=0:block%!12=1<<22$h"È− "Wimp_SetIconState",,block%$rá$|:$ŷ Ý òhello$‘Mç ’-opentime% > 500 !block%=info%:È− "Wimp_CloseWindow",,block%:opened%=£$Œá$¤:$®Ý ònopoll$¸ç compiling%=¹ òprog$Âç opened%=¹ òhello$Ìáÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ðÔÁhello.ŵ¬à` ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿpwwwwwwwwwpwwwwwwpwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwpwwwwwwwwwpwwwwwwwpwwwwwwwwpwwpwwwwwwwwpwwwpwwpwwwwwwwwpwwwpwwwwwwwwpwwwwpwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwpwwwpwwwwpwwwwpwwpwwwwwwwpwpwwwwwwpwwwwpwwpwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwpwwwwpwwwwwwpwwwwwpwpwwwwwwwpwwwwwwwpwpwppwwwwwwwpwwwppwwpppwwwwwwwwpwwppppwwwpwwwwpwpwpppwppwwpwwpwwwppwwwwwwpwwpwwwwpwpwwpwwwwwpwpwwwpwwwpwpwwwppwwwwpwwwwwpwpwwpwwwwwpwppwppwwwwwwwpwpwwpwwwpwwwwwwpwwwpwwwpwpwwwwwpwwwpwwwwwwpwwwpwpwpwpwwwwwwwpwwwwwwwppwwpwwwwwwwwwwppwwpwpwwwppwwwwwwwwwpwpwwwwwwwwpwwpwpwppwpwwppwwwwwwwpwwpwwwwpwwwwpwwwwwpwpwwpwwwpwwpwwpwwwwpwwwwwwwpwwpwwwwwpwwpwwwwwpwwwpwpwwwwwwpwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwpwwwpwwwwwwwwwwpwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwpwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwpwwwwwwwwwwwwwpwwwwwwwwpwwwwwwwwwwwwwwwwwpwwwwwpwwwwwwwwwwpwwwpwwwwpwwwwwwwwwpwwwpwwwwwwwwwwwwwwwpwwwwwwpwwwwwwwwwwwpwwwpwwwpwwwpwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwpwwpwwwwwwwwwwpwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwpwwwwwwwwwwwpwwwwwwwwwwwwwpwwwwwwwwwpwwwwwwwwwwpwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwpwwwpwwwwwwwwwwwwwwwwwwwwwwpwwwwwwpwwwwwpwwwwwwwwwwwwwwpwwwwwwwwpwwwpwwwwwwpwwwwwwwwwwwwwwwwwwpwwpwwwwwpwwwwwwwpwwwwwwwwpwwwwwwwwwwwwwwwwwwwpwwwwpwwwwwwwwpwwwwwwwwwwwwpwwwwwwwwwwwpwwwpwwwwwwwpwwwwwwpwwwwwwwwwwwwwwwwpwwwwwpwwwwwpwwwwwwwpwwpwwwwwwwwpwwwwwpwwwwwwwwwwwwwwwwpwwwpwwpwwwwwwpwwpwwpwwwwpwwpwwwwpwwpwwpwwwpwwwwwwpwwwwwwwwpwwwwpwwwwpwwpwwwwpwwpwwpwwpwwwpwwwwwwwpwwwwwwwwwwwwwwwwwwpwwwwwwwwwwpwwpwwwpwwwwwwwwwwwwwpwwwwwpwwwpwwwpwwpwwwpwwwwwwwwwwwwwwwwpwwwwwwpwwwwwwwwwwwpwwwwwwpwwwpwwwwwpwwwwwwwwwwwwwwwwwwwwwwpwwwwpwppwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwpwwpwpwwwwwwwwwppwwwwwwpwwpwpwpwwwwwwwwwwwpwpwwwwwpwwwwwwwpwwpwwwwwwwwwwwwpwwwpwppwpwwwwwwwwwwpwpwwwwpwpwwwpwppwwwwwwwwwwwwwpwwpwwwpwwpwppwpppp@TUUUE DE3DTU DDDD@T4CDUU DDCDCD"""""CD4RETvgFTWD " FT#c7 5RG@4"`0$c7R$BWP42g@#u D3"CE D3"CE05"t06tgVTUUcW@cgD3 g"" @W$ @GC uF43`'0`7D f4CvD@EtBBFb6BBFb6Ts&cbWEdET5Ev&@t& DUW D4"CUD0dD0d$30w@Te&D0dCCV@4eC$ T6R4DFRDt$vT@w$vT@w@s&EsFC6CFRsW0 TED3DBV0gT@v'S0vGB2UD43T@v7C w@tS% eGP5egSt3TB w3TB w4@s&5tDcPsgSVD# S0@w4Dt& `7 @W dED#0U0`GC w@t40WC w#@tR wR wBvs&Dr6D6 EVStW0Ddf0W@`g@sG `' @G2DeF`&0`7C w@t40GC w@tCDeF0wCDeF0w5@Vb5P3gDDTeV4v7RDV0% wC@wCtG `' @GDSER`G0`7C vRt40GC w@tC3D#4PwC3D#4Pw FDD$ fDCfEUU4twBB5CD@gECE0w&0@7 0f$$T4D4s70@f@S4$c $ V4uSsCBEtGCBEtGcww7bgCDD3Dvw$RDE432Dv6@D#"CvgPDDvD`GDTE3#2TwEr70DSDD70EDu EDu'TDd7 D32dg D32dg0EDDW DffDSfEffV4CDVDdff Tv60dfdffV0Uv%0evgef&SffBff0ff&BDDBDDdffF033C3C3CCD@D4CDBDD@DDDD4" DDCDD4PPG ddP74cGR#u4BW32uP$""""2T$0$c7D#2v PF@bdt&"SvGBt$0g""0w$"0cfFg0`7"B0w""" ""5 FR@&FvDC53V 4CF@4CFC d%C4CCDD3E#"C5"0g#2T$C3E ES&0t$2wBDCCDD0d D44D4CCF3fB0w D4"CUD3T#"CD0D34D$B4""C$DdD$f w42Dw"Pg2EcwR ug@BU@GT0eEs"0U$vBs@uG0t3 w0@U$0FT@v7BCEb6C"DvB0wDBV0gS0dEb4 TEt$0vEdRP& Ft@W4 v5D$r7Bt%$0g#3d44u@t&@r"t6BbG5@7C@w0cg@dEDt0`G0UD$0wCuFCB0w2@w4Dt&@s70`'0@FCPW00eTww6P0@gB`G40g$r7Bt$0g4""""t@t@r"v@`gSe$sG0eUUef$C""""s70`7  """2vC w@4CEB0wB`g@sG@s0`'@ """BwC4BU@`Ws40g$r7Bt$0gC@wETUU@t@r"tRsg@rv0 wB0wFTUU$0`7$`gDUUEC w@tE@wB@wCtG@s0`'0tWDUUE04D4D`G &s5%u $ f@PGBcF$ e%@dFU2wBt@` $2D vG5 @g@u0cFe3v0@fC"uE6Sw4e40bgECE0w&@s0@'4@fT%sg0PWTsGUDDvUDDg0DDuPDDv@$vTPgC43CuWCDv@Fd70ETV2uwSs7RDDu&CD33ugEr7 D43CvFDDd@D"2Tw6@D#"Cvg@Du0FTG0D33Tw%2D33Tw0efV0ffFSffSffBeg TvFBefF0ffcf&SfVTff4RvCDDBdfV0Uv%Cff5Rff0Tff4CDVD0efSf6 Tff$0DfEE$`gTew0DDDfg"2DUUU4RwwwwwW@wg@VUUUUUUe&dUUUUUUUfBVUUUUUUe&dUUUUUUUfBVUUUUUUe&dUUUUUUUf0UdFTFvw4"Cd5CDefED" CDefDD" " "" "@wg  @R`7d0TEvC0TE`7dBD$vCCU`7deffvc`ww`0wW wwwwww6wGbw3wwwwww$vwTvww7SwwFvwwfdw60wgdV$ Dfvw7@@w`7d vuvCt@G`7d@F uvCb7PG`7dEDv F0v6" V wwEDD# wgEDvw4w'tg0wgDTvwvwwwww6bwWuw7uwvwww wgdWugDDe@Dv`7d`GC4vC@P7`7d@guvCv4D`7d VU%v07sgftwwwwwgvWtguGPw wG vWtwEPw vGsw`w$2vgvww w7@Sv`7drg4uvCSe`7dRGvC wFSG`7d0$ vv 6vGV DD uwsw$dw`wvGtw$twrw`wPwPwswu7tww4twgfE@0fUwF`7d`GrvCd0W`7d@FvCv g`7d@Ftvc2wg@& "sw@www6tgwPwww%PwPgvW0ugtgw`wwwW0DDDwW@0v$`7d f3evCd$c7`7d@fDdvCb6S6`7dPW3vv 36D0U0wwgfwwSwg0uGcwgv&0gPwwvw% v&0w2dW eE3vg@@D4`7d0DvC C4`7d@DDDvCC4`7d2DvdEDUEswwwww50df 50dfbGS@ug$Ss&Bsfvww60fffffffv7cfffffffw3fffffffv7cfffffffw3fffffffv7cfffffffw "u""U F5" 6  ððððððÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿððÿÿðÿÿÿÿÿÿÿÿðÿÿÿððÿÿðÿÿÿÿÿÿÿÿðÿÿÿððÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿÿÿÿððÿðÿÿÿÿÿÿðÿÿÿÿððÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿðÿÿÿÿðÿðÿðððððððððÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿððÿðÿððÿÿÿÿðÿÿÿðÿÿÿðððÿÿððððÿÿÿÿÿÿÿÿðÿÿðððððÿÿÿðÿðÿÿÿðÿðÿððððÿððÿÿððÿÿðÿÿÿððÿÿÿÿÿÿðÿÿðÿÿÿðÿðÿðÿÿðÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿððÿÿÿððÿÿÿÿðÿÿÿÿÿðÿðÿÿððÿÿÿÿÿðÿððÿððÿÿÿÿÿÿÿðÿððÿÿðÿÿÿðÿÿÿÿÿÿðÿÿÿðÿÿÿðÿðÿÿÿÿÿððÿÿÿðÿÿÿÿÿÿðÿÿÿðÿðÿðÿðÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿððÿÿðÿÿÿÿÿÿÿðÿÿÿððÿÿðÿðÿÿÿððÿÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿðÿÿðÿðÿððÿðÿÿððÿÿÿÿÿÿÿðÿÿððÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿðÿÿðÿÿÿðÿÿðÿÿðÿÿÿÿðÿÿÿÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿðÿÿÿÿÿðÿÿðððððððÿðÿððÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿðÿÿÿÿÿÿðÿÿðÿÿðÿÿÿÿðÿÿðÿÿÿÿðÿÿðÿÿðÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿðÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿðÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿðÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿðÿÿððÿðÿðÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿðððÿðÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿðÿÿÿðÿððÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿððÿÿÿðÿðÿðÿððÿððððððððððððÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿðÿÿððÿÿÿÿÿÿÿðÿÿÿðÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿððÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿððÿÿððÿÿðÿÿÿÿðÿððÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿðÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿðÿÿðÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿðÿðÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿðÿððÿÿÿÿÿððÿððÿðÿÿÿÿðÿððÿÿðÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿðÿððÿðÿÿððÿððÿÿÿÿÿðÿððÿÿðÿðÿÿðÿÿðÿðÿÿÿÿÿðÿÿÿÿÿðÿÿðÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿðÿÿÿÿððÿððÿÿÿÿÿðÿððÿÿðÿÿÿÿðÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿððÿððÿÿÿÿÿÿÿÿÿððÿðÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðððÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðððÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿÿððÿÿÿðÿÿÿÿðÿÿðÿðÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿðÿÿÿÿÿðÿÿðÿÿðÿððÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿðÿÿÿðÿðÿðÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿðÿÿðÿðÿÿðÿÿÿÿððÿðÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿÿððÿððÿÿðÿððÿÿÿÿÿððððÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿððÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿððÿððÿÿÿÿÿÿðÿðÿÿÿÿðÿÿðÿðÿÿðÿððÿððÿÿÿÿÿÿÿÿÿðððÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿðÿÿÿÿÿÿðÿÿððÿÿðÿÿÿÿÿÿððÿÿðÿÿÿÿÿÿðÿðÿÿðÿÿðÿÿÿÿðÿððÿðÿÿÿÿÿÿðÿÿÿÿðÿððÿÿÿÿÿðÿðÿððÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿðððÿÿÿðÿÿÿððÿðÿðÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿðÿððÿÿðÿÿÿÿÿððÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿðÿÿðÿðÿÿÿðððððððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿðÿðÿÿðððÿðÿÿðÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿððÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿððÿðÿÿðÿÿÿÿÿðÿðÿÿðÿðÿÿÿÿÿðÿðÿÿÿÿÿððÿðÿÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿÿÿÿððÿðÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿðÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿðÿðÿÿððÿÿÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿðÿÿðÿÿÿÿÿðÿðÿÿðÿÿÿÿðÿðÿÿðÿÿÿðÿÿÿÿðÿðÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿðÿðÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿððÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿððÿÿÿðÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿððÿÿðÿÿðÿÿÿðÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿðÿÿÿððÿðððððððÌunreg#¬<
  6749. ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿDDDDDDDDD13323323#33#!DDDtw'awwawG0UVuwwwvwW wwDDDvw ww3CUE3 3@wW3CUE323UU3#sw@wwuwG 3CU533#DDDwWtwvgCvwwaw7TwwPwwwwwgawwW4vG@w&2TUwWvwwWPwwwwwgQwGTww0wwwwww2wwg5uwPwWvwrwwwww7aw7TwwCUuwuWRwg$tw4uww7DDD w7rwvwwwvwawwFCePwF3SwGQwfwww'@w&aw43S&vwgPwF3SwGQwwF3e'0wW3Cvg!wgwwwGPw7Qwwrw53dwawwFCeuW33dvWbwGuwswwwgw7DDDw'rwuw#`w0w70w w wBw w&sGvW0w w wG wv'sGAw wWvwawQw0w7wtW w&sgrw50wDDDuGs7rgaWswvW!uWQw0wv&awgU5tgvW!uWrwugtguG0wswRw0w'1w7swuwVU3qWPw`wPw0wDDDaw0wPw`7uWbwwWswcgr&233twqwbwwWtgQwwg vv7 ww7twwGuW 33Cw70Wv7 uW w0gDDDugUwGw0G ucw6uw707REsw0wcw6tbwG0wAw uw u U%!wGeQwgvwt&vDDDtwGrB@1TErw3@WewwGs1TE0!TE$S2U%@sUvww01uGPG1DDD5 v&2SDDD u&DDD1DDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿðððÿÿÿÿÿÿðÿÿðÿÿððÿÿÿðÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿððÿðÿÿððÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿðÿÿðÿÿðÿÿðÿÿÿðÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿðÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿðÿÿðÿÿðÿÿðÿÿÿÿðÿÿÿÿÿðÿðÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿÿðÿðÿÿÿðÿÿÿÿðÿÿÿðÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿðÿðÿÿÿÿÿððÿÿðÿÿÿÿÿÿÿÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootDëÿÿÝ'$aõ4!HelpDÿÿÿ\wMb,4!RunDëÿÿ'⇧«aI4!RunImageDûÿÿ§¾«b§h5!SpritesDùÿÿÞò®b&6!Sprites22Dùÿÿ·    Õa8M7ResourcesGýÿÿéÎÙà88TemplatesDìÿÿB–²d©4!BootDëÿÿÝ'$aõ4!HelpDÿÿÿ\wMb,4!RunDëÿÿ'⇧«aI4!RunImageDûÿÿ§¾«b§h5!SpritesDùÿÿÞò®b&6!Sprites22Dùÿÿ·    Õa8M7ResourcesGýÿÿéÎÙà88TemplatesDìÿÿB–²d©4!CreateApp!CreateAppNickIconSprites <Obey$Dir>.!Sprites
  6750. Set CreateApp$Dir <Obey$Dir>
  6751.  
  6752. *| Another
  6753. *|    ____________________________________
  6754. *|   /__  , ____  __  __   / __  __  __
  6755. *|   __/ / / / / /_/ / /  / / / / / _\
  6756. *|
  6757. *|                                  Production
  6758. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     !Help file for !CreateApp.
  6759.  
  6760. ----------------------------------------------------------------------------
  6761.                     ___
  6762. (c)1993            /__/  __  __  __      __  __  __
  6763.                   / \   /_  /_  / / / / /_/ /   /_
  6764.                  /   \ /_  __/ /_/ /_/ / \ /_  /_
  6765.                        ______
  6766.                          /  __  _          __     __  __
  6767.                         /  /_  /  /_/ /\/ / / /  / / /_  /_/
  6768.                        /  /_  /_ / / / / /_/ /_ /_/ /_/ __/ 
  6769.  
  6770. ----------------------------------------------------------------------------
  6771.                   ____________________________________
  6772.                  /__  , ____  __  __   / __  __  __
  6773.                  __/ / / / / /_/ / /  / / / / / _\ 
  6774.        
  6775. ----------------------------------------------------------------------------
  6776.  
  6777. This program is based on !AppMaker by Glynn Clements.  Its purpose is to
  6778. create application directories quickly by automatically producing files
  6779. such as !Boot and !Run.  It will also create !Sprite files and !Sprite22
  6780. files (for RISC OS 3 hi-res icons), and any files which the application will
  6781. need, such as a standard template file, modules or a sprite file can be 
  6782. dragged to the file inclusion window.  These files will be saved in the
  6783. applications directory and any modules that are included will have an
  6784. RMEnsure in the !Run file.
  6785.  
  6786. To load, double click on the !CreateApp icon.  This creates a ! icon on the
  6787. icon bar.  Click with the select button on this icon to open the creation
  6788. window.  The creation window contains several items, each detailed below:-
  6789.  
  6790.   Application Name    - Click with the mouse in this icon to enter in a
  6791.                         name for the application (the ! prefix is 
  6792.                         already done for you)
  6793.  
  6794.   !Boot file          - Click on this option icon to select whether or not
  6795.                         you require a !Boot file to be created.
  6796.  
  6797.   !Run file           - Click on this option icon to select whether or not
  6798.                         you require a !Run file to be created.
  6799.  
  6800.   !Sprite file        - Click on this option icon to select whether or not
  6801.                         you require a mode 12 !Sprite file to be created.
  6802.  
  6803.   !Sprite22 file      - Click on this option icon to select whether or not
  6804.                         you require a mode 22 !Sprite file to be created.
  6805.  
  6806.   Text Logo           - Click on this option icon to select whether or not
  6807.                         you require a text logo to be included into your
  6808.                         !Boot and !Run files (see below for details).
  6809.  
  6810.   Application Size    - Click in this icon to enter the Wimpslot size (in
  6811.                         bytes) for your program.
  6812.  
  6813.   Create              - Click on the create icon to create the application.
  6814.  
  6815. Text Logos
  6816. If you wish to include your own text logo in the !Boot and !Run files you
  6817. must first design it and save it into the !CreateApp.Resources directory
  6818. as logo.  For an example of a text logo see the logo default file in this 
  6819. directory.
  6820.  
  6821. Application Sprites
  6822. If you wish to have your own default sprites for your applications, then 
  6823. alter the HiRes and LowRes sprite files in the !CreateApp.Resources 
  6824. directory.
  6825.  
  6826. File inclusion.
  6827. This allows you to include text, template, obey, sprite and BASIC files into
  6828. your applications directory.  To include a file simply drag it to the arrow
  6829. icon and !CreateApp will register it by incrementing its counter icon.  These
  6830. files are then saved in the created directory later.  If you include a
  6831. Relocatable Module, !CreateApp will automatically put a RMEnsure in your
  6832. !Run file (if the !Run file is selected).  This will ensure that the module
  6833. is loaded when the application is run. 
  6834.  
  6835. This option also allows you to load in files to take the place of any of the
  6836. default files that are produced.       
  6837.  
  6838. If you make a mistake and drag the wrong icon to the inclusion arrow, simply 
  6839. click on CLEAR to delete all the last entry.
  6840.  
  6841. Creating an application.
  6842. Once you have set your required options, click on the create icon to 
  6843. produce a drag box.  Drag the icon (by using the select button) to the 
  6844. required directory, the files will then be automatically saved.
  6845.  
  6846. ----------------------------------------------------------------------------
  6847.  
  6848. Greetings and thanks to :
  6849.  
  6850.    Richard Stagg   - For the original drag box routines and various other
  6851.                      bits!
  6852.    Caroline Kelham - For being there!
  6853.    Claire Stagg    - For endless hours of amusement...
  6854.    Maureen Stagg   - For the constant flow of tea.
  6855.  
  6856. ----------------------------------------------------------------------------
  6857.   
  6858. If you would like to make any comments about this program or suggestions
  6859. for improvement contact me on :-
  6860.  
  6861. The Power House BBS (as Simon Inns) on 0829 782667 (excellent BBS!)
  6862. JANET     INNS_C06@UK.AC.TVU.S
  6863.  
  6864. or write to me at :-
  6865.  
  6866. Resource Technology
  6867. 16 Rectory Road
  6868.    Caversham
  6869.    Reading
  6870.    Berkshire
  6871.    RG4 7SH    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | !Run file for !CreateApp
  6872. WimpSlot -min 64K -max 64K
  6873. IconSprites <Obey$Dir>.!Sprites
  6874. Set CreateApp$Dir <Obey$Dir>
  6875. Run <CreateApp$Dir>.!RunImage
  6876.  
  6877. *| Another
  6878. *|    ____________________________________
  6879. *|   /__  , ____  __  __   / __  __  __
  6880. *|   __/ / / / / /_/ / /  / / / / / _\
  6881. *|
  6882. *|                                   Productionks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ\«Info¯Save¶óMainlŒ—ÿÿÿÿ ☓ ÔýÿÿŒ=0ÿÿÿÿüýÿÿpäÿÿÿ<`G<Untitled>,ìýÿÿ€Ôÿÿÿ<`<Untitled>p‘ÿÿÿÌ°ÿÿÿ`ÇName:led>@\ÿÿÿÌ€ÿÿÿ`ÇPurpose:>H(ÿÿÿÔHÿÿÿ`ÇAuthor:>@¾þÿÿÌâþÿÿ`ÇVersion:>Ì⇦ÿÿÿd¸ÿÿÿ=a+ÿÿÿÿ ÌTÿÿÿd☓ÿÿÿ=aDÿÿÿÿÌ ÿÿÿdPÿÿÿ=a ]ÿÿÿÿ̸þÿÿdèþÿÿ=avÿÿÿÿ@þÿÿjTþÿÿ`Çtitleled>@öþÿÿÌÿÿÿcÇ⇨ÿÿÿÿ Ììþÿÿdÿÿÿ=a‹ÿÿÿÿLþÿÿŵ´þÿÿ`Çlogotled>About this program000000000011111111112222000000000011111111112222000000000011111111112222x.xx (xx AAA xxxx)xxxxxxx:000000000011111111112222æ²âZÿÿÿÿ ŷXÿÿÿü=—ÿÿÿÿV¤ÿÿÿŒìÿÿÿ`×!CreateAppd`ÿÿÿè‘ÿÿÿ=a£ÿÿÿÿ Create App!0123456789¬l:ÿÿÿÿ àýÿÿÀ=0Øÿÿÿÿ êýÿÿ,âÿÿÿÇ<Untitled>$Èÿÿÿ`øÿÿÿ9aìÿÿÿÿ$☓ÿÿÿ@´ÿÿÿaÇÿÿÿÿH☓ÿÿÿd´ÿÿÿ`Ç!ntitled>`☓ÿÿÿ´ÿÿÿ5ñ
  6883. ☓Lÿÿÿ@|ÿÿÿ`Ç!Boot File:‘ÿÿÿ@Dÿÿÿ`Ç!Run File:☓Üþÿÿ@ ÿÿÿ`Ç!Help File:d¤þÿÿ@ÔþÿÿaÇ,ÿÿÿÿDlþÿÿ@†þÿÿaÇ:ÿÿÿÿ‘4þÿÿ@dþÿÿ`ÇText Logo:FLÿÿÿv|ÿÿÿ±ÇJK FÿÿÿvDÿÿÿ±ÇYZ FÜþÿÿv ÿÿÿ±Çhi F¤þÿÿvÔþÿÿ±Çwx Flþÿÿv†þÿÿ±Çŷ F4þÿÿvdþÿÿ± Ç”„ $üýÿÿ@,þÿÿaǤÿÿÿÿHüýÿÿ†,þÿÿ5ñ¶¹8êýÿÿ´Nþÿÿ=’Ǿÿÿÿÿ8Zþÿÿ´âÿÿÿÇ<Untitled>TÊÿÿÿDúÿÿÿ9aÑÿÿÿÿJ°þÿÿVàþÿÿaÇàÿÿÿÿ⇩òþÿÿ^ºÿÿÿÇ<Untitled>Ê*ÿÿÿ~ÿÿÿ`ÇARROWled>¦¦ÿÿÿBÆÿÿÿ9`Drag heref°þÿÿŒàþÿÿaÇñÿÿÿÿfirþÿÿN¢þÿÿ=‘ÇClearled>Application CreatorApplication DetailsApplication Name:AppNameA~&$.@%#:"^*|\\\~!Sprite File:!Sprite22 File:sopton,optoffsopton,optoffsopton,optoffsopton,optoffsopton,optoffsopton,optoffApplication Size:32A0-9Create ApplicationFile InclusionInclusion Number0ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  6884.  ô ><CreateApp$Dir>.!RunImage:.ô ****************************************(.ô **        Create Application          **2.ô **               V1.71                **<.ô **           By Simon Inns            **F.ô ****************************************P:Zô  Anotherd0ô       ____________________________________n-ô      /__  , ____  __  __   / __  __  __x,ô      __/ / / / / /_/ / /  / / / / / _\ŵô…4ô                                     Production„: 6ô ------------------ Initialise ------------------ª:´ ô ** Set up the variables **¾(task_name$   = "Application Creator"È'version$     = "1.71 (27 Jan 1993)"Ò,description$ = "Sets up App directories"Ü$directory$   = "<CreateApp$Dir>"æfile_name$   = "!CreateApp"ð:ú ô ** Set up error handler **!î Ŷ òerror(task_name$, 0, ""):&ô ** Define general data blocks **"Þ block% 512, buffer% 512,Þ t 4 : $t="TASK"6:@ô ** Initialise task **J<È− "Wimp_Initialise",200, !t, task_name$ ¸ ,task_handle%T:^Aô -------------------- Load Templates -----------------------h:r+ô ** Load windows from Template File **|Þ temp_buf%  1024 * 4ŷÞ indir_buf% 1024 * 4‘Þ tempblock% 1024 * 4Œ:¤"ô ** Open the template file **®6È− "Wimp_OpenTemplate",, directory$ + ".Templates"¸:ÂBô ** Get the window details and initialise the handle array **Ì÷Öoffset% = 0àó number_windows%êÞ handle%(number_windows%)ô:þ#ô ** Read the window details **$ã counter% = 1 ¸ number_windows%   ó win_name$, block_length%‹  È− "Wimp_LoadTemplate",, temp_buf%, indir_buf% + offset%, indir_buf% + offset% + block_length%, -1,                             win_name$, 0&;  È− "Wimp_CreateWindow",,temp_buf% ¸ handle%(counter%)0  offset% += block_length%:íD:N#ô ** Close the template file **XÈ− "Wimp_CloseTemplate"b:lô ** Window information **vÜ 3€#Ü Info,256, Main,1024, Save,256⇩:“ô ** Window IDs **fi"Info = 1 : Main = 2 : Save = 3¨:²6ô ** Fill in all the details in the info window **¼kòfill_info(handle%(Info), task_name$, description$, "Simon Inns", version$, "Thanks:", "Richard Stagg")Æ:Ð@ô ** Take icon from sprite pool and place on the icon bar **ÚÞ spritename 13äTiconbar% = ¤create_icon(-1, 0, 0, 68, 68, &1700213A, file_name$, spritename, 12)î:ø%ô ** Now set up the menu items **Þ links%(10) Þ iconbarmenu_block% 256menu_height% = 0 links%(1) = handle%(Info)*`òdefine_menu_block("CreateApp¤Info¤nL¤Quit¤NN¤", links%(), iconbarmenu_block%, menu_height%)4:>ô ** Other variables **Hicon_state% = 0RÞ creation_details%(6)\Þ sprite_block% &1400f:pÞ inclusion$(99)zÞ file_types%(99)☓inclusion_no% = 0‰:—arrggh% = £¢:¬8ô ------------------ Program Core ------------------¶:À quit = £Ê ô ** Set up error handler **Ô!î Ŷ òerror(task_name$, 0, "")Þ:èõò   òpollü
  6885. ý quit:0ô ------------------ Quit ------------------:$ô ** Close down the task **.(È− "Wimp_CloseDown",task_handle%, !t8àB:L8ô ------------------ Procedures --------------------V:`2ô ** Now follows the main WIMP polling loop **j Ý òpollt:~ô ** Set up mask **⇦mask% = %1‹:†+ô ** Find out what the user is doing **¦/È− "Wimp_Poll",mask%, block% ¸ reason_code%°:º#ô ** Process the reason code **Äȉ reason_code% ÊÎ4  É  0     : ô ** Nothing has happened (Null) **Ø                 ònull_reasonâ.  É  1     : ô ** Redraw window request **ì$  É  2     : ô ** Open window **ö0                È− "Wimp_OpenWindow",,block%%  É  3     : ô ** Close window **
  6886. 3                òprocess_close_window(block%!0)/  É  4     : ô ** Pointer leaving window **0  É  5     : ô ** Pointer entering window **(4  É  6     : ô ** User has clicked on an icon **2$                òdeal_with_click<!  É  7     : ô ** Drag box **F                òdrag_endedP4  É  8     : ô ** Key pressed on owned window **Z%                ô PROCkey_pressedd@  É  9     : ô ** Something has been selected from a menu **n'                òmenu_item_selectedx1  É 10     : ô ** User has scrolled window **ŵ#  É 11     : ô ** Caret lost **…%  É 12     : ô ** Caret gained **„)  É 17, 18 : ô ** Incoming message ** 8                òincoming_message : ô ** For Quit **ª6  É 19     : ô ** Incoming message acknowledged **´Ë¾áÈ:ÒÝ òincoming_messageÜmessage_action% = block%!16æ:ðȉ message_action% Êú É 0 : ô ** Quit **          quit% = ¹ É 2 : òdatasaveack É 3 : òdrag_dropped"Ë,á6:@Ý òdeal_with_clickJ:Tô ** Extract variables **^button% = block%!8hwindow_handle% = block%!12ricon_handle% = block%!16|:ŷç window_handle% = -2 …‘   ô ** Icon bar click **Œ   ç button% = 2 …¤      ô ** Menu button **®%      ç icon_handle% = iconbar% …¸U         È− "Wimp_CreateMenu",, iconbarmenu_block%, (block%!0) - 64, menu_height%       ÍÌ   ÍÖ   :à   ç button% = 4 …ê      ô ** Select Menu **ô%      ç icon_handle% = iconbar% …þ0         òprocess_open_window(handle%(Main))       Í   Í   :&   ç button% = 1 …0      ô ** Silly Button **:      ç icon_state% = 0 …D5         òwrite_icon_sprite(-2, iconbar%, "wot?")N         icon_state% = 1X       Ìb;         òwrite_icon_sprite(-2, iconbar%, "!CreateApp")l         icon_state% = 0v       Í€   Í⇩Í“:fi&ç window_handle% = handle%(Main) …¨   ç button% = 4 …²      ç icon_handle% = 19 …¼          òcreate_applicationÆ       ÍР     ç icon_handle% = 27 …Ú"         ç inclusion_no% > 0 …ä"            inclusion_no% -= 1î?            òfill_icon(handle%(Main), 26, Ã(inclusion_no%))ø         Í       Í    ÍÍ :*$ç window_handle% = handle%(Save)4   ç button% = 4 …>      ç icon_handle% = 0 …H         òstart_drag(0)R       Í\   ÍfÍp:zá☓:‰Ý òmenu_item_selected—+ô ** Find out which item is selected **¢ȉ block%!0 Ê¬"   É 0   : ô ** Info window **¶-   É 1   : ô ** Quit has been selected **À              quit = ¹ÊËÔáÞ:èÝ òcreate_applicationò9ô ** Firstly extract the data from the main window **ü;app_name$ = "!" + ¤read_writable_icon(handle%(Main), 4)    ç ©(app_name$) <> 1 …       ã loop% = 1 ¸ 6    O     creation_details%(loop%) = ¤read_radio_icon(handle%(Main), loop% + 10)    $   í loop%    .   :    87   ç ¤read_writable_icon(handle%(Main), 18) <> "" …    B?      app_size% =  (¤read_writable_icon(handle%(Main), 18))    L   Ì    V      app_size% = 0    `   Í    j   :    t$   ô ** Close the main window **    ~+   òprocess_close_window(handle%(Main))    ⇦   :    ‹<   ô ** Insert the application name into the save box **    †.   òfill_icon(handle%(Save), 1, app_name$)    ¦   :    °$   ô ** Now open the save box **    º*   òprocess_open_window(handle%(Save))    ÄÌ    ÎH   òerror("CreateApp",2,"You have not entered an application name.")    ØÍ    âá    ì:    öCô ------------------ WIMP Library Procedures ------------------
  6887. :
  6888.  
  6889. 8ô **************************************************
  6890. 8ô ** Error handling Procedure V1.13 By Simon Inns **
  6891. 8ô **                                              **
  6892. (8ô ** Last update : 02/01/93                       **
  6893. 28ô **************************************************
  6894. <*Ý òerror(task_name$, state%, message$)
  6895. F:
  6896. P4ô **********************************************
  6897. Z4ô ** States:    0 = Fatal system error        **
  6898. d4ô **            1 = Fatal internal error      **
  6899. n4ô **            2 = Non-fatal internal error  **
  6900. x4ô **********************************************
  6901. ŵ:
  6902. …DÈ− "Hourglass_Smash" : ô ** 'cause it won't work if it's on!! **
  6903. „:
  6904.  Cô ** Check state range (because if the error handler crashes **
  6905. ªCô ** we will be in stuk!                                     **
  6906. ´*ç state% < 0 ☓ state% > 2 … state% = 0
  6907. ¾:
  6908. Èç fl = 275 € state% = 0 …
  6909. Ò   state% = 3
  6910. ÜÍ
  6911. æ:
  6912. ðȉ state% Ê
  6913. ú&  É 0 : ô ** Fatal system error **            È− 262352,,-1            !buffer%=fl P           $(buffer%+4) = ö$ + " at line " + Ã(fi) + " (" + Ã(fl) + ")" + ½(0) "9           È− "Wimp_ReportError",buffer%,1,task_name$ ,"           È− "Wimp_CloseDown" 6           à @(  É 1 : ô ** Fatal internal error ** J           È− 262352,,-1 T           !buffer%=0 ^-           $(buffer%+4) = message$ + ½(0) h9           È− "Wimp_ReportError",buffer%,1,task_name$ r"           È− "Wimp_CloseDown" |           à ŷ,  É 2 : ô ** Non-Fatal internal error ** ‘           È− 262352,,-1 Œ           !buffer%=0 ¤-           $(buffer%+4) = message$ + ½(0) ®9           È− "Wimp_ReportError",buffer%,1,task_name$ ¸  É 3 : arrggh% = ¹ ÂË Ìá Ö: à?ô ********************************************************* ê?ô ** Read Radio Icon State Procedure V1.01 By Simon Inns ** ô?ô **                                                     ** þ?ô ** Last update : 24/01/93                              ** ?ô ********************************************************* 4Ý ¤read_radio_icon(window_handle%, icon_handle%) : &!block% = window_handle% 05block%!4 = icon_handle% : ô ** The icon number ** :"È− "Wimp_GetIconState",,block% Dflags% = block%!24 Nstat% = flags% € 1<<21 Xç stat% = 0 … b   result% = ¹ lÌ v   result% = £ €Í ⇩= result% “: fi7Ý ¤read_writable_icon(window_handle%, icon_handle%) ¨: ²!block% = window_handle% ¼block%!4 = icon_handle% Æ"È− "Wimp_GetIconState",,block% Ðaddress% = block%!28 Ú= $address% ä: îLô ********************************************************************** øLô **                      Define Menu Procedure                       **Lô **                                                                  ** Lô **                          By Simon Inns                           **Lô **                    ©1993 Resource Technology                     ** Lô **                                                                  ***Lô **                           Version 2.21                           **4Lô **                         24 January 1993                          **>Lô **********************************************************************HôRLô **********************************************************************\Lô **                                                                  **fLô ** Notes.                                                           **pLô **                                                                  **zLô **   The menu details string contains the necessary details for     **☓Lô **   creating the menu.  Each item is seperated by a FN symbol.     **‰Lô **   The details are menu text, icon details.                       **—Lô **                                                                  **¢Lô **   Types:        N  =  Normal                                     **¬Lô **                 G  =  Greyed out                                 **¶Lô **                 T  =  Ticked                                     **ÀLô **                 O  =  Greyed out with tick                       **ÊLô **                 n  =  Normal followed by dashed line             **ÔLô **                 g  =  Greyed out followed by dashed line         **ÞLô **                 t  =  Ticked followed by dashed line             **èLô **                 o  =  Greyed out with tick followed by           **òLô **                       dashed line                                **üLô **                                                                  **Lô **   Followed by : L  =  Linked (handle is looked up in links%())   **Lô **                 N  =  Not linked                                 **Lô **                                                                  **$Lô **   The first 'item' in the list must be the menu's title.         **.Lô **   The menu width is calculated automatically.                    **8Lô **   The returned menu height is for icon bar menus.                **BLô **                                                                  **LLô **********************************************************************VOÝ òdefine_menu_block(menu_string$, links%(), ø menu_block%, ø menu_height%)`:j@ô ** Check the detail string length (Min = "T¤I¤NN¤" = 7) **tlength%  = ©(menu_string$)~ç length% < 7 …⇦@   òerror("Menu Define", 1, "Menu detail string too short.")‹Í†:¦Gpointer% = 1 : ô ** This points to the next character to be read **°number_of_items% = 0ºextra_height% = 0Äpixels_per_character% = 8Îcurrent_detail$ = ""Ømenu_block_pointer% = 28âlink_pointer% = 1ì:ömenu_title$ = "":òread_menu_detail(menu_string$, pointer%, menu_title$)
  6914. ç ©(menu_title$) > 12 …V   òerror("Menu Define", 1, "Menu title too long.  Incorrect menu detail string.")Í("longest_item% = ©(menu_title$)2$menu_block% = menu_title$<:Fmenu_block%?12 = 7Pmenu_block%?13 = 2Zmenu_block%?14 = 7dmenu_block%?15 = 0n<menu_block%!20 = 44  : ô ** Length in pixels per item **xmenu_block%!24 = 0ŵ:…õ„  number_of_items% += 1 .  item_start_marker% = menu_block_pointer%ª)  menu_block%!menu_block_pointer% = 0´  :¾  icon_text$ = ""È  icon_details$ = ""Ò;  òread_menu_detail(menu_string$, pointer%, icon_text$)Ü>  òread_menu_detail(menu_string$, pointer%, icon_details$)æ  ç ©(icon_details$) <> 2 …ði     message$ = "Not enought details at position " + Ã(pointer%) + ".  Incorrect menu detail string."ú+     òerror("Menu Define", 1, message$)  Í  :&  detail_one$ = Àicon_details$, 1)"&  detail_two$ = Âicon_details$, 1),  :6  È‰ detail_two$ Ê@M    É "L" : menu_block%!(menu_block_pointer% + 4) = links%(link_pointer%)J%               link_pointer% += 1T:    É "N" : menu_block%!(menu_block_pointer% + 4) = -1^  hg    message$ = "Error in detail two at position "+ Ã(pointer%) + ".  Incorrect menu detail string."r*    òerror("Menu Define", 1, message$)|  Ëŷ  :‘  È‰ detail_one$ ÊŒA    É "N" : menu_block%!(menu_block_pointer% + 8) = &07000001¤U    É "G" : menu_block%!(menu_block_pointer% + 8) = %1111010000010000000000000001®A    É "T" : menu_block%!(menu_block_pointer% + 8) = &07000001¸:               menu_block%!menu_block_pointer% = %0001ÂU    É "O" : menu_block%!(menu_block_pointer% + 8) = %1111010000010000000000000001Ì:               menu_block%!menu_block_pointer% = %0001ÖA    É "n" : menu_block%!(menu_block_pointer% + 8) = &07000001à:               menu_block%!menu_block_pointer% = %0010ê&               extra_height% += 24ôU    É "g" : menu_block%!(menu_block_pointer% + 8) = %1111010000010000000000000001þ:               menu_block%!menu_block_pointer% = %0010&               extra_height% += 24A    É "t" : menu_block%!(menu_block_pointer% + 8) = &07000001:               menu_block%!menu_block_pointer% = %0011&&               extra_height% += 240U    É "o" : menu_block%!(menu_block_pointer% + 8) = %1111010000010000000000000001::               menu_block%!menu_block_pointer% = %0011D&               extra_height% += 24N  Xg    message$ = "Error in detail one at position "+ Ã(pointer%) + ".  Incorrect menu detail string."b*    òerror("Menu Define", 1, message$)l  Ëv  :€<  $(menu_block%+(menu_block_pointer% + 12)) = icon_text$⇩'  ç ©(icon_text$) > longest_item% …“&     longest_item% = ©(icon_text$)fi  Í¨  :²  ô ** Next please!! **¼  menu_block_pointer% += 24Æý pointer% > length%Ð:Ú&ô ** Indicate last item reached **äImenu_block%!item_start_marker% = 128 + menu_block%!item_start_marker%î:øô ** Set the menu width **)menu_block%!16 = (18 * longest_item%) :ô ** Set the menu height ** ?menu_height% = (number_of_items% * 44) + 96 + extra_height%*á4:>5ô ***********************************************H5ô ** Read detail Procedure V1.01 By Simon Inns **R5ô **                                           **\5ô ** Last update : 29/12/92                    **f5ô ***********************************************pDÝ òread_menu_detail(menu_string$, ø pointer%, ø current_detail$)z:☓current_detail$ = ""‰current_character$ = ""—characters_read% = 0¢:¬õ¶  characters_read% += 1À6  current_character$ = Ámenu_string$, pointer%, 1)ÊZ  ç current_character$ <> "¤" … current_detail$ = current_detail$ + current_character$Ô  pointer% += 1Þ&  ç pointer% > ©(menu_string$)+1 …èW     òerror("Menu Define", 1, "Not enough details.  Incorrect menu detail string.")ò  Íüý current_character$ = "¤":$ô ** Check for incorrect read **ç characters_read% = 1 …$T   òerror("Menu Define", 1, "Null detail found.  Incorrect menu detail string.").Í8:BáL:V3ô *********************************************`3ô ** Fill info Procedure V1.01 By Simon Inns **j3ô **                                         **t3ô ** Last update : 29/12/92                  **~3ô *********************************************⇦VÝ òfill_info(info_handle%, name$, purpose$, author$, version$, misc_title$, misc$)‹'òfill_icon(info_handle%, 06, name$)†*òfill_icon(info_handle%, 07, purpose$)¦)òfill_icon(info_handle%, 08, author$)°*òfill_icon(info_handle%, 09, version$)º-òfill_icon(info_handle%, 11, misc_title$)Ä'òfill_icon(info_handle%, 12, misc$)ÎáØ:â3ô *********************************************ì3ô ** Fill icon Procedure V1.01 By Simon Inns **ö3ô **                                         **3ô ** Last update : 10/12/92                  **
  6915. 3ô *********************************************,Ý òfill_icon(handleno%, icon_no%, text$):(<ô ** Find the icon's indirected data and change it... **2!block% = handleno%<block%!4 = icon_no%F"È− "Wimp_GetIconState",,block%P:Z!block% = handleno%dblock%!4 = icon_no%nblock%!8  = 0xblock%!12 = 0ŵaddress% = block%!28…$address% = text$„: /ô ** Force the window to update its icon **ª#È− "Wimp_SetIconState",, block%´á¾:È6Ý òwrite_icon_sprite(handle%, icon%, sprite_name$)Ò-ô ** Note: the icon must be indirected **Ü:æ!block% = handle%ðblock%!4 = icon%ú#È− "Wimp_GetIconState",, block%sprite_n% = block%!28:$ô ** Re-write the icon's data **"$sprite_n% = sprite_name$,block%!0  = handle%6block%!4  = icon%@block%!8  = 0Jblock%!12 = 0T:^/ô ** Force the window to update its icon **h#È− "Wimp_SetIconState",, block%rá|:ŷ5ô ***********************************************‘5ô ** Open Window Procedure V1.01 By Simon Inns **Œ5ô **                                           **¤5ô ** Last update : 10/12/92                    **®5ô ***********************************************¸#Ý òprocess_open_window(handle%)Â:ÌDç handle% = handle%(Main) … òprocess_close_window(handle%(Save))Öblock%!0 = handle%à$È− "Wimp_GetWindowState",,block%ê È− "Wimp_OpenWindow",,block%ôáþ:6ô ************************************************6ô ** Close Window Procedure V1.01 By Simon Inns **6ô **                                            **&6ô ** Last update : 02/01/93                     **06ô ************************************************:$Ý òprocess_close_window(handle%)D:Nblock%!0 = handle%X!È− "Wimp_CloseWindow",,block%bál:v6ô ************************************************€6ô ** Create Icon Procedure V2.01                **⇩6ô **                                            **“6ô ** Last update : 23/01/93                     **fi6ô ************************************************¨LÝ ¤create_icon(handle%,minx%,miny%,maxx%,maxy%,flag%,data$,mblock%,len%)²:¼7ô mblock% is only used if indirected icons are usedÆAô if len% is 0, a default length is used for the block lengthÐ:Úblock%!0=handle%äblock%!4=minx%îblock%!8=miny%øblock%!12=maxx%block%!16=maxy% block%!20=flag%: ȉ (flag% € 1<<8) Ê*  É 0: $(block%+24)=data$4>  ç (flag% € 2) …H     block%!24=mblock%R     block%!28=1\     block%!32=12f     $mblock%=data$p  Ìz     block%!24=mblock%☓     block%!28=-1‰4     ç len%=0 block%!32=© data$ ⇧ block%!32=len%—     $mblock%=data$¢  Í¬Ë¶*È− "Wimp_CreateIcon",,block% ¸ handle%À =handle%Ê:ÔÝ òstart_drag(icon%)Þ(È− "Wimp_GetWindowState",, block%+12èx% = block%!16òy% = block%!28üblock%!16 = icon%(È− "Wimp_GetIconState",, block% + 12block%!16 = 5block%!20 += x%$block%!24 += y%.block%!28+=x%8block%!32+=y%Bblock%!36=0Lblock%!40=0Vblock%!44=&7FFFFFFF`block%!48=&7FFFFFFFj#È− "Wimp_DragBox",, block% + 12tá~:⇦Ý òdrag_ended‹file_name$ = app_name$†$È− "Wimp_GetPointerInfo",,block%¦block%!20=64°block%!32=0ºblock%!36=1Äblock%!40=block%!12Îblock%!44=block%!16Øblock%!48=!block%âblock%!52=block%!4ìblock%!56=-1öblock%!60=&FFF%òputzerostr(block%+64,file_name$)
  6916. :È− "Wimp_SendMessage",17,block%+20,block%!12,block%!16á:(Ýòdatasaveack2)fname$ = ¤get_zero_string(block%, 44)<:F!òsave_the_application(fname$)PáZ:d'Ý ¤get_zero_string(block%,pointer%)nstring$ = ""xõŵ  char% = block%?pointer%…1  ç char% <> 0 … string$ = string$ + ½(char%)„  pointer% += 1 ý char% = 0ª= string$´:¾ Ý òputzerostr(addr%,string$)Èãct%=0¸(©string$)-1Ò#   addr%?ct%=–Ástring$,ct%+1,1)Üíæaddr%?(©string$)=0ðáú:'Ý òsave_the_application(file_name$)!ô ** Close the save window **(òprocess_close_window(handle%(Save))":, ô ** Create the directory **6ÿ "CDIR " + file_name$@:J,ô ** Work out the directory path name **T5dir_name$ = Áapp_name$,2,(©(app_name$))) + "$Dir"^:hô ** Now do the do **r ç creation_details%(1) = ¹ …|"   ô ** Create a !boot file **ŷ'   file% = ®(file_name$ + ".!Boot")‘<   òwrite_string(file%, "| !Boot file for " + app_name$)Œ>   òwrite_string(file%, "IconSprites <Obey$Dir>.!Sprites")¤?   òwrite_string(file%, "Set " + dir_name$ + " <Obey$Dir>")®   :¸#   ç creation_details%(6) = ¹ …      Õ#file%, 10Ì6      file1% = ‰("<CreateApp$Dir>.Resources.Logo")Ö      È” ¬ Å#file1%à        char% = Œ#file1%ê        Õ#file%, char%ô       Îþ      Ù #file1%   Í   :   Ù #file%&0   ÿ "SetType " + file_name$ + ".!Boot &FEB"Í::D ç creation_details%(2) = ¹ …N!   ô ** Create a !Run file **X&   file% = ®(file_name$ + ".!Run")b;   òwrite_string(file%, "| !Run file for " + app_name$)l>   òwrite_string(file%, "IconSprites <Obey$Dir>.!Sprites")v?   òwrite_string(file%, "Set " + dir_name$ + " <Obey$Dir>")€   òmodule_include⇩]   òwrite_string(file%, "WimpSlot -min " + Ã(app_size%) + "K -max " + Ã(app_size%) + "K")“@   òwrite_string(file%, "Run <" + dir_name$ + ">.!RunImage")fi   :¨#   ç creation_details%(6) = ¹ …²      Õ#file%, 10¼6      file1% = ‰("<CreateApp$Dir>.Resources.Logo")Æ      È” ¬ Å#file1%Р       char% = Œ#file1%Ú        Õ#file%, char%ä       Îî      Ù #file1%ø   Í   :    Ù #file%/   ÿ "SetType " + file_name$ + ".!Run &FEB" Í*:4 ç creation_details%(3) = ¹ …>"   ô ** Create a !Help file **H'   file% = ®(file_name$ + ".!Help")R<   òwrite_string(file%, "| !Help file for " + app_name$)\   Ù #file%f0   ÿ "SetType " + file_name$ + ".!Help &FFF"pÍz:☓ ç creation_details%(4) = ¹ …‰#   ô ** Create a Sprite file **—7   òload_sprite("<CreateApp$Dir>.Resources.LowRes")¢   :¬,   ô ** Now rename the low-res sprite **¶A   È− "OS_SpriteOp", 26 + 256, sprite_block%, "L1", app_name$À   :ÊC   ô ** Now resave the sprite in the application's directory **ÔJ   È− "OS_SpriteOp", 12 + 256, sprite_block%, file_name$ + ".!Sprites"ÞÍè:ò ç creation_details%(5) = ¹ …ü%   ô ** Create a Sprite22 file **6   òload_sprite("<CreateApp$Dir>.Resources.HiRes")   :,   ô ** Now rename the low-res sprite **$A   È− "OS_SpriteOp", 26 + 256, sprite_block%, "H1", app_name$.   :8C   ô ** Now resave the sprite in the application's directory **BL   È− "OS_SpriteOp", 12 + 256, sprite_block%, file_name$ + ".!Sprites22"LÍV:`ç inclusion_no% > 0 …j"   ã loop% = 1 ¸ inclusion_no%t.     temp_name$ = ¤file(inclusion$(loop%))~b     ÿ "Copy " + inclusion$(loop%) + " " + file_name$ + "." + ¤file(inclusion$(loop%)) + " ~C"⇦
  6917.      :‹   í loop%†Í¦:°?ô ** Now that's all done, tidy up ready for the next one **ºinclusion_no% = 0Ä3òfill_icon(handle%(Main), 26, Ã(inclusion_no%))Î+òfill_icon(handle%(Main), 4, "AppName")Ø'òfill_icon(handle%(Main), 18, "32")â:ìáö:Ý òmodule_include
  6918. ç inclusion_no% > 0 …#   ã loopy% = 1 ¸ inclusion_no%-     ô ** Is it a Relocatable Module?? **('     ç file_types%(loopy%) = &FFA …2s        loading$ = "RMEnsure "+¤file(inclusion$(loopy%))+" 0.00 Run <"+dir_name$+">."+¤file(inclusion$(loopy%))<*        òwrite_string(file%, loading$)F
  6919.      ÍP   í loopy%ZÍdán:xÝ ¤file(name$)ŵstring$ = ""…pointer% = 0„õ   pointer% += 1ª!  string$ = Âname$, pointer%)´ý Àstring$,1) = "."¾= Âstring$,©(string$)-1)È:Ò#Ý òwrite_string(file%, string$)Üã loop% = 1 ¸ ©(string$)æ%  Õ#file%, –(Ástring$, loop%, 1))ðíúÕ#file%, 10á:%Ý òload_sprite(sprite_file_name$)"!sprite_block%=&1400,sprite_block%!4=06sprite_block%!8=16@sprite_block%!8=16Jsprite_block%!12=16T;È− "OS_SpriteOp", 266, sprite_block%, sprite_file_name$^áh:rÝ òdrag_dropped|2ç block%!20 = handle%(Main) € block%!24 = 24 …ŷ   file_type% = block%!40‘3   include_name$ = ¤get_zero_string(block%, 44)Œ   È‰ file_type% Ê¤>     É &FFF : òinclude(include_name$, file_type%) : ô Text®>     É &FEB : òinclude(include_name$, file_type%) : ô Obey¸@     É &FFA : òinclude(include_name$, file_type%) : ô ModuleÂ@     É &FF9 : òinclude(include_name$, file_type%) : ô SpriteÌ?     É &FFB : òinclude(include_name$, file_type%) : ô BASICÖB     É &FEC : òinclude(include_name$, file_type%) : ô Templateà   ËêÍôáþ: )Ý òinclude(include_name$, file_type%) ç inclusion_no% < 99 …    found% = £ &   ç inclusion_no% > 0 … 01     ô ** Has it been included already???? ** :$     ã loop% = 1 ¸ inclusion_no% D;       ç inclusion$(loop%) = include_name$ … found% = ¹ N     í loop% X   Í b   : l   ç found% = £ … v     inclusion_no% += 1 €
  6920.      : ⇩2     inclusion$(inclusion_no%) = include_name$ “0     file_types%(inclusion_no%) = file_type% fi
  6921.      : ¨8     òfill_icon(handle%(Main), 26, Ã(inclusion_no%)) ²   Í ¼Ì Æ2  òerror("CreateApp",2,"Too many inclusions!") ÐÍ Úá ä: î)ô ** T-t-t-t-t-t-that's all folks! **ÿorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      &Ô!createapp,€ ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­ªªÝÝÝÝÝÝÝÝÝÝÝÝÝݪ
  6922. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6923. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6924. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝÝ­ªªÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6925. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÔwot?,€ ÑÝÝÑ­ªªÝݪ
  6926. Úݪª
  6927. ªÝÑÝÝ­ªÝݪÝÑÝÝ­ªÝݪªªÚÑ­ªªÝÝÝÝÑÝÝÝÝݪª
  6928. ÚݪªªÚÑÝÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿarrow¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿWUUUUUuW4333CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuWUUU4!CUUUuW433!33CuV4!CuW4!CuW4"CuWDuwülogo¬Ô ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ""#"0dwffdfvg5dg$ Sg% v%t6vc&ttP7BUDDDCDDDDdgt #  f6Pq GPp"p07P`pdrvpsDDDDUtqV"r'spW0t`Pqav G d5"W0d%" GuADDaADDpPVfuPs fBdb70f!cG uFBv6BvgFDDDfwF 2DDD"ÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿðÿÿðÿÿðÿðÿÿÿðÿÿÿÿðÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿððÿÿðÿðÿðÿÿððÿððÿðÿðððÿÿÿðÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿðÿðÿÿÿððÿÿÿðÿðÿðÿÿÿðÿðÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿððÿðÿÿðÿðÿÿðÿðÿðÿÿÿÿÿðÿðÿÿÿÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿltitle#¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ033333#333333rwwwwwguwwwww waGr'0WPW waWr'0WuwwwwWuwwwwPwwwwwQ0uww'PwwwwguwwwwWPWuwwwwWPwwwwg wwwwwwuwwwwWuwwwwWaWuwwwwWPwwwwwt Vr'0WqG3333uqW333w4333Sg w0gqG3w43333#qG3333uPWqG3333uw43333# w4333SgqG3333uqG3333uaWqG3333urG333v%wPWrwwwwwwr'sr7 w0g!w0gr' wr'sPWr's&w w0gr'sr'saWr'sr'u%wPWrG3333SGrwwwwwwPwwww w0g!w0gr' wrwwwwwwPWrwwwwww"w w0gr'sr'saWr'sr'u%wPWr'0WrgUUUUSUUew!w0g!w0gr' wrgUUUUPWrgUUUU w w0gr'sr'saWr'sr'u%wPWr'0Wr' w"w0g!w0gr' wr'PWr' w w0gr'sr'saWr'srwwwww%wwwwwWr'0WPwwwwwwPwwwwguwwwww7uwwwww7r'uwwwww7PwwwwwwPWPwwwwwwuwwwww7 w0gr'sPwwwwwwaWPwwwwwwTUUUwAUUUuWa0Grwwww@wwwwg wwwwg wwwwga wwww7rwwww@Grwwww wwww7f0Vacrwwww&QGrwwww&uPW0UUUUwSUUUuWswwwpwwp0wwpQwwwguwwwppppswsws70ws70wtpwwpw70wssw0w7p0wsw0wpppp3ppppppppppwws7pwwppwp0pp0wswpw70w0wsw0wpp7wððððÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿðÿðÿðÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿððÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿððÿÿðÿÿÿÿÿðÿÿÿÿÿððððððÿÿÿÿÿÿðÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿðÿÿððÿÿÿðÿðððððÿðððððððððððÿÿÿÿðÿÿððÿðððððÿÿÿðÿÿðÿðÿÿÿðÿððððÿÿð    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     <M|!createapp!,ÔÑÝÝÑ­ªªÝѪªªÚ­ª
  6929.  ª­ªª
  6930. ª­ªª
  6931. ª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªªѪªªÚѪªªÚÝÝÝÝÝÝÑ­ªªÝѪª ÚѪª
  6932. ÚѪªªÚѪªªÚÑ­ªªÝÝÝÝÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL3title#, ¬üÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿawwwww@wwwwwW%Arwwwwwguwwwww waGrwwwwww&@wwwwwg waWr'0WPW waWr'0WAUUUUAUUUUTUUUEAUUETUUUAUUUUPWAUUUUTUUU wVUUUEAUUUUAUUUUaWAUUUUTUUUU r'0WuwwwwWuwwwwPwwwwwQ0uww'PwwwwguwwwwWPWuwwwwWPwwwwg wwwwwwuwwwwWuwwwwWaWuwwwwWPwwwwwt Vr'0W@wwwwww@wwww&twwwww'v0W@wwwtwwwww@wwwwwwPW@wwwwwwtwwwww wwwwwwW@wwwwww@wwwwwwaW@wwwwwwrwwwww%wPWr'0WqG3333uqW333w4333Sg w0gqG3w43333#qG3333uPWqG3333uw43333# w4333SgqG3333uqG3333uaWqG3333urG333v%wPWrgUUUUe7r'sr7 w0g!w0gr' wr'sPWr's&w w0gr'sr'saWr'sr'u%wPWrwwwwwwr'sr7 w0g!w0gr' wr'sPWr's&w w0gr'sr'saWr'sr'u%wPWrwwwwwwrG3333uqW33# w0g!w0gr' wrG3333uPWrG3333u&w w0gr'sr'saWr'sr'u%wPWrG3333SGrwwwwwwPwwww w0g!w0gr' wrwwwwwwPWrwwwwww"w w0gr'sr'saWr'sr'u%wPWr'0WrwwwwwWwwwwG w0g!w0gr' wrwwwwwWPWrwwwwwW w w0gr'sr'saWr'sr'u%wPWr'0WrgUUUUSUUew!w0g!w0gr' wrgUUUUPWrgUUUU w w0gr'sr'saWr'sr'u%wPWr'0Wr' w"w0g!w0gr' wr'PWr' w w0gr'sr'saWr'srG333v%w433cWr'0Wr' w"w0g!w0gr' wr'PWr' w w0gr'sr'saWr'srwwwww%wwwwwWr'0Wr'!w"wAg!wAgr' wr'PWr'!w w0gr'sr'taWr'tawwwwwvwwwwWr'0WPwwwwwwPwwwwguwwwww7uwwwww7r'uwwwww7PwwwwwwPWPwwwwwwuwwwww7 w0gr'sPwwwwwwaWPwwwwwwTUUUwAUUUuWr'0WwwwwwWuwwww&qwwwwwqwwwwwr'qwwwwwwwwwwWPWwwwwwWqwwwww w0gr'swwwwwgaWwwwwwguPWa0Grwwww@wwwwg wwwwg wwwwga wwww7rwwww@Grwwww wwww7f0Vacrwwww&QGrwwww&uPWuPW0UUUUwSUUUuWvwwwwawwwwWpwpwwQwwwguwwwwwppwppp233 333pppppwpppwpwpppwwpwwpwpwwppppwwppwpppppppppppppppppppwwppwwppwppppwpwpwwwpwwppwðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿðÿÿÿÿðÿðÿðÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿððÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿÿÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿðÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿððÿðððÿÿÿÿðÿÿÿðÿÿðððððÿÿðÿðððÿðÿðððÿÿðÿÿðÿðÿÿðÿÿððððÿÿððÿðððððððÿÿððððððððððððððÿÿÿÿððÿÿððÿððððÿðÿðÿÿÿðÿÿðÿÿððÿÿðÿðÿÿðÿÿ|wot?!,ÔÑÝÝÑ­ªªÝѪªªÚ­ª
  6933.  ª­ªª
  6934. ªÚ­ªª
  6935. ªÚÝÝ­ªªª­ªÚªªª­ªª­ªª­ªª­ªª­ªÚªªª­Ý­ªªªÝݪªªÚݪªªªÚݪªªªѪªªÚѪªªÝÑÝÝÝÝÝÝÑ­ªªÝѪª ÚѪª
  6936. ÚѪªªÚѪªªÚÑ­ªªÝÝÝÝÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüarrow!¬TÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿqwwwwwWUUUUUuWDDDDDuW4333CuW4"""CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuW4!CuqwwW4!CuwwWUUU4!CUUUuqEDD4!CDDTW433!33CuqE#"!"2TV4!CuqE#2TW4!CuaE#2TW4"CuqE3TWDuqUwÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿìlogo+¬ÌÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ"DE40uwwwww6Pwg4" 2Twg@w60vWw6 v7s7 w@w`Wsu gP7qvvq W1"""""""3G` egffw vffgwwvsD!PGc@svP0u``W$@q"`@'07`p"pGP`prrf`pqFcvp0rQdtptfff&Ftqe"t7srF`'rp'0G tpv@t`@s`u`q`cv07007AWW@wDDv`gD407vpww&rrww`t`qp7v@Gd Wv``r u@WE@0WuPvs`W2@guu0wtWbwcgcwF2vwSwwwfwwW Tfgf4ÿÿÿÿðÿðÿÿÿÿÿÿÿðÿðÿÿÿÿðÿÿÿÿðÿðÿÿðÿÿðÿðÿÿðÿÿðÿÿÿðÿðÿðÿðÿðÿÿÿðÿðÿðÿðÿÿÿÿðÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿðÿÿðÿðÿÿððÿÿðððÿÿÿðÿÿððÿðÿðÿðððÿððÿðÿðÿððÿÿÿðÿððÿÿÿÿðÿððÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿðÿðÿðÿÿÿððÿÿðÿÿÿððÿðÿðÿðÿðÿÿðÿðÿðÿðÿÿÿðÿðÿðÿðÿÿÿÿðÿÿÿðÿðÿÿðÿÿÿÿÿÿÿððÿÿðÿðÿððÿÿðÿðÿÿðÿðÿÿððÿðÿÿðÿðÿðÿÿððÿðÿÿðÿÿðÿðÿÿðÿðÿÿÿÿðÿðÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿðÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickHiResDùÿÿ¿'¡a⇦8LogoDÿÿÿ¾#Xb%8LowResDùÿÿLJaà
  6937. 8HiResDùÿÿ¿'¡a⇦8LogoDÿÿÿ¾#Xb%8LowResDùÿÿLJaà
  6938. 84ResourcesResourcesNick…|h1!,ÔÑÝÝÑ­ªªÝѪªªÚ­ª
  6939.  ª­ªª
  6940. ª­ªª
  6941. ª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªª­ªªªªѪªªÚѪªªÚÝÝÝÝÝÝÑ­ªªÝѪª ÚѪª
  6942. ÚѪªªÚѪªªÚÑ­ªªÝÝÝÝÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |            |___|      ^  ^  ^
  6943. |       ___  /"."\  ___  \ | /
  6944. |      /   \ \ - / /   \  \|/
  6945. |      |    \_|_|_/    |   |         ___________________________________
  6946. |      |    /     \    |   |        /__  ' ____  __  __   / __  __ __
  6947. |      |   //     \\   |   |        __/ / / / / /_/ / /  / / / / / _\
  6948. |      |   \|     |/   |   |
  6949. |       \___O\___/O___/    |               Professional Problem
  6950. |            /   \         |               INNS_C06@UK.AC.TVU.S
  6951. |            | | |         |
  6952. |            |_|_|         |
  6953. |           /__|__\        |rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔl1,€ ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ­ªªÝÝÝÝÝÝÝÝÝÝÝÝÝݪ
  6954. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6955. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6956. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝÝ­ªªÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝݪª
  6957. ÚÝÝÝÝÝÝÝÝÝÝÝÝݪªªÚÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!HelpEÿÿÿÙ⇦ÁŒg9!RunEëÿÿ⇦¬!–¶9GambaraEøÿÿG‰ÁŒ|        9TemplatesEìÿÿM®ÁŒü9!HelpEÿÿÿÙ⇦ÁŒg9!RunEëÿÿ⇦¬!–¶9GambaraEøÿÿG‰ÁŒ|        9TemplatesEìÿÿM®ÁŒü9!Gambara!GambaraNickŒ                                   Gambara
  6958.                                    ———————
  6959.  
  6960. 0.02 (25-Sep-1994) © David G Jones
  6961.  
  6962. This assembly application will simply present a window displaying information on the pointer. Specifically:
  6963.  
  6964.     • X & Y pointer positions
  6965.     • State of mouse buttons
  6966.     • Window under the pointer
  6967.     • Task which owns this window
  6968.     • Icon under the pointer
  6969.  
  6970. In the final three cases a name is associated with the numerical data if possible. The Task & Window numbers are in Hex, the rest decimal.
  6971.  
  6972. And thats about it really. Nothing earth shattering but what more could you ask for...
  6973.  
  6974. —— Releases —————————————————————————————————————————————————————————
  6975. 0.01 (18-Sep-94)
  6976. 0.02 (25-Sep-94)  First release into the big world
  6977.  
  6978. The customary set of ideas for future outlandish additions:
  6979. • More in depth display of information, ie Icon flags. Though there are a number of good apps for that already.
  6980. • Allow the delay between updating the display to be set.
  6981. • Totally over the top detection of mouse buttons, so always informed of changes.
  6982.  
  6983. —— FreeWare —————————————————————————————————————————————————————————
  6984. This application is freeware. You can copy it in its unmodified complete state.
  6985.  
  6986. If you have any comments on this utility then  please get in contact.
  6987.  
  6988.     David G Jones
  6989.     160 Hazelwood Drive
  6990.     ST. ALBANS
  6991.     Hertc AL4 0UZ
  6992.     0727 - 852 548
  6993.     David.GJones@launchpad.unc.eduorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | Veronica Gambara
  6994.  
  6995. RMEnsure UtilityModule 3.10 Error This application is only suitable for use with RISC OS 3.10 or later versions
  6996.  
  6997. WimpSlot -min 32K -max 32K
  6998. Run <Obey$Dir>.GambaraWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ïРálÀ•â    Ì…â  ã6€â—fl冠•â,ŵâÀ0•â<◰âÀïx•åf•âÙï   á<ŵâÀ á á@àã'^•â` ãÛï… Ŵâ8‹èì •â,ŵâ(ŵ謠Ŵâ8‹èà •â,ŵâ(ŵè[/Ŵâ8‹èÔ •â,ŵâ(ŵèc/Ŵâ8‹èÈ •â,ŵâ(ŵès/Ŵâ8‹è¼ •â,ŵâ(ŵè{/Ŵâ8‹è° •â,ŵâ(ŵè⇧/Ŵâ8‹è¤ •â,ŵâ(ŵè›/Ŵâ8‹è— •â,ŵâ(ŵèÁï̕尕引åÔ•åŴåËïÅï   á<ŵâÀ á á@àã^•â` ãÛïÁïÈ•åÚïkêBïVj` flå €àPflå•âŴâáïOj0ã`
  6999. 0ãÅJjðÿÿ
  7000. 0ã*
  7001.     0ã2
  7002. 0ã0;
  7003. 0ã<
  7004. æÿÿê09TASKVeronica GambaraÁå<Obey$Dir>.TemplatesRãGambarap(ÿÿÿÿInfo€ÿÿÿÿQuit’åãÀÿÿ
  7005.  ’å@ Bâ0’ålOâÔïºÿÿzê’å0ã
  7006. Ïïj’åã±ÿÿ
  7007. †OâÔï®ÿÿzê ’å2ãªÿÿøåôåÝïï ãü Oâßï1ã¡ÿÿ
  7008. õÿÿêpointerinfoÆÏïêÿÿjø’耠ã☓flå0á
  7009. € ã á3•â’èÜïßÿÿj0ë`flå0á
  7010. € ã á1•â’èÜïÕÿÿj&ë<flå0á
  7011. € ã‘ àã
  7012. ã  ãÍ•• ŴåÍïÆÿÿjã
  7013. ã  ã1•Ç• ŴåÍï½ÿÿjã
  7014. 㠠㻕¾• ŴåÍï´ÿÿjÀflå0ávã[°flå0á’
  7015. € ã ãJOâ  ã  Ŵå  á° á0 áçï¢ÿÿj 0 á° á°á#•â’èÔÙŒÿÿjëë    € ã °á€&”ÿÿj%•◰•â’èùëâë0flå0á9
  7016. € ã á•â’èPãÔÏÛßŶÿÿjÖë  á`ŴåÌï€ÿÿj € ã~•âVãÊ#
  7017. vã!º¿•âfâ@â’ç€àê< †åãã
  7018.  ãL…
  7019. ãT†1
  7020. -é  áL†åt#åV?•â›è@Dâñï ãÃç € ã á ☓â½èªëêJ•â’è¼ë¥ë@flå0á5
  7021. € ã áC•â’èÜïJÿÿjœë€ ãG•âWãªwã$ºM•âgâ@â’ç€àê"…à\ ŵâ‹åããØ•
  7022.  ãŵ
  7023. ã‹0¸•
  7024. -é  á‹å\$å€0•â›è@Dâñï ãÃç á ☓â½èqëêT•â’è◰ëlë8ãH•ø€½þÿê  áFailedê   4>CIS_o◰”¡³ÉÜWork areaBackCloseTitle barToggle sizeScroll up arrowVertical scroll barScroll down arrowAdjust sizeScroll left arrowHorizontal scroll barScroll right arrowOuter window frameBackgroundIcon bar?@-éx•â4åŴèÎï§þÿjŴâ<’è ŵâ0◰â@DâPEâAâ<ŴèAâÉï0ãÊ0ãüÿÿ—þÿj?€ýè@-é Bâ0Ðä0Áä Sã€ý8 RâùÿÿÊ0 ã0Áå€ýè    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿD§pointerëInfoüJôÿÿÿÿ XüÿÿÔ='Gambarad>eÈÿÿÿ|ôÿÿÿMouset☓Äÿÿÿøÿÿÿ5X` .Äÿÿÿ²øÿÿÿ5ck
  7025. Èÿÿÿ.ôÿÿÿ:mment:ÎÄÿÿÿîøÿÿÿ5noöÄÿÿÿøÿÿÿ5rsÄÿÿÿ>øÿÿÿ5vw…ÿÿÿ|¸ÿÿÿTaskw☓⇦ÿÿÿ&¼ÿÿÿ=zŵ    .⇦ÿÿÿ>¼ÿÿÿ5ŶŷPÿÿÿ||ÿÿÿWindow☓Lÿÿÿ&€ÿÿÿ=⇨’    .Lÿÿÿ>€ÿÿÿ5“”ÿÿÿ|@ÿÿÿIconnt☓ÿÿÿ&Dÿÿÿ=— .ÿÿÿ>Dÿÿÿ5£¤1234567R21234567R2r2r2r21234567R2R21234567R2R21234567R2R2 ì øŶ◰☓ àýÿÿl=0lØ—ÿÿÿÿ
  7026. Œüþÿÿf,ÿÿÿ=«¾ŒÌÿÿÿfüÿÿÿ=ÁÒŒ—ÿÿÿfÈÿÿÿ=ÕéŒdÿÿÿf“ÿÿÿ=ìÐÿÿÿ‹øÿÿÿName†ÿÿÿ‹ÄÿÿÿPurposehÿÿÿ‹‘ÿÿÿAuthor
  7027. ÿÿÿ‹(ÿÿÿVersionŒ0ÿÿÿf`ÿÿÿ=    
  7028. 4ÿÿÿ‹\ÿÿÿLicenceAbout this program0.02 (25-Sep-1994)R2Veronica GambaraR2Pointer informationR2© David G Jones, 1994R2FreeWareR2    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     #Nick!HelpDÿÿÿ¦:FuK:!RunDëÿÿpEu—:!RunImageDûÿÿ+I-^];!SpritesCùÿÿû“=X:archivesGýÿÿ/ÏÙà<goferDøÿÿX» n•RopreludeGýÿÿâéÙàpReadMeDÿÿÿ ¥Fuœ
  7029. :TaskWindowBúÿÿ“kó (rTemplatesDìÿÿöÅDuC:!HelpDÿÿÿ¦:FuK:!RunDëÿÿpEu—:!RunImageDûÿÿ+I-^];!SpritesCùÿÿû“=X:archivesGýÿÿ/ÏÙà<goferDøÿÿX» n•RopreludeGýÿÿâéÙàpReadMeDÿÿÿ ¥Fuœ
  7030. :TaskWindowBúÿÿ“kó (rTemplatesDìÿÿöÅDuC:!Gofer!Gofer#Nick¶GOFER
  7031. =====
  7032.  
  7033. This is the Archimedes port of Gofer 2.28 by Bryan Scattergood.
  7034. The original code is © Mark Jones, and the Wimp front-end is
  7035. © Robin Watts.
  7036.  
  7037. The original source code, full documentation and a set of
  7038. example files are available from the Yale FTP area.
  7039.  
  7040. See the ReadMe file for more details.
  7041.  
  7042. This version 4 March 1993.
  7043.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WimpSlot -min 96K -max 96K
  7044. | Load all the modules
  7045. if "<System$Path>" = "" then Error 0 System resources cannot be found
  7046. RMEnsure FPEmulator 2.80 RMLoad System:Modules.FPEmulator
  7047. RMEnsure FPEmulator 2.80 Error 0 FPEmulator 2.80 required
  7048. RMEnsure SharedCLibrary 3.75 RMLoad System:Modules.Clib
  7049. RMEnsure SharedCLibrary 3.75 Error 0 Shared C Library 3.75 required
  7050. RMEnsure TaskWindow 0.29 RMLoad <Obey$Dir>.TaskWindow
  7051. RMEnsure TaskWindow 0.29 Error 0 Task Window 0.29 required
  7052. | Where is everything
  7053. Set Gofer$Dir <Obey$Dir>
  7054. Set Gofer <Gofer$Dir>.prelude.Standard
  7055. | Start the Wimp code
  7056. Set Alias$GoGofer <Gofer$Dir>.Gofer -pGofer> -. %*0 >rawvdu:
  7057. <Gofer$Dir>.!RunImage
  7058. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     \L!gofer ,< pwwww€⇦⇦pp·»»»⇧»»»»øð°»»»»»⇦¹»»»»⇧𹻜−¹» »»−−»»ð¹»»œ¹»œ»»î−»»ð¹»»œ−−−»»à−»»¹»»»°−»»à−»»¹»»»»»œ»»à−»»¹»œ¹»»œ»»à−»»¹»œ−¹»œ»»à−»»¹»»œ¹»œ»»à−»»¹»ëœ¹»œ»»»−»»¹»ëœ¹»œ»»»−»»‘»»»»œ−¹»»»» ‘¹»»»ëœ−»»»»‘‘−−−~w−−−−    àîîîîðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿðÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     A Quick Introduction to Gofer
  7059. =============================
  7060.  
  7061. Gofer is a Haskell-like functional programming language, written by Mark
  7062. Jones at Oxford.  It is a lazy functional language in the style of Orwell and
  7063. Miranda, but adds an overloading system and proper continuation-based I/O to
  7064. the Orwell system taught at Oxford.
  7065.  
  7066. The archives subdirectory includes Sparkives of the the demo files, several
  7067. revised preludes, the ascii manual and the complete source code suitable for
  7068. use with Desktop C.
  7069.  
  7070. Note that the prelude has changed from earlier releases (2.21-2.23), has
  7071. moved into a subdirectory so Gofer can be made to default to literate
  7072. programming without rewriting the prelude, and see also the release228
  7073. documentation in the Docs archive.
  7074.  
  7075. Changes from Gofer 2.28
  7076. =======================
  7077.  
  7078. More bug fixes; see READMEorig and the changes file in the documentation
  7079. archive for more detail. Acorn patches have been integrated back into
  7080. distribution version. Filename 'extension' handling has been added since the
  7081. 2.28 beta release.
  7082.  
  7083. A GofC translator from Gofer to C is now included.  The Acorn port attempts
  7084. to use directories to replace filename extensions, as in Desktop C, but GofC
  7085. defaults to appending the extension if no directory field occurs in the input
  7086. filename; this may cause problems if the input filename had 10 characters.
  7087. Note that GofC is supplied only in source code.
  7088.  
  7089. Gofer now defaults to reprinting rather than using the .... loading display. 
  7090. The Acorn port defaults to printing the dots, but the WIMP version overrides
  7091. this and redirects the output to the rawvdu drivers (which is the easiest way
  7092. to get the backspacing to work properly.)
  7093.  
  7094. The program now seems to need more memory; this is true across all platforms,
  7095. but it does seem to run more quickly as a consequence. I suspect that the
  7096. default setup is no longer usable on a 2M machine; however this is an
  7097. improvement as the early beta was unusable on a 4M machine :-(.  Reducing the
  7098. heap size to 50000 cells should help.
  7099.  
  7100. Changes from Gofer 2.22
  7101. =======================
  7102.  
  7103. All versions
  7104.   Minor bug fixes again bringing the language closer to Haskell.
  7105.  
  7106. Archimedes version
  7107.   Revised Wimp front end, which can be killed even if the task fails to
  7108. start (click close twice) and which handles the caret more successfully.
  7109.  
  7110. Changes from Gofer 2.21
  7111. =======================
  7112.  
  7113. All versions
  7114.   Mainly minor bug fixes and parser changes to bring the language closer to
  7115. Haskell. (In particular the infinite loop during string output seems to have
  7116. gone ... :-)
  7117.  
  7118. Archimedes version
  7119.   The port has been re-implemented from the ground up, with most of the
  7120. dependencies restricted to one source file. The :! shell command mechanism
  7121. has been enabled (due to popular demand).  The Wimp front-end has been
  7122. added, and is due to Robin Watts; Gofer can be run in the old way by placing
  7123. the binary on your Run$Path and setting the Gofer environment variable to
  7124. point to the prelude.
  7125.  
  7126. Comments
  7127. ========
  7128.  
  7129. Comments on the Arc port can be sent to Bryan.Scattergood@uk.ac.ox.prg.
  7130. Comments on Gofer in general should be sent to Mark.Jones@uk.ac.ox.prg
  7131. and will be forwarded automatically from there.
  7132.  
  7133. Versions are also available for SUN3/4 workstations and IBM-PCs and can be
  7134. obtained from the Oxford University FTP area.  A Macintosh version has been
  7135. announced on UseNet, but no further details are available to me.  Versions
  7136. for many platforms are now available;  the easiest way to find out if
  7137. your favourite machine is supported is to grab the sources and see.
  7138. The 2.28 sources are available from Yale by FTP.
  7139.  
  7140. Disclaimers
  7141. ===========
  7142.  
  7143. This software is provided as is, with all the usual provisos.
  7144.  
  7145. Miranda, SUN and IBM are probably registered trademarks of
  7146. Research Software, SUN Microsystems and International Business
  7147. Machines respectively.
  7148.  
  7149. Thanks for help with the Acorn version go to Mark Jones for the original
  7150. program, Robin Watts for the wimp front-end, and numerous members of Oxford
  7151. University for helping debug early versions.
  7152.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿD†infois [Binàcmain *    Bŵ⇦ÿÿÿÿ☓ üÿÿ=0Øÿÿÿÿ ¤4ÿÿÿTdÿÿÿ=0·OKtitled>þŒÌÿÿÿ„üÿÿÿ=aëÿÿÿÿ(Œ—ÿÿÿ„Èÿÿÿ=aöÿÿÿÿ(Œdÿÿÿ„“ÿÿÿ5aÿÿÿÿ(ŒÈþÿÿ„øþÿÿ5a'ÿÿÿÿ>ÐÿÿÿŒøÿÿÿ9Name:led>þ†ÿÿÿŒÄÿÿÿ9Purpose:>þhÿÿÿŒ‘ÿÿÿ9Author:d>þÌþÿÿŒôþÿÿ9Version:>þŒ0ÿÿÿ„`ÿÿÿ5aFÿÿÿÿ(Œüþÿÿ„,ÿÿÿ5adÿÿÿÿ)Œ“þÿÿ„Äþÿÿ5a}ÿÿÿÿAbout this ProgramGofer 2.28Functional Programming Wimp Code: © Robin Watts Wimp Code: 0.03 (18-Dec-1992) ARM Port : Bryan Scattergood Original : © Mark Jones Gofer    : 2.28 ( 4-Mar-1993)bÖ„8þÿÿÿÿÿÿÿ üÿÿ=0XÿÿÿÿGofer 2.28derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  7153. ô >$.TMP.!Gofer.!RunImage:/ô Multitasker for !Sml (c) 1992 Robin Watts(>ô Adapted for Gofer 2.22 18 January 1992 Bryan Scattergood2:<ô Gofer configurationF,ô Increase if use more than 100000 cellsPgoferWimpSlot% = 1664Z:dÞ screen% 80*32nÞ indir% 1024xÞ windata% 4096ŵÞ block% 256…Þ code% 10000„Þ menublock% 2048 Þ cblock% 24ª:´9ô ON ERROR MODE MODE:REPORT:PRINT;" at line ";ERL:END¾òassembleÈòinitialiseÒògetmodevarsÜ:æ
  7154. òconchð:úòclosedownà:Ýòinitialise"EÈ−"Wimp_Initialise",200,&4B534154,"Gofer Tasker" ¸ version%,task%,á6:@ÝòclosedownJ&È−"Wimp_CloseDown",task%,&4B534154Tá^:h Ýòconchr
  7155. òsetup|òloadwindowsŷòinitmenus‘òopenwindow(mainwh%,¹)Œògrabcaret¤ òvdu(12)® !ypos=31¸òlaunchgoferÂõÌ
  7156.  òpollÖý closedown%àòclosealltasksêáô:þ Ýòsetupsize%=(!xmax+1)*(!ymax+1)closedown%=£!caretowned%=0&prompt%=£0taskstarted%=£:áD:NÝòloadwindowsX2È−"Wimp_OpenTemplate",,"<Gofer$Dir>.Templates"b%mainwh%=¤doloadtemplate(0,"main")l%infowh%=¤doloadtemplate(1,"info")vÈ−"Wimp_CloseTemplate"€á⇩:“ݤdoloadtemplate(n%,ident$)fiê whandle%¨cÈ−"Wimp_LoadTemplate",,windata%+n%*2048,indir%+n%*512,indir%+n%*512+512,-1,Àident$+Ä12,½(0))),0²6È−"Wimp_CreateWindow",,windata%+n%*2048 ¸ whandle%¼=whandle%Æ:РÝòopenwindow(wh%,tooldsize%)Ú!block%=wh%äç tooldsize% …î# È−"Wimp_GetWindowInfo",,block%ø block%!28=-1Í È−"Wimp_OpenWindow",,block%á :*
  7157. Ýòpoll41È−"Wimp_Poll",%110001,block% ¸ reason%,block%>ȉ reason% ÊHÉ 1R òredrawwindow\É 2f òopenwindow(!block%,£)pÉ 3z òclosealltasks☓É 6‰ òmouseclicked—É 8¢ òkeypressed¬É 9¶ òmenuselectedÀÉ 11Ê ògaincaretÔÉ 12Þ òlosecaretèÉ 17,18,19ò È‰ block%!16 Êü É 0  òclosealltasks É 8 É &400C1$  ògetmodevars. É &808C18  òchildoutputB É &808C2L  òchildstartedV É &808C3`  òchilddiedj ËtË~á⇦:‹Ýòredrawwindow†*È− "Wimp_RedrawWindow",,block% ¸ more%¦È” more%<>0°. !minx%=(block%!28-block%!4+block%!20)Ŵ 16º. !maxx%=(block%!36-block%!4+block%!20)Ŵ 16Ä0 !miny%=-(block%!40-block%!16+block%!24)Ŵ 32Î2 !maxy%=-(block%!32-block%!16+block%!24)Ŵ 32+1Ø Ö redrawâ+ È− "Wimp_GetRectangle",,block% ¸ more%ìÎöá:
  7158. Ýòclosealltasksç taskstarted% … block%!20=1( block%!16=&808C02 block%!0=28< block%!12=0F block%!24=4P+ È−"Wimp_SendMessage",17,block%,handle%Z taskstarted%=£dÌn òchilddiedxÍŵá…:„Ýòassemble ã pass%=0 ¸ 2 ⇦ 2ª P%=code%´[OPT pass%¾ .screenÈ                 EQUD screen%Ò.vduÜ                EQUD 0æ    .xmaxð                EQUD 79ú    .ymax                EQUD 31 .xwinmax                EQUD 79" .xwinmin,                EQUD 06 .ywinmax@                EQUD 31J .ywinminT                EQUD 0^    .xposh                EQUD 0r    .ypos|                EQUD 0ŷ.vdusupressed‘                EQUD 0Œ.followingbytes¤                EQUD 0®.numbertocome¸                EQUD 0Â.queueaddrÌ                EQUD queueÖ
  7159. .queueà                EQUD 0ê                EQUD 0ô                EQUD 0þ                EQUD 0.bytestoignore                EQUD 0H                                        \ Enter with Vdu Char in vdu&@                                        \ No exit Conditions0
  7160. .dovdu:+                STMFD R13!,{R0-R12,R14}DN                LDRB R0,vduXb(                LDR R1,bytestoignorel                CMP R1,#0v"                BNE ignorebyte€⇩)                LDR R1,followingbytes“                CMP R1,#0fi!                BNE following¨²)                CMP R0,#6  :BEQ vduon¼'                LDR R1,vdusupressedÆ+                CMP R1,#1  :BEQ ignore0ÐÚ*                CMP R0,#127:BEQ deleteä-                CMP R0,#32 :BGE printableî+                CMP R0,#0  :BEQ ignore0ø8                CMP R0,#1  :ìQ R0,#1     :BEQ ignore+                CMP R0,#2  :BEQ ignore0 +                CMP R0,#3  :BEQ ignore0+                CMP R0,#4  :BEQ ignore0 +                CMP R0,#5  :BEQ ignore0*-                CMP R0,#7  :BEQ printable4-                CMP R0,#8  :BEQ backspace>0                CMP R0,#9  :BEQ forwardspaceH,                CMP R0,#10 :BEQ linefeedR*                CMP R0,#11 :BEQ upline\'                CMP R0,#12 :BEQ clsf+                CMP R0,#13 :BEQ creturnp+                CMP R0,#14 :BEQ ignore0z+                CMP R0,#15 :BEQ ignore0☓+                CMP R0,#16 :BEQ ignore0‰8                CMP R0,#17 :ìQ R0,#1     :BEQ ignore—8                CMP R0,#18 :ìQ R0,#2     :BEQ ignore¢8                CMP R0,#19 :ìQ R0,#5     :BEQ ignore¬+                CMP R0,#20 :BEQ ignore0¶*                CMP R0,#21 :BEQ vduoffÀ8                CMP R0,#22 :ìQ R0,#1     :BEQ ignoreÊ8                CMP R0,#23 :ìQ R0,#9     :BEQ ignoreÔ8                CMP R0,#24 :ìQ R0,#8     :BEQ ignoreÞ8                CMP R0,#25 :ìQ R0,#5     :BEQ ignoreè)                CMP R0,#26 :BEQ vdu26ò+                CMP R0,#27 :BEQ ignore0ü.                CMP R0,#28 :BEQ textwindow    8                CMP R0,#29 :ìQ R0,#4     :BEQ ignore    (                CMP R0,#30 :BEQ home    '                CMP R0,#31 :BEQ tab    $ .ignore0    .*                LDMFD R13!,{R0-R12,PC}    8
  7161. .vduon    B                MOV R0,#0    L'                STR R0,vdusupressed    V                B   ignore0    ` .delete    j3                MOV R0,#8  :STR R0,vdu:BL dovdu    t3                MOV R0,#32 :STR R0,vdu:BL dovdu    ~3                MOV R0,#8  :STR R0,vdu:BL dovdu    ⇦                LDR R1,xpos    ‹                LDR R2,ypos    †"                BL  changedbox    ¦                B   ignore0    °.backspace    º                LDR R0,xpos    Ä                LDR R1,ypos    Î"                LDR R2,xwinmin    Ø"                LDR R3,ywinmin    â"                LDR R4,xwinmax    ì"                LDR R5,ywinmax    ö                 SUB R0,R0,#1
  7162.                 STR R0,xpos
  7163.  
  7164.                 CMP R0,R2
  7165.                 BGE ignore0
  7166.                 MOV R0,R4
  7167. (                STR R0,xpos
  7168. 2                 SUB R1,R1,#1
  7169. <                STR R1,ypos
  7170. F                CMP R1,R3
  7171. P                BGE ignore0
  7172. Z)                BL  scrolldownoneline
  7173. d                MOV R1,R3
  7174. n                STR R1,ypos
  7175. x                B   ignore0
  7176. ŵ.forwardspace
  7177. …                LDR R0,xpos
  7178. „                LDR R1,ypos
  7179.  "                LDR R2,xwinmin
  7180. ª"                LDR R3,ywinmin
  7181. ´"                LDR R4,xwinmax
  7182. ¾"                LDR R5,ywinmax
  7183. È                 ADD R0,R0,#1
  7184. Ò                STR R0,xpos
  7185. Ü                CMP R0,R4
  7186. æ                BLE ignore0
  7187. ð                MOV R0,R2
  7188. ú                STR R0,xpos                  ADD R1,R1,#1                 STR R1,ypos                 CMP R1,R5 "                BLE ignore0 ,'                BL  scrolluponeline 6                MOV R1,R5 @                STR R1,ypos J                B   ignore0 T.linefeed ^                MOV R0,#13 h                STR R0,vdu r                BL dovdu |                LDR R0,xpos ŷ                LDR R1,ypos ‘"                LDR R2,xwinmin Œ"                LDR R3,ywinmin ¤"                LDR R4,xwinmax ®"                LDR R5,ywinmax ¸                 ADD R1,R1,#1                 STR R1,ypos Ì                CMP R1,R5 Ö                BLE ignore0 à'                BL  scrolluponeline ê                MOV R1,R5 ô                STR R1,ypos þ                B   ignore0 .upline                 LDR R0,xpos                 LDR R1,ypos &"                LDR R2,xwinmin 0"                LDR R3,ywinmin :"                LDR R4,xwinmax D"                LDR R5,ywinmax N                 SUB R1,R1,#1 X                STR R1,ypos b                CMP R1,R3 l                BGE ignore0 v)                BL  scrolldownoneline €                MOV R1,R3 ⇩                STR R1,ypos “                B   ignore0 fi.cls ¨"                LDR R1,xwinmax ²"                LDR R2,ywinmax ¼!                BL changedbox Æ                MOV R4,R1 Р               MOV R5,R2 Ú"                LDR R1,xwinmin ä"                LDR R2,ywinmin î!                BL changedbox ø                MOV R3,R2                MOV R2,R1                 LDR R6,xmax                 ADD R6,R6,#1 !                LDR R8,screen*                MOV R9,#&204                MOV R1,R3> .clslp1H                MOV R0,R2R .clslp2\#                MLA R7,R1,R6,R8f                 ADD R7,R7,R0p                 STRB R9,[R7]z                 ADD R0,R0,#1☓                CMP R0,R4‰                BLE clslp2—                 ADD R1,R1,#1¢                CMP R1,R5¬                BLE clslp1¶                STR R2,xposÀ                STR R3,yposÊ                B   ignore0Ô .creturnÞ"                LDR R0,xwinminè                STR R0,xposò                B   ignore0ü .vduoff                MOV R0,#1'                STR R0,vdusupressed                B   ignore0$
  7189. .vdu26.                MOV R0,#08"                STR R0,xwinminB"                STR R0,ywinminL                STR R0,xposV                STR R0,ypos`                LDR R0,xmaxj"                STR R0,xwinmaxt                LDR R0,ymax~"                STR R0,ywinmax⇦                B   ignore0‹.textwindow†                MOV R0,#28¦)                STR R0,followingbytes°                MOV R0,#4º'                STR R0,numbertocomeÄ                B ignore0Î.textwindow2Ø#                LDRB R0,queue+3â#                LDRB R1,queue+2ì#                LDRB R2,queue+1ö!                LDRB R3,queue                LDR R4,xmax
  7190.                 LDR R5,ymax                CMP R0,R2                BGT ignore0(                CMP R1,R32                BLT ignore0<                CMP R2,R4F                BGT ignore0P                CMP R3,R5Z                BGT ignore0d"                STR R0,xwinminn"                STR R1,ywinmaxx"                STR R2,xwinmaxŵ"                STR R3,xwinmin…                B ignore0„    .home "                LDR R0,xwinminª                STR R0,xpos´"                LDR R1,ywinmin¾                STR R2,yposÈ                B ignore0Ò.tabÜ                MOV R0,#31æ)                STR R0,followingbytesð                MOV R0,#2ú'                STR R0,numbertocome                B ignore0    .tab2#                LDRB R0,queue+1"!                LDRB R1,queue,"                LDR R2,xwinmin6"                LDR R3,ywinmin@"                LDR R4,xwinmaxJ"                LDR R5,ywinmaxT                 ADD R0,R0,R2^                 ADD R1,R1,R3h                CMP R0,R4r                BGT ignore0|                CMP R1,R5ŷ                BGT ignore0‘                STR R0,xposŒ                STR R1,ypos¤                B ignore0® .ignore¸(                STR R0,bytestoignore                B ignore0Ì.ignorebyteÖ                 SUB R0,R0,#1à(                STR R0,bytestoignoreê                B ignore0ô.followingþ'                LDR R2,numbertocome$                LDR R3,queueaddr!                SUBS R2,R2,#1#                STRB R0,[R3,R2]&'                STR R2,numbertocome0                BGE ignore0:/                CMP R1,#28 :BEQ textwindow2D(                CMP R1,#31 :BEQ tab2N                B ignore0X.printableb!                LDR R5,screenl                LDR R1,xposv                LDR R2,ypos€!                BL changedbox⇩                LDR R4,xmax“                 ADD R4,R4,#1fi#                MLA R5,R4,R2,R5¨#                STRB R0,[R5,R1]²"                B forwardspace¼.scrolldownonelineÆ+                STMFD R13!,{R0-R12,R14}Ð"                LDR R1,xwinmaxÚ"                LDR R2,ywinmaxä!                BL changedboxî                MOV R3,R2ø"                LDR R1,xwinmin"                LDR R2,ywinmin !                BL changedbox                MOV R0,R1                 MOV R1,R2*"                LDR R2,xwinmax4                CMP R1,R3>&                BEQ blankfirstlineH!                LDR R4,screenR                LDR R7,xmax\                 ADD R7,R7,#1f                 SUB R8,R3,#1p .sdollp1z                MOV R9,R0☓ .sdollp2‰#                MLA R6,R7,R8,R4—#                LDRB R5,[R6,R9]¢                 ADD R6,R6,R7¬#                STRB R5,[R6,R9]¶                 ADD R9,R9,#1À                CMP R9,R7Ê                BLE sdollp2Ô                 SUB R8,R8,#1Þ                CMP R8,R1è                BGE sdollp1ò.blankfirstlineü#                MLA R6,R7,R1,R4                MOV R9,R0                MOV R5,#32 .sdollp3$#                STRB R5,[R6,R9].                 ADD R9,R9,#18                CMP R9,R2B                BLE sdollp3L*                LDMFD R13!,{R0-R12,PC}V.scrolluponeline`+                STMFD R13!,{R0-R12,R14}j                 BL scrollboxt"                LDR R2,xwinmax~"                LDR R3,ywinmax⇦"                LDR R0,xwinmin‹"                LDR R1,ywinmin†                CMP R1,R3¦%                BEQ blanklastline°!                LDR R4,screenº                LDR R7,xmaxÄ                 ADD R7,R7,#1Π                ADD R8,R1,#1Ø .suollp1â                MOV R9,R0ì .suollp2ö#                MLA R6,R7,R8,R4#                LDRB R5,[R6,R9]
  7191.                  SUB R6,R6,R7#                STRB R5,[R6,R9]                 ADD R9,R9,#1(                CMP R9,R72                BLE suollp2<                 ADD R8,R8,#1F                CMP R8,R3P                BLE suollp1Z.blanklastlined#                MLA R6,R7,R3,R4n                MOV R9,R0x                MOV R5,#32ŵ .suollp3…#                STRB R5,[R6,R9]„                 ADD R9,R9,#1                 CMP R9,R2ª                BLE suollp3´*                LDMFD R13!,{R0-R12,PC}¾.changedboxÈ+                STMFD R13!,{R0-R12,R14}Ò#                LDR R0,changed%Ü                CMP R0,#0æ&                BNE changedalreadyð&                STR R1,changeminx%ú&                STR R1,changemaxx%&                STR R2,changeminy%&                STR R2,changemaxy%                MOV R1,#1"#                STR R1,changed%,*                LDMFD R13!,{R0-R12,PC}6.changedalready@&                LDR R0,changeminx%J2                CMP R1,R0:STRLT R1,changeminx%T&                LDR R0,changemaxx%^2                CMP R1,R0:STRGT R1,changemaxx%h&                LDR R0,changeminy%r2                CMP R2,R0:STRLT R2,changeminy%|&                LDR R0,changemaxy%ŷ2                CMP R2,R0:STRGT R2,changemaxy%‘*                LDMFD R13!,{R0-R12,PC}Œ.scrollbox¤+                STMFD R13!,{R0-R12,R14}®#                LDR R0,changed%¸                CMP R0,#0Â+                BLNE changebeforescrollÌ$                LDR R0,scrolled%Ö                CMP R0,#0à                 BNE scrolledê"                LDR R0,xwinminô&                STR R0,scrollminx%þ"                LDR R0,xwinmax&                STR R0,scrollmaxx%"                LDR R0,ywinmin&                STR R0,scrollminy%&"                LDR R0,ywinmax0&                STR R0,scrollmaxy%:                MOV R0,#1D'                STR R0,scrollcount%N$                STR R0,scrolled%X*                LDMFD R13!,{R0-R12,PC}b.scrolledl"                LDR R0,xwinminv&                LDR R1,scrollminx%€.                CMP R0,R1:BNE scrollnewwin⇩"                LDR R0,ywinmin“&                LDR R1,scrollminy%fi.                CMP R0,R1:BNE scrollnewwin¨"                LDR R0,xwinmax²&                LDR R1,scrollmaxx%¼.                CMP R0,R1:BNE scrollnewwinÆ"                LDR R0,ywinmaxÐ&                LDR R1,scrollmaxy%Ú.                CMP R0,R1:BNE scrollnewwinä'                LDR R0,scrollcount%î                 ADD R0,R0,#1ø'                STR R0,scrollcount%*                LDMFD R13!,{R0-R12,PC} .scrollnewwin"                LDR R0,xwinmin &                LDR R1,changeminx%*2                CMP R0,R1:STRLT R0,changeminx%4"                LDR R0,xwinmax>&                LDR R1,changemaxx%H2                CMP R0,R1:STRGT R0,changemaxx%R"                LDR R0,ywinmin\&                LDR R1,changeminy%f2                CMP R0,R1:STRLT R0,changeminy%p"                LDR R0,ywinmaxz&                LDR R1,changemaxy%☓2                CMP R0,R1:STRGT R0,changemaxy%‰.                MOV R0,#0:STR R0,scrolled%—-                MOV R0,#1:STR R0,changed%¢*                LDMFD R13!,{R0-R12,PC}¬.changebeforescroll¶+                STMFD R13!,{R0-R12,R14}À&                LDR R0,changeminy%Ê                 SUB R0,R0,#1Ô&                STR R0,changeminy%Þ*                LDMFD R13!,{R0-R12,PC}è.scrolled%ò                EQUD 0ü.scrollminx%                EQUD 0.scrollminy%                EQUD 0$.scrollmaxx%.                EQUD 08.scrollmaxy%B                EQUD 0L.scrollcount%V                EQUD 0`.changed%j                EQUD 0t.changeminx%~                EQUD 0⇦.changeminy%‹                EQUD 0†.changemaxx%¦                EQUD 0°.changemaxy%º                EQUD 0Ä.caretowned%Π               EQUD 0Ø
  7192. .blockâ                EQUD block%ì
  7193. .xpix%ö                EQUD 0
  7194. .ypix%
  7195.                 EQUD 0
  7196. .minx%                EQUD 0(
  7197. .miny%2                EQUD 0<
  7198. .maxx%F                EQUD 0P
  7199. .maxy%Z                EQUD 0d .double%n                EQUD 0x .redrawŵ+                STMFD R13!,{R0-R12,R14}…„                 LDR R3,miny% )                CMP R3,#0:MOVLT R3,#0ª                 LDR R4,maxy%´                LDR R5,ymax¾)                CMP R4,R5:MOVGT R4,R5È                 LDR R5,minx%Ò)                CMP R5,#0:MOVLT R5,#0Ü                 LDR R6,maxx%æ                 LDR R12,xmaxð"                ADD R12,R12,#1ú+                CMP R6,R12:MOVGT R6,R12                MOV R7,#16                MOV R8,#32                 LDR R9,block""                LDR R11,screen,.redrawlp16                MOV R0,#4@#                LDR R10,[R9,#4]J#                LDR R1,[R9,#20]T!                SUB R1,R10,R1^#                MLA R1,R5,R7,R1h$                LDR R10,[R9,#24]r$                MLA R2,R3,R8,R10|$                LDR R10,[R9,#16]ŷ!                SUB R2,R10,R2‘!                SWI "OS_Plot"Œ                MOV R14,R5¤%                MLA R1,R3,R12,R11®.redrawlp2¸$                LDRB R0,[R1,R14]Â#                SWI "OS_WriteC"Ì"                ADD R14,R14,#1Ö                CMP R14,R6à!                BLE redrawlp2êô                 ADD R3,R3,#1þ                CMP R3,R4!                BLE redrawlp1*                LDMFD R13!,{R0-R12,PC}&:]:íDáN:XÝògetmodevarsb!block%=0lblock%!4=4vblock%!8=5€block%!12=-1⇩,È−"OS_ReadVduVariables",block%,block%+40“xeig%=block%!44fiyeig%=block%!48¨!xpix%=1<<xeig%²!ypix%=1<<yeig%¼"!double%=((block%!40) € 32)>>5ÆáÐ:ÚÝògrabcaretäJÈ−"Wimp_SetCaretPosition",mainwh%,-1,!xpos*8*!xpix%,-(!ypos+1)*32,32,0î!caretowned%=1øá: Ýògaincaretá :*Ýòlosecaret4á>:HÝòmouseclickedRê button%\button%=block%!8f"ç (button% € 4)=4 … ògrabcaretpç (button% € 2)=2 …z òpopupmenu☓̉ òpopdownmenu—Í¢á¬:¶ÝòkeypressedÀ ê char%Êchar%=block%!24Ôç !block%=mainwh% …Þ ç char%=(char% € 255) …è  block%!20=1ò  block%!16=&808C0ü  block%!0=28  block%!12=0  block%!24=char%,  È−"Wimp_SendMessage",17,block%,handle%$ Ì.#  È−"Wimp_ProcessKey",block%!248 ÍBÌL" È−"Wimp_ProcessKey",block%!24VÍ`áj:tÝòlaunchgofer~òtaskwindow("GoGofer")⇦á‹:†Ýòtaskwindow(str$)¦ê command$§‰command$="TaskWindow """+str$+""" -quit -wimpslot "+Ã(goferWimpSlot%)+"k -name ""Gofer Engine"" -task &"+Ã~(task%)+" -txt &00000000 -ctrl"ºÈ−"Wimp_StartTask",command$ÄáÎ:ØÝòchildstartedâhandle%=block%!4ìinputto%=block%!20ötaskstarted%=¹á
  7200. :Ýòchildoutputòdovduat(block%+20)(á2:<Ýòdovduat(addr%)F'È− "Wimp_GetCaretPosition",,cblock%Pç !cblock%=mainwh% …Z !caretowned%=1dÌn !caretowned%=0xÍŵ!changed%=0…!scrolled%=0„ã l%=0 ¸ (!addr%)-1  !vdu=l%?(addr%+4)ª  Ö dovdu´í¾ç !scrolled%>0 …ÈJ ç !caretowned% … È− "Wimp_SetCaretPosition",mainwh%,-1,-100,-100,32,0Ò¸ È− "Wimp_BlockCopy",mainwh%,!scrollminx%*16,-(!scrollmaxy%+1)*32,(!scrollmaxx%+1)*16,-!scrollminy%*32+!ypix%-!scrollcount%*32,!scrollminx%*16,-(!scrollmaxy%+1)*32+!scrollcount%*32ÜŴ È− "Wimp_ForceRedraw",mainwh%,!scrollminx%*16,-(!scrollmaxy%+1)*32,(!scrollmaxx%+1)*16,-(!scrollmaxy%+1)*32+!scrollcount%*32æ\ ç !caretowned% … È−"Wimp_SetCaretPosition",mainwh%,-1,!xpos*8*!xpix%,-(!ypos+1)*32,32,0ðÍúç !changed%>0 …s È− "Wimp_ForceRedraw",mainwh%,!changeminx%*16,-(!changemaxy%+1)*32,(!changemaxx%+1)*16,-!changeminy%*32+!ypix%Íjç !caretowned% € ¬ !scrolled% … È−"Wimp_SetCaretPosition",mainwh%,-1,!xpos*8*!xpix%,-(!ypos+1)*32,32,0"á,:6Ýòvdu(n%)@!changed%=0J !vdu=n%T Ö dovdu^ç !changed%>0 …h£ È− "Wimp_ForceRedraw",mainwh%,!changeminx%*8*!xpix%,-(!changemaxy%+1)*(8<<!double%)*!ypix%,(!changemaxx%+1)*8*!xpix%,-!changeminy%*(8<<!double%)*!ypix%+!ypix%rÍ|áŷ:‘ÝòchilddiedŒ'È− "Wimp_GetCaretPosition",,cblock%¤ç !cblock%=mainwh% …®" È− "Wimp_SetCaretPosition",-1¸ÍÂclosedown%=¹ÌáÖ:àÝòinitmenusêmenuendptr%=menublock%+64ô9òmakemenu("Gofer|Info|Quit",menuendptr%,0,menublock%)þòattachwindow(infowh%,0,0) á : *Ýòmakemenu(str$,ø ptr%,no%,menublock%) &ê str1$,off% 0str$+="|" :menublock%!(no%<<2)=ptr% Dstr1$=¤slice(str$) N$ptr%=str1$ X+ptr%?12=7:ptr%?13=2:ptr%?14=7:ptr%?15=0 bptr%!16=12*16 lptr%!20=44 vptr%!24=0 € off%=28 ⇩õ “ str1$=¤slice(str$) fi ptr%!off%=0 ¨- ç str$="" … ptr%!off%=ptr%!off% ☓ (1<<7) ² ptr%!(off%+4)=-1 ¼- ptr%!(off%+8)=&10021 + (7<<24) + (0<<28) Æ È‰ Àstr1$,1) Ê Ð
  7201.  É "*" Ú   str1$=Ástr1$,2) ä#   ptr%!off%=ptr%!off% ☓ (1<<2) î+   ptr%!(off%+8)=ptr%!(off%+8) ☓ (1<<8) ø.   ptr%!(off%+12)= (Àstr1$,§str1$,",")-1))!   ptr%!(off%+16)=0! .   ptr%!(off%+20)= (Ástr1$,§str1$,",")+1))! !   $(ptr%+off%+12)=str1$!* Ë!4 off%+=24!>ý str$=""!Hptr%+=off%!Rá!\:!f,Ýòattachmenu(submenu%,item%,parentmenu%)!p
  7202. ê ptr%!z$ptr%=menublock%!(parentmenu%<<2)!☓/ptr%!(32+item%*24)=menublock%!(submenu%<<2)!‰á!—:!¢-Ýòattachwindow(window%,item%,parentmenu%)!¬
  7203. ê ptr%!¶$ptr%=menublock%!(parentmenu%<<2)!Àptr%!(32+item%*24)=window%!Êá!Ô:!Þݤslice(ø str$)!èê return$!òreturn$=Àstr$,§str$,"|")-1)!üstr$=Ástr$,§str$,"|")+1)" =return$":"Ýòpopupmenu"$?È−"Wimp_CreateMenu",,menublock%+64,(block%!0)-64,(block%!4)".á"8:"BÝòpopdownmenu"LÈ−"Wimp_CreateMenu",,-1"Vá"`:"jÝòmenuselected"tȉ block%!0 Ê"~É 1"⇦ òclosealltasks"‹Ë"†áÿ  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickDemosGýÿÿ2ÏÙà=DocsGýÿÿñÜÙà[PreludesGýÿÿ‰ãÙàkDemosGýÿÿ2ÏÙà=DocsGýÿÿñÜÙà[PreludesGýÿÿ‰ãÙàk:archivesarchivesNick‹WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $NickCalGýÿÿ6ÏÙà>CcexamplesGýÿÿ€ÔÙà@CseGýÿÿ−ÔÙàCElizaGýÿÿ°ÔÙàFgpGýÿÿÀÔÙàHgsGýÿÿÉÔÙàILamvarGýÿÿÆØÙàLlgsGýÿÿëØÙàNModularGýÿÿûØÙàOPrologGýÿÿØÚÙàSSayGýÿÿ ÛÙàWUtilsGýÿÿÛÜÙàYCalGýÿÿ6ÏÙà>CcexamplesGýÿÿ€ÔÙà@CseGýÿÿ−ÔÙàCElizaGýÿÿ°ÔÙàFgpGýÿÿÀÔÙàHgsGýÿÿÉÔÙàILamvarGýÿÿÆØÙàLlgsGýÿÿëØÙàNModularGýÿÿûØÙàOPrologGýÿÿØÚÙàSSayGýÿÿ ÛÙàWUtilsGýÿÿÛÜÙàY<DemosDemos$Nick4WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿ;ÏÙà?gsGýÿÿ;ÏÙà?=CalCalNickùWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickcalendarDÿÿÿ fiùj†?calendarDÿÿÿ fiùj†?>gsgsNickÄ-- This is a modification of the calendar program described in section 4.5
  7204. -- of Bird and Wadler's ``Introduction to functional programming'', with
  7205. -- two ways of printing the calendar ... as in B+W, or like UNIX `cal':
  7206.  
  7207. -- Picture handling:
  7208.  
  7209. infixr 5 `above`, `beside`
  7210.  
  7211. type Picture   =  [[Char]]
  7212.  
  7213. height, width :: Picture -> Int
  7214. height p       = length p
  7215. width  p       = length (head p)
  7216.  
  7217. above, beside :: Picture -> Picture -> Picture
  7218. above          = (++)
  7219. beside         = zipWith (++)
  7220.  
  7221. stack, spread :: [Picture] -> Picture
  7222. stack          = foldr1 above
  7223. spread         = foldr1 beside
  7224.  
  7225. empty         :: (Int,Int) -> Picture
  7226. empty (h,w)    = copy h (copy w ' ')
  7227.  
  7228. block, blockT :: Int -> [Picture] -> Picture
  7229. block n        = stack . map spread . group n
  7230. blockT n       = spread . map stack . group n
  7231.  
  7232. group         :: Int -> [a] -> [[a]]
  7233. group n []     = []
  7234. group n xs     = take n xs : group n (drop n xs)
  7235.  
  7236. lframe        :: (Int,Int) -> Picture -> Picture
  7237. lframe (m,n) p = (p `beside` empty (h,n-w)) `above` empty (m-h,n)
  7238.          where h = height p
  7239.                        w = width p
  7240.  
  7241. -- Information about the months in a year:
  7242.  
  7243. monthLengths year = [31,feb,31,30,31,30,31,31,30,31,30,31]
  7244.                     where feb | leap year = 29
  7245.                               | otherwise = 28
  7246.  
  7247. leap year         = if year`mod`100 == 0 then year`mod`400 == 0
  7248.                                          else year`mod`4   == 0
  7249.  
  7250. monthNames        = ["January","February","March","April",
  7251.              "May","June","July","August",
  7252.              "September","October","November","December"]
  7253.  
  7254. jan1st year       = (year + last`div`4 - last`div`100 + last`div`400) `mod` 7
  7255.                     where last = year - 1
  7256.  
  7257. firstDays year    = take 12
  7258.                          (map (`mod`7)
  7259.                               (scanl (+) (jan1st year) (monthLengths year)))
  7260.  
  7261. -- Producing the information necessary for one month:
  7262.  
  7263. dates fd ml = map (date ml) [1-fd..42-fd]
  7264.               where date ml d | d<1 || ml<d  = ["   "]
  7265.                               | otherwise    = [rjustify 3 (show d)]
  7266.  
  7267. -- The original B+W calendar:
  7268.  
  7269. calendar = unlines . block 3 . map picture . months
  7270.            where picture (mn,yr,fd,ml)  = title mn yr `above` table fd ml
  7271.                  title mn yr    = lframe (2,25) [mn ++ " " ++ show yr]
  7272.                  table fd ml    = lframe (8,25)
  7273.                                          (daynames `beside` entries fd ml)
  7274.                  daynames       = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
  7275.                  entries fd ml  = blockT 7 (dates fd ml)
  7276.                  months year    = zip4 monthNames
  7277.                                        (copy 12 year)
  7278.                                        (firstDays year)
  7279.                                        (monthLengths year)
  7280.  
  7281. -- In a format somewhat closer to UNIX cal:
  7282.  
  7283. cal year = unlines (banner year `above` body year)
  7284.            where banner yr      = [cjustify 75 (show yr)] `above` empty (1,75)
  7285.                  body           = block 3 . map (pad . pic) . months
  7286.                  pic (mn,fd,ml) = title mn `above` table fd ml
  7287.                  pad p          = (side`beside`p`beside`side)`above`end
  7288.                  side           = empty (8,2)
  7289.                  end            = empty (1,25)
  7290.                  title mn       = [cjustify 21 mn]
  7291.                  table fd ml    = daynames `above` entries fd ml
  7292.                  daynames       = [" Su Mo Tu We Th Fr Sa"]
  7293.                  entries fd ml  = block 7 (dates fd ml)
  7294.                  months year    = zip3 monthNames
  7295.                                        (firstDays year)
  7296.                                        (monthLengths year)
  7297.  
  7298. -- For a standalone calendar program:
  7299.  
  7300. main = getArgs exit (\strs ->
  7301.        case strs of [year] -> calFor year
  7302.                     _      -> appendChan stdout "Usage: cal year\n" exit done)
  7303.  
  7304. calFor year | illFormed = appendChan stderr "Bad argument" exit done
  7305.             | otherwise = appendChan stdout (cal yr) exit done
  7306.               where illFormed = null ds || not (null rs)
  7307.                     (ds,rs)   = span isDigit year
  7308.                     yr        = atoi ds
  7309.                     atoi s    = foldl (\a d -> 10*a+d) 0 (map toDigit s)
  7310.                     toDigit d = ord d - ord '0'
  7311.        
  7312.  
  7313. -- End of calendar program
  7314.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿŶÔÙàAgsGýÿÿŶÔÙàA=CcexamplesCcexamplesNickWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickccexamplesDÿÿÿ fiùj—=BcombineDÿÿÿ fiùjÆAccexamplesDÿÿÿ fiùj—=BcombineDÿÿÿ fiùjÆA@gsgsNickÿ-- combine.gs                Mark P Jones  December 1992
  7315. --
  7316. -- The following script resulted from a discussion between myself
  7317. -- and Luc Duponcheel on the comp.lang.functional newsgroup in
  7318. -- December 1992.
  7319. --
  7320. -- This code fragment shows how the composition of monads can be
  7321. -- described in Gofer using constructor classes.
  7322.  
  7323. class (Monad m, Monad l) => Composable m l where
  7324.     prod  :: l (m (l a)) -> m (l a)
  7325.     swap  :: l (m a) -> m (l a)
  7326.     app   :: (l a -> m b) -> l (m a) -> m b
  7327.  
  7328.     prod  = app (result . join)
  7329.     swap  = prod . map (map result)
  7330.     app f = join . map f . swap
  7331.  
  7332. mmap f = swap . map f
  7333.  
  7334. instance Composable m [ ] where
  7335.     swap []     = [ [] ]
  7336.     swap (x:xs) = [ y:ys | y<-x, ys<-swap xs ]
  7337.  
  7338. type Comp f g a = f (g a) in mapComp, resultComp, joinComp
  7339.  
  7340. mapComp :: (Functor f, Functor g) => (a -> b) -> (Comp f g a -> Comp f g b)
  7341. mapComp  = map . map
  7342.  
  7343. instance (Functor f, Functor g) => Functor (Comp f g) where
  7344.     map = mapComp
  7345.  
  7346. resultComp :: (Monad f, Monad g) => a -> Comp f g a
  7347. resultComp  = result . result
  7348.  
  7349. joinComp   :: (Composable f g) => Comp f g (Comp f g a) -> Comp f g a
  7350. joinComp    = join . map prod
  7351.  
  7352. instance Composable f g => Monad (Comp f g) where
  7353.     result = resultComp
  7354.     join   = joinComp
  7355.  
  7356. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- ccexamples.gs                        Mark P. Jones, 1992
  7357. --
  7358. -- This file contains a range of examples using the system of constructor
  7359. -- classes implemented in Gofer 2.28.  You will need to start Gofer running
  7360. -- with the cc.prelude to use this file.
  7361. --
  7362.  
  7363. -- Constructor class examples: ----------------------------------------------
  7364.  
  7365. class Functor2 f where
  7366.      map2 :: (a -> b) -> (c -> d) -> (f a c -> f b d)
  7367.  
  7368. -- The identity monad (well nearly): ----------------------------------------
  7369.  
  7370. data Id a = Id a
  7371.  
  7372. instance Functor Id where map f (Id x)  = Id (f x)
  7373. instance Monad   Id where result        = Id
  7374.               join (Id x)   = x
  7375.               Id x `bind` f = f x
  7376.  
  7377. -- The `Maybe' datatype: ----------------------------------------------------
  7378.  
  7379. data Maybe a = Just a | Nothing
  7380.  
  7381. instance Functor Maybe where
  7382.     map f (Just x) = Just (f x)
  7383.     map f Nothing  = Nothing
  7384.  
  7385. instance Monad Maybe where
  7386.     result x         = Just x
  7387.     Just x  `bind` f = f x
  7388.     Nothing `bind` f = Nothing
  7389.  
  7390. instance Monad0 Maybe where
  7391.     zero = Nothing
  7392.  
  7393. instance MonadPlus Maybe where
  7394.     Nothing ++ y = y
  7395.     x       ++ y = x
  7396.  
  7397. trap              :: Maybe a -> a -> a
  7398. Just x  `trap` def = x
  7399. Nothing `trap` def = def
  7400.  
  7401. listToMaybe      :: [a] -> Maybe a        -- a monad homomorphism
  7402. listToMaybe        = concat . map result
  7403.  
  7404. -- Error monads --------------------------------------------------------------
  7405.  
  7406. class Monad m => ErrorMonad m where    -- a class of monads for describing
  7407.     fail :: String -> m a        -- computations that might go wrong
  7408.  
  7409. data Error a = Done a | Err String    -- a variation on the maybe type
  7410.  
  7411. instance Functor Error where        -- which is a Functor,
  7412.     map f (Done x) = Done (f x)
  7413.     map f (Err s)  = Err s
  7414.  
  7415. instance Monad Error where        -- a Monad,
  7416.     result           = Done
  7417.     Done x  `bind` f = f x
  7418.     Err msg `bind` f = Err msg
  7419.  
  7420. instance ErrorMonad Error where        -- and an ErrorMonad ...
  7421.     fail = Err
  7422.  
  7423. -- Parser monad: ------------------------------------------------------------
  7424.  
  7425. type Parser token value = [token] -> [(value,[token])]
  7426.  in mapP, resultP, joinP, bindP, zeroP, orP, sat, tok, toks, spaces, parse
  7427.  
  7428. mapP        :: (a -> b) -> Parser t a -> Parser t b
  7429. mapP f p     = \s -> [ (f x, s') | (x,s') <- p s ]
  7430.  
  7431. resultP     :: a -> Parser t a
  7432. resultP v    = \s -> [(v,s)]
  7433.  
  7434. joinP       :: Parser t (Parser t a) -> Parser t a
  7435. joinP pp     = \s -> [ (x,s'') | (p,s') <- pp s, (x,s'') <- p s' ]
  7436.  
  7437. bindP       :: Parser t a -> (a -> Parser t b) -> Parser t b
  7438. p `bindP` f  = \s -> [ (a',s'') | (a,s') <- p s, (a',s'') <- f a s' ]
  7439.  
  7440. zeroP       :: Parser t a
  7441. zeroP        = \s -> []
  7442.  
  7443. orP         :: Parser t a -> Parser t a -> Parser t a
  7444. p `orP` q    = \s -> p s ++ q s
  7445.  
  7446. sat         :: (t -> Bool) -> Parser t t
  7447. sat p []     = []
  7448. sat p (h:ts) = [ (h,ts) | p h ]
  7449.  
  7450. tok        :: Eq t => t -> Parser t t
  7451. tok t        = sat (t==)
  7452.  
  7453. toks        :: Eq [t] => [t] -> Parser t ()
  7454. toks w       = \ts -> [ ((),drop n ts) | w == take n ts ]
  7455.            where n = length w
  7456.  
  7457. spaces        :: Parser Char a -> Parser Char a
  7458. spaces p     = p . dropWhile isSpace
  7459.  
  7460. parse       :: Parser t a -> [t] -> Maybe a
  7461. parse p ts   = listToMaybe [ x | (x,[]) <- p ts ]
  7462.  
  7463. instance Functor   (Parser t) where map    = mapP
  7464. instance Monad     (Parser t) where result = resultP
  7465.                     bind   = bindP
  7466.                     join   = joinP
  7467. instance Monad0    (Parser t) where zero   = zeroP
  7468. instance MonadPlus (Parser t) where (++)   = orP
  7469.  
  7470. -- Continuation monad: ------------------------------------------------------
  7471.  
  7472. type Cont r a = (a -> r) -> r
  7473.   in mapC, resultC, joinC, bindC, callcc
  7474.  
  7475. mapC       :: (a -> b) -> Cont r a -> Cont r b
  7476. mapC f m    = \k -> m (k . f)
  7477.  
  7478. resultC    :: a -> Cont r a
  7479. resultC x   = \k -> k x
  7480.  
  7481. joinC      :: Cont r (Cont r a) -> Cont r a
  7482. joinC m     = \k -> m (\x -> x k)
  7483.  
  7484. bindC      :: Cont r a -> (a -> Cont r b) -> Cont r b
  7485. m `bindC` f = \k -> m (\y -> (f y) k)
  7486.  
  7487. callcc     :: ((a -> Cont r b) -> Cont r a) -> Cont r a
  7488. callcc g    = \k -> g (\x k' -> k x) k
  7489.  
  7490. instance Functor (Cont r) where map    = mapC
  7491.  
  7492. instance Monad   (Cont r) where result = resultC
  7493.                 bind   = bindC
  7494.                 join   = joinC
  7495.  
  7496. -- State monads: ------------------------------------------------------------
  7497.  
  7498. class Monad (m s) => StateMonad m s where
  7499.     update :: (s -> s) -> m s s        -- the principal characteristic of a
  7500.     set    :: s -> m s s        -- state based compuation is that you
  7501.     fetch  :: m s s            -- can update the state!
  7502.     set new = update (\old -> new)
  7503.     fetch   = update id
  7504.  
  7505. incr :: StateMonad m Int => m Int Int
  7506. incr  = update (1+)
  7507.  
  7508. random  :: StateMonad m Int => Int -> m Int Int
  7509. random n = update min_stand_test `bind` \m ->
  7510.            result (m `mod` n)
  7511.  
  7512. min_stand_test  :: Int -> Int       -- see demos/minsrand.gs for explanation
  7513. min_stand_test n = if test > 0 then test else test + 2147483647
  7514.            where test = 16807 * lo - 2836 * hi
  7515.                  hi   = n `div` 127773
  7516.                  lo   = n `rem` 127773
  7517.  
  7518. data State s a = ST (s -> (a,s))    -- The standard example: state
  7519.                     -- transformers (not used in the rest
  7520.                     -- of this program).
  7521. instance Functor (State s) where
  7522.     map f (ST st) = ST (\s -> let (x,s') = st s in (f x, s'))
  7523.  
  7524. instance Monad (State s) where
  7525.     result x      = ST (\s -> (x,s))
  7526.     ST m `bind` f = ST (\s -> let (x,s') = m s
  7527.                                   ST f'  = f x
  7528.                               in  f' s')
  7529.  
  7530. instance StateMonad State s where
  7531.     update f = ST (\s -> (s, f s))
  7532.  
  7533. ST m `startingWith` s0 = result where (result,_) = m s0
  7534.  
  7535. data STM m s a = STM (s -> m (a,s))    -- a more sophisticated example,
  7536.                     -- where the state monad is
  7537.                     -- parameterised by a second,
  7538.                     -- arbitrary monad.
  7539.  
  7540. instance Monad m => Functor (STM m s) where
  7541.     map f (STM xs) = STM (\s -> [ (f x, s') | ~(x,s') <- xs s ])
  7542.  
  7543. instance Monad m => Monad (STM m s) where
  7544.     result x        = STM (\s -> result (x,s))
  7545.     join (STM xss)  = STM (\s -> [ (x,s'') | ~(STM xs, s') <- xss s,
  7546.                                              ~(x,s'') <- xs s' ])
  7547.     STM xs `bind` f = STM (\s -> xs s `bind` (\(x,s') ->
  7548.                                  let STM f' = f x
  7549.                                  in  f' s'))
  7550.  
  7551. instance ErrorMonad m => ErrorMonad (STM m s) where
  7552.     fail msg = STM (\s -> fail msg)
  7553.  
  7554. instance StateMonad (STM m) s where
  7555.     update f = STM (\s -> result (s, f s))
  7556.  
  7557. protect          :: Monad m => m a -> STM m s a
  7558. protect m         = STM (\s -> [ (x,s) | x<-m ])
  7559.  
  7560. execute          :: Monad m => s -> STM m s a -> m a
  7561. execute s (STM f) = [ x | ~(x,s') <- f s ]
  7562.  
  7563. -- Reader monad: ------------------------------------------------------------
  7564. -- I imagine there must be some deep philosophical reason why the following
  7565. -- functions turn out to be very well-known combinators?
  7566. -----------------------------------------------------------------------------
  7567.  
  7568. type Reader r a = r -> a
  7569.   in mapR, resultR, bindR, joinR, read, readOnly
  7570.  
  7571. mapR       :: (a -> b) -> (Reader r a -> Reader r b)
  7572. mapR f m    = f . m                        -- B
  7573.  
  7574. resultR    :: a -> Reader r a
  7575. resultR x   = \r -> x                        -- K
  7576.  
  7577. joinR      :: Reader r (Reader r a) -> Reader r a
  7578. joinR mm    = \r -> mm r r                    -- W?
  7579.  
  7580. bindR      :: Reader r a -> (a -> Reader r b) -> Reader r b
  7581. x `bindR` f = \r -> f (x r) r                    -- S
  7582.  
  7583. read       :: Reader r r
  7584. read r      = r
  7585.  
  7586. readOnly   :: Reader s a -> State s a
  7587. readOnly m  = ST (\s -> (m s, s))
  7588.  
  7589. instance Functor (Reader r) where map    = mapR
  7590.  
  7591. instance Monad   (Reader r) where result = resultR
  7592.                   bind   = bindR
  7593.                   join   = joinR
  7594.  
  7595. -- Output monad: ------------------------------------------------------------
  7596.  
  7597. type Output a = (a, ShowS)
  7598.   in mapO, resultO, bindO, joinO, write
  7599.  
  7600. mapO          :: (a -> b) -> Output a -> Output b
  7601. mapO f (x, ss)       = (f x, ss)
  7602.  
  7603. resultO          :: a -> Output a
  7604. resultO x       = (x, id)
  7605.  
  7606. bindO          :: Output a -> (a -> Output b) -> Output b
  7607. (a, ss) `bindO` f  = let (b, ss') = f a in (b, ss . ss')
  7608.  
  7609. joinO             :: Output (Output a) -> Output a
  7610. joinO ((m,ss'),ss) = (m, ss . ss')
  7611.  
  7612. write             :: String -> Output ()
  7613. write msg          = ((), (++) msg)
  7614.  
  7615. instance Functor Output where map    = mapO
  7616.  
  7617. instance Monad   Output where result = resultO
  7618.                   bind   = bindO
  7619.                   join   = joinO
  7620.  
  7621. -- Association lists ---------------------------------------------------------
  7622.  
  7623. type Assoc v t = [(v,t)] in mapAssoc, noAssoc, extend, lookup
  7624.  
  7625. instance Functor (Assoc v) where map = mapAssoc
  7626.  
  7627. mapAssoc      :: (a -> b) -> (Assoc v a -> Assoc v b)
  7628. mapAssoc f vts = [ (v, f t) | (v,t) <- vts ]
  7629.  
  7630. noAssoc       :: Assoc v t
  7631. noAssoc        = []
  7632.  
  7633. extend        :: v -> t -> Assoc v t -> Assoc v t
  7634. extend v t a   = [(v,t)] ++ a
  7635.  
  7636. lookup        :: (Eq v, ErrorMonad m) => v -> Assoc v t -> m t
  7637. lookup v       = foldr find (fail "Undefined value")
  7638.                  where find (w,t) alt | w==v      = result t
  7639.                                       | otherwise = alt
  7640.  
  7641. -- Types: -------------------------------------------------------------------
  7642.  
  7643. data Type v = TVar v            -- Type variable
  7644.             | Fun (Type v) (Type v)    -- Function type
  7645.  
  7646. instance Text v => Text (Type v) where
  7647.     showsPrec p (TVar v)          = shows v
  7648.     showsPrec p (Fun (TVar v) r)  = shows v . showString " -> " . shows r
  7649.     showsPrec p (Fun l r)         = showChar '(' . shows l . showChar ')'
  7650.                                     . showString " -> "
  7651.                                     . shows r
  7652.  
  7653. instance Functor Type where  map f (TVar v)   = TVar (f v)
  7654.                              map f (Fun d r)  = Fun (map f d) (map f r)
  7655. instance Monad   Type where  result v         = TVar v
  7656.                              TVar v  `bind` f = f v
  7657.                              Fun d r `bind` f = Fun (d `bind` f) (r `bind` f)
  7658.  
  7659. vars           :: Type v -> [v]
  7660. vars (TVar v)   = [v]
  7661. vars (Fun d r)  = vars d ++ vars r
  7662.  
  7663. -- Substitutions: -----------------------------------------------------------
  7664.  
  7665. type Subst m v = v -> m v
  7666.  
  7667. nullSubst  :: Monad m => Subst m v
  7668. nullSubst   = result
  7669.  
  7670. (>>)       :: (Eq v, Monad m) => v -> m v -> Subst m v
  7671. (v >> t) w  = if v==w then t else result w
  7672.  
  7673. varBind v t = if (v `elem` vars t) then fail "unification fails"
  7674.                    else result (v>>t)
  7675.  
  7676. unify (TVar v)  (TVar w)
  7677.               | v==w      = result nullSubst
  7678.               | otherwise = result (v>>TVar w)
  7679. unify (TVar v)  t         = varBind v t
  7680. unify t         (TVar v)  = varBind v t
  7681. unify (Fun d r) (Fun e s) = [ s2 @@ s1 | s1 <- unify d e,
  7682.                      s2 <- unify (apply s1 r)
  7683.                              (apply s1 s) ]
  7684.  
  7685. -- Terms: --------------------------------------------------------------------
  7686.  
  7687. data Term v = Var v                   -- variable
  7688.             | Ap  (Term v) (Term v)   -- application
  7689.             | Lam v (Term v)          -- lambda abstraction
  7690.  
  7691. examples = [ lamx x,                -- identity
  7692.              k,                    -- k
  7693.              s,                    -- s
  7694.              lamx (lamy (lamz (Ap x (Ap y z)))),-- b
  7695.              lamx (Ap x x),            -- \x. x x
  7696.          Ap (Ap s k) k,            -- s k k
  7697.              Ap (Ap s (Ap k s)) k,        -- s (k s) k
  7698.              x                    -- unbound x
  7699.            ]
  7700.            where s    = lamx (lamy (lamz (Ap (Ap x z) (Ap y z))))
  7701.                  k    = lamx (lamy x)
  7702.                  x    = Var "x"
  7703.                  y    = Var "y"
  7704.                  z    = Var "z"
  7705.                  lamx = Lam "x"
  7706.                  lamy = Lam "y"
  7707.                  lamz = Lam "z"
  7708.  
  7709. -- Type inference: -----------------------------------------------------------
  7710.  
  7711. type Infer a = STM Error Int a
  7712. type Expr    = Term String
  7713. type Assume  = Assoc String (Type Int)
  7714.  
  7715. infer            :: Assume -> Expr -> Infer (Subst Type Int, Type Int)
  7716. infer a (Var v)   = lookup v a                           `bind` \t      ->
  7717.                     result (nullSubst,t)
  7718. infer a (Lam v e) = newVar                               `bind` \b      ->
  7719.                     infer (extend v (TVar b) a) e        `bind` \(s,t)  ->
  7720.                     result (s, s b `Fun` t)
  7721. infer a (Ap l r)  = infer a l                            `bind` \(s,lt) ->
  7722.                     infer (map (apply s) a) r            `bind` \(t,rt) ->
  7723.                     newVar                               `bind` \b      ->
  7724.                     unify (apply t lt) (rt `Fun` TVar b) `bind` \u      ->
  7725.                     result (u @@ t @@ s, u b)
  7726.  
  7727. newVar :: Infer Int
  7728. newVar  = incr
  7729.  
  7730. try    = layn (map (show' . typeOf) examples)
  7731.  
  7732. typeOf = map (show.snd) . execute 0 . infer noAssoc
  7733.  
  7734. -- Now for something rather different: Trees: -------------------------------
  7735.  
  7736. class Functor t => TreeCon t where     -- tree constructors
  7737.     branches :: t a -> [t a]
  7738.  
  7739. -- standard calculations involving trees
  7740.  
  7741. depth :: TreeCon t => t a -> Int
  7742. depth  = (1+) . foldl max 0 . map depth . branches
  7743.  
  7744. dfs   :: TreeCon t => t a -> [t a]
  7745. dfs t  = t : concat (map dfs (branches t))
  7746.  
  7747. bfs   :: TreeCon t => t a -> [t a]
  7748. bfs    = concat . lev
  7749.  where lev t = [t] : foldr cat [] (map lev (branches t))
  7750.        cat   = longzw (++)
  7751.  
  7752. longzw f (x:xs) (y:ys) = f x y : longzw f xs ys
  7753. longzw f []     ys     = ys
  7754. longzw f xs     []     = xs
  7755.  
  7756. paths t | null br   = [ [t] ]
  7757.         | otherwise = [ t:p | b<-br, p<-paths b ]
  7758.           where br = branches t
  7759.  
  7760. -- now here are a variety of trees, all of which are instances of
  7761. -- the TreeCon class above:
  7762.  
  7763. data Tree a  =  Leaf a  |  Tree a :^: Tree a
  7764.  
  7765. instance Functor Tree where        -- `context free relabeling'
  7766.     map f (Leaf a)  = Leaf (f a)
  7767.     map f (l :^: r) = map f l :^: map f r
  7768.  
  7769. instance Monad Tree where        -- `substitution'
  7770.     result             = Leaf
  7771.     Leaf x    `bind` f = f x
  7772.     (l :^: r) `bind` f = (l `bind` f) :^: (r `bind` f)
  7773.  
  7774. instance TreeCon Tree where        -- the tree structure
  7775.     branches (Leaf n)  = []
  7776.     branches (l :^: r) = [l,r]
  7777.  
  7778. data LabTree l a  =  Tip a  |  LFork l (LabTree l a) (LabTree l a)
  7779.  
  7780. instance Functor (LabTree l) where
  7781.     map f (Tip x)       = Tip (f x)
  7782.     map f (LFork x l r) = LFork x (map f l) (map f r)
  7783.  
  7784. instance Monad (LabTree l) where
  7785.     result               = Tip
  7786.     Tip x       `bind` f = f x
  7787.     LFork x l r `bind` f = LFork x (l `bind` f) (r `bind` f)
  7788.  
  7789. instance TreeCon (LabTree l) where
  7790.    branches (Tip x)       = []
  7791.    branches (LFork x l r) = [l,r]
  7792.  
  7793. data STree a  =  Empty  | Split a (STree a) (STree a)
  7794.  
  7795. instance Functor STree where
  7796.     map f Empty         = Empty
  7797.     map f (Split x l r) = Split (f x) (map f l) (map f r)
  7798.  
  7799. instance TreeCon STree where
  7800.     branches Empty         = []
  7801.     branches (Split x l r) = [l,r]
  7802.  
  7803. data GenTree a =  Node a [GenTree a]
  7804.  
  7805. instance Functor GenTree where
  7806.     map f (Node x gts) = Node (f x) (map (map f) gts)
  7807.  
  7808. instance TreeCon GenTree where
  7809.     branches (Node x gts) = gts
  7810.  
  7811. -- The tree labeling program: -----------------------------------------------
  7812.  
  7813. label     :: Tree a -> Tree (a,Int)        -- error prone explicit
  7814. label tree = fst (lab tree 0)            -- counters
  7815.  where lab (Leaf n)  c  =  (Leaf (n,c), c+1)
  7816.        lab (l :^: r) c  =  (l' :^: r', c'')
  7817.                            where (l',c')  = lab l c
  7818.                                  (r',c'') = lab r c'
  7819.  
  7820. label1     :: Tree a -> Tree (a,Int)        -- monad version
  7821. label1 tree = lab tree `startingWith` 0
  7822.  where lab (Leaf n)  = incr                  `bind` \c ->
  7823.                        result (Leaf (n,c))
  7824.        lab (l :^: r) = lab l                 `bind` \l' ->
  7825.                        lab r                 `bind` \r' ->
  7826.                        result (l' :^: r')
  7827.  
  7828. label2     :: Tree a -> Tree (a,Int)        -- using monad comprehensions
  7829. label2 tree = lab tree `startingWith` 0
  7830.  where lab (Leaf n)  = [ Leaf (n,c) | c <- incr ]
  7831.        lab (l :^: r) = [  l :^: r   | l <- lab l, r <- lab r ]
  7832.  
  7833. -- A `while loop' for an arbitrary monad: -----------------------------------
  7834.  
  7835. while    :: Monad m => m Bool -> m b -> m ()
  7836. while c s = c  `bind` \b ->
  7837.             if b then s         `bind` \x ->
  7838.                       while c s
  7839.                  else result ()
  7840.  
  7841. skip :: Monad m => m ()
  7842. skip  = result ()
  7843.  
  7844. loop  = while isDot skip
  7845.  
  7846. isDot = [ True | x <- sat ('.'==) ]
  7847.  
  7848. -- End of program -----------------------------------------------------------
  7849. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿ‡ÔÙàDgsGýÿÿ‡ÔÙàD=CseCseNick½WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickcsexprDÿÿÿ fiùjÒ+DstateMonadDÿÿÿ fiùj¯EcsexprDÿÿÿ fiùjÒ+DstateMonadDÿÿÿ fiùj¯ECgsgsNickK-- This is a program to illustrate a simple form of common subexpression
  7850. -- elimination ... essentially turning trees into DAGs.  Uses two state
  7851. -- monads (more precisely, same monad but different state types).
  7852. -- This program doesn't use constructor classes, although it could
  7853. -- obviously be modified to fit into that framework.
  7854. --
  7855. -- This programs should be loaded after `stateMonad':  For example:
  7856. --  ? :l stateMonad.gs csexpr.gs
  7857. --  ? test
  7858. --
  7859. -- The output for this `test' is included at the end of the file.
  7860. --
  7861. -- Mark P. Jones, 1992
  7862. --
  7863.  
  7864. -- Data type definitions: ----------------------------------------------------
  7865.  
  7866. data GenTree a  = Node a [GenTree a]
  7867. type LabGraph a = [ (Label, a, [Label]) ]
  7868. type Label      = Int
  7869.  
  7870. -- Add distinct (integer) labels to each node of a tree: ---------------------
  7871.  
  7872. labelTree   :: GenTree a -> GenTree (Label,a)
  7873. labelTree t  = label t `startingWith` 0
  7874.                where label (Node x xs) = incr           `bind` \n  ->
  7875.                                          mmapl label xs `bind` \ts ->
  7876.                                          return (Node (n,x) ts)
  7877.  
  7878. -- Convert tree after labelling each node to a labelled graph: ---------------
  7879.  
  7880. ltGraph                :: GenTree (Label,a) -> LabGraph a
  7881. ltGraph (Node (n,x) xs) = (n, x, map labelOf xs) : concat (map ltGraph xs)
  7882.                           where labelOf (Node (n,x) xs) = n
  7883.  
  7884. -- Build tree from labelled graph: -------------------------------------------
  7885.  
  7886. unGraph              :: LabGraph a -> GenTree a
  7887. unGraph ((n,x,cs):ts) = Node x (map (unGraph . find) cs)
  7888.                         where find c = dropWhile (\(d,_,_) -> c/=d) ts
  7889.  
  7890.  
  7891. -- Build tree but avoid duplicating shared parts: ----------------------------
  7892.  
  7893. unGraph'     :: LabGraph String -> GenTree (Int,String)
  7894. unGraph' lg   = ung lg `startingWith` []
  7895.  where ung ((n,x,cs):ts) = mif (visited n)
  7896.                                  (return (Node (n,"<>") []))
  7897.                                  (mmapl (ung . find) cs `bind` \ts ->
  7898.                                   return (Node (n,x) ts))
  7899.                            where find c = dropWhile (\(d,_,_) -> c/=d) ts
  7900.  
  7901. visited      :: Label -> SM [Label] Bool
  7902. visited n     = fetch                               `bind` \us ->
  7903.                 if n `elem` us then return True
  7904.                                else set (n:us)      `bind` \_ -> 
  7905.                                     return False
  7906.  
  7907. -- Find (and eliminate) repeated subtrees in a labelled graph: ---------------
  7908. -- Described as a transformation on labelled graphs:  During the calculation
  7909. -- we use a pair (r,lg) :: (Label->Label, LabGraph a) where lg contains the
  7910. -- simplified portion of the graph calculated so far and r is a renaming (or
  7911. -- replacement?) which maps node labels in the original graph to the approp.
  7912. -- labels in the new graph.
  7913.  
  7914. findCommon :: Eq a => LabGraph a -> LabGraph a
  7915. findCommon  = snd . foldr sim (id,[])
  7916.  where sim (n,s,cs) (r,lg) = (r, [(n,s,rcs)]++lg),       if null ms
  7917.                            = ((n +-> head ms) r, lg),    otherwise
  7918.                              where ms  = [m | (m,s',cs')<-lg, s==s', cs'==rcs]
  7919.                                    rcs = map r cs
  7920.  
  7921. infix +->      -- overide function at single point
  7922. (+->)          :: Eq a => a -> b -> (a -> b) -> (a -> b)
  7923. (x +-> fx) f y  = if x==y then fx else f y
  7924.  
  7925. -- Common subexpression elimination: -----------------------------------------
  7926.  
  7927. cse :: Eq a => GenTree a -> LabGraph a
  7928. cse  = findCommon . ltGraph . labelTree
  7929.  
  7930. -- Pretty printers: ----------------------------------------------------------
  7931.  
  7932. instance Text (GenTree String) where
  7933.     showsPrec d (Node x ts)
  7934.         | null ts   = showString x
  7935.         | otherwise = showChar '(' . showString x
  7936.                                    . showChar ' '
  7937.                                    . (foldr1 (\x y -> x . showChar ' ' . y)
  7938.                                              (map shows ts))
  7939.                                    . showChar ')'
  7940.  
  7941. drawTree        :: GenTree String -> String
  7942. drawTree         = unlines . draw
  7943. draw (Node x ts) = grp (s1 ++ pad width x ++ "]") (space (width+3)) (stLoop ts)
  7944.  where stLoop []     = [""]
  7945.        stLoop [t]    = grp s2 "  " (draw t)
  7946.        stLoop (t:ts) = grp s3 s4 (draw t) ++ [s4] ++ rsLoop ts
  7947.  
  7948.        rsLoop [t]    = grp s5 "  " (draw t)
  7949.        rsLoop (t:ts) = grp s6 s4 (draw t) ++ [s4] ++ rsLoop ts
  7950.  
  7951.        grp fst rst   = zipWith (++) (fst:repeat rst)
  7952.  
  7953.        -- Define the strings used to print tree diagrams:
  7954.        [s1,s2,s3,s4,s5,s6] | pcGraphics = ["\196[", "\196\196", "\196\194",
  7955.                                            " \179", " \192",    " \195"]
  7956.                            | otherwise  = ["-[",    "--",       "-+",
  7957.                                            " |",    " `",       " +"]
  7958.  
  7959.        pad n x    = take n (x ++ repeat ' ')
  7960.        width      = 4
  7961.        pcGraphics = False
  7962.  
  7963. showGraph   :: LabGraph a -> String
  7964. showGraph [] = "[]\n"
  7965. showGraph xs = "[" ++ loop (map show' xs)
  7966.                where loop [x]    = x ++ "]\n"
  7967.                      loop (x:xs) = x ++ ",\n " ++ loop xs
  7968.  
  7969. -- Examples: -----------------------------------------------------------------
  7970.  
  7971. plus x y = Node "+" [x,y]
  7972. mult x y = Node "*" [x,y]
  7973. prod xs  = Node "X" xs
  7974. zero     = Node "0" []
  7975. a        = Node "a" []
  7976. b        = Node "b" []
  7977. c        = Node "c" []
  7978. d        = Node "d" []
  7979.  
  7980. examples = [example0, example1, example2, example3, example4, example5]
  7981. example0 = a
  7982. example1 = plus a a
  7983. example2 = plus (mult a b) (mult a b)
  7984. example3 = plus (mult (plus a b) c) (plus a b)
  7985. example4 = prod (scanl plus zero [a,b,c,d])
  7986. example5 = prod (scanr plus zero [a,b,c,d])
  7987.  
  7988. test  = appendChan "stdout" -- writeFile "csoutput"
  7989.          (unlines (map (\t -> let c = cse t
  7990.                               in  copy 78 '-'            ++
  7991.                                   "\nExpression:\n"      ++ show t      ++
  7992.                                   "\n\nTree:\n"          ++ drawTree t  ++
  7993.                                   "\nLabelled graph:\n"  ++ showGraph c ++
  7994.                                   "\nSimplified tree:\n" ++ showCse c)
  7995.                        examples))
  7996.          exit
  7997.          done
  7998.         where
  7999.          showCse                  = drawTree
  8000.                                     . mapGenTree (\(n,s) -> show n++":"++s)
  8001.                                     . unGraph'
  8002.          mapGenTree f (Node x ts) = Node (f x) (map (mapGenTree f) ts)
  8003.  
  8004. {-----------------------------------------------------------------------------
  8005. Expression:
  8006. a
  8007.  
  8008. Tree:
  8009. -[a   ]
  8010.  
  8011. Labelled graph:
  8012. [(0,"a",[])]
  8013.  
  8014. Simplified tree:
  8015. -[0:a ]
  8016.  
  8017. ------------------------------------------------------------------------------
  8018. Expression:
  8019. (+ a a)
  8020.  
  8021. Tree:
  8022. -[+   ]-+-[a   ]
  8023.         |
  8024.         `-[a   ]
  8025.  
  8026. Labelled graph:
  8027. [(0,"+",[2, 2]),
  8028.  (2,"a",[])]
  8029.  
  8030. Simplified tree:
  8031. -[0:+ ]-+-[2:a ]
  8032.         |
  8033.         `-[2:<>]
  8034.  
  8035. ------------------------------------------------------------------------------
  8036. Expression:
  8037. (+ (* a b) (* a b))
  8038.  
  8039. Tree:
  8040. -[+   ]-+-[*   ]-+-[a   ]
  8041.         |        |
  8042.         |        `-[b   ]
  8043.         |
  8044.         `-[*   ]-+-[a   ]
  8045.                  |
  8046.                  `-[b   ]
  8047.  
  8048. Labelled graph:
  8049. [(0,"+",[4, 4]),
  8050.  (4,"*",[5, 6]),
  8051.  (5,"a",[]),
  8052.  (6,"b",[])]
  8053.  
  8054. Simplified tree:
  8055. -[0:+ ]-+-[4:* ]-+-[5:a ]
  8056.         |        |
  8057.         |        `-[6:b ]
  8058.         |
  8059.         `-[4:<>]
  8060.  
  8061. ------------------------------------------------------------------------------
  8062. Expression:
  8063. (+ (* (+ a b) c) (+ a b))
  8064.  
  8065. Tree:
  8066. -[+   ]-+-[*   ]-+-[+   ]-+-[a   ]
  8067.         |        |        |
  8068.         |        |        `-[b   ]
  8069.         |        |
  8070.         |        `-[c   ]
  8071.         |
  8072.         `-[+   ]-+-[a   ]
  8073.                  |
  8074.                  `-[b   ]
  8075.  
  8076. Labelled graph:
  8077. [(0,"+",[1, 6]),
  8078.  (1,"*",[6, 5]),
  8079.  (5,"c",[]),
  8080.  (6,"+",[7, 8]),
  8081.  (7,"a",[]),
  8082.  (8,"b",[])]
  8083.  
  8084. Simplified tree:
  8085. -[0:+ ]-+-[1:* ]-+-[6:+ ]-+-[7:a ]
  8086.         |        |        |
  8087.         |        |        `-[8:b ]
  8088.         |        |
  8089.         |        `-[5:c ]
  8090.         |
  8091.         `-[6:<>]
  8092.  
  8093. ------------------------------------------------------------------------------
  8094. Expression:
  8095. (X 0 (+ 0 a) (+ (+ 0 a) b) (+ (+ (+ 0 a) b) c) (+ (+ (+ (+ 0 a) b) c) d))
  8096.  
  8097. Tree:
  8098. -[X   ]-+-[0   ]
  8099.         |
  8100.         +-[+   ]-+-[0   ]
  8101.         |        |
  8102.         |        `-[a   ]
  8103.         |
  8104.         +-[+   ]-+-[+   ]-+-[0   ]
  8105.         |        |        |
  8106.         |        |        `-[a   ]
  8107.         |        |
  8108.         |        `-[b   ]
  8109.         |
  8110.         +-[+   ]-+-[+   ]-+-[+   ]-+-[0   ]
  8111.         |        |        |        |
  8112.         |        |        |        `-[a   ]
  8113.         |        |        |
  8114.         |        |        `-[b   ]
  8115.         |        |
  8116.         |        `-[c   ]
  8117.         |
  8118.         `-[+   ]-+-[+   ]-+-[+   ]-+-[+   ]-+-[0   ]
  8119.                  |        |        |        |
  8120.                  |        |        |        `-[a   ]
  8121.                  |        |        |
  8122.                  |        |        `-[b   ]
  8123.                  |        |
  8124.                  |        `-[c   ]
  8125.                  |
  8126.                  `-[d   ]
  8127.  
  8128. Labelled graph:
  8129. [(0,"X",[21, 20, 19, 18, 17]),
  8130.  (17,"+",[18, 25]),
  8131.  (18,"+",[19, 24]),
  8132.  (19,"+",[20, 23]),
  8133.  (20,"+",[21, 22]),
  8134.  (21,"0",[]),
  8135.  (22,"a",[]),
  8136.  (23,"b",[]),
  8137.  (24,"c",[]),
  8138.  (25,"d",[])]
  8139.  
  8140. Simplified tree:
  8141. -[0:X ]-+-[21:0]
  8142.         |
  8143.         +-[20:+]-+-[21:<]
  8144.         |        |
  8145.         |        `-[22:a]
  8146.         |
  8147.         +-[19:+]-+-[20:<]
  8148.         |        |
  8149.         |        `-[23:b]
  8150.         |
  8151.         +-[18:+]-+-[19:<]
  8152.         |        |
  8153.         |        `-[24:c]
  8154.         |
  8155.         `-[17:+]-+-[18:<]
  8156.                  |
  8157.                  `-[25:d]
  8158.  
  8159.  
  8160. ------------------------------------------------------------------------------
  8161. Expression:
  8162. (X (+ a (+ b (+ c (+ d 0)))) (+ b (+ c (+ d 0))) (+ c (+ d 0)) (+ d 0) 0)
  8163.  
  8164. Tree:
  8165. -[X   ]-+-[+   ]-+-[a   ]
  8166.         |        |
  8167.         |        `-[+   ]-+-[b   ]
  8168.         |                 |
  8169.         |                 `-[+   ]-+-[c   ]
  8170.         |                          |
  8171.         |                          `-[+   ]-+-[d   ]
  8172.         |                                   |
  8173.         |                                   `-[0   ]
  8174.         |
  8175.         +-[+   ]-+-[b   ]
  8176.         |        |
  8177.         |        `-[+   ]-+-[c   ]
  8178.         |                 |
  8179.         |                 `-[+   ]-+-[d   ]
  8180.         |                          |
  8181.         |                          `-[0   ]
  8182.         |
  8183.         +-[+   ]-+-[c   ]
  8184.         |        |
  8185.         |        `-[+   ]-+-[d   ]
  8186.         |                 |
  8187.         |                 `-[0   ]
  8188.         |
  8189.         +-[+   ]-+-[d   ]
  8190.         |        |
  8191.         |        `-[0   ]
  8192.         |
  8193.         `-[0   ]
  8194.  
  8195. Labelled graph:
  8196. [(0,"X",[1, 10, 17, 22, 25]),
  8197.  (1,"+",[2, 10]),
  8198.  (2,"a",[]),
  8199.  (10,"+",[11, 17]),
  8200.  (11,"b",[]),
  8201.  (17,"+",[18, 22]),
  8202.  (18,"c",[]),
  8203.  (22,"+",[23, 25]),
  8204.  (23,"d",[]),
  8205.  (25,"0",[])]
  8206.  
  8207. Simplified tree:
  8208. -[0:X ]-+-[1:+ ]-+-[2:a ]
  8209.         |        |
  8210.         |        `-[10:+]-+-[11:b]
  8211.         |                 |
  8212.         |                 `-[17:+]-+-[18:c]
  8213.         |                          |
  8214.         |                          `-[22:+]-+-[23:d]
  8215.         |                                   |
  8216.         |                                   `-[25:0]
  8217.         |
  8218.         +-[10:<]
  8219.         |
  8220.         +-[17:<]
  8221.         |
  8222.         +-[22:<]
  8223.         |
  8224.         `-[25:<]
  8225.  
  8226. -}----------------------------------------------------------------------------
  8227. nderWorks     WonderWorks     WonderWorks     -- General purpose state monad -----------------------------------------------
  8228.  
  8229. type SM s a       = s -> (s, a)
  8230.  
  8231. -- Primitive monad operators -------------------------------------------------
  8232.  
  8233. return           :: a -> SM s a
  8234. return x          = \s -> (s, x)
  8235.  
  8236. bind             :: SM s a -> (a -> SM s b) -> SM s b
  8237. m `bind` f        = \s -> let (s',a) = m s in f a s'
  8238.  
  8239. join             :: SM s (SM s a) -> SM s a
  8240. join m            = \s -> let (s',ma) = m s in ma s'
  8241.  
  8242. mmap             :: (a -> b) -> (SM s a -> SM s b)
  8243. mmap f m          = \s -> let (s',a)  = m s in (s', f a)
  8244.  
  8245. -- General monad operators ---------------------------------------------------
  8246.  
  8247. mmapl            :: (a -> SM s b) -> ([a] -> SM s [b])
  8248. mmapl f []        = return []
  8249. mmapl f (a:as)    = f a             `bind` \b ->
  8250.                     mmapl f as      `bind` \bs ->
  8251.                     return (b:bs)
  8252.  
  8253. mmapr            :: (a -> SM s b) -> ([a] -> SM s [b])
  8254. mmapr f []        = return []
  8255. mmapr f (x:xs)    = mmapr f xs      `bind` \ys ->
  8256.                     f x             `bind` \y  ->
  8257.                     return (y:ys)
  8258.  
  8259. mfoldl           :: (a -> b -> SM s a) -> a -> [b] -> SM s a
  8260. mfoldl f a []     = return a
  8261. mfoldl f a (x:xs) = f a x           `bind` \fax ->
  8262.                     mfoldl f fax xs
  8263.  
  8264. mfoldr           :: (a -> b -> SM s b) -> b -> [a] -> SM s b
  8265. mfoldr f a []     = return a
  8266. mfoldr f a (x:xs) = mfoldr f a xs   `bind` \y ->
  8267.                     f x y
  8268.  
  8269. mif              :: SM s Bool -> SM s a -> SM s a -> SM s a
  8270. mif c t f         = c               `bind` \cond ->
  8271.                     if cond then t
  8272.                             else f
  8273.  
  8274. -- Specific utilities for state monads ---------------------------------------
  8275.  
  8276. startingWith      :: SM s a -> s -> a
  8277. m `startingWith` v = answer where (final,answer) = m v
  8278.  
  8279. fetch             :: SM s s
  8280. fetch              = \s -> (s,s)
  8281.  
  8282. fetchWith         :: (s -> a) -> SM s a
  8283. fetchWith f        = \s -> (s, f s)
  8284.  
  8285. update            :: (s -> s) -> SM s s
  8286. update f           = \s -> (f s, s)
  8287.  
  8288. set               :: s -> SM s s
  8289. set s'             = \s -> (s',s)
  8290.  
  8291. -- Common use of state monad: counter ----------------------------------------
  8292.  
  8293. incr              :: SM Int Int
  8294. incr               = update (1+)
  8295.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿ´ÔÙàGgsGýÿÿ´ÔÙàG=ElizaElizaNick*WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickelizaDÿÿÿ fiùjD&GelizaDÿÿÿ fiùjD&GFgsgsNickÄ-- Eliza: an implementation of the classic pseudo-psychoanalyst ---------------
  8296. --
  8297. -- Gofer version by Mark P. Jones, January 12 1992
  8298. --
  8299. -- Adapted from a pascal implementation provided as part of an experimental
  8300. -- package from James Risner (risner@ms.uky.edu), Univ. of KY. with original
  8301. -- pascal code apparently provided by Robert Migliaccio (mig@ms.uky.edu).
  8302. -------------------------------------------------------------------------------
  8303.  
  8304. main   = eliza
  8305.  
  8306. eliza :: Dialogue
  8307. eliza  = interact (("\n\
  8308.             \Hi! I'm Eliza. I am your personal therapy computer.\n\
  8309.             \Please tell me your problem.\n\
  8310.             \\n" ++)
  8311.                    . session initial []
  8312.                    . filter (not.null)
  8313.                    . map (words . trim)
  8314.                    . lines)
  8315.  
  8316. trim  :: String -> String                     -- strip punctuation characters
  8317. trim   = foldr cons "" . dropWhile (`elem` punct)
  8318.          where x `cons` xs | x `elem` punct && null xs = []
  8319.                            | otherwise                 = x : xs
  8320.                punct = [' ', '.', '!', '?', ',']
  8321.  
  8322. -- Read a line at a time, and produce some kind of response -------------------
  8323.  
  8324. session               :: State -> Words -> [Words] -> String
  8325. session rs prev []     = []
  8326. session rs prev (l:ls) = response ++ "\n\n" ++ session rs' l ls
  8327.                          where (response, rs') | prev == l = repeated rs
  8328.                                                | otherwise = answer rs l
  8329.  
  8330. answer                :: State -> Words -> (String, State)
  8331. answer st l            = (response, newKeyTab kt st)
  8332.  where (response, kt)         = ans (keyTabOf st)
  8333.        e `cons` (r, es)       = (r, e:es)
  8334.        ans (e:es) | null rs   = e `cons` ans es
  8335.                   | otherwise = (makeResponse a (head rs), (key,as):es)
  8336.                          where rs           = replies key l
  8337.                                (key,(a:as)) = e
  8338.  
  8339. -- Find all possible replies (without leading string for given key ------------
  8340.  
  8341. replies                 :: Words -> Words -> [String]
  8342. replies key l            = ( map (conjugate l . drop (length key))
  8343.                            . filter (prefix key . map ucase)
  8344.                            . tails) l
  8345.  
  8346. prefix                  :: Eq a => [a] -> [a] -> Bool
  8347. []     `prefix` xs       = True
  8348. (x:xs) `prefix` []       = False
  8349. (x:xs) `prefix` (y:ys)   = x==y && (xs `prefix` ys)
  8350.  
  8351. tails                   :: [a] -> [[a]]          -- non-empty tails of list
  8352. tails []                 = []
  8353. tails xs                 = xs : tails (tail xs)
  8354.  
  8355. ucase                   :: String -> String      -- map string to upper case
  8356. ucase                    = map toUpper
  8357.  
  8358. -- Replace keywords in a list of words with appropriate conjugations ----------
  8359.  
  8360. conjugate  :: Words -> Words -> String
  8361. conjugate d = unwords . trailingI . map conj . maybe d  -- d is default input
  8362.               where maybe d xs = if null xs then d else xs
  8363.                     conj  w    = head ([m | (w',m)<-conjugates, uw==w'] ++ [w])
  8364.                                  where uw = ucase w
  8365.                     trailingI  = foldr cons []
  8366.                                  where x `cons` xs | x=="I" && null xs = ["me"]
  8367.                                                    | otherwise         = x:xs
  8368.  
  8369. conjugates :: [(Word, Word)]
  8370. conjugates  = prepare (oneways ++ concat [[(x,y), (y,x)] | (x,y) <- bothways])
  8371.               where oneways  = [ ("me",   "you") ]
  8372.                     bothways = [ ("are",  "am"),     ("we're", "was"),
  8373.                 ("you",  "I"),      ("your",  "my"),
  8374.                 ("I've", "you've"), ("I'm",   "you're") ]
  8375.                     prepare  = map (\(w,r) -> (ucase w, r))
  8376.  
  8377. -- Response data --------------------------------------------------------------
  8378.  
  8379. type Word     = String
  8380. type Words    = [Word]
  8381. type KeyTable = [(Key, Replies)]
  8382. type Replies  = [String]
  8383. type State    = (KeyTable, Replies)
  8384. type Key      = Words
  8385.  
  8386. repeated          :: State -> (String, State)
  8387. repeated (kt, (r:rp))      = (r, (kt, rp))
  8388.  
  8389. newKeyTab                 :: KeyTable -> State -> State
  8390. newKeyTab kt' (kt, rp)     = (kt', rp)
  8391.  
  8392. keyTabOf                  :: State -> KeyTable
  8393. keyTabOf (kt, rp)          = kt
  8394.  
  8395. makeResponse             :: String -> String -> String
  8396. makeResponse ('?':cs) us  = cs ++ " " ++ us ++ "?"
  8397. makeResponse ('.':cs) us  = cs ++ " " ++ us ++ "."
  8398. makeResponse cs       us  = cs
  8399.  
  8400. initial     :: State
  8401. initial      = ([(words k, cycle rs) | (k,rs) <-respMsgs], cycle repeatMsgs)
  8402.  
  8403. repeatMsgs   = [ "Why did you repeat yourself?",
  8404.          "Do you expect a different answer by repeating yourself?",
  8405.          "Come, come, elucidate your thoughts.",
  8406.          "Please don't repeat yourself!" ]
  8407.  
  8408. respMsgs     = [ ("CAN YOU",        canYou),
  8409.          ("CAN I",        canI),
  8410.          ("YOU ARE",        youAre),
  8411.          ("YOU'RE",        youAre),
  8412.          ("I DON'T",        iDont),
  8413.          ("I FEEL",        iFeel),
  8414.          ("WHY DON'T YOU",    whyDont),
  8415.          ("WHY CAN'T I",    whyCant),
  8416.          ("ARE YOU",        areYou), 
  8417.          ("I CAN'T",        iCant),
  8418.          ("I AM",        iAm),
  8419.          ("I'M",        iAm),
  8420.          ("YOU",         you),
  8421.          ("YES",        yes),
  8422.          ("NO",            no),
  8423.          ("COMPUTER",        computer),
  8424.          ("COMPUTERS",        computer),
  8425.          ("I WANT",        iWant),
  8426.          ("WHAT",        question),
  8427.          ("HOW",        question),
  8428.          ("WHO",        question),
  8429.          ("WHERE",        question),
  8430.          ("WHEN",        question),
  8431.          ("WHY",        question),
  8432.          ("NAME",        name),
  8433.          ("BECAUSE",        because),
  8434.          ("CAUSE",        because),
  8435.          ("SORRY",        sorry),
  8436.          ("DREAM",        dream),
  8437.          ("DREAMS",        dream),
  8438.          ("HI",            hello),
  8439.          ("HELLO",        hello),
  8440.          ("MAYBE",        maybe),
  8441.          ("YOUR",        your),
  8442.          ("ALWAYS",        always),
  8443.          ("THINK",        think),
  8444.          ("ALIKE",        alike),
  8445.          ("FRIEND",        friend),
  8446.          ("FRIENDS",        friend),
  8447.          ("",            nokeyMsgs) ]
  8448.  where
  8449.   canYou     = [ "?Don't you believe that I can",
  8450.          "?Perhaps you would like to be able to",
  8451.          "?You want me to be able to" ]
  8452.   canI         = [ "?Perhaps you don't want to",
  8453.          "?Do you want to be able to" ]
  8454.   youAre     = [ "?What makes you think I am",
  8455.          "?Does it please you to believe I am",
  8456.          "?Perhaps you would like to be",
  8457.          "?Do you sometimes wish you were" ]
  8458.   iDont         = [ "?Don't you really",
  8459.          "?Why don't you",
  8460.          "?Do you wish to be able to",
  8461.          "Does that trouble you?" ]
  8462.   iFeel         = [ "Tell me more about such feelings.",
  8463.          "?Do you often feel",
  8464.          "?Do you enjoy feeling" ]
  8465.   whyDont    = [ "?Do you really believe I don't",
  8466.          ".Perhaps in good time I will",
  8467.          "?Do you want me to" ]
  8468.   whyCant    = [ "?Do you think you should be able to",
  8469.          "?Why can't you" ]
  8470.   areYou     = [ "?Why are you interested in whether or not I am",
  8471.          "?Would you prefer if I were not",
  8472.          "?Perhaps in your fantasies I am" ]
  8473.   iCant         = [ "?How do you know you can't",
  8474.          "Have you tried?",
  8475.          "?Perhaps you can now" ]
  8476.   iAm         = [ "?Did you come to me because you are",
  8477.          "?How long have you been",
  8478.          "?Do you believe it is normal to be",
  8479.          "?Do you enjoy being" ]
  8480.   you         = [ "We were discussing you --not me.",
  8481.          "?Oh,",
  8482.          "You're not really talking about me, are you?" ]
  8483.   yes         = [ "You seem quite positive.",
  8484.          "Are you Sure?",
  8485.          "I see.",
  8486.          "I understand." ]
  8487.   no         = [ "Are you saying no just to be negative?",
  8488.          "You are being a bit negative.",
  8489.          "Why not?",
  8490.          "Are you sure?",
  8491.          "Why no?" ]
  8492.   computer   = [ "Do computers worry you?",
  8493.          "Are you talking about me in particular?",
  8494.          "Are you frightened by machines?",
  8495.          "Why do you mention computers?",
  8496.          "What do you think machines have to do with your problems?",
  8497.          "Don't you think computers can help people?",
  8498.          "What is it about machines that worries you?" ]
  8499.   iWant         = [ "?Why do you want",
  8500.          "?What would it mean to you if you got",
  8501.          "?Suppose you got",
  8502.          "?What if you never got",
  8503.          ".I sometimes also want" ]
  8504.   question   = [ "Why do you ask?",
  8505.          "Does that question interest you?",
  8506.          "What answer would please you the most?",
  8507.          "What do you think?",
  8508.          "Are such questions on your mind often?",
  8509.          "What is it that you really want to know?",
  8510.          "Have you asked anyone else?",
  8511.          "Have you asked such questions before?",
  8512.          "What else comes to mind when you ask that?" ]
  8513.   name         = [ "Names don't interest me.",
  8514.          "I don't care about names --please go on." ]
  8515.   because    = [ "Is that the real reason?",
  8516.          "Don't any other reasons come to mind?",
  8517.          "Does that reason explain anything else?",
  8518.          "What other reasons might there be?" ]
  8519.   sorry         = [ "Please don't apologise!",
  8520.          "Apologies are not necessary.",
  8521.          "What feelings do you have when you apologise?",
  8522.          "Don't be so defensive!" ]
  8523.   dream         = [ "What does that dream suggest to you?",
  8524.          "Do you dream often?",
  8525.          "What persons appear in your dreams?",
  8526.          "Are you disturbed by your dreams?" ]
  8527.   hello         = [ "How do you...please state your problem." ]
  8528.   maybe         = [ "You don't seem quite certain.",
  8529.          "Why the uncertain tone?",
  8530.          "Can't you be more positive?",
  8531.          "You aren't sure?",
  8532.          "Don't you know?" ]
  8533.   your         = [ "?Why are you concerned about my",
  8534.          "?What about your own" ]
  8535.   always     = [ "Can you think of a specific example?",
  8536.          "When?",
  8537.          "What are you thinking of?",
  8538.          "Really, always?" ]
  8539.   think         = [ "Do you really think so?",
  8540.          "?But you are not sure you",
  8541.          "?Do you doubt you" ]
  8542.   alike         = [ "In what way?",
  8543.          "What resemblence do you see?",
  8544.          "What does the similarity suggest to you?",
  8545.          "What other connections do you see?",
  8546.          "Cound there really be some connection?",
  8547.          "How?" ]
  8548.   friend     = [ "Why do you bring up the topic of friends?",
  8549.          "Do your friends worry you?",
  8550.          "Do your friends pick on you?",
  8551.          "Are you sure you have any friends?",
  8552.          "Do you impose on your friends?",
  8553.          "Perhaps your love for friends worries you." ]
  8554.  
  8555.   nokeyMsgs    = [ "I'm not sure I understand you fully.",
  8556.          "What does that suggest to you?",
  8557.          "I see.",
  8558.          "Can you elaborate on that?",
  8559.          "Say, do you have any psychological problems?" ]
  8560.  
  8561. -------------------------------------------------------------------------------
  8562. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickdemoprojDÿÿÿ fiùjÀHdemoprojDÿÿÿ fiùjÀH=gpgpNick©-- This is a project file which can be used to load (nearly) all of the
  8563. -- demonstration programs in this directory into Gofer 2.22.
  8564. --
  8565. -- Load into Gofer interpreter using the command:   :p demoproj.gp
  8566. --                    or from command line using:   gofer + demoproj.gp
  8567.  
  8568. ansi.gs
  8569. cat.gs
  8570. change.gs
  8571. commaint.lgs
  8572. evalred.gs
  8573. examples.gs
  8574. iosynch.gs
  8575. lattice.gs
  8576. match.gs
  8577. matrix.gs
  8578. minsrand.gs
  8579. queens.gs
  8580. random.gs
  8581. squigol.gs
  8582. stack.gs
  8583. temps.gs
  8584. tree.gs
  8585.  
  8586. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     2NickansiDÿÿÿ fiùj}IcatDÿÿÿ fiùjIchangeDÿÿÿ fiùj“IevalredDÿÿÿ fiùjùIexamplesDÿÿÿ fiùjâ
  8587. JiosynchDÿÿÿ fiùj6JlatticeDÿÿÿ fiùj! JmatchDÿÿÿ fiùj:ImatrixDÿÿÿ fiùjåKminsrandDÿÿÿ fiùjÿKqueensDÿÿÿ fiùjCJrandomDÿÿÿ fiùj2JsquigolDÿÿÿ fiùjÐJstackDÿÿÿ fiùjÍKtempsDÿÿÿ fiùjêJtreeDÿÿÿ fiùjÎKansiDÿÿÿ fiùj}IcatDÿÿÿ fiùjIchangeDÿÿÿ fiùj“IevalredDÿÿÿ fiùjùIexamplesDÿÿÿ fiùjâ
  8588. JiosynchDÿÿÿ fiùj6JlatticeDÿÿÿ fiùj! JmatchDÿÿÿ fiùj:ImatrixDÿÿÿ fiùjåKminsrandDÿÿÿ fiùjÿKqueensDÿÿÿ fiùjCJrandomDÿÿÿ fiùj2JsquigolDÿÿÿ fiùjÐJstackDÿÿÿ fiùjÍKtempsDÿÿÿ fiùjêJtreeDÿÿÿ fiùjÎK=gsgs2Nick9-- This is a simple program using ANSI escape sequences to create a program
  8589. -- which uses direct cursor addressing and input/output.
  8590. --
  8591. -- People are often quite surprised the first time they see a program like
  8592. -- this written in a functional language.
  8593.  
  8594.  
  8595. -- Basic screen control codes:
  8596.  
  8597. -- Choose whichever of the following lines is suitable for your system:
  8598. cls         = "\ESC[2J"     -- for PC with ANSI.SYS
  8599. cls         = "\^L"         -- for Sun window
  8600.  
  8601. goto x y    = '\ESC':'[':(show y ++(';':show x ++ "H"))
  8602. at (x,y) s  = goto x y ++ s
  8603. home        = goto 1 1
  8604. highlight s = "\ESC[7m"++s++"\ESC[0m"
  8605.  
  8606.  
  8607. -- Some general purpose functions for interactive programs:
  8608.  
  8609. type Interact             = String -> String
  8610.  
  8611. end                      :: Interact
  8612. end cs                    = ""
  8613.  
  8614. readChar, peekChar       :: Interact -> (Char -> Interact) -> Interact
  8615. readChar eof use []       = eof []
  8616. readChar eof use (c:cs)   = use c cs
  8617.  
  8618. peekChar eof use []       = eof []     -- like readChar, but character is
  8619. peekChar eof use cs@(c:_) = use c cs   -- not removed from input stream
  8620.  
  8621. pressAnyKey              :: Interact -> Interact
  8622. pressAnyKey prog          = readChar prog (\c -> prog)
  8623.  
  8624. unreadChar               :: Char -> Interact -> Interact
  8625. unreadChar c prog cs      = prog (c:cs)
  8626.  
  8627. writeChar                :: Char -> Interact -> Interact
  8628. writeChar c prog cs       = c : prog cs
  8629.  
  8630. writeString              :: String -> Interact -> Interact
  8631. writeString s prog cs     = s ++ prog cs
  8632.  
  8633. writes                   :: [String] -> Interact -> Interact
  8634. writes  ss                = writeString (concat ss)
  8635.  
  8636. ringBell                 :: Interact -> Interact
  8637. ringBell                  = writeChar '\BEL'
  8638.  
  8639.  
  8640. -- Screen oriented input/output functions:
  8641.  
  8642. type Pos           = (Int,Int)
  8643.  
  8644. clearScreen        = writeString cls
  8645. writeAt (x,y) s    = writeString (goto x y ++ s)
  8646. moveTo  (x,y)      = writeString (goto x y)
  8647.  
  8648.  
  8649. readAt            :: Pos                  ->  -- Start coordinates
  8650.                      Int                  ->  -- Maximum input length
  8651.                      (String -> Interact) ->  -- How to use entered string
  8652.                      Interact
  8653.  
  8654. readAt (x,y) l use = writeAt (x,y) (copy l '_') (moveTo  (x,y) (loop 0 ""))
  8655.  where loop n s    = readChar (return s) (\c ->
  8656.                      case c of '\BS'         -> delete n s
  8657.                                '\DEL'        -> delete n s
  8658.                                '\n'          -> return s
  8659.                                c | n < l     -> writeChar c (loop (n+1) (c:s))
  8660.                                  | otherwise -> ringBell (loop n s))
  8661.        delete n s  = if n>0 then writeString "\BS_\BS" (loop (n-1) (tail s))
  8662.                             else ringBell (loop 0 "")
  8663.        return s    = use (reverse s)
  8664.  
  8665.  
  8666. defReadAt         :: Pos                  ->  -- Start coordinates
  8667.                      Int                  ->  -- Maximum input length
  8668.                      String               ->  -- Default string value
  8669.                      (String -> Interact) ->  -- How to use entered string
  8670.                      Interact
  8671. defReadAt (x,y) l def use
  8672.                    = writeAt (x,y) (take l (def++repeat '_')) (
  8673.                      readChar (use def) (\c ->
  8674.                      if c=='\n' then use def
  8675.                                 else unreadChar c (readAt (x,y) l use)))
  8676.  
  8677. promptReadAt (x,y) l prompt use
  8678.                    = writeAt (x,y) prompt (readAt (x+length prompt,y) l use)
  8679.  
  8680. defPromptReadAt (x,y) l prompt def use
  8681.                    = writeAt (x,y) prompt (
  8682.                      defReadAt (x+length prompt,y) l def use)
  8683.                                   
  8684.  
  8685. -- A sample program:
  8686. -- Enter the expression `run program' in Gofer to try this program out
  8687.  
  8688. program = writes [ cls,
  8689.                    at (17,5)  (highlight "Demonstration program"),
  8690.                    at (48,5)  "Version 1.0",
  8691.                    at (17,7)  "This program illustrates a simple approach",
  8692.                    at (17,8)  "to screen-based interactive programs using",
  8693.                    at (17,9)  "the Gofer functional programming system.",
  8694.                    at (17,11) "Please press any key to continue ..."
  8695.                  ]
  8696.           (pressAnyKey
  8697.           (promptReadAt (17,15) 18 "Please enter your name: " (\name ->
  8698.           (let reply = "Hello " ++ name ++ "!" in
  8699.            writeAt (40-(length reply/2),18) reply
  8700.           (moveTo (1,23)
  8701.           (writeString "I'm waiting...\n"
  8702.           (pressAnyKey
  8703.           end)))))))
  8704.  
  8705. -- End of file
  8706.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- A version of the Unix utility cat coded up using the I/O facilities of
  8707. -- Gofer, with a dash of Gofer overloading to enable the use of different
  8708. -- argument forms:
  8709. --
  8710.  
  8711. -- Here is a simple version, not using any overloading:
  8712. -- (this version should work in Haskell)
  8713.  
  8714. unixCat :: [String] -> Dialogue
  8715. unixCat  = foldr showFile done
  8716.            where showFile name cont = readFile name abort
  8717.                                       (\s->appendChan stdout s abort cont)
  8718.  
  8719. -- Now we get a little ambitious and write some Gofer-only code:
  8720.  
  8721. class    Cat a        where cat  :: a -> Dialogue
  8722. instance Cat String   where cat n = showFile n done
  8723. instance Cat [String] where cat   = foldr showFile done
  8724.  
  8725. showFile name cont = readFile name abort (\s->appendChan stdout s abort cont)
  8726. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- Let's represent coins by their integer values:
  8727.  
  8728. type Coin = Int
  8729.  
  8730. -- Denominations of coins in current use in the UK:
  8731.  
  8732. coins         :: [Coin]
  8733. coins          = reverse (sort [1, 2, 5, 10, 20, 50, 100])
  8734.  
  8735. -- Find all possible (decreasing sequences) of change for given amount:
  8736.  
  8737. change        :: Int -> [[Coin]]
  8738. change 0       = [[]]
  8739. change amount  = [ c:cs | c<-coins, amount>=c, cs<-change (amount - c) ]
  8740.  
  8741. -- Find optimal change for given amount:
  8742. -- intended semantics: change' = head . change
  8743.  
  8744. change'       :: Int -> [Coin]
  8745. change' 0      = []
  8746. change' amount = coin : change' (amount - coin)
  8747.                  where coin = head [ c | c<-coins, c<=amount ]
  8748.  
  8749.  
  8750. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- This program can be used to solve exercise 1.2.1 in Bird & Wadler's
  8751. -- ``Introduction to functional programming'' ....
  8752. --
  8753. -- Write down the ways to reduce sqr (sqr (3+7)) to normal form
  8754. -- (without assuming shared evaluation of function arguments).
  8755.  
  8756. data  Term  = Square Term      -- The square of a term
  8757.             | Plus Term Term   -- The sum of two terms
  8758.             | Times Term Term  -- The product of two terms
  8759.             | Num Int          -- A numeric constant
  8760.  
  8761. instance Text Term where
  8762.     showsPrec p (Square t)  = showString "sqr " . shows t
  8763.     showsPrec p (Plus n m)  = showChar '(' . shows n . showChar '+'
  8764.                                            . shows m . showChar ')'
  8765.     showsPrec p (Times n m) = showChar '(' . shows m . showChar '*'
  8766.                                            . shows n . showChar ')'
  8767.     showsPrec p (Num i)     = shows i
  8768.  
  8769.  
  8770. -- What are the subterms of a given term?
  8771.  
  8772. type Subterm                     = (Term,           -- The subterm expression
  8773.                                     Term->Term)     -- A function which embeds
  8774.                                                     -- it back in the original
  8775.                                                     -- term
  8776.  
  8777. rebuild                         :: Subterm -> Term
  8778. rebuild (t, embed)               = embed t
  8779.  
  8780. subterms                        :: Term -> [Subterm]
  8781. subterms t                       = [ (t,id) ] ++ properSubterms t
  8782.  
  8783. properSubterms                  :: Term -> [Subterm]
  8784. properSubterms (Square t)        = down Square (subterms t)
  8785. properSubterms (Plus t1 t2)      = down (flip Plus t2)  (subterms t1) ++
  8786.                                    down (Plus t1)       (subterms t2)
  8787. properSubterms (Times t1 t2)     = down (flip Times t2) (subterms t1) ++
  8788.                                    down (Times t1)      (subterms t2)
  8789. properSubterms (Num n)           = []
  8790.  
  8791. down                            :: (Term -> Term) -> [Subterm] -> [Subterm]
  8792. down f                           = map (\(t, e) -> (t, f.e))
  8793.  
  8794.  
  8795. -- Some (semi-)general variations on standard themes:
  8796.  
  8797. filter'                         :: (a -> Bool) -> [(a, b)] -> [(a, b)]
  8798. filter' p                        = filter (p.fst)
  8799.  
  8800. map'                            :: (a -> b) -> [(a, c)] -> [(b, c)]
  8801. map' f                           = map (\(a, c) -> (f a, c))
  8802.  
  8803.  
  8804. -- Reductions:
  8805.  
  8806. isRedex                         :: Term -> Bool
  8807. isRedex (Square _)               = True
  8808. isRedex (Plus (Num _) (Num _))   = True
  8809. isRedex (Times (Num _) (Num _))  = True
  8810. isRedex _                        = False
  8811.  
  8812. contract                        :: Term -> Term
  8813. contract (Square t)              = Times t t
  8814. contract (Plus (Num n) (Num m))  = Num (n+m)
  8815. contract (Times (Num n) (Num m)) = Num (n*m)
  8816. contract _                       = error "Not a redex!"
  8817.  
  8818. singleStep        :: Term -> [Term]
  8819. singleStep         = map rebuild . map' contract . filter' isRedex . subterms
  8820.  
  8821. normalForms       :: Term -> [Term]
  8822. normalForms t      = [ t ],                               if null ts
  8823.                    = [ n | t'<-ts, n<-normalForms t' ],   otherwise
  8824.                      where ts = singleStep t
  8825.  
  8826. redSequences      :: Term -> [[Term]]
  8827. redSequences t     = [ [t] ],                                 if null ts
  8828.                    = [ t:rs | t'<-ts, rs<-redSequences t' ],  otherwise
  8829.                      where ts = singleStep t
  8830.  
  8831.  
  8832. -- Particular example:
  8833.  
  8834. term0 = Square (Square (Plus (Num 3) (Num 7)))
  8835. nfs0  = normalForms term0
  8836. rsq0  = redSequences term0
  8837.  
  8838. -- Using Gofer:
  8839. --
  8840. -- ? length nfs0
  8841. -- 547
  8842. -- (188076 reductions, 340335 cells, 4 garbage collections)
  8843. -- ?
  8844. --
  8845. ks     
  8846. match []       ys       = null ys
  8847. match ('*':ps) xs       = or (map (match ps) (tails xs))
  8848. match (p:ps)   []       = False
  8849. match (p:ps)   (c:cs)
  8850.             | p==c      = match ps cs
  8851.             | otherwise = False
  8852.  
  8853. -- Some combinatorial problems:
  8854.  
  8855. tails []         = [[]]
  8856. tails xs'@(x:xs) = xs' : tails xs
  8857.  
  8858. inits []         = [[]]
  8859. inits (x:xs)     = [] : map (x:) (inits xs)
  8860.  
  8861. perms []         = [[]]
  8862. perms (x:xs)     = concat (map (inter x) (perms xs))
  8863.                    where inter x []         = [[x]]
  8864.                          inter x ys'@(y:ys) = (x:ys') : map (y:) (inter x ys)
  8865.  
  8866. subs []          = [[]]
  8867. subs (x:xs)      = subs xs ++ map (x:) (subs xs)
  8868.  
  8869. segs             = concat . map tails' . reverse . inits
  8870.                    where tails' []         = []
  8871.                          tails' xs'@(_:xs) = xs' : tails' xs
  8872. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- Some examples of functional programming for Gofer
  8873.  
  8874. -- Factorials:
  8875.  
  8876. fact n = product [1..n]                     -- a simple definition
  8877.  
  8878. fac n  = if n==0 then 1 else n * fac (n-1)  -- a recursive definition
  8879.  
  8880. fac' 0 = 1                                  -- using two equations
  8881. fac' n = n * fac (n-1)
  8882.  
  8883. facts  = scanl (*) 1 [1..]                  -- the infinite list of factorials
  8884.  
  8885. facts' = 1 : zipWith (*) facts' [1..]       -- another way of doing it
  8886.  
  8887. facFix = fixedPt f                          -- using a fixed point combinator
  8888.          where  f g 0       = 1             -- overlapping patterns
  8889.                 f g n       = n * g (n-1)
  8890.                 fixedPt f = g where g = f g -- fixed point combinator
  8891.  
  8892. facCase = \n -> case n of
  8893.                   0     ->  1
  8894.                   (m+1) -> (m+1) * facCase m
  8895.  
  8896. -- Fibonacci numbers:
  8897.  
  8898. fib 0     = 0                               -- using pattern matching:
  8899. fib 1     = 1                               -- base cases...
  8900. fib (n+2) = fib n + fib (n+1)               -- recursive case
  8901.  
  8902. fastFib n    = fibs !! n                    -- using an infinite stream
  8903.                where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
  8904.  
  8905. cnkfib 1       = 1                -- using cnk patterns, in a form
  8906. cnkfib 2       = 1                -- suggested by Tony Davie
  8907. cnkfib (2*n)   = (cnkfib(n+1))^^2 - (cnkfib(n-1))^^2
  8908. cnkfib (2*n+1) = (cnkfib(n+1))^^2 + (cnkfib n   )^^2
  8909.  
  8910. x^^0           = 1                -- A fast implementation of
  8911. x^^(2*n)       = xn*xn where xn = x^^n        -- exponentiation
  8912. x^^(2*n+1)     = x * x^^(2*n)
  8913.  
  8914. -- Perfect numbers:
  8915.  
  8916. factors n    = [ i | i<-[1..n-1], n `mod` i == 0 ]
  8917. perfect n    = sum (factors n) == n
  8918. firstperfect = head perfects
  8919. perfects     = filter perfect [1..]
  8920.  
  8921. -- Prime numbers:
  8922.  
  8923. primes       = map head (iterate sieve [2..])
  8924. sieve (p:xs) = [ x | x<-xs, x `rem` p /= 0 ]
  8925.  
  8926. -- Pythagorean triads:
  8927.  
  8928. triads n     = [ (x,y,z) | ns=[1..n], x<-ns, y<-ns, z<-ns, x*x+y*y==z*z ]
  8929.  
  8930. -- The Hamming problem:
  8931.  
  8932. hamming     :: [Int]
  8933. hamming      = 1 : (map (2*) hamming || map (3*) hamming || map (5*) hamming)
  8934.                where (x:xs) || (y:ys)  | x==y  =  x : (xs || ys)
  8935.                                        | x<y   =  x : (xs || (y:ys))
  8936.                                        | y<x   =  y : (ys || (x:xs))
  8937.  
  8938. -- Digits of e:
  8939.  
  8940. eFactBase ::  [Int]
  8941. eFactBase  =  map head (iterate scale (2:repeat 1))
  8942.  
  8943. scale      =  renorm . map (10*) . tail
  8944. renorm ds  =  foldr step [0] (zip ds [2..])
  8945.  
  8946. step (d,n) bs | (d `mod` n + 9) < n  = (d/n) : b : tail bs
  8947.               | otherwise            = c     : b : tail bs
  8948.               where b' = head bs
  8949.                     b  = (d+b') `mod` n
  8950.                     c  = (d+b') `div` n
  8951.  
  8952. -- Pascal's triangle
  8953.  
  8954. pascal = iterate (\row -> zipWith (+) ([0]++row) (row++[0])) [1]
  8955.  
  8956. showPascal = (layn . map show . take 14) pascal
  8957. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- This file contains the example program from section 7.7 of the Haskell
  8958. -- report (version 1.1) for a program using synchronisation.
  8959.  
  8960. main :: Dialogue
  8961. main  = readChan stdin abort (\userInput -> readNums (lines userInput))
  8962.  
  8963. readNums           :: [String] -> Dialogue
  8964. readNums inputLines = readInt "Enter first number: " inputLines
  8965.                         (\num1 inputLines1 ->
  8966.                           readInt "Enter second number: " inputLines1
  8967.                             (\num2 _ -> reportResult num1 num2))
  8968.  
  8969. reportResult       :: Int -> Int -> Dialogue
  8970. reportResult num1 num2
  8971.   = appendChan stdout ("Their sum is: "++ show (num1 + num2)) abort done
  8972.                                   
  8973.  
  8974. -- readInt prints a prompt and then reads a line of input.  If the
  8975. -- line contains an integer, the value of the integer is passed to the
  8976. -- success continuation.  If a line cannot be parsed as an integer,
  8977. -- an error message is printed and the user is asked to try again.
  8978. -- If EOF is detected, the program is aborted.
  8979.  
  8980. readInt :: String -> [String] -> (Int -> [String] -> Dialogue) -> Dialogue
  8981. readInt prompt inputLines succ
  8982.   = appendChan stdout prompt abort
  8983.       (case inputLines of
  8984.          (l1 : rest) -> case (intRead l1) of
  8985.                           [(n,"")] -> succ n rest
  8986.                           _        -> appendChan stdout
  8987.                                        "Error - retype the number\n" abort
  8988.                                        (readInt prompt rest succ)
  8989.          _           -> appendChan stdout "Early EOF" abort done)
  8990.  
  8991. -- Since the Gofer standard prelude does not include the reads function in
  8992. -- the Text class, we have explicitly specified intRead in the definition
  8993. -- above (rather than "reads" as used in the Haskell report).
  8994. -- A straightforward (if rather crude) definition of this function follows:
  8995.  
  8996. intRead   :: String -> [(Int,String)]
  8997. intRead "" = []
  8998. intRead s  = loop 0 s
  8999.              where loop n []        = [(n,"")]
  9000.                    loop n s@(d:ds)
  9001.                        | isDigit d  = loop (10*n+(ord d - ord '0')) ds
  9002.                        | otherwise  = [(n,s)]
  9003. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- This file contains a Gofer implementation of the programs described in:
  9004. --
  9005. -- Computing with lattices: An application of type classes,
  9006. -- Mark P. Jones,
  9007. -- Technical report PRG-TR-11-90,
  9008. -- Programming Research Group,
  9009. -- Oxford University Computing Laboratory, June 1990.
  9010. --
  9011. --
  9012.  
  9013. class Eq a => Lattice a where           -- A type class representing lattices
  9014.     bottom, top :: a
  9015.     meet, join  :: a -> a -> a
  9016.     lt          :: a -> a -> Bool
  9017.     x `lt` y     = (x `join` y) == y
  9018.  
  9019. instance Lattice Bool where             -- Simple instances of Lattice
  9020.     bottom = False
  9021.     top    = True
  9022.     meet   = (&&)
  9023.     join   = (||)
  9024.  
  9025. instance (Lattice a, Lattice b) => Lattice (a,b) where
  9026.     bottom             = (bottom,bottom)
  9027.     top                = (top,top)
  9028.     (x,y) `meet` (u,v) = (x `meet` u, y `meet` v)
  9029.     (x,y) `join` (u,v) = (x `join` u, y `join` v)
  9030.  
  9031.  
  9032. -- Defining the least fixed point operator:
  9033.  
  9034. fix f          = firstRepeat (iterate f bottom)
  9035. firstRepeat xs = head [ x | (x,y) <- zip xs (tail xs), x==y ]
  9036.  
  9037.  
  9038. -- Maximum and minimum frontiers:
  9039.  
  9040. data Minf a = Minf [a]
  9041. data Maxf a = Maxf [a]
  9042.  
  9043. instance Eq a => Eq (Minf a) where                -- Equality on Frontiers
  9044.     (Minf xs) == (Minf ys)  = setEquals xs ys
  9045.  
  9046. instance Eq a => Eq (Maxf a) where
  9047.     (Maxf xs) == (Maxf ys)  = setEquals xs ys
  9048.  
  9049. xs `subset` ys  = all (`elem` ys) xs
  9050. setEquals xs ys =  xs `subset` ys  &&  ys `subset` xs
  9051.  
  9052. instance Lattice a => Lattice (Minf a) where      -- Lattice structure
  9053.     bottom                     = Minf []
  9054.     top                        = Minf [bottom]
  9055.     (Minf xs) `meet` (Minf ys) = minimal [ x`join`y | x<-xs, y<-ys ]
  9056.     (Minf xs) `join` (Minf ys) = minimal (xs++ys)
  9057.  
  9058. instance Lattice a => Lattice (Maxf a) where
  9059.     bottom                     = Maxf []
  9060.     top                        = Maxf [top]
  9061.     (Maxf xs) `meet` (Maxf ys) = maximal [ x`meet`y | x<-xs, y<-ys ]
  9062.     (Maxf xs) `join` (Maxf ys) = maximal (xs++ys)
  9063.  
  9064. -- Find maximal elements of a list xs with respect to partial order po:
  9065.  
  9066. maximalWrt po = loop []
  9067.  where loop xs []                 = xs
  9068.        loop xs (y:ys)
  9069.             | any (po y) (xs++ys) = loop xs ys
  9070.             | otherwise           = loop (y:xs) ys
  9071.  
  9072. minimal :: Lattice a => [a] -> Minf a       -- list to minimum frontier
  9073. minimal  = Minf . maximalWrt (flip lt)
  9074. maximal :: Lattice a => [a] -> Maxf a       -- list to maximum frontier
  9075. maximal  = Maxf . maximalWrt lt
  9076.  
  9077. -- A representation for functions of type Lattice a => a -> Bool:
  9078.  
  9079. data Fn a = Fn (Minf a) (Maxf a)
  9080.  
  9081. instance (Eq (Minf a), Eq (Maxf a)) => Eq (Fn a) where
  9082.     Fn f1 f0 == Fn g1 g0  =  f1==g1 -- && f0==g0
  9083.  
  9084. instance (Lattice (Minf a), Lattice (Maxf a)) => Lattice (Fn a) where
  9085.     bottom               = Fn bottom top
  9086.     top                  = Fn top bottom
  9087.     Fn u l `meet` Fn v m = Fn (u `meet` v) (l `join` m)
  9088.     Fn u l `join` Fn v m = Fn (u `join` v) (l `meet` m)
  9089.  
  9090. -- Navigable lattices:
  9091.  
  9092. class (Lattice (Minf a), Lattice (Maxf a)) => Navigable a where
  9093.     succs :: a -> Minf a
  9094.     preds :: a -> Maxf a
  9095.  
  9096. maxComp :: Navigable a => [a] -> Maxf a   -- implementation of complement
  9097. maxComp  = foldr meet top . map preds
  9098. minComp :: Navigable a => [a] -> Minf a
  9099. minComp  = foldr meet top . map succs
  9100.  
  9101. instance Navigable Bool where             -- instances of Navigable
  9102.     succs False = Minf [True]
  9103.     succs True  = Minf []
  9104.     preds False = Maxf []
  9105.     preds True  = Maxf [False]
  9106.  
  9107. instance (Navigable a, Navigable b) => Navigable (a,b) where
  9108.     succs (x,y) = Minf ([(sx,bottom) | Minf xs = succs x, sx<-xs] ++
  9109.                         [(bottom,sy) | Minf ys = succs y, sy<-ys])
  9110.     preds (x,y) = Maxf ([(px,top)    | Maxf xs = preds x, px<-xs] ++
  9111.                         [(top,py)    | Maxf ys = preds y, py<-ys])
  9112.  
  9113. instance Navigable a => Navigable (Fn a) where
  9114.     succs (Fn f1 f0) = Minf [Fn (Minf [y]) (preds y) | Maxf ys = f0, y<-ys]
  9115.     preds (Fn f1 f0) = Maxf [Fn (succs x) (Maxf [x]) | Minf xs = f1, x<-xs]
  9116.  
  9117. -- Upwards and downwards closure operators:
  9118.  
  9119. upwards (Minf [])         = []
  9120. upwards ts@(Minf (t:_))   = t : upwards (ts `meet` succs t)
  9121.  
  9122. downwards (Maxf [])       = []
  9123. downwards ts@(Maxf (t:_)) = t : downwards (ts `meet` preds t)
  9124.  
  9125. elements :: Navigable a => [a]    -- enumerate all elements in lattice
  9126. elements  = upwards top
  9127.  
  9128. -- Dual lattices:
  9129.  
  9130. class (Lattice a, Lattice b, Dual b a) => Dual a b where
  9131.     comp :: a -> b
  9132.  
  9133. instance Dual Bool Bool where
  9134.     comp = not
  9135.  
  9136. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- The 8-queens problem from Bird and Wadler's book.
  9137. --
  9138. -- Be warned: printing out the complete list of solutions (all 92 of them)
  9139. -- by evaluating: layn (map show' (queens 8)) takes well over 1 million
  9140. -- reductions and uses nearly 2.5 million cells... it may take some time to
  9141. -- execute on slower systems! :-)
  9142.  
  9143. queens 0          = [[]]
  9144. queens (m+1)      = [ p++[n] | p<-queens m, n<-[1..8], safe p n ]
  9145.  
  9146. safe p n          = all not [ check (i,j) (m,n) | (i,j) <- zip [1..] p ]
  9147.                     where m = 1 + length p
  9148.  
  9149. check (i,j) (m,n) = j==n || (i+j==m+n) || (i-j==m-n)
  9150.  
  9151.  
  9152. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- Generate a list of random numbers of length n
  9153.  
  9154. randoms :: Int -> [Int]
  9155. randoms  = iterate (\seed-> (77*seed+1) `rem` 1024)
  9156.  
  9157. rand100  = sort (take 100 (randoms 1000))   -- a sample distribution
  9158.  
  9159. adjs []  = []                    -- a list of pairs of adjacent
  9160. adjs xs  = zip xs (tail xs)            -- elements in a list
  9161.  
  9162.  
  9163. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- A couple of examples defining an ascii form of squigol notation for Gofer:
  9164. -- All of these are of course just different syntax for standard prelude
  9165. -- functions:
  9166.  
  9167. infixr  5  **,   <|,   <-/-,  -/->,  -//->
  9168.  
  9169. f ** xs  =  [ f x | x<-xs ]             -- map
  9170. p <| xs  =  [ x | x<-xs, p x ]          -- filter
  9171.  
  9172. (a <-/- f) []     = a                   -- foldr
  9173. (a <-/- f) (x:xs) = f x ((a <-/- f) xs)
  9174.  
  9175. (f -/-> a) []     = a                   -- foldl
  9176. (f -/-> a) (x:xs) = (f -/-> f a x) xs
  9177.  
  9178. (f -//-> a) xs    = a : (case xs of     -- scanl
  9179.                          []     -> []
  9180.                          (x:xs) -> (f -//-> f a x) xs)
  9181.  
  9182. -- Here's another piece of notation -- not squigol, but of a similar flavour
  9183. -- which would enable us to do away with the zipWith family of functions:
  9184. --
  9185. -- map f xs1 << xs2 << ... << xsn  = zipWithn f xs1 xs2 ... xsn
  9186. --
  9187. -- in terms of the old notation, (<<) = zipWith (\f x->f x)
  9188.  
  9189. infixl 0 <<
  9190.  
  9191. f:fs << x:xs  = f x : (fs << xs)
  9192. _    << _     = []
  9193. WonderWorks     WonderWorks     WonderWorks     -- Representation of temperatures on both Fahrenheit and Celsius scales
  9194. --
  9195. -- This program cannot be used on any machine without support for floating
  9196. -- point numbers within Gofer (e.g. PCs).
  9197.  
  9198. data Temp = Celsius Float | Fahrenheit Float
  9199.  
  9200. fahrToCent f = (f-32.0)/1.8
  9201.  
  9202. instance Eq Temp where
  9203.     Celsius c1    == Celsius c2    = c1==c2
  9204.     Celsius c1    == Fahrenheit f2 = c1==fahrToCent f2
  9205.     Fahrenheit f1 == Celsius c2    = fahrToCent f1==c2
  9206.     Fahrenheit f1 == Fahrenheit f2 = f1==f2
  9207.  
  9208. s     WonderWorks     -- Some simple Gofer programs for manipulating matrices.
  9209. --
  9210.  
  9211. type Matrix k = [Row k]          -- matrix represented by a list of its rows
  9212. type Row k    = [k]              -- a row represented by a list of literals
  9213.  
  9214. -- General utility functions:
  9215.  
  9216. shapeMat    :: Matrix k -> (Int, Int)
  9217. shapeMat mat = (rows mat, cols mat)
  9218.  
  9219. rows        :: Matrix k -> Int
  9220. rows mat     = length mat
  9221.  
  9222. cols        :: Matrix k -> Int
  9223. cols mat     = length (head mat)
  9224.  
  9225. idMat       :: Int -> Matrix Int
  9226. idMat 0      = []
  9227. idMat (n+1)  = [1:copy n 0] ++ map (0:) (idMat n)
  9228.  
  9229. -- Matrix multiplication:
  9230.  
  9231. multiplyMat                     :: Matrix Int -> Matrix Int -> Matrix Int
  9232. multiplyMat a b | cols a==rows b = [[row `dot` col | col<-b'] | row<-a]
  9233.                 | otherwise      = error "incompatible matrices"
  9234.                  where v `dot` w = sum (zipWith (*) v w)
  9235.                        b'        = transpose b
  9236.  
  9237. -- An attempt to implement the standard algorithm for converting a matrix
  9238. -- to echelon form...
  9239.  
  9240. echelon   :: Matrix Int -> Matrix Int
  9241. echelon rs = rs,                                if null rs || null (head rs)
  9242.            = map (0:) (echelon (map tail rs)),  if null rs2
  9243.            = piv : map (0:) (echelon rs'),      otherwise
  9244.              where rs'            = map (adjust piv) (rs1++rs3)
  9245.                    (rs1,rs2)      = span leadZero rs
  9246.                    leadZero (n:_) = n==0
  9247.                    (piv:rs3)      = rs2
  9248.  
  9249. -- To find the echelon form of a matrix represented by a list of rows rs:
  9250. -- 
  9251. -- {first line in definition of echelon}:
  9252. --  If either the number of rows or the number of columns in the matrix
  9253. --  is zero (i.e. if null rs || null (head rs)), then the matrix is
  9254. --  already in echelon form.
  9255. -- 
  9256. -- {definition of rs1, rs2, leadZero in where clause}:
  9257. --  Otherwise, split the matrix into two submatrices rs1 and rs2 such that
  9258. --  rs1 ++ rs2 == rs  and all of the rows in rs1 begin with a zero.
  9259. --
  9260. -- {second line in definition of echelon}:
  9261. --  If rs2 is empty (i.e. if null rs2) then every row begins with a zero
  9262. --  and the echelon form of rs can be found by adding a zero on to the
  9263. --  front of each row in the echelon form of (map tail rs).
  9264. --
  9265. -- {Third line in definition of echelon, and definition of piv, rs3}:
  9266. --  Otherwise, the first row of rs2 (denoted piv) contains a non-zero
  9267. --  leading coefficient.  After moving this row to the top of the matrix
  9268. --  the original matrix becomes  piv:(rs1++rs3).
  9269. --  By subtracting suitable multiples of piv from (suitable multiples of)
  9270. --  each row in (rs1++rs3) {see definition of adjust below}, we obtain a
  9271. --  matrix of the form:
  9272. --
  9273. --          <----- piv ------>
  9274. --          __________________
  9275. --          0  |
  9276. --          .  |
  9277. --          .  |      rs'        where rs' = map (adjust piv) (rs1++rs3)
  9278. --          .  |
  9279. --          0  |
  9280. --
  9281. --  whose echelon form is  piv : map (0:) (echelon rs').
  9282. --
  9283.  
  9284. adjust              :: Num a => Row a -> Row a -> Row a
  9285. adjust (m:ms) (n:ns) = zipWith (-) (map (n*) ms) (map (m*) ns)
  9286.  
  9287. -- A more specialised version of this, for matrices of integers, uses the
  9288. -- greatest common divisor function gcd in an attempt to try and avoid
  9289. -- result matrices with very large coefficients:
  9290. --
  9291. -- (I'm not sure this is really worth the trouble!)
  9292.  
  9293. adjust'              :: Row Int -> Row Int -> Row Int
  9294. adjust' (m:ms) (n:ns) = ns,                                  if g==0
  9295.                       = zipWith (\x y -> b*y - a*x) ms ns,   otherwise
  9296.                         where g = gcd m n
  9297.                               a = n/g
  9298.                               b = m/g
  9299. -- end!!
  9300. rWorks     WonderWorks     -------------------------------------------------------------------------------
  9301. -- The following random number generator is an implementation of the
  9302. -- Minimum Standard generator recommended in
  9303. --
  9304. --    Random Number Generators: Good ones are hard to find
  9305. --       Stephen K Park & Keith W Miller
  9306. --       Communications of the ACM, Oct 88, Vol 31 No 10 1192 - 1201
  9307. --
  9308. -- Seeds must be in the range 1..2147483646, that is (1..(2**31)-2)
  9309. -- Output will also be in that range. The generator is full period so that
  9310. -- all 2147483646 values will be generated before the initial seed repeats.
  9311. -- Dividing by 2147483647 (real) as in the Pascal code below will map it
  9312. -- into the range (0..1) if required.
  9313. --
  9314. -- [This program assumes that you are working on a machine with (at least)
  9315. -- 32 bit integers.  Folks using Gofer on a PC will have to stick with the
  9316. -- less sophisticated random number generator in the file `randoms'.]
  9317. -------------------------------------------------------------------------------
  9318.  
  9319. min_stand_test  :: Int -> Int
  9320. min_stand_test n = if test > 0 then test else test + 2147483647
  9321.            where test = 16807 * lo - 2836 * hi
  9322.                  hi   = n `div` 127773
  9323.                  lo   = n `rem` 127773
  9324.  
  9325. min_stand_randoms :: Int -> [Int]
  9326. min_stand_randoms  = iterate min_stand_test
  9327.  
  9328. -- The article produced below also gives a test to check that the
  9329. -- random number generator is working.  We can duplicate this test
  9330. -- as follows:
  9331. --
  9332. --   ? strictIterate min_stand_test 1 !! 10000
  9333. --   1043618065
  9334. --   (149758 reductions, 240096 cells, 2 garbage collections)
  9335. --
  9336. -- Happily, this is the result that we expect to obtain.
  9337. --
  9338. -- The function strictIterate is defined below.  It is similar to the
  9339. -- standard iterate function except that it forces the evaluation of
  9340. -- each element in the list produced (except possibly the first).
  9341. -- Had we instead tried to evaluate:
  9342. --
  9343. --   iterate min_stand_test 1 !! 10000
  9344. --
  9345. -- Gofer would have first constructed the expression graph:
  9346. --
  9347. --   min_stand_test (min_stand_test (... (min_stand_test 1) ...))
  9348. --
  9349. -- in which the min_stand_test function is applied 10000 times to 1
  9350. -- and then attempted to evaluate this.  In either case, you'd need a
  9351. -- large heap to represent the complete expression and a large stack so
  9352. -- that you could handle 10000 levels of function calling.  Most standard
  9353. -- configurations of Gofer aren't set up with sufficiently large defaults
  9354. -- to make this possible, so the most likely outcome would be a runtime
  9355. -- error of one kind or another!
  9356.  
  9357. strictIterate    :: (a -> a) -> a -> [a]
  9358. strictIterate f x = x : strict (strictIterate f) (f x)
  9359.  
  9360. -------------------------------------------------------------------------------
  9361. -- Some comments and code from:
  9362. --
  9363. -- Random Number Generators: Good ones are hard to find
  9364. --    Stephen K Park & Keith W Miller
  9365. --    Communications of the ACM, Oct 88, Vol 31 No 10 1192 - 1201
  9366. -- 
  9367. -- Minimum standard random number generator implementations
  9368. -- 
  9369. -- This version of Random will be correct if reals are represented
  9370. -- with a 46-bit or larger mantissa (excluding the sign bit).
  9371. -- For example, this version will be correct on all systems that support
  9372. -- the IEEE 64-bit real arithmetic standard since the mantissa in that case
  9373. -- is 53-bits.
  9374. -- ... from page 1195 upper right quadrant
  9375. -- 
  9376. -- var seed : real;
  9377. -- ...
  9378. -- function Random : real;
  9379. --     (* Real Version 1 *)
  9380. -- const
  9381. --    a = 16807.0;
  9382. --    m = 2147483647.0;
  9383. -- var
  9384. --    temp : real;
  9385. -- begin
  9386. --    temp := a * seed;
  9387. --    seed :=
  9388. --       temp - m * Trunc(temp / m);
  9389. --    Random := seed / m;
  9390. -- end;
  9391. -- 
  9392. -- ... from page 1195 lower right quadrant, variant by L. Schrage, 1979, 1983
  9393. --
  9394. -- var seed : integer;
  9395. -- ...
  9396. -- function Random : real;
  9397. --     (* Integer Version 2 *)
  9398. -- const
  9399. --    a = 16807;
  9400. --    m = 2147483647;
  9401. --    q = 127773;    (* m div a *)
  9402. --    r = 2836;    (* m mod a *)
  9403. -- var
  9404. --    lo, hi, test : integer;
  9405. -- begin
  9406. --    hi := seed div q;
  9407. --    lo := seed mod q;
  9408. --    test := a * lo - r * hi;
  9409. --    if test > 0 then
  9410. --       seed := test
  9411. --    else
  9412. --       seed := test + m;
  9413. -- 
  9414. --    Random := seed / m;
  9415. -- end;
  9416. -- 
  9417. -- From page 1195 lower left quadrant
  9418. --
  9419. -- seed := 1;
  9420. -- for n := 1 to 10000 do
  9421. --    u := Random;
  9422. -- Writeln('The current value of seed is : ', seed);
  9423. -- (* Expect 1043618065 *)
  9424. -------------------------------------------------------------------------------
  9425.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- Stacks: using restricted type synonyms
  9426.  
  9427. type Stack a = [a] in emptyStack, push, pop, topOf, isEmpty
  9428.  
  9429. emptyStack :: Stack a
  9430. emptyStack  = []
  9431.  
  9432. push       :: a -> Stack a -> Stack a
  9433. push        = (:)
  9434.  
  9435. pop        :: Stack a -> Stack a
  9436. pop []      = error "pop: empty stack"
  9437. pop (_:xs)  = xs
  9438.  
  9439. topOf      :: Stack a -> a
  9440. topOf []    = error "topOf: empty stack"
  9441. topOf (x:_) = x
  9442.  
  9443. isEmpty    :: Stack a -> Bool
  9444. isEmpty     = null
  9445.  
  9446. instance Eq a => Eq (Stack a) where
  9447.     s1 == s2 | isEmpty s1 = isEmpty s2
  9448.              | isEmpty s2 = isEmpty s1
  9449.              | otherwise  = topOf s1 == topOf s2 && pop s1 == pop s2
  9450.  
  9451. -- A slightly different presentation:
  9452.  
  9453. type Stack' a = [a] in
  9454.    emptyStack' :: Stack' a,
  9455.    push'       :: a -> Stack' a -> Stack' a,
  9456.    pop'        :: Stack' a -> Stack' a,
  9457.    topOf'      :: Stack' a -> a,
  9458.    isEmpty'    :: Stack' a -> Bool
  9459.  
  9460. emptyStack'  = []
  9461.  
  9462. push'        = (:)
  9463.  
  9464. pop' []      = error "pop': empty stack"
  9465. pop' (_:xs)  = xs
  9466.  
  9467. topOf' []    = error "topOf': empty stack"
  9468. topOf' (x:_) = x
  9469.  
  9470. isEmpty'     = null
  9471.  
  9472. instance Eq a => Eq (Stack' a) where
  9473.     s1 == s2 | isEmpty' s1 = isEmpty' s2
  9474.              | isEmpty' s2 = isEmpty' s1
  9475.              | otherwise   = topOf' s1 == topOf' s2 && pop' s1 == pop' s2
  9476.  
  9477.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- Here are a collection of fairly standard functions for manipulating
  9478. -- one form of binary trees
  9479.  
  9480. data Tree a = Lf a | Tree a :^: Tree a
  9481.  
  9482. reflect t@(Lf x)  = t
  9483. reflect (l:^:r)   = r :^: l
  9484.  
  9485. mapTree f (Lf x)  = Lf (f x)
  9486. mapTree f (l:^:r) = mapTree f l :^: mapTree f r
  9487.  
  9488. -- Functions to calculate the list of leaves on a tree:
  9489.  
  9490. leaves, leaves'  :: Tree a -> [a]
  9491.  
  9492. leaves (Lf l)     = [l]                     -- direct version
  9493. leaves (l:^:r)    = leaves l ++ leaves r
  9494.  
  9495. leaves' t         = leavesAcc t []          -- using an accumulating parameter
  9496.                     where leavesAcc (Lf l)  = (l:)
  9497.                           leavesAcc (l:^:r) = leavesAcc l . leavesAcc r
  9498.  
  9499. -- Picturing a tree:
  9500.  
  9501. drawTree :: Text a => Tree a -> String
  9502. drawTree  = unlines . thd3 . pic
  9503.  where pic (Lf a)  = (1,1,["-- "++show a])
  9504.        pic (l:^:r) = (hl+hr+1, hl+1, top pl ++ mid ++ bot pr)
  9505.                      where (hl,bl,pl) = pic l
  9506.                            (hr,br,pr) = pic r
  9507.                            top        = zipWith (++) (copy (bl-1) "   " ++
  9508.                                                       [" ,-"] ++
  9509.                                                       copy (hl-bl) " | ")
  9510.                            mid        = ["-| "]
  9511.                            bot        = zipWith (++) (copy (br-1) " | " ++
  9512.                                                       [" `-"] ++
  9513.                                                       copy (hr-br) "   ")
  9514.  
  9515. -- Finally, here is an example due to Richard Bird, which uses lazy evaluation
  9516. -- and recursion to create a `cyclic' program which avoids multiple traversals
  9517. -- over a data structure:
  9518.  
  9519. replaceAndMin m (Lf n)  =  (Lf m, n)
  9520. replaceAndMin m (l:^:r) =  (rl :^: rr, ml `min` mr)
  9521.                            where (rl,ml) = replaceAndMin m l
  9522.                                  (rr,mr) = replaceAndMin m r
  9523.  
  9524. replaceWithMin t = mt where (mt,m) = replaceAndMin m t
  9525.  
  9526. sample  = (Lf 12 :^: (Lf 23 :^: Lf 13)) :^: Lf 10
  9527. sample2 = sample  :^: sample
  9528. sample4 = sample2 :^: sample2
  9529.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NicklambdaNuDÿÿÿ fiùjE
  9530. LlambdaVrDÿÿÿ fiùjð     LlnexamplesDÿÿÿ fiùj[LlvexamplesDÿÿÿ fiùjòMtraceDÿÿÿ fiùj"LlambdaNuDÿÿÿ fiùjE
  9531. LlambdaVrDÿÿÿ fiùjð     LlnexamplesDÿÿÿ fiùj[LlvexamplesDÿÿÿ fiùjòMtraceDÿÿÿ fiùj"L=LamvarLamvarNick`-----------------------------------------------------------------------------
  9532. -- Lambda Nu:                                               January 25, 1993
  9533. --
  9534. -- The definitions in this file provide support for a simple implementation
  9535. -- of Lambda Nu -- a generalisation of Lambda Var as described by Odersky,
  9536. -- Rabin and Hudak in their POPL paper, January 1993.
  9537. --
  9538. -- Of course, the implementation of the fuction `begin' is not sound.  You must
  9539. -- ensure that you use this function correctly -- the responsibility is on you,
  9540. -- the programmer.
  9541. --
  9542. -- Incidentally, the definitions in this file can only be used if the
  9543. -- version of Gofer that you are using has been compiled with the correct
  9544. -- set of primitives included.  In addition, there is no support for these
  9545. -- primitives in gofc, the Gofer compiler.
  9546. --
  9547. -- Operator precedence table: -----------------------------------------------
  9548.  
  9549. infixr 3 =:
  9550. infixr 2 >>, >>=, ?
  9551.  
  9552. -- Lambda nu hacking: -------------------------------------------------------
  9553.  
  9554. primitive return    "primLnReturn" :: a -> Cmd b a
  9555. primitive (>>=)        "primLnBind"   :: Cmd a b -> (b -> Cmd a c) -> Cmd a c
  9556. primitive primLnTagEq    "primLnTagEq"  :: Tag a -> Tag a -> Bool
  9557. primitive newvar    "primLnNew"    :: Cmd a (Tag b)
  9558. primitive assign    "primLnAssign" :: Tag a -> a -> Cmd b ()
  9559. primitive (?)        "primLnRead"   :: Tag a -> (a -> Cmd b c) -> Cmd b c
  9560. primitive io        "primLnIo"     :: ((a -> b) -> b) -> Cmd b a
  9561. primitive begin        "primLnBegin"  :: Cmd a b -> a
  9562.  
  9563. instance Eq (Tag a) where
  9564.     (==) = primLnTagEq
  9565.  
  9566. (>>)         :: Cmd c a -> Cmd c b -> Cmd c b
  9567. f >> g        = f >>= const g
  9568.  
  9569. seq          :: [Cmd m a] -> Cmd m ()
  9570. seq           = foldr (>>) (return ())
  9571.  
  9572. new          :: (Tag a -> Cmd b c) -> Cmd b c
  9573. new           = (>>=) newvar
  9574.  
  9575. (=:)         :: a -> Tag a -> Cmd b ()
  9576. value =: tag  = assign tag value
  9577.  
  9578. out          :: (a -> a) -> Cmd a ()
  9579. out a         = io (\c -> a (c ()))
  9580.  
  9581. outConst      = out . const
  9582.  
  9583. pure         :: Cmd a a -> a
  9584. pure a        = begin (a >>= outConst)
  9585.  
  9586. deref        :: Tag a -> Cmd b a
  9587. deref t       = t ? return
  9588.  
  9589. -- Very simple monadic I/O in the Glasgow style: -----------------------------
  9590.  
  9591. primitive getch           "primLnGetch"    :: Cmd a Char
  9592. primitive putchar      "primLnPutchar"  :: Char -> Cmd a ()
  9593. primitive system       "primLnSystem"   :: String -> Cmd a Int
  9594.  
  9595. getchar :: Cmd a Char
  9596. getchar  = getch     >>= \c ->
  9597.        putchar c >>
  9598.        return c
  9599.  
  9600. puts    :: String -> Cmd a ()
  9601. puts     = seq . map putchar
  9602.  
  9603. -- an abuse of pure to implement hbc's debugging hack:
  9604. trace s a = pure (puts s >> return a)
  9605.  
  9606. -- End of lambdaNu -----------------------------------------------------------
  9607. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -----------------------------------------------------------------------------
  9608. -- Lambda Var:                                              November 3, 1992
  9609. --
  9610. -- The definitions in this file provide support for a simple implementation
  9611. -- of Lambda Var -- as described by Odersky, Rabin and Hudak in their POPL
  9612. -- paper, January 1993.  Note however, that the implementation of the
  9613. -- fuction `pure' is not sound.  You must ensure that you use this function
  9614. -- correctly -- the responsibility is on you, the programmer.
  9615. --
  9616. -- This file must be loaded with the constructor classes prelude, which is
  9617. -- usually called `cc.prelude'.
  9618. --
  9619. -- Incidentally, the definitions in this file can only be used if the
  9620. -- version of Gofer that you are using has been compiled with the correct
  9621. -- set of primitives included.  In addition, there is no support for these
  9622. -- primitives in gofc, the Gofer compiler.
  9623. --
  9624. -- Operator precedence table: -----------------------------------------------
  9625.  
  9626. infixr 1 =:
  9627. infixr 0 $$, $=, ?
  9628.  
  9629. -- Lambda var hacking: ------------------------------------------------------
  9630.  
  9631. primitive pure         "primLvPure"   :: Proc a -> a
  9632. primitive (?)          "primLvRead"   :: Var a -> (a -> Proc b) -> Proc b
  9633. primitive primLvReturn "primLvReturn" :: a -> Proc a
  9634. primitive primLvBind   "primLvBind"   :: Proc a -> (a -> Proc b) -> Proc b
  9635. primitive (=:)           "primLvAssign" :: a -> Var a -> Proc b
  9636. primitive var           "primLvVar"    :: (Var a -> Proc b) -> Proc b
  9637. primitive newvar       "primLvNewvar" :: Proc (Var a)
  9638. primitive primLvVarEq  "primLvVarEq"  :: Var a -> Var a -> Bool
  9639.  
  9640. type Prog      = Proc ()
  9641.  
  9642. ($=)             :: Monad m => m a -> (a -> m b) -> m b
  9643. ($=)              = bind
  9644.  
  9645. ($$)             :: Monad m => m a -> m b -> m b
  9646. f $$ g            = f $= const g
  9647.  
  9648. seq              :: Monad m => [m a] -> m ()
  9649. seq          = foldr ($$) (result ())
  9650.  
  9651. instance Eq (Var a)   where (==)    = primLvVarEq
  9652.  
  9653. instance Functor Proc where map f x = [ f y | y <- x ]
  9654.  
  9655. instance Monad Proc   where result  = primLvReturn
  9656.                 bind    = primLvBind
  9657.  
  9658. -- Very simple monadic I/O in the Glasgow style: -----------------------------
  9659.  
  9660. primitive getch           "primLvGetch"    :: Proc Char
  9661. primitive putchar      "primLvPutchar"  :: Char -> Proc ()
  9662.  
  9663. getchar :: Proc Char
  9664. getchar  = getch     $= \c ->
  9665.        putchar c $$
  9666.        result c
  9667.  
  9668. puts    :: String -> Proc ()
  9669. puts     = seq . map putchar
  9670.  
  9671. -- an abuse of pure to implement hbc's debugging hack:
  9672. trace s a = pure (puts s $$ result a)
  9673.  
  9674. -- End of lambdaVr -----------------------------------------------------------
  9675. WonderWorks     --
  9676. -- Examples for use with LambdaNu
  9677. --
  9678.  
  9679. imap f xs        =  begin
  9680.                          (new 
  9681.                (\t ->
  9682.                  assign t xs >>
  9683.                  let loop = deref t >>= \ys ->
  9684.                             case ys of 
  9685.                           (y:ys') -> out (f y :) >>
  9686.                                  assign t ys' >>
  9687.                              loop
  9688.                           [] -> outConst []
  9689.                              in loop))
  9690.  
  9691. imap' f xs  = newvar      >>= \t ->
  9692.               assign t xs >>
  9693.               let loop = t ? \ys ->
  9694.                          case ys of (z:zs) -> out (f z :) >>
  9695.                                               assign t zs >>
  9696.                                               loop
  9697.                                     []     -> outConst []
  9698.              in  loop
  9699.  
  9700.  
  9701. ones = 1:ones
  9702.                      
  9703. test1 = imap (+1) [1,2,3]
  9704. test2 = imap (+1) ones
  9705.  
  9706. funny x = begin (new (\t -> assign t x >>
  9707.                             deref t    >>= \x' ->
  9708.                             outConst x'))
  9709.  
  9710. funny' x y = begin (new (\t ->
  9711.                    (new (\s -> assign t x >>
  9712.                                assign s y >>
  9713.                                deref t    >>= \x' ->
  9714.                                deref s    >>= \y' ->
  9715.                                outConst (x',y')))))
  9716.  
  9717. double xs = begin
  9718.               (new
  9719.                 (\t -> assign t xs >>
  9720.                        let loop = deref t >>= \zs ->
  9721.                                   case zs of
  9722.                                     (y:ys) -> out (\zs -> y:y:zs) >>
  9723.                                               assign t ys         >>
  9724.                                               loop
  9725.                                     []     -> out (const [])
  9726.                        in  loop))
  9727.  
  9728.  
  9729. double' xs = begin
  9730.               (let loop (y:ys) = out (\zs -> y:y:zs) >> loop ys
  9731.                    loop []     = out (const [])
  9732.                in  loop xs)
  9733.  
  9734.  
  9735. double'' (y:ys) = y : y : double'' ys
  9736. double'' []     = []
  9737.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -----------------------------------------------------------------------------
  9738. -- trace :: String -> a -> a    Print the string and return the given value
  9739. --
  9740. -- This file brings in just enough of the lambda var primitives to implement
  9741. -- a version of the impure hbc debugging function `trace'.  Note that, this
  9742. -- can only be used in conjunction with a version of the Gofer interpreter
  9743. -- that has been compiled to include these primitives.  See the file
  9744. -- lambdaVr for more details.
  9745. -----------------------------------------------------------------------------
  9746.  
  9747. primitive primLvPure   "primLvPure"     :: Proc a -> a
  9748. primitive primLvReturn "primLvReturn"   :: a -> Proc a
  9749. primitive primLvBind   "primLvBind"     :: Proc a -> (a -> Proc b) -> Proc b
  9750. primitive primLvPutch  "primLvPutchar"  :: Char -> Proc ()
  9751.  
  9752. trace    :: String -> a -> a
  9753. trace s a = primLvPure (f s)
  9754.             where f []     = primLvReturn a
  9755.                   f (x:xs) = primLvBind (primLvPutch x) (\_ -> f xs)
  9756.  
  9757. -- End of trace --------------------------------------------------------------
  9758. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  9759. -- Examples for use with LambdaVr
  9760. --
  9761.  
  9762. -- Simple functional version: -------------------------------------------------
  9763.  
  9764. data Tree a = Leaf a | Tree a :^: Tree a
  9765.  
  9766. label     :: Tree a -> Tree (a,Int)
  9767. label tree = fst (lab tree 0)
  9768.  where lab (Leaf n)  c  =  (Leaf (n,c), c+1)
  9769.        lab (l :^: r) c  =  (l' :^: r', c'')
  9770.                            where (l',c')  = lab l c
  9771.                                  (r',c'') = lab r c'
  9772.  
  9773. -- Lambda var version: --------------------------------------------------------
  9774.  
  9775. counter = var (\cnt -> 0 =: cnt $$
  9776.                        result (cnt        ? \c ->
  9777.                                c+1 =: cnt $$
  9778.                                result c))
  9779.  
  9780. label0 tree = pure (counter $= lab tree)
  9781.  
  9782. lab (Leaf n)  ctr = ctr                   $= \c ->
  9783.                     result (Leaf (n,c))
  9784. lab (l :^: r) ctr = lab l ctr             $= \l' ->
  9785.                     lab r ctr             $= \r' ->
  9786.                     result (l' :^: r')
  9787.  
  9788. {- Here is an example where pure is not safe:
  9789.  
  9790. label0 tree = pure (lab tree)
  9791.  where ctr           = pure counter
  9792.        lab (Leaf n)  = ctr                   $= \c ->
  9793.                        result (Leaf (n,c))
  9794.        lab (l :^: r) = lab l                 $= \l' ->
  9795.                        lab r                 $= \r' ->
  9796.                        result (l' :^: r')
  9797.  
  9798.  gives    label0 aTree = (Leaf (1,0) :^: Leaf (2,1)) :^:
  9799.                          (Leaf (3,2) :^: Leaf (4,3))
  9800.  
  9801. whereas:
  9802.  
  9803. label0 tree = pure (lab tree)
  9804.  where lab (Leaf n)  = pure counter          $= \c ->
  9805.                        result (Leaf (n,c))
  9806.        lab (l :^: r) = lab l                 $= \l' ->
  9807.                        lab r                 $= \r' ->
  9808.                        result (l' :^: r')
  9809.  
  9810.  gives    label0 aTree = (Leaf (1,0) :^: Leaf (2,0)) :^:
  9811.                          (Leaf (3,0) :^: Leaf (4,0))
  9812. -}
  9813.  
  9814. -- State monad version: -------------------------------------------------------
  9815.  
  9816. data State s a = ST (s -> (a,s))
  9817.  
  9818. instance Functor (State s) where
  9819.     map f (ST st) = ST (\s -> let (x,s') = st s in (f x, s'))
  9820.  
  9821. instance Monad (State s) where
  9822.     result x      = ST (\s -> (x,s))
  9823.     ST m `bind` f = ST (\s -> let (x,s') = m s
  9824.                                   ST f'  = f x
  9825.                               in  f' s')
  9826.  
  9827. startingWith         :: State s a -> s -> a
  9828. ST m `startingWith` v = fst (m v)
  9829.  
  9830. incr :: State Int Int
  9831. incr  = ST (\s -> (s,s+1))
  9832.  
  9833. label1     :: Tree a -> Tree (a,Int)
  9834. label1 tree = lab tree `startingWith` 0
  9835.  where lab (Leaf n)  = incr                  `bind` \c ->
  9836.                        result (Leaf (n,c))
  9837.        lab (l :^: r) = lab l                 `bind` \l' ->
  9838.                        lab r                 `bind` \r' ->
  9839.                        result (l' :^: r')
  9840.  
  9841. label2     :: Tree a -> Tree (a,Int)
  9842. label2 tree = lab tree `startingWith` 0
  9843.  where lab (Leaf n)  = [ Leaf (n,c) | c <- incr ]
  9844.        lab (l :^: r) = [  l :^: r   | l <- lab l, r <- lab r ]
  9845.  
  9846.  
  9847. -- sample data: ---------------------------------------------------------------
  9848.  
  9849. aTree = balance [1..4]
  9850.  
  9851. balance ns | len == 1   =  Leaf (head ns)
  9852.            | otherwise  =  balance (take h ns) :^: balance (drop h ns)
  9853.              where len = length ns
  9854.                    h   = len `div` 2
  9855.  
  9856. balance' ns = bal (length ns) ns
  9857.  where bal l ns | l == 1    = Leaf (head ns)
  9858.                 | otherwise = let h = l `div` 2
  9859.                               in  bal h (take h ns) :^: bal (l-h) (drop h ns)
  9860.  
  9861. -------------------------------------------------------------------------------
  9862. -- A swap function:
  9863.  
  9864. swap    :: Var a -> Var a -> Proc ()
  9865. swap v w = v ? \x ->
  9866.            w ? \y ->
  9867.            x =: w $$
  9868.            y =: v
  9869.  
  9870. valOf v = v ? result 
  9871.  
  9872. -- usage: swap elements of arrays a and b in the range between 1 and n
  9873. --
  9874. --seq [swap (a!i) (b!i) | i <- [1..n]]
  9875.  
  9876.  
  9877. increment v = v ? \val -> val+1 =: v
  9878.  
  9879. anotherTest = var (\v -> 0 =: v      $$
  9880.                          increment v $$
  9881.                          increment v $$
  9882.                          increment v $$
  9883.                          increment v $$
  9884.                          v           ?
  9885.                          result)
  9886.  
  9887. swapTest = var (\v ->
  9888.            var (\w ->
  9889.            "I'm v" =: v $$
  9890.            "I'm w" =: w $$
  9891.            swap v w     $$
  9892.            v            ? \vValue ->
  9893.            w            ? \wValue ->
  9894.            result (vValue,wValue)))
  9895.  
  9896.  
  9897. swapTest2 = var           (\v ->
  9898.             var           (\w -> 
  9899.             0  =: v       $$
  9900.             10 =: w       $$
  9901.             v             ? \vValue ->
  9902.             vValue+1 =: v $$
  9903.             swap v w      $$
  9904.             v             ? \vValue ->
  9905.             w             ? \wValue ->
  9906.             result (vValue,wValue)))
  9907.             
  9908. -- A queue implementation
  9909.  
  9910. -- First, its interface:
  9911.  
  9912. type Queue a = ( a -> Proc (),  -- put
  9913.                  Proc a,        -- get
  9914.                  Proc Bool      -- isempty
  9915.                )
  9916.  
  9917. -- Procedures to take apart the method tuple:
  9918.  
  9919. put (p, g, i) = p
  9920. get (p, g, i) = g
  9921. isempty (p, g, i) = i
  9922.  
  9923. -- Now, the implementation in terms of a linked list:
  9924.  
  9925. data Link a = Link a (Var (Link a))
  9926.  
  9927. mkqueue :: Proc (Queue Int)
  9928. mkqueue = 
  9929.   var (\v ->
  9930.   var (\front -> v =: front $$
  9931.   var (\rear  -> v =: rear  $$
  9932.    result
  9933.     ( \x ->                             -- put x
  9934.       rear ? \r -> 
  9935.       var (\r' ->
  9936.       Link x r' =: r $$
  9937.       r' =: rear)
  9938.     ,
  9939.       front ? \f ->                     -- get
  9940.       f ? \ (Link x f') ->
  9941.       f' =: front $$
  9942.       result x
  9943.     ,
  9944.       front ? \f ->                     -- isempty
  9945.       rear ? \r ->
  9946.       result (f == r)
  9947.     )
  9948.    )))
  9949.  
  9950. -- Usage:
  9951.  
  9952. qTest = pure (mkqueue        $= \q     ->
  9953.               put q 1        $$
  9954.               get q          $= \first ->
  9955.               isempty q      $= \empty ->
  9956.               result (if first == 1 && empty then "so should it be"
  9957.                                              else "something's wrong"))
  9958.  
  9959. -- An alternative way to write the same thing:
  9960.  
  9961. mkqueue1 :: Proc (Queue Int)
  9962. mkqueue1  = 
  9963.   newvar     $= \v     ->
  9964.   newvar     $= \front ->
  9965.   v =: front $$
  9966.   newvar     $= \rear  ->
  9967.   v =: rear  $$
  9968.   let
  9969.       put x   = rear?             \r ->
  9970.                 newvar         $= \r' ->
  9971.                 Link x r' =: r $$
  9972.                 r' =: rear
  9973.  
  9974.       get     = front?            \f ->
  9975.                 f?                \(Link x f') ->
  9976.                 f' =: front    $$
  9977.                 result x
  9978.  
  9979.       isempty = front          ?  \f ->
  9980.                 rear           ?  \r ->
  9981.                 result (f==r)
  9982.   in
  9983.       result (put, get, isempty)
  9984.  
  9985. -- Usage:
  9986.  
  9987. qTest1 = pure (mkqueue1       $= \q     ->
  9988.                put q 1        $$
  9989.                get q          $= \first ->
  9990.                isempty q      $= \empty ->
  9991.                result (if first == 1 && empty then "so should it be"
  9992.                                               else "something's wrong"))
  9993.  
  9994. qTest2 = mkqueue1       $= \q     ->
  9995.          put q 1        $$
  9996.          get q          $= \first ->
  9997.          isempty q      $= \empty ->
  9998.          result (if first == 1 && empty then "so should it be"
  9999.                                         else "something's wrong")
  10000.  
  10001. -------------------------------------------------------------------------------
  10002. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickcommaintDÿÿÿ fiùjkNliterateDÿÿÿ fiùjö    NcommaintDÿÿÿ fiùjkNliterateDÿÿÿ fiùjö    N=lgslgsNickThis file contains the definition of commaint, a function which takes a
  10003. single string argument containing a sequence of digits, and outputs the
  10004. same sequence with commas inserted after every group of three digits,
  10005. reading from the right hand end of the string.
  10006.  
  10007. >  commaint = reverse . foldr1 (\x y->x++","++y) . group 3 . reverse
  10008. >     where group n = takeWhile (not.null) . map (take n) . iterate (drop n)
  10009.  
  10010. This definition uses the following library functions:
  10011.  
  10012.   reverse, (.), foldr1, (++), takeWhile, not, null, map, take, iterate, drop.
  10013.  
  10014. Example: evaluation of commaint "1234567"
  10015.  
  10016.            "1234567"
  10017.                |
  10018.                | reverse
  10019.                V
  10020.            "7654321" _______________________________
  10021.                |                                    \
  10022.                | iterate (drop 3)                    |
  10023.                V                                     |
  10024.            ["7654321", "4321", "1", "", "", ...]     |
  10025.                |                                     |
  10026.                | map (take 3)                        V  group 3
  10027.                V                                     |
  10028.            ["765", "432", "1", "", "", ...]          |
  10029.                |                                     |
  10030.                | takeWhile (not.null)                |
  10031.                V     _______________________________/
  10032.            ["765", "432", "1"]
  10033.                |
  10034.                | foldr1 (\x y->x++","++y)
  10035.                V
  10036.            "765,432,1"
  10037.                |
  10038.                | reverse
  10039.                V
  10040.            "1,234,567"
  10041.  
  10042. In a Gofer session:
  10043.  
  10044.     ? commaint "1234567"
  10045.     1,234,567
  10046.     (105 reductions, 203 cells)
  10047.     ?
  10048.  
  10049.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Literate comments
  10050. -----------------
  10051.  
  10052. [This file contains an executable version of the program for
  10053. processing literate scripts that appears in Appendix C of the Haskell
  10054. report, version 1.2.]
  10055.  
  10056. Many Haskell implementations support the ``literate comment''
  10057. convention, first developed by Richard Bird and Philip Wadler for
  10058. Orwell, and inspired in turn by Donald Knuth's ``literate programming''.
  10059. The convention is not part of the Haskell language, but it is
  10060. supported by the implementations known to us (Chalmers, Glasgow,
  10061. and Yale).
  10062.  
  10063. The literate style encourages comments by making them the default.
  10064. A line in which ">" is the first character is treated as part of
  10065. the program; all other lines are comment.  Within the program part,
  10066. the usual "--" and "{- -}" comment conventions may still be used.
  10067. To capture some cases where one omits an ">" by mistake, it is an
  10068. error for a program line to appear adjacent to a non-blank comment
  10069. line, where a line is taken as blank if it consists only of
  10070. whitespace.
  10071.  
  10072. By convention, the style of comment is indicated by the file
  10073. extension, with ".hs" indicating a usual Haskell file, and ".lhs"
  10074. indicating a literate Haskell file.
  10075.  
  10076. To make this precise, we present a literate Haskell program to
  10077. convert literate programs.  The program expects a single name "file"
  10078. on the command line, reads "file.lhs", and either writes the
  10079. corresponding program to "file.hs" or prints error messages to
  10080. "stderr".
  10081.  
  10082. Each of the lines in a literate script is a program line, a blank
  10083. line, or a comment line.  In the first case, the text is kept with
  10084. the line.
  10085.  
  10086. > data Classified  =  Program String | Blank | Comment
  10087.  
  10088. In a literate program, program lines begins with a `>' character,
  10089. blank lines contain only whitespace, and all other lines are comment
  10090. lines.
  10091.  
  10092. > classify                           ::  String -> Classified
  10093. > classify ('>':s)            =   Program s
  10094. > classify s  |  all isSpace s        =   Blank
  10095. > classify s  |  otherwise        =   Comment
  10096.  
  10097. In the corresponding program, program lines have the leading `>'
  10098. replaced by a leading space, to preserve tab alignments.
  10099.  
  10100. > unclassify                        ::  Classified -> String
  10101. > unclassify (Program s)        =   " " ++ s
  10102. > unclassify Blank            =   ""
  10103. > unclassify Comment            =   ""
  10104.  
  10105. Process a literate program into error messages (if any) and the
  10106. corresponding non-literate program.
  10107.  
  10108. > process       ::  String -> (String, String)
  10109. > process lhs    =   (es, hs)
  10110. >        where    cs  =  map classify (lines lhs)
  10111. >            es  =  unlines (errors cs)
  10112. >            hs  =  unlines (map unclassify cs)
  10113.  
  10114. Check that each program line is not adjacent to a comment line.
  10115.  
  10116. > errors    ::  [Classified] -> [String]
  10117. > errors cs    =   concat (zipWith3 adjacent [1..] cs (tail cs))
  10118.  
  10119. Given a line number and a pair of adjacent lines, generate a list
  10120. of error messages, which will contain either one entry or none.
  10121.  
  10122. > adjacent    ::  Int -> Classified -> Classified -> [String]
  10123. > adjacent n (Program _) Comment  =  [message n "program" "comment"]
  10124. > adjacent n Comment (Program _)  =  [message n "comment" "program"]
  10125. > adjacent n this           next  =  []
  10126.  
  10127. > message n p c = "Line "++show n++": "++p++" line before "++c++" line."
  10128.  
  10129. Get one argument from the command line; complain if too many or
  10130. too few.
  10131.  
  10132. > getArg  ::  FailCont -> StrCont -> Dialogue
  10133. > getArg fail succ
  10134. >      =   getArgs                       fail (\strs ->
  10135. >          case strs of
  10136. >            [str] -> succ str
  10137. >            _     -> fail (OtherError "Too many or too few args"))
  10138.  
  10139. The main program gets name "file", reads "file.lhs", and either
  10140. writes the corresponding program to "file.hs" or appends error
  10141. messages to "stderr".
  10142.  
  10143. > main      ::  Dialogue
  10144. > main      =   getArg                      exit (\file ->
  10145. >          readFile (file ++ ".lhs")              exit (\lhs ->
  10146. >          case (process lhs) of
  10147. >            ([],hs) -> writeFile (file ++ ".hs") hs      exit done
  10148. >            (es,_)  -> appendChan stderr es          exit done))
  10149.  
  10150. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickDemoDÿÿÿ fiùj^OgpGýÿÿÙÙàPLambdaLiftDÿÿÿ fiùj©OLazinessDÿÿÿ fiùjÖQReadmeDÿÿÿ fiùj& QUtilityDÿÿÿ fiùjpRDemoDÿÿÿ fiùj^OgpGýÿÿÙÙàPLambdaLiftDÿÿÿ fiùj©OLazinessDÿÿÿ fiùjÖQReadmeDÿÿÿ fiùj& QUtilityDÿÿÿ fiùjpR=ModularModularNick‡------------------------------------------------------------------------------
  10151. --The files in this directory are based on the programs described in:
  10152. --
  10153. --    A Modular fully-lazy lambda lifter in Haskell
  10154. --    Simon L. Peyton Jones and David Lester
  10155. --    Software -- Practice and Experience
  10156. --    Vol 21(5), pp.479-506
  10157. --    MAY 1991
  10158. --
  10159. --See the Readme file for more details.
  10160. ------------------------------------------------------------------------------
  10161.  
  10162. -- Instance of Text for printing expressions:
  10163.  
  10164. instance Text Constant where
  10165.     showsPrec p (CNum n)  = shows n
  10166.     showsPrec p (CFun n)  = showString n
  10167.  
  10168. instance Text (Expr [Char]) where
  10169.     showsPrec p (EConst k)  = shows k
  10170.     showsPrec p (EVar v)    = showString v
  10171.  
  10172.     showsPrec p e@(EAp _ _) = showChar '(' . showsAp e . showChar ')'
  10173.                               where showsAp (EAp l r) = showsAp l
  10174.                                                           . showChar ' '
  10175.                                                           . shows r
  10176.                                     showsAp e         = shows e
  10177.  
  10178.     showsPrec p (ELet isRec defns body)
  10179.                             = showString (if isRec then "letrec" else "let")
  10180.                                 . showChar ' '
  10181.                                 . showsDefns defns
  10182.                                 . showString " in "
  10183.                                 . shows body
  10184.  
  10185.     showsPrec p (ELam binders body)
  10186.                             = showString "(\\"
  10187.                                 . foldr1 (\h t-> h . showChar ' ' . t)
  10188.                                          (map showString binders)
  10189.                                 . showChar '.'
  10190.                                 . shows body
  10191.                                 . showChar ')'
  10192.  
  10193. showWithSep          :: Text a => String -> [a] -> ShowS
  10194. showWithSep s [x]     = shows x
  10195. showWithSep s (x:xs)  = shows x . showString s . showWithSep s xs
  10196.  
  10197. showsDefns           :: [Defn Name] -> ShowS
  10198. showsDefns []         = showString "{}"
  10199. showsDefns [d]        = showsDefn d
  10200. showsDefns defns      = showChar '{'
  10201.                            . foldr1 (\h t-> h . showString "; " . t)
  10202.                                     (map showsDefn defns)
  10203.                            . showChar '}'
  10204.  
  10205. showsDefn            :: Defn Name -> ShowS
  10206. showsDefn (x,e)       = showString x . showString " = " . shows e
  10207.  
  10208. -- display lists of supercombinators:
  10209.  
  10210. showSCs :: [SCDefn] -> String
  10211. showSCs  = layn . map showSc
  10212.  where showSc (name,args,body)
  10213.            = foldr1 (\n ns -> n ++ " " ++ ns) (name:args)
  10214.                 ++ " = "
  10215.                 ++ show body
  10216.  
  10217. -- Parser for input of expressions: (sorry, this is rather a hack!)
  10218.  
  10219. number   :: Parser Int
  10220. number    = sp (many1 (sat isDigit) `do` strToNum)
  10221.             where strToNum = foldl (\n d->10*n+d) 0 . map (\c->ord c - ord '0')
  10222.  
  10223. variable :: Parser String
  10224. variable  = sp (sat isLower `seq` many (sat isAlpha) `do` (\(c,cs) -> c:cs))
  10225.  
  10226. constant :: Parser String
  10227. constant  = sp (sat isUpper `seq` many (sat isAlpha) `do` (\(c,cs) -> c:cs))
  10228.  
  10229. expr     :: Parser Expression
  10230. expr      = sptok "letrec" `seq` variable `seq` sptok "=" `seq` expr
  10231.                          `seq` sptok "in" `seq` expr
  10232.               `do` (\(lt,(v,(eq,(def,(inn,rhs)))))-> ELet True [(v,def)] rhs)
  10233.                 `orelse`
  10234.             sptok "let" `seq` variable `seq` sptok "=" `seq` expr
  10235.                          `seq` sptok "in" `seq` expr
  10236.               `do` (\(lt,(v,(eq,(def,(inn,rhs)))))-> ELet False [(v,def)] rhs)
  10237.                 `orelse`
  10238.             sptok "\\" `seq` listOf variable (sp (okay ())) `seq` sptok "."
  10239.                        `seq` expr
  10240.               `do` (\(l,(vs,(dot,e))) -> ELam vs e)
  10241.                 `orelse`
  10242.             atomic
  10243.  
  10244. atomic  :: Parser Expression
  10245. atomic   = sptok "(" `seq` many1 expr `seq` sptok ")"
  10246.                   `do` (\(o,(e,c))->foldl1 EAp e) 
  10247.                `orelse` 
  10248.            variable `do` EVar
  10249.                `orelse`
  10250.            constant `do` (EConst . CFun)
  10251.                `orelse`
  10252.            number `do` (EConst . CNum)
  10253.  
  10254.  
  10255. inp     :: String -> Expression
  10256. inp s    = case expr s of ((p,""):_) -> p
  10257.                           _          -> error "Cannot parse input"
  10258.  
  10259. -- Examples:
  10260.  
  10261. ll, fll  :: Expression -> String
  10262. ll        = showSCs . lambdaLift 
  10263. fll       = showSCs . fullyLazyLift
  10264.  
  10265. example1 :: Expression
  10266. example1  = inp "let f = \\x. let g = \\y.(Plus (Times x x) y) in \
  10267.                              \(Plus (g 3) (g 4)) \
  10268.                 \in (f 6)"
  10269.  
  10270. {- Results:
  10271.  
  10272.    ? ll example1                -- normal lambda lifting
  10273.       1) $main = let f = SC1 in (f 6)
  10274.       2) SC1 x = let g = (SC0 x) in (Plus (g 3) (g 4))
  10275.       3) SC0 x y = (Plus (Times x x) y)
  10276.  
  10277.    ? fll example1                -- fully lazy version
  10278.  
  10279.       1) $main = let f0 = SC1 in (f0 6)
  10280.       2) SC1 x1 = let v4 = (Plus (Times x1 x1)) in
  10281.                   let g2 = (SC0 v4) in (Plus (g2 3) (g2 4))
  10282.       3) SC0 v4 y3 = (v4 y3)
  10283.  
  10284. -}
  10285.  
  10286. example2 :: Expression
  10287. example2  = inp "let \
  10288.                 \   f = \\x. letrec g = \\y. (Cons (Times x x) (g y)) \
  10289.                 \            in (g 3) \
  10290.                 \in (f 6)"
  10291.  
  10292. {- Results:
  10293.  
  10294.    ? ll example2                -- normal lambda lifting
  10295.       1) $main = let f = SC1 in (f 6)
  10296.       2) SC1 x = letrec g = (SC0 g x) in (g 3)
  10297.       3) SC0 g x y = (Cons (Times x x) (g y))
  10298.  
  10299.    ? fll example2                -- fully lazy version
  10300.       1) $main = let f0 = SC1 in (f0 6)
  10301.       2) SC1 x1 = let v4 = (Cons (Times x1 x1)) in
  10302.                   letrec g2 = (SC0 g2 v4) in (g2 3)
  10303.       3) SC0 g2 v4 y3 = (v4 (g2 y3))
  10304.  
  10305. -}
  10306.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  10307. --The files in this directory are based on the programs described in:
  10308. --
  10309. --    A Modular fully-lazy lambda lifter in Haskell
  10310. --    Simon L. Peyton Jones and David Lester
  10311. --    Software -- Practice and Experience
  10312. --    Vol 21(5), pp.479-506
  10313. --    MAY 1991
  10314. --
  10315. --See the Readme file for more details.
  10316. ------------------------------------------------------------------------------
  10317.  
  10318. -- 3.3 A data type for compilation -- a happy ending:
  10319.  
  10320. data Constant           = CNum Int | CBool Bool | CFun Name
  10321. type Name               = String
  10322.  
  10323. data Expr binder        = EVar   Name                              |
  10324.                           EConst Constant                          |
  10325.                           EAp    (Expr binder) (Expr binder)       |
  10326.                           ELet   IsRec [Defn binder] (Expr binder) |
  10327.                           ELam   [binder] (Expr binder)
  10328.  
  10329. type Defn binder        = (binder, Expr binder)
  10330.  
  10331. type Expression         = Expr Name
  10332.  
  10333. type IsRec              = Bool
  10334. recursive               = True
  10335. nonRecursive            = False
  10336.  
  10337. type AnnExpr  binder a  = (a, AnnExpr' binder a)
  10338. data AnnExpr' binder a  = AVar   Name                                        |
  10339.                           AConst Constant                                    |
  10340.                           AAp    (AnnExpr binder a) (AnnExpr binder a)       |
  10341.                           ALet   IsRec [AnnDefn binder a] (AnnExpr binder a) |
  10342.                           ALam   [binder] (AnnExpr binder a)
  10343.  
  10344. type AnnDefn binder a   = (binder, AnnExpr binder a)
  10345.  
  10346. bindersOf              :: [(binder,rhs)] -> [binder]
  10347. bindersOf defns         = [ binder | (binder,rhs) <- defns ]
  10348.  
  10349. rhssOf                 :: [(binder,rhs)] -> [rhs]
  10350. rhssOf defns            = [ rhs | (binder, rhs) <- defns ]
  10351.  
  10352. -- 4 Lambda lifting:
  10353.  
  10354. lambdaLift :: Expression -> [SCDefn]
  10355. lambdaLift  = collectSCs . abstract . freeVars
  10356.  
  10357. type SCDefn = (Name, [Name], Expression)
  10358.  
  10359. -- 4.2 Free variables:
  10360.  
  10361. freeVars            :: Expression -> AnnExpr Name (Set Name)
  10362.  
  10363. freeVars (EConst k)  = (setEmpty, AConst k)
  10364. freeVars (EVar v)    = (setSingleton v, AVar v)
  10365. freeVars (EAp e1 e2) = (setUnion (freeVarsOf e1') (freeVarsOf e2'),AAp e1' e2')
  10366.                         where e1' = freeVars e1
  10367.                               e2' = freeVars e2
  10368.  
  10369. freeVars (ELam args body)
  10370.   = (setDifference (freeVarsOf body') (setFromList args), ALam args body')
  10371.     where body' = freeVars body
  10372.  
  10373. freeVars (ELet isRec defns body)
  10374.   = (setUnion defnsFree bodyFree, ALet isRec defns' body')
  10375.     where binders        = bindersOf defns
  10376.           binderSet      = setFromList binders
  10377.           values'        = map freeVars (rhssOf defns)
  10378.           defns'         = zip binders values'
  10379.           freeInValues   = foldr setUnion setEmpty (map freeVarsOf values')
  10380.           defnsFree
  10381.              | isRec     = setDifference freeInValues binderSet
  10382.              | not isRec = freeInValues
  10383.           body'          = freeVars body
  10384.           bodyFree       = setDifference (freeVarsOf body') binderSet
  10385.  
  10386. freeVarsOf                 :: AnnExpr Name (Set Name) -> Set Name
  10387. freeVarsOf (freeVars, expr) = freeVars
  10388.  
  10389. -- 4.3 Generating supercombinators:
  10390.  
  10391. abstract               :: AnnExpr Name (Set Name) -> Expression
  10392. abstract (_, AVar v)    = EVar v
  10393. abstract (_, AConst k)  = EConst k
  10394. abstract (_, AAp e1 e2) = EAp (abstract e1) (abstract e2)
  10395. abstract (free, ALam args body)
  10396.                         = foldl EAp sc (map EVar fvList)
  10397.                           where fvList = setToList free
  10398.                                 sc     = ELam (fvList++args) (abstract body)
  10399. abstract (_,ALet isRec defns body)
  10400.                         = ELet isRec
  10401.                                [(name,abstract body) | (name,body) <- defns]
  10402.                                (abstract body)
  10403.  
  10404. -- 4.4 Collecting supercombinators:
  10405.  
  10406. collectSCs   :: Expression -> [SCDefn]
  10407. collectSCs e  = [("$main",[],e')] ++ bagToList scs
  10408.                 where (_, scs, e') = collectSCs_e initialNameSupply e
  10409.  
  10410. collectSCs_e :: NameSupply -> Expression -> (NameSupply,Bag SCDefn,Expression)
  10411. collectSCs_e ns (EConst k)  = (ns, bagEmpty, EConst k)
  10412. collectSCs_e ns (EVar v)    = (ns, bagEmpty, EVar v)
  10413. collectSCs_e ns (EAp e1 e2) = (ns'', bagUnion scs1 scs2, EAp e1' e2')
  10414.                               where (ns',  scs1, e1') = collectSCs_e ns  e1
  10415.                                     (ns'', scs2, e2') = collectSCs_e ns' e2
  10416.  
  10417. collectSCs_e ns (ELam args body)
  10418.  = (ns'', bagInsert (name,args,body') bodySCs, EConst (CFun name))
  10419.    where (ns', bodySCs,body') = collectSCs_e ns body
  10420.          (ns'',name)          = newName ns' "SC"
  10421.  
  10422. collectSCs_e ns (ELet isRec defns body)
  10423.  = (ns'', scs, ELet isRec defns' body')
  10424.    where ((ns'',scs),defns')   = mapAccuml collectSCs_d (ns',bodySCs) defns
  10425.          (ns', bodySCs, body') = collectSCs_e ns body
  10426.  
  10427.          collectSCs_d (ns,scs) (name,value)
  10428.                               = ((ns',bagUnion scs scs'), (name, value'))
  10429.                                 where (ns',scs',value') = collectSCs_e ns value
  10430.  
  10431. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickmlamliftDÿÿÿ fiùj PmlamliftDÿÿÿ fiùj POgpgpNick-- A simple project file for the modular fully-lazy lambda lifter
  10432. --
  10433. -- Load into Gofer interpreter using the command:   :p mlamlift.gp
  10434. --                    or from command line using:   gofer + mlamlift.gp
  10435. --
  10436. -- See Readme file for further details.
  10437.  
  10438. Utility         -- implementation of utility functions and datatypes
  10439. LambdaLift      -- simple lambda lifter.
  10440. Laziness        -- transformations for fully-lazy lambda lifting.
  10441. ../Prolog/Parse -- the parser library from the mini Prolog system
  10442. Demo            -- demonstration of lamda lifting
  10443. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  10444. --The files in this directory are based on the programs described in:
  10445. --
  10446. --    A Modular fully-lazy lambda lifter in Haskell
  10447. --    Simon L. Peyton Jones and David Lester
  10448. --    Software -- Practice and Experience
  10449. --    Vol 21(5), pp.479-506
  10450. --    MAY 1991
  10451. --
  10452. --See the Readme file for more details.
  10453. ------------------------------------------------------------------------------
  10454.  
  10455. -- 5.4 A fully lazy lambda lifter
  10456.  
  10457. fullyLazyLift :: Expression -> [SCDefn]
  10458. fullyLazyLift  = lambdaLift . float . rename
  10459.                    . identifyMFEs . addLevels . separateLams
  10460.  
  10461. -- 5.5 Separating the lambdas
  10462.  
  10463. separateLams                 :: Expression -> Expression
  10464. separateLams (EVar v)         = EVar v
  10465. separateLams (EConst k)       = EConst k
  10466. separateLams (EAp e1 e2)      = EAp (separateLams e1) (separateLams e2)
  10467. separateLams (ELam args body) = foldr mkSingleLam body args
  10468.                                 where mkSingleLam arg bod = ELam [arg] body
  10469. separateLams (ELet isRec defns body)
  10470.                               = ELet isRec
  10471.                                      [(n,separateLams rhs)|(n,rhs)<-defns]
  10472.                                      (separateLams body)
  10473.  
  10474. -- 5.6 Adding level numbers
  10475.  
  10476. type Level     = Int
  10477.  
  10478. addLevels     :: Expression -> AnnExpr (Name,Level) Level
  10479. addLevels      = freeToLevel . freeVars
  10480.  
  10481. freeToLevel   :: AnnExpr Name (Set Name) -> AnnExpr (Name,Level) Level
  10482. freeToLevel e  = freeToLevel_e 0 [] e
  10483.  
  10484. freeSetToLevel         :: Set Name -> Assn Name Level -> Level
  10485. freeSetToLevel free env = maximum (0:map (assLookup env) (setToList free))
  10486.  
  10487. freeToLevel_e :: Level
  10488.                    -> Assn Name Level
  10489.                         -> AnnExpr Name (Set Name)
  10490.                              -> AnnExpr (Name,Level) Level
  10491.  
  10492. freeToLevel_e lev env (_, AConst k)  = (0, AConst k)
  10493. freeToLevel_e lev env (_, AVar v)    = (assLookup env v, AVar v)
  10494. freeToLevel_e lev env (_, AAp e1 e2) = (max (levelOf e1') (levelOf e2'),
  10495.                                         AAp e1' e2')
  10496.                                        where e1' = freeToLevel_e lev env e1
  10497.                                              e2' = freeToLevel_e lev env e2
  10498.  
  10499. freeToLevel_e lev env (free, ALam args body)
  10500.  = (freeSetToLevel free env, ALam args' body')
  10501.  where body' = freeToLevel_e (lev+1) (args'++env) body
  10502.        args' = zip args (repeat (lev+1))
  10503.  
  10504. freeToLevel_e lev env (free, ALet isRec defns body)
  10505.  = (levelOf body', ALet isRec defns' body')
  10506.  where binders            = bindersOf defns
  10507.        freeRhsVars        = setUnionList [free | (free,_) <- rhssOf defns]
  10508.        maxRhsLevel        = freeSetToLevel freeRhsVars
  10509.                                            ([(name,0) | name<-binders] ++ env)
  10510.        defns'             = map freeToLevel_d defns
  10511.        body'              = freeToLevel_e lev (bindersOf defns' ++ env) body
  10512.        freeToLevel_d (name,rhs)
  10513.                           = ((name,levelOf rhs'),rhs')
  10514.                             where rhs' = freeToLevel_e lev envRhs rhs
  10515.        envRhs | isRec     = [(name,maxRhsLevel) | name<-binders] ++ env
  10516.               | not isRec = env
  10517.  
  10518. levelOf           :: AnnExpr a Level -> Level
  10519. levelOf (level, _) = level
  10520.  
  10521. -- 5.7 Identifying MFEs
  10522.  
  10523. identifyMFEs :: AnnExpr (Name,Level) Level -> Expr (Name,Level)
  10524. identifyMFEs = identifyMFEs_e 0
  10525.  
  10526. notMFECandidate (AConst k) = True
  10527. notMFECandidate (AVar v)   = True
  10528. notMFECandidate _          = False   -- everything else is a candidate
  10529.  
  10530. identifyMFEs_e :: Level -> AnnExpr (Name,Level) Level -> Expr (Name,Level)
  10531. identifyMFEs_e cxt (level,e)
  10532.       | level==cxt || notMFECandidate e  =  e'
  10533.       | otherwise                        = transformMFE level e'
  10534.       where e' = identifyMFEs_e1 level e
  10535.  
  10536. transformMFE level e = ELet nonRecursive [(("v",level),e)] (EVar "v")
  10537.  
  10538. identifyMFEs_e1 level (AConst k)  = EConst k
  10539. identifyMFEs_e1 level (AVar v)    = EVar v
  10540. identifyMFEs_e1 level (AAp e1 e2) = EAp (identifyMFEs_e level e1)
  10541.                                         (identifyMFEs_e level e2)
  10542. identifyMFEs_e1 level (ALam args body)
  10543.                                   = ELam args (identifyMFEs_e argLevel body)
  10544.                                     where ((_,argLevel):_) = args
  10545. identifyMFEs_e1 level (ALet isRec defns body)
  10546.  = ELet isRec defns' body'
  10547.    where body'  = identifyMFEs_e level body
  10548.          defns' = [(binder,identifyMFEs_e level rhs) | (binder,rhs) <- defns]
  10549.  
  10550. -- 5.8 Renaming
  10551.  
  10552. rename  :: Expr (Name,a) -> Expr (Name,a)
  10553. rename e = e' where (_,e') = rename_e [] initialNameSupply e
  10554.  
  10555. rename_e :: Assn Name Name -> NameSupply -> Expr (Name,a)
  10556.                 -> (NameSupply, Expr (Name, a))
  10557. rename_e env ns (EVar v)    = (ns,EVar (assLookup env v))
  10558. rename_e env ns (EConst k)  = (ns, EConst k)
  10559. rename_e env ns (EAp e1 e2) = (ns'', EAp e1' e2')
  10560.                               where (ns', e1') = rename_e env ns  e1
  10561.                                     (ns'',e2') = rename_e env ns' e2
  10562. rename_e env ns (ELam args body)
  10563.   = (ns'', ELam args' body')         -- BUG????
  10564.   where (ns', args') = mapAccuml newBinder ns args
  10565.         (ns'',body') = rename_e (assocBinders args args' ++ env) ns' body
  10566. rename_e env ns (ELet isRec defns body)
  10567.   = (ns''', ELet isRec (zip binders' values') body')
  10568.   where (ns',  body')      = rename_e env' ns body
  10569.         binders            = bindersOf defns
  10570.         (ns'', binders')   = mapAccuml newBinder ns' binders
  10571.         env'               = assocBinders binders binders' ++ env
  10572.         (ns''',values')    = mapAccuml (rename_e rhsEnv) ns'' (rhssOf defns)
  10573.         rhsEnv | isRec     = env'
  10574.                | not isRec = env
  10575.  
  10576. newBinder ns (name,info) = (ns',(name',info))
  10577.                            where (ns',name') = newName ns name
  10578.  
  10579. assocBinders                 :: [(Name,a)] -> [(Name,a)] -> Assn Name Name
  10580. assocBinders binders binders' = zip (map fst binders) (map fst binders')
  10581.  
  10582. -- 5.9 Floating
  10583.  
  10584. float  :: Expr (Name,Level) -> Expression
  10585. float e = install floatedDefns e' where (floatedDefns,e') = float_e e
  10586.  
  10587. type FloatedDefns = [(Level, IsRec, [Defn Name])]
  10588.  
  10589. install             :: FloatedDefns -> Expression -> Expression
  10590. install defnGroups e = foldr installGroup e defnGroups
  10591.  where installGroup (level,isRec,defns) e = ELet isRec defns e
  10592.  
  10593. float_e            :: Expr (Name,Level) -> (FloatedDefns, Expression)
  10594. float_e (EConst k)  = ([], EConst k)
  10595. float_e (EVar v)    = ([], EVar v)
  10596. float_e (EAp e1 e2) = (fd1++fd2, EAp e1' e2')
  10597.                       where (fd1, e1') = float_e e1
  10598.                             (fd2, e2') = float_e e2
  10599.  
  10600. float_e (ELam args body)
  10601.  = (outerLevelDefns, ELam args' (install thisLevelDefns body'))
  10602.  where args'                 = [ arg | (arg,level) <- args ]
  10603.        (_, thisLevel)        = head args
  10604.        (floatedDefns, body') = float_e body
  10605.        thisLevelDefns        = filter groupIsThisLevel       floatedDefns
  10606.        outerLevelDefns       = filter (not.groupIsThisLevel) floatedDefns
  10607.        groupIsThisLevel (level,_,_) = level >= thisLevel
  10608.  
  10609. float_e (ELet isRec defns body)
  10610.  = (rhsFloatDefns ++ [thisGroup] ++ bodyFloatDefns, body')
  10611.  where (bodyFloatDefns, body') = float_e body
  10612.        (rhsFloatDefns, defns') = mapAccuml float_defn [] defns
  10613.        thisGroup               = (thisLevel, isRec, defns')
  10614.        (_, thisLevel)          = head (bindersOf defns)
  10615.  
  10616. float_defn floatedDefns ((name,level),rhs)
  10617.  = (rhsFloatDefns ++ floatedDefns, (name, rhs'))
  10618.  where (rhsFloatDefns, rhs') = float_e rhs
  10619. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  10620. The files in this directory are based on the programs described in:
  10621.  
  10622.     A Modular fully-lazy lambda lifter in Haskell
  10623.     Simon L. Peyton Jones and David Lester
  10624.     Software -- Practice and Experience
  10625.     Vol 21(5), pp.479-506
  10626.     MAY 1991
  10627.  
  10628. These files include:
  10629.  
  10630.     Readme       -- this file.
  10631.  
  10632.     Utility      -- implementation of various utility functions and
  10633.                     data types including sets, bags and name supplies.
  10634.                     The paper referred to above includes type signatures
  10635.                     for the operations defined in this file but does not
  10636.                     actually give definitions.  I trust that my own
  10637.                     implementations of these functions will be satisfactory!
  10638.  
  10639.     LambdaLift   -- simple lambda lifter.  Contains code from the first
  10640.                     half of the above paper.
  10641.  
  10642.     Laziness     -- transformations for fully-lazy lambda lifting.  Contains
  10643.                     the remaining code from the above paper.
  10644.  
  10645.     Demo         -- demonstration of lamda lifting (normal and fully-lazy
  10646.                     variants).  This hastily-written file contains definitions
  10647.                     for a parser and input parser for the expressions used
  10648.                     in the preceeding two files.  This file can only be loaded
  10649.                     if the Parse file from MiniProlog has already been loaded
  10650.                     into Gofer.  As it stands, this code uses non-standard
  10651.                     features of Gofer and will not (i.e. should not!) be
  10652.                     accepted by a Haskell compiler.
  10653.  
  10654. The modular fully-lazy lambda lifter and demonstration files can be loaded
  10655. into Gofer with the command:
  10656.  
  10657.       gofer Utility LambdaLift Laziness ../Prolog/Parse Demo
  10658.       (or, using the project file supplied, gofer + mlamlift.gp)
  10659.  
  10660. The kind of results that can be obtained are illustrated by:
  10661.  
  10662. ? show example1
  10663. let f = (\x.let g = (\y.(Plus (Times x x) y)) in (Plus (g 3) (g 4))) in (f 6)
  10664.  
  10665. ? ll example1  
  10666.    1) $main = let f = SC1 in (f 6)
  10667.    2) SC1 x = let g = (SC0 x) in (Plus (g 3) (g 4))
  10668.    3) SC0 x y = (Plus (Times x x) y)
  10669.  
  10670. ? fll example1
  10671.    1) $main = let f0 = SC1 in (f0 6)
  10672.    2) SC1 x1 = let v4 = (Plus (Times x1 x1)) in
  10673.                let g2 = (SC0 v4) in (Plus (g2 3) (g2 4))
  10674.    3) SC0 v4 y3 = (v4 y3)
  10675.  
  10676.  
  10677. ? show example2
  10678. let f = (\x.letrec g = (\y.(Cons (Times x x) (g y))) in (g 3)) in (f 6)
  10679.  
  10680. ? ll example2
  10681.    1) $main = let f = SC1 in (f 6)
  10682.    2) SC1 x = letrec g = (SC0 g x) in (g 3)
  10683.    3) SC0 g x y = (Cons (Times x x) (g y))
  10684.  
  10685. ? fll example2
  10686.    1) $main = let f0 = SC1 in (f0 6)
  10687.    2) SC1 x1 = let v4 = (Cons (Times x1 x1)) in
  10688.                letrec g2 = (SC0 g2 v4) in (g2 3)
  10689.    3) SC0 g2 v4 y3 = (v4 (g2 y3))
  10690.  
  10691. ------------------------------------------------------------------------------
  10692. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  10693. --The files in this directory are based on the programs described in:
  10694. --
  10695. --    A Modular fully-lazy lambda lifter in Haskell
  10696. --    Simon L. Peyton Jones and David Lester
  10697. --    Software -- Practice and Experience
  10698. --    Vol 21(5), pp.479-506
  10699. --    MAY 1991
  10700. --
  10701. --See the Readme file for more details.
  10702. ------------------------------------------------------------------------------
  10703.  
  10704. -- Utilities:
  10705. -- The following general purpose function is defined in the above paper:
  10706. mapAccuml           :: (b -> a -> (b,c)) -> b -> [a] -> (b,[c])
  10707. mapAccuml f b []     = (b,[])
  10708. mapAccuml f b (a:as) = (b'',c:cs)  where (b',c) = f b a
  10709.                                          (b'',cs) = mapAccuml f b' as
  10710.  
  10711. -- All subsequent definitions are my own implementations of functions
  10712. -- specified only by type signatures and informal descriptions in the
  10713. -- paper -- so blame me for any errors or misinterpretations!
  10714.  
  10715. -- Sets: sets are implemented as ordered lists with no repetitions, as
  10716. --       suggested by the use of (Ord) in the given signatures.
  10717. --       Just for a change, we'll write these definitions out as
  10718. --       iterations...
  10719.  
  10720. data Set a = Set [a]
  10721.  
  10722. setDifference                  :: Ord a => Set a -> Set a -> Set a
  10723. setDifference (Set xs) (Set ys) = Set (differ xs ys)
  10724.  where differ (x:xs) (y:ys)
  10725.                          | x==y = differ xs ys
  10726.                          | x<y  = x : differ xs (y:ys)
  10727.                          | y<x  = differ (x:xs) ys
  10728.        differ xs     _          = xs
  10729.  
  10730. setIntersect                  :: Ord a => Set a -> Set a -> Set a
  10731. setIntersect (Set xs) (Set ys) = Set (intersect xs ys)
  10732.  where intersect (x:xs) (y:ys)
  10733.                         | x==y = x : intersect xs ys
  10734.                         | x<y  = intersect xs (y:ys)
  10735.                         | y<x  = intersect (x:xs) ys
  10736.        intersect _      _      = []
  10737.  
  10738. setUnion                      :: Ord a => Set a -> Set a -> Set a
  10739. setUnion (Set xs) (Set ys)     = Set (union xs ys)
  10740.  where union (x:xs) (y:ys)
  10741.                         | x==y = x : union xs ys
  10742.                         | x<y  = x : union xs (y:ys)
  10743.                         | y<x  = y : union (x:xs) ys
  10744.        union xs     ys         = xs ++ ys
  10745.  
  10746. setUnionList                  :: Ord a => [Set a] -> Set a
  10747. setUnionList                   = foldr setUnion setEmpty
  10748.  
  10749. setToList                     :: Set a -> [a]
  10750. setToList (Set xs)             = xs
  10751.  
  10752. setFromList                   :: Ord a => [a] -> Set a
  10753. setFromList                    = Set . sort . nub
  10754.  
  10755. setSingleton                  :: a -> Set a
  10756. setSingleton a                 = Set [a]
  10757.  
  10758. setEmpty                      :: Set a
  10759. setEmpty                       = Set []
  10760.  
  10761. -- Bags: the given interface doesn't impose any constraint on the types
  10762. --       that can be held in bags, so it doesn't seem that there is much
  10763. --       to do other than make a bag type out of lists... for the benefits
  10764. --       of type checking, I'll make a separate Bag data type constructor,
  10765. --       although a synonym would have been acceptable...
  10766.  
  10767. data Bag a    = Bag [a]
  10768.  
  10769. bagUnion                  :: Bag a -> Bag a -> Bag a
  10770. bagUnion (Bag xs) (Bag ys) = Bag (xs++ys)
  10771.  
  10772. bagInsert                 :: a -> Bag a -> Bag a
  10773. bagInsert x (Bag xs)       = Bag (x:xs)
  10774.  
  10775. bagToList                 :: Bag a -> [a]
  10776. bagToList (Bag bag)        = bag
  10777.  
  10778. bagFromList               :: [a] -> Bag a
  10779. bagFromList                = Bag
  10780.  
  10781. bagSingleton              :: a -> Bag a
  10782. bagSingleton x             = Bag [x]
  10783.  
  10784. bagEmpty                  :: Bag a
  10785. bagEmpty                   = Bag []
  10786.  
  10787. -- Association lists:
  10788.  
  10789. type Assn a b = [(a,b)]
  10790.  
  10791. assLookup      :: Eq a => Assn a b -> a -> b
  10792. assLookup ps a  = head [ b | (a',b) <- ps, a==a' ]
  10793.  
  10794. -- Name supply:
  10795.  
  10796. type NameSupply = Int
  10797.  
  10798. initialNameSupply :: NameSupply
  10799. initialNameSupply  = 0
  10800.  
  10801. newName           :: NameSupply -> String -> (NameSupply,String)
  10802. newName ns prefix  = (ns+1, prefix ++ show ns)
  10803.  
  10804. -- That's it!!!
  10805. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      NickgpGýÿÿÝÚÙàTInteractDÿÿÿ fiùj SMainDÿÿÿ fiùjÅ SParseDÿÿÿ fiùjtSPrologDataDÿÿÿ fiùjQUPureEngineDÿÿÿ fiùj¾
  10806. UReadmeDÿÿÿ fiùj)VStckEngineDÿÿÿ fiùjUstdlibDÿÿÿ fiùjíUSubstDÿÿÿ fiùj²UgpGýÿÿÝÚÙàTInteractDÿÿÿ fiùj SMainDÿÿÿ fiùjÅ SParseDÿÿÿ fiùjtSPrologDataDÿÿÿ fiùjQUPureEngineDÿÿÿ fiùj¾
  10807. UReadmeDÿÿÿ fiùj)VStckEngineDÿÿÿ fiùjUstdlibDÿÿÿ fiùjíUSubstDÿÿÿ fiùj²U=PrologProlog Nick½--
  10808. -- Interactive utility functions
  10809. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  10810. --
  10811. -- uses Gofer version 2.28
  10812. --
  10813.  
  10814. -- The functions defined in this module provide basic facilities for
  10815. -- writing line-oriented interactive programs (i.e. a function mapping
  10816. -- an input string to an appropriate output string).  These definitions
  10817. -- are an enhancement of thos in B+W 7.8
  10818. --
  10819. -- skip p         is an interactive program which consumes no input, produces
  10820. --                no output and then behaves like the interactive program p.
  10821. -- end            is an interactive program which ignores the input and
  10822. --                produces no output.
  10823. -- writeln txt p  is an interactive program which outputs the message txt
  10824. --                and then behaves like the interactive program p
  10825. -- readch act def is an interactive program which reads the first character c
  10826. --                from the input stream and behaves like the interactive
  10827. --                program act c.  If the input character stream is empty,
  10828. --                readch act def prints the default string def and terminates.
  10829. -- 
  10830. -- readln p g     is an interactive program which prints the prompt p and
  10831. --                reads a line (upto the first carriage return, or end of
  10832. --                input) from the input stream.  It then behaves like g line.
  10833. --                Backspace characters included in the input stream are
  10834. --                interpretted in the usual way.
  10835.  
  10836. type Interactive = String -> String
  10837.  
  10838. --- Interactive program combining forms:
  10839.  
  10840. skip                 :: Interactive -> Interactive
  10841. skip p is             = p is    -- a dressed up identity function
  10842.  
  10843. end                  :: Interactive
  10844. end is                = ""
  10845.  
  10846. writeln              :: String -> Interactive -> Interactive
  10847. writeln txt p is      = txt ++ p is
  10848.  
  10849. readch               :: (Char -> Interactive) -> String -> Interactive
  10850. readch act def ""     = def
  10851. readch act def (c:cs) = act c cs
  10852.  
  10853. readln               :: String -> (String -> Interactive) -> Interactive
  10854. readln prompt g is    = prompt ++ lineOut 0 line ++ "\n"
  10855.                                ++ g (noBackSpaces line) input'
  10856.                         where line     = before '\n' is
  10857.                               input'   = after  '\n' is
  10858.                               after x  = tail . dropWhile (x/=)
  10859.                               before x = takeWhile (x/=)
  10860.  
  10861. --- Filter out backspaces etc:
  10862.  
  10863. rubout  :: Char -> Bool
  10864. rubout c = (c=='\DEL' || c=='\BS')
  10865.  
  10866. lineOut                      :: Int -> String -> String
  10867. lineOut n ""                  = ""
  10868. lineOut n (c:cs)
  10869.           | n>0  && rubout c  = "\BS \BS" ++ lineOut (n-1) cs
  10870.           | n==0 && rubout c  = lineOut 0 cs
  10871.           | otherwise         = c:lineOut (n+1) cs
  10872.  
  10873. noBackSpaces :: String -> String
  10874. noBackSpaces  = reverse . delete 0 . reverse
  10875.                 where delete n ""          = ""
  10876.                       delete n (c:cs)
  10877.                                | rubout c  = delete (n+1) cs
  10878.                                | n>0       = delete (n-1) cs
  10879.                                | otherwise = c:delete 0 cs
  10880.  
  10881. --- End of Interact.hs
  10882.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  10883. -- Prolog interpreter top level module
  10884. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  10885. --
  10886. -- uses Gofer version 2.28
  10887. --
  10888.  
  10889. --- Command structure and parsing:
  10890.  
  10891. data Command = Fact Clause | Query [Term] | Show | Error | Quit | NoChange
  10892.  
  10893. command :: Parser Command
  10894. command  = just (sptok "bye" `orelse` sptok "quit") `do` (\quit->Quit)
  10895.                `orelse`
  10896.            just (okay NoChange)
  10897.                `orelse`
  10898.            just (sptok "??") `do` (\show->Show)
  10899.                `orelse`
  10900.            just clause `do` Fact
  10901.                `orelse`
  10902.            just (sptok "?-" `seq` termlist) `do` (\(q,ts)->Query ts)
  10903.                `orelse`
  10904.            okay Error
  10905.  
  10906. --- Main program read-solve-print loop:
  10907.  
  10908. signOn           :: String
  10909. signOn            = "Mini Prolog Version 1.5g (" ++ version ++ ")\n\n"
  10910.  
  10911. main             :: Dialogue
  10912. main              = echo False abort
  10913.                     (appendChan stdout signOn abort
  10914.                     (appendChan stdout ("Reading " ++ stdlib) abort
  10915.                     (readFile stdlib
  10916.                       (\fail -> appendChan stdout "...not found\n" abort
  10917.                                     (interpreter []))
  10918.                       (\is   -> let parse   = map clause (lines is)
  10919.                                     clauses = [ r | ((r,""):_) <- parse ]
  10920.                                     reading = ['.'| c <- clauses] ++ "done\n"
  10921.                                 in
  10922.                                 appendChan stdout reading abort
  10923.                                     (interpreter clauses))
  10924.                     )))
  10925.  
  10926. stdlib           :: String
  10927. stdlib            = "stdlib"
  10928.  
  10929. interpreter      :: [Clause] -> Dialogue
  10930. interpreter lib   = readChan stdin abort
  10931.                     (\is -> appendChan stdout (loop startDb is) abort done)
  10932.                     where startDb = foldl addClause emptyDb lib
  10933.  
  10934. loop             :: Database -> String -> String
  10935. loop db           = readln "> " (exec db . fst . head . command)
  10936.  
  10937. exec             :: Database -> Command -> String -> String
  10938. exec db (Fact r)  = skip                              (loop (addClause db r))
  10939. exec db (Query q) = demonstrate db q
  10940. exec db Show      = writeln (show db)                 (loop db)
  10941. exec db Error     = writeln "I don't understand\n"    (loop db)
  10942. exec db Quit      = writeln "Thank you and goodbye\n" end
  10943. exec db NoChange  = skip                              (loop db)
  10944.  
  10945. --- Handle printing of solutions etc...
  10946.  
  10947. solution      :: [Id] -> Subst -> [String]
  10948. solution vs s  = [ show (Var i) ++ " = " ++ show v
  10949.                                 | (i,v) <- [ (i,s i) | i<-vs ], v /= Var i ]
  10950.  
  10951. demonstrate     :: Database -> [Term] -> Interactive
  10952. demonstrate db q = printOut (map (solution vs) (prove db q))
  10953.  where vs               = (nub . concat . map varsIn) q
  10954.        printOut []      = writeln "no.\n"     (loop db)
  10955.        printOut ([]:bs) = writeln "yes.\n"    (loop db)
  10956.        printOut (b:bs)  = writeln (doLines b) (nextReqd bs)
  10957.        doLines          = foldr1 (\xs ys -> xs ++ "\n" ++ ys)
  10958.        nextReqd bs      = writeln " "
  10959.                             (readch (\c->if c==';'
  10960.                                            then writeln ";\n" (printOut bs)
  10961.                                            else writeln "\n"  (loop db)) "")
  10962.  
  10963. --- End of Main.hs
  10964. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  10965. -- General parsing library, based on Richard Bird's parselib.orw for Orwell
  10966. -- (with a number of extensions)
  10967. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  10968. --
  10969. -- uses Gofer version 2.28
  10970. --
  10971.  
  10972. infixr 6 `seq`
  10973. infixl 5 `do`
  10974. infixr 4 `orelse`
  10975.  
  10976. --- Type definition:
  10977.  
  10978. type Parser a = [Char] -> [(a,[Char])]
  10979.  
  10980. -- A parser is a function which maps an input stream of characters into
  10981. -- a list of pairs each containing a parsed value and the remainder of the
  10982. -- unused input stream.  This approach allows us to use the list of
  10983. -- successes technique to detect errors (i.e. empty list ==> syntax error).
  10984. -- it also permits the use of ambiguous grammars in which there may be more
  10985. -- than one valid parse of an input string.
  10986.  
  10987. --- Primitive parsers:
  10988.  
  10989. -- fail     is a parser which always fails.
  10990. -- okay v   is a parser which always succeeds without consuming any characters
  10991. --          from the input string, with parsed value v.
  10992. -- tok w    is a parser which succeeds if the input stream begins with the
  10993. --          string (token) w, returning the matching string and the following
  10994. --          input.  If the input does not begin with w then the parser fails.
  10995. -- sat p    is a parser which succeeds with value c if c is the first input
  10996. --          character and c satisfies the predicate p.
  10997.  
  10998. fail        :: Parser a 
  10999. fail is      = []
  11000.  
  11001. okay        :: a -> Parser a  
  11002. okay v is    = [(v,is)]
  11003.  
  11004. tok         :: [Char] -> Parser [Char]
  11005. tok w is     = [(w, drop n is) | w == take n is]
  11006.                where n = length w
  11007.  
  11008. sat         :: (Char -> Bool) -> Parser Char 
  11009. sat p []     = []
  11010. sat p (c:is) = [ (c,is) | p c ]
  11011.  
  11012. --- Parser combinators:
  11013.  
  11014. -- p1 `orelse` p2 is a parser which returns all possible parses of the input
  11015. --                string, first using the parser p1, then using parser p2.
  11016. -- p1 `seq` p2    is a parser which returns pairs of values (v1,v2) where
  11017. --                v1 is the result of parsing the input string using p1 and
  11018. --                v2 is the result of parsing the remaining input using p2.
  11019. -- p `do` f       is a parser which behaves like the parser p, but returns
  11020. --                the value f v wherever p would have returned the value v.
  11021. --
  11022. -- just p         is a parser which behaves like the parser p, but rejects any
  11023. --                parses in which the remaining input string is not blank.
  11024. -- sp p           behaves like the parser p, but ignores leading spaces.
  11025. -- sptok w        behaves like the parser tok w, but ignores leading spaces.
  11026. --
  11027. -- many p         returns a list of values, each parsed using the parser p.
  11028. -- many1 p        parses a non-empty list of values, each parsed using p.
  11029. -- listOf p s     parses a list of input values using the parser p, with
  11030. --                separators parsed using the parser s.
  11031.  
  11032. orelse             :: Parser a -> Parser a -> Parser a 
  11033. (p1 `orelse` p2) is = p1 is ++ p2 is
  11034.  
  11035. seq                :: Parser a -> Parser b -> Parser (a,b)
  11036. (p1 `seq` p2) is    = [((v1,v2),is2) | (v1,is1) <- p1 is, (v2,is2) <- p2 is1]
  11037.  
  11038. do                 :: Parser a -> (a -> b) -> Parser b 
  11039. (p `do` f) is       = [(f v, is1) | (v,is1) <- p is]
  11040.  
  11041. just               :: Parser a -> Parser a
  11042. just p is           = [ (v,"") | (v,is')<- p is, dropWhile (' '==) is' == "" ]
  11043.  
  11044. sp                 :: Parser a -> Parser a
  11045. sp p                = p . dropWhile (' '==)
  11046.  
  11047. sptok              :: [Char] -> Parser [Char]
  11048. sptok               =  sp . tok
  11049.  
  11050. many               :: Parser a  -> Parser [a]
  11051. many p              = q
  11052.                       where q = ((p `seq` q) `do` makeList) `orelse` (okay [])
  11053.  
  11054. many1              :: Parser a -> Parser [a]
  11055. many1 p             = p `seq` many p `do` makeList
  11056.  
  11057. listOf             :: Parser a -> Parser b -> Parser [a]
  11058. listOf p s          = p `seq` many (s `seq` p) `do` nonempty
  11059.                       `orelse` okay []
  11060.                       where nonempty (x,xs) = x:(map snd xs)
  11061.  
  11062. --- Internals:
  11063.  
  11064. makeList       :: (a,[a]) -> [a]
  11065. makeList (x,xs) = x:xs
  11066.  
  11067. --- End of Parse.hs
  11068. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickminiPrologDÿÿÿ fiùjTminiPrologDÿÿÿ fiùjTSgpgpNickT-- This is a project file suitable for loading the stack-based version
  11069. -- of the mini Prolog interpreter into Gofer 2.28
  11070. --
  11071. -- Load into Gofer interpreter using the command:   :p miniProlog.gp
  11072. --                    or from command line using:   gofer + miniProlog.gp
  11073.  
  11074. Parse       -- general purpose parsing library
  11075. Interact    -- general purpose library for interactive programs
  11076. PrologData  -- definition of main data structures
  11077. Subst       -- substitutions and unification
  11078. StackEngine -- inference engine
  11079. Main        -- top level program
  11080.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  11081. -- Representation of Prolog Terms, Clauses and Databases
  11082. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  11083. --
  11084. -- uses Gofer version 2.28
  11085. --
  11086.  
  11087. infix 6 :-
  11088.  
  11089. --- Prolog Terms:
  11090.  
  11091. type Id       = (Int,String)
  11092. type Atom     = String
  11093. data Term     = Var Id | Struct Atom [Term]
  11094. data Clause   = Term :- [Term]
  11095. data Database = Db [(Atom,[Clause])]
  11096.  
  11097. instance Eq Term where
  11098.     Var v       == Var w       =  v==w
  11099.     Struct a ts == Struct b ss =  a==b && ts==ss
  11100.     _           == _           =  False
  11101.  
  11102. --- Determine the list of variables in a term:
  11103.  
  11104. varsIn              :: Term -> [Id]
  11105. varsIn (Var i)       = [i]
  11106. varsIn (Struct i ts) = (nub . concat . map varsIn) ts
  11107.  
  11108. renameVars                  :: Int -> Term -> Term
  11109. renameVars lev (Var (n,s))   = Var (lev,s)
  11110. renameVars lev (Struct s ts) = Struct s (map (renameVars lev) ts)
  11111.  
  11112. --- Functions for manipulating databases (as an abstract datatype)
  11113.  
  11114. emptyDb      :: Database
  11115. emptyDb       = Db []
  11116.  
  11117. renClauses                  :: Database -> Int -> Term -> [Clause]
  11118. renClauses db n (Var _)      = []
  11119. renClauses db n (Struct a _) = [ r tm:-map r tp | (tm:-tp)<-clausesFor a db ]
  11120.                                where r = renameVars n
  11121.  
  11122. clausesFor           :: Atom -> Database -> [Clause]
  11123. clausesFor a (Db rss) = case dropWhile (\(n,rs) -> n<a) rss of
  11124.                          []         -> []
  11125.                          ((n,rs):_) -> if a==n then rs else []
  11126.  
  11127. addClause :: Database -> Clause -> Database
  11128. addClause (Db rss) r@(Struct a _ :- _)
  11129.            = Db (update rss)
  11130.              where update []            = [(a,[r])]
  11131.                    update (h@(n,rs):rss')
  11132.                           | n==a        = (n,rs++[r]) : rss'
  11133.                   | n<a         = h : update rss'
  11134.                           | otherwise   = (a,[r]) : h : rss'
  11135.  
  11136. --- Output functions (defined as instances of Text):
  11137.  
  11138. instance Text Term where
  11139.   showsPrec p (Var (n,s))
  11140.               | n==0        = showString s
  11141.               | otherwise   = showString s . showChar '_' . shows n
  11142.   showsPrec p (Struct a []) = showString a
  11143.   showsPrec p (Struct a ts) = showString a . showChar '('
  11144.                                            . showWithSep "," ts
  11145.                                            . showChar ')'
  11146.  
  11147. instance Text Clause where
  11148.    showsPrec p (t:-[]) = shows t . showChar '.'
  11149.    showsPrec p (t:-gs) = shows t . showString ":-"
  11150.                                  . showWithSep "," gs
  11151.                                  . showChar '.'
  11152.  
  11153. instance Text Database where
  11154.     showsPrec p (Db [])  = showString "-- Empty Database --\n"
  11155.     showsPrec p (Db rss) = foldr1 (\u v-> u . showChar '\n' . v)
  11156.                                   [ showWithTerm "\n" rs | (i,rs)<-rss ]
  11157.  
  11158. --- Local functions for use in defining instances of Text:
  11159.  
  11160. showWithSep          :: Text a => String -> [a] -> ShowS
  11161. showWithSep s [x]     = shows x
  11162. showWithSep s (x:xs)  = shows x . showString s . showWithSep s xs
  11163.  
  11164. showWithTerm         :: Text a => String -> [a] -> ShowS
  11165. showWithTerm s xs     = foldr1 (.) [shows x . showString s | x<-xs]
  11166.  
  11167. --- String parsing functions for Terms and Clauses:
  11168. --- Local definitions:
  11169.  
  11170. letter       :: Parser Char
  11171. letter        = sat (\c->isAlpha c || isDigit c || c `elem` ":;+=-*&%$#@?/.~!")
  11172.  
  11173. variable     :: Parser Term
  11174. variable      = sat isUpper `seq` many letter `do` makeVar
  11175.                 where makeVar (initial,rest) = Var (0,(initial:rest))
  11176.  
  11177. struct       :: Parser Term
  11178. struct        = many letter `seq` (sptok "(" `seq` termlist `seq` sptok ")"
  11179.                                        `do` (\(o,(ts,c))->ts)
  11180.                                   `orelse`
  11181.                                    okay [])
  11182.                 `do` (\(name,terms)->Struct name terms)
  11183.  
  11184. --- Exports:
  11185.  
  11186. term         :: Parser Term
  11187. term          = sp (variable `orelse` struct)
  11188.  
  11189. termlist     :: Parser [Term]
  11190. termlist      = listOf term (sptok ",")
  11191.  
  11192. clause       :: Parser Clause
  11193. clause        = sp struct `seq` (sptok ":-" `seq` listOf term (sptok ",")
  11194.                                  `do` (\(from,body)->body)
  11195.                                 `orelse` okay [])
  11196.                           `seq` sptok "."
  11197.                      `do` (\(head,(goals,dot))->head:-goals)
  11198.  
  11199. --- End of PrologData.hs
  11200. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  11201. -- The Pure Prolog inference engine (using explicit prooftrees)
  11202. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  11203. --
  11204. -- uses Gofer version 2.28
  11205. --
  11206.  
  11207. version = "tree based" 
  11208.  
  11209. --- Calculation of solutions:
  11210.  
  11211. -- Each node in a prooftree corresponds to:
  11212. -- either: a solution to the current goal, represented by Done s, where s
  11213. --         is the required substitution
  11214. -- or:     a choice between a number of subtrees ts, each corresponding to a
  11215. --         proof of a subgoal of the current goal, represented by Choice ts.
  11216. --         The proof tree corresponding to an unsolvable goal is Choice [] 
  11217.  
  11218. data Prooftree = Done Subst  |  Choice [Prooftree]
  11219.  
  11220. -- prooftree uses the rules of Prolog to construct a suitable proof tree for
  11221. --           a specified goal
  11222. prooftree   :: Database -> Int -> Subst -> [Term] -> Prooftree
  11223. prooftree db = pt
  11224.  where pt           :: Int -> Subst -> [Term] -> Prooftree
  11225.        pt n s []     = Done s
  11226.        pt n s (g:gs) = Choice [ pt (n+1) (u**s) (map (app u) (tp++gs))
  11227.                               | (tm:-tp)<-renClauses db n g, u<-unify g tm ]
  11228.  
  11229. -- search performs a depth-first search of a proof tree, producing the list
  11230. --        of solution substitutions as they are encountered.
  11231. search              :: Prooftree -> [Subst]
  11232. search (Done s)      = [s]
  11233. search (Choice pts)  = [ s | pt <- pts, s <- search pt ]
  11234.  
  11235. prove    :: Database -> [Term] -> [Subst]
  11236. prove db  = search . prooftree db 1 nullSubst
  11237.  
  11238. --- End of PureEngine.hs
  11239.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     --
  11240. -- Stack based Prolog inference engine
  11241. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  11242. --
  11243. -- uses Gofer version 2.28
  11244. --
  11245.  
  11246. version = "stack based"
  11247.  
  11248. --- Calculation of solutions:
  11249.  
  11250. -- the stack based engine maintains a stack of triples (s,goal,alts)
  11251. -- corresponding to backtrack points, where s is the substitution at that
  11252. -- point, goal is the outstanding goal and alts is a list of possible ways
  11253. -- of extending the current proof to find a solution.  Each member of alts
  11254. -- is a pair (tp,u) where tp is a new subgoal that must be proved and u is
  11255. -- a unifying substitution that must be combined with the substitution s.
  11256. --
  11257. -- the list of relevant clauses at each step in the execution is produced
  11258. -- by attempting to unify the head of the current goal with a suitably
  11259. -- renamed clause from the database.
  11260.  
  11261. type Stack = [ (Subst, [Term], [Alt]) ]
  11262. type Alt   = ([Term], Subst)
  11263.  
  11264. alts       :: Database -> Int -> Term -> [Alt]
  11265. alts db n g = [ (tp,u) | (tm:-tp) <- renClauses db n g, u <- unify g tm ]
  11266.       
  11267. -- The use of a stack enables backtracking to be described explicitly,
  11268. -- in the following `state-based' definition of prove:
  11269.  
  11270. prove      :: Database -> [Term] -> [Subst]
  11271. prove db gl = solve 1 nullSubst gl []
  11272.  where
  11273.    solve :: Int -> Subst -> [Term] -> Stack -> [Subst]
  11274.    solve n s []     ow          = s : backtrack n ow
  11275.    solve n s (g:gs) ow
  11276.                     | g==theCut = solve n s gs (cut ow)
  11277.                     | otherwise = choose n s gs (alts db n (app s g)) ow
  11278.  
  11279.    choose :: Int -> Subst -> [Term] -> [Alt] -> Stack -> [Subst]
  11280.    choose n s gs []          ow = backtrack n ow
  11281.    choose n s gs ((tp,u):rs) ow = solve (n+1) (u**s) (tp++gs) ((s,gs,rs):ow)
  11282.  
  11283.    backtrack                   :: Int -> Stack -> [Subst]
  11284.    backtrack n []               = []
  11285.    backtrack n ((s,gs,rs):ow)   = choose (n-1) s gs rs ow
  11286.  
  11287.  
  11288. --- Special definitions for the cut predicate:
  11289.  
  11290. theCut    :: Term
  11291. theCut     = Struct "!" []
  11292.  
  11293. cut                  :: Stack -> Stack
  11294. cut (top:(s,gl,_):ss) = top:(s,gl,[]):ss
  11295. cut ss                = ss
  11296.  
  11297. --- End of Engine.hs
  11298. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     This file contains a list of predicate definitions that will automatically
  11299. be read into Mini Prolog at the beginning of a session.  Each clause in this
  11300. file must be entered on a single line and lines containing syntax errors are
  11301. always ignored.  This includes the first few lines of this file and provides
  11302. a simple way to include comments.
  11303.  
  11304. append(nil,X,X).
  11305. append(cons(X,Y),Z,cons(X,W)):-append(Y,Z,W).
  11306.  
  11307. equals(X,X).
  11308.  
  11309. not(X):-X,!,false.
  11310. not(X).
  11311.  
  11312. or(X,Y):-X.
  11313. or(X,Y):-Y.
  11314.  
  11315. true.
  11316.  
  11317. End of stdlib
  11318.    WonderWorks     --
  11319. -- Substitutions and Unification of Prolog Terms
  11320. -- Mark P. Jones November 1990, modified for Gofer 20th July 1991
  11321. --
  11322. -- uses Gofer version 2.28
  11323. --
  11324.  
  11325. infixr 3 **
  11326. infix  4 ->-
  11327.  
  11328. --- Substitutions:
  11329.  
  11330. type Subst = Id -> Term
  11331.  
  11332. -- substitutions are represented by functions mapping identifiers to terms.
  11333. --
  11334. -- app s     extends the substitution s to a function mapping terms to terms
  11335. -- nullSubst is the empty substitution which maps every identifier to the
  11336. --           same identifier (as a term).
  11337. -- i ->- t   is the substitution which maps the identifier i to the term t,
  11338. --           but otherwise behaves like nullSubst.
  11339. -- s1 ** s2  is the composition of substitutions s1 and s2
  11340. --           N.B.  app is a monoid homomorphism from (Subst,nullSubst,(**))
  11341. --           to (Term -> Term, id, (.)) in the sense that:
  11342. --                  app (s1 ** s2) = app s1 . app s2
  11343. --                 s ** nullSubst = s = nullSubst ** s
  11344.  
  11345. app                     :: Subst -> Term -> Term
  11346. app s (Var i)            = s i
  11347. app s (Struct a ts)      = Struct a (map (app s) ts)
  11348.  
  11349. nullSubst               :: Subst
  11350. nullSubst i              = Var i
  11351.  
  11352. (->-)                   :: Id -> Term -> Subst
  11353. (i ->- t) j | j==i       = t
  11354.             | otherwise  = Var j
  11355.  
  11356. (**)                    :: Subst -> Subst -> Subst
  11357. s1 ** s2                 = app s1 . s2 
  11358.  
  11359. --- Unification:
  11360.  
  11361. -- unify t1 t2 returns a list containing a single substitution s which is
  11362. --             the most general unifier of terms t1 t2.  If no unifier
  11363. --             exists, the list returned is empty.
  11364.  
  11365. unify :: Term -> Term -> [Subst]
  11366. unify (Var x)       (Var y)       = if x==y then [nullSubst] else [x->-Var y]
  11367. unify (Var x)       t2            = [ x ->- t2 | x `notElem` varsIn t2 ]
  11368. unify t1            (Var y)       = [ y ->- t1 | y `notElem` varsIn t1 ]
  11369. unify (Struct a ts) (Struct b ss) = [ u | a==b, u<-listUnify ts ss ]
  11370.  
  11371. listUnify :: [Term] -> [Term] -> [Subst]
  11372. listUnify []     []     = [nullSubst]
  11373. listUnify []     (r:rs) = []
  11374. listUnify (t:ts) []     = []
  11375. listUnify (t:ts) (r:rs) = [ u2 ** u1 | u1<-unify t r,
  11376.                                        u2<-listUnify (map (app u1) ts)
  11377.                                                      (map (app u1) rs) ]
  11378.  
  11379. --- End of Subst.hs
  11380. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ______________________________________________________________________________
  11381. Mini Prolog Version 1.5g                          Mark P. Jones 23rd July 1991
  11382.  
  11383.              A simple Prolog interpreter, for Gofer 2.28
  11384.  
  11385. ______________________________________________________________________________
  11386.  
  11387.  
  11388. This document gives a brief introduction to Mini Prolog Version 1.5g, a simple
  11389. Prolog interpreter that can be used with Gofer 2.28.   The original version of
  11390. this program was written nearly two years ago as an Orwell program, running on
  11391. the interpreter used here in Oxford for teaching functional programming.  More
  11392. recently I rewrote the interpreter for the Haskell B. compiler produced by the
  11393. people at Chalmers in Sweden, and took the opportunity to experiment with some
  11394. of the new features of Haskell, including  type classes  and I/O.   Only a few
  11395. small changes to the Haskell B version have been necessary to make Mini Prolog
  11396. run under my own  Haskell-like  interpreter,  Gofer, with most  of these being
  11397. required to take account of changes in the definition of  Haskell from version
  11398. 1.0 to the latest version 1.1, due at the end of the month.
  11399.  
  11400. This document isn't going to explain a  lot  about  how  Prolog  programs  are
  11401. written and work.  But there are plenty of other references for that.   Please
  11402. feel free to contact me with any questions or suggestions.  I'd very much like
  11403. to receive any comments.
  11404.  
  11405. jones-mark@cs.yale.edu
  11406. ______________________________________________________________________________
  11407.  
  11408.                            GETTING STARTED
  11409.  
  11410. The  Mini Prolog interpreter  takes the form of a small  collection  of  Gofer
  11411. scripts.  The most important part of  any  implementation  of  Prolog  is  the
  11412. inference engine  which  controls  the  search  for  goals  to  user  supplied
  11413. queries.  Mini Prolog comes with a choice of two different inference  engines,
  11414. the `pure' engine uses lazy evaluation to construct and  traverse  potentially
  11415. infinite proof trees.  The `stack' engine uses an explicit stack  (implemented
  11416. using a list) to provide a more concrete  description  of  backtracking.   The
  11417. stack engine also implements  the  Prolog  cut  `!'  predicate,  used  in  the
  11418. examples below.  Assuming that you've got everything set up  properly  to  use
  11419. the Gofer interpreter, and that all of the Mini Prolog script files are in the
  11420. current working directory, you should start Gofer with the command `gofer':
  11421.  
  11422.   machine% gofer
  11423.   Gofer Version 2.20
  11424.  
  11425.   Reading script file "/users/mpj/research/Gofer/prelude":
  11426.   Parsing...................................................................
  11427.   Dependency analysis.......................................................
  11428.   Type checking.............................................................
  11429.   Compiling.................................................................
  11430.  
  11431.   Gofer session for:
  11432.   /users/mpj/research/Gofer/prelude
  11433.   Type :? for help
  11434.  
  11435. and then specify the appropriate set of script to be loaded:
  11436.  
  11437.   ? :l Parse Interact PrologData Subst PureEngine Main
  11438.  
  11439. for the `pure' version of the inference engine, or:
  11440.  
  11441.   ? :l Parse Interact PrologData Subst StackEngine Main
  11442.  
  11443. for the stack version, which is the one needed for the rest of this document.
  11444. Once the script files have been loaded,  start the Mini prolog interpreter by
  11445. typing the expression `main' and pressing return.
  11446.  
  11447.   ? main
  11448.   Mini Prolog Version 1.5g (stack based)
  11449.  
  11450.   Reading stdlib........done
  11451.   > 
  11452.  
  11453. The `>' prompt indicates that the interpreter is running and waiting for  user
  11454. input.
  11455.  
  11456.                         STANDARD PREDICATES
  11457.  
  11458. Before the `>' prompt appears, Mini Prolog reads a set of  standard  predicate
  11459. definitions from the file `stdlib' in the current directory.  You are free  to
  11460. modify this file to suit your own needs.  The only predicate that is built  in
  11461. to Mini Prolog is the cut, written `!' whose use is demonstrated below.  There
  11462. are no other  extralogical  predicates,  no  input/output  predicates  and  no
  11463. arithmetic as found in full implementations of Prolog.  Some of these features
  11464. could be added to the interpreter without too much  difficulty,  others  would
  11465. require rather more work.
  11466.  
  11467. At any time, you can ask the interpreter to display the list of rules that are
  11468. being held in the database by typing "??" and pressing the  return  key.   Try
  11469. this after you've started the  interpreter  and  you'll  get  a  list  of  the
  11470. predicates defined in the file `stdlib'.  For example:
  11471.  
  11472.   > ??
  11473.   append(nil,X,X).
  11474.   append(cons(X,Y),Z,cons(X,W)):-append(Y,Z,W).
  11475.  
  11476.   equals(X,X).
  11477.  
  11478.   not(X):-X,!,false.
  11479.   not(X).
  11480.  
  11481.   or(X,Y):-X.
  11482.   or(X,Y):-Y.
  11483.  
  11484.   true.
  11485.   >
  11486.  
  11487.                           THE APPEND PREDICATE
  11488.  
  11489. The Mini Prolog interpreter does not support the standard  Prolog  syntax  for
  11490. lists.    Instead,   you   have    to    write    the    list    [1,2,3]    as
  11491. "cons(1,cons(2,cons(3,nil)))".  One of the first things I tried was  appending
  11492. two simple lists:
  11493.  
  11494.   > ?- append(cons(1,nil),cons(2,nil),X)
  11495.   X = cons(1,cons(2,nil)) ;
  11496.   no.
  11497.   >
  11498.  
  11499. Given a query, Mini Prolog attempts to find values for each of  the  variables
  11500. (beginning with a capital letter) in the query.  Here Mini  Prolog  has  found
  11501. that X = cons(1,cons(2,nil)) is a solution to the query.   When  I  press  the
  11502. semicolon key, ";", it tries to find another solution, but fails and  displays
  11503. the message "no.".
  11504.  
  11505. What amazed me when I first started experimenting with Prolog was that I could
  11506. actually ask Mini Prolog to work through the problem in reverse, asking  which
  11507. lists could be appended to get the list cons(1,cons(2,nil)):
  11508.  
  11509.   > ?- append(X,Y,cons(1,cons(2,nil)))
  11510.   X = nil
  11511.   Y = cons(1,cons(2,nil)) ;
  11512.   X = cons(1,nil)
  11513.   Y = cons(2,nil) ;
  11514.   X = cons(1,cons(2,nil))
  11515.   Y = nil ;
  11516.   no.
  11517.   >
  11518.  
  11519. Note that the interpreter pauses after displaying each solution and waits  for
  11520. a key to be  pressed.  Pressing `;' tells Mini Prolog  to continue looking for
  11521. another solution, displaying `no' if no more solutions can be found.  Pressing
  11522. any other key stops the execution of the query.  If there are no variables  in
  11523. the original query, then the interpreter simply outputs `yes' if the query can
  11524. be proved and otherwise prints `no':
  11525.  
  11526.   > ?- append(cons(1,nil),cons(2,nil),cons(1,cons(2,nil)))
  11527.   yes.
  11528.   > ?- append(cons(1,nil),cons(2,nil),cons(1,cons(3,nil)))
  11529.   no.
  11530.   >
  11531.  
  11532. Unfortunately, typing a control C to interrupt a query with an  infinite  loop
  11533. will exit the Prolog interpreter completely -- sorry, but I don't know  a  way
  11534. around this at the moment.
  11535.  
  11536.  
  11537.                        RUNNING IN THE FAMILY
  11538.  
  11539. You don't have to stick with the standard predicates that are already included
  11540. in Mini Prolog.  Additional rules can be typed in at the ">" prompt.  Here are
  11541. a couple of examples based around the idea of family trees:
  11542.  
  11543.   > parent(Child,Parent):-father(Child,Parent).
  11544.   > parent(Child,Parent):-mother(Child,Parent).
  11545.   > grandparent(GChild,Gparent):-parent(GChild,Parent),parent(Parent,Gparent).
  11546.   >
  11547.  
  11548. Note that  Mini Prolog  expects  a maximum of one rule per line,  and will not
  11549. allow predicate definitions to be spread out over a number of lines.
  11550.  
  11551. All you have to do now is enter some details about your family  and  then  you
  11552. can ask who your grandparents are ... let's take a typical family:
  11553.  
  11554.   > father(charles,princePhilip).
  11555.   > mother(charles,theQueen).
  11556.   > father(anne,princePhilip).
  11557.   > mother(anne,theQueen).
  11558.   > father(andrew,princePhilip).
  11559.   > mother(andrew,theQueen).
  11560.   > father(edward,princePhilip).
  11561.   > mother(edward,theQueen).
  11562.   > mother(theQueen,theQueenMother).
  11563.   > father(william,charles).
  11564.   > mother(william,diana).
  11565.   > father(harry,charles).
  11566.   > mother(harry,diana).
  11567.   >
  11568.  
  11569. And  now  we  can  ask  some  questions;  like  who  are  the  Queen  mother's
  11570. grandchildren ?
  11571.  
  11572.   > ?- grandparent(X,theQueenMother)
  11573.   X = charles ;
  11574.   X = anne ;
  11575.   X = andrew ;
  11576.   X = edward ;
  11577.   no.
  11578.   >
  11579.  
  11580. or, who are Harry's grandparents ?
  11581.  
  11582.   > ?- grandparent(harry,Who)
  11583.   Who = princePhilip ;
  11584.   Who = theQueen ;
  11585.   no.
  11586.   >
  11587.  
  11588. Note that Mini Prolog can only use the facts it has been  given.   Tell  it  a
  11589. little more about Diana's parents and you'll find it knows more about  Harry's
  11590. grandparents.
  11591.  
  11592. Now suppose we define a sibling relation:
  11593.  
  11594.   > sibling(One,Tother) :- parent(One,X),parent(Tother,X).
  11595.   >
  11596.  
  11597. Fine.  It all looks quite correct.  But when you try to find Harry's siblings,
  11598. you get:
  11599.  
  11600.   > ?- sibling(harry,Who)
  11601.   Who = william ;
  11602.   Who = harry ;
  11603.   Who = william ;
  11604.   Who = harry ;
  11605.   no.
  11606.   >
  11607.  
  11608. Each of William and Harry  appears  twice  in  the  above.   Once  by  putting
  11609. X=charles and once using X=diana in the definition of sibling above.   We  can
  11610. use the cut predicate to make sure that we look for at most one parent:
  11611.  
  11612.   > newsib(One,Tother) :- parent(One,X),!,parent(Tother,X).
  11613.   >
  11614.   > ?- newsib(harry,Who)
  11615.   Who = william ;
  11616.   Who = harry ;
  11617.   no.
  11618.   >
  11619.  
  11620. Thats better, but we don't really want to list Harry as his  own  sibling,  so
  11621. we'll add a further restriction:
  11622.  
  11623.   > newsib1(O,T):-parent(O,X),!,parent(T,X),not(equals(O,T)).
  11624.   >
  11625.   > ?- newsib1(harry,Who)
  11626.   Who = william ;
  11627.   no.
  11628.   >
  11629.  
  11630. Thats just about perfect.  You might like to play with  some  other  examples,
  11631. enlarge the family tree, work out suitable predicates for other relations (who
  11632. are Harry's aunts ?) etc.  Initially, the answers that Mini Prolog gives  will
  11633. all be pretty obvious to you.  Try getting involved in a  larger  family  tree
  11634. and more complicated relations and you'll find it's not so easy.
  11635.  
  11636.                                   GOODBYES
  11637.  
  11638. I could go on with more examples, but I guess you've got the  picture  by  now
  11639. ... at least I hope so !  I suppose I should just tell you how to get  out  of
  11640. Mini Prolog (ok. ^C works but its not exactly elegant).  Just type  "bye"  (or
  11641. "quit") and you're out.  Be warned though: when you leave Mini Prolog, it will
  11642. not retain any new rules that you've entered, so  you'll  have  to  find  some
  11643. other way to save them (I usually type  "??"  to  list  the  rules  that  I've
  11644. entered and use the mouse to paste them into an editor in another window,  but
  11645. that obviously requires you to be using a workstation at the time).
  11646.  
  11647.   > bye
  11648.   Thank you and goodbye
  11649.  
  11650.   (12749 reductions, 1256 cells)
  11651.   ?
  11652.  
  11653. The `?' prompt  tells you that you are now back in Gofer,  and you can restart
  11654. Mini Prolog as before,  carry on with some other work in Gofer,  or use the :q
  11655. command to exit Gofer and return to the operating system.
  11656.  
  11657. I hope you have fun with Mini Prolog;  please tell me if you have any comments
  11658. you'd like to make.
  11659.  
  11660. ______________________________________________________________________________
  11661.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿÏÜÙàXgsGýÿÿÏÜÙàX=SaySayNick…WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NicksayDÿÿÿ fiùjXsayDÿÿÿ fiùjXWgsgsNickQ------------------------------------------------------------------------------
  11662. -- A simple banner program:                             Mark P Jones, 1992
  11663. --
  11664. -- Many years ago, I was helping out on a stand at a computer show.
  11665. -- Or at least, I would have been if anyone had been interested in
  11666. -- what we had on the stand.  So instead, I sat down to see if I
  11667. -- could write a banner program -- something to print messages out
  11668. -- in large letters.
  11669. --
  11670. -- The original program was in Basic, but here is a version in Gofer.
  11671. -- The program itself is only two lines long and that is rather pleasing,
  11672. -- but the raw data for the letters (and the function mapping characters
  11673. -- to letters) take up rather more space.  I don't have that Basic version
  11674. -- anymore.  I wonder whether the complete Gofer code is that much shorter?
  11675. --
  11676. -- One of the nice things about this program is that the main program is
  11677. -- completely independent of the size of characters.  You could easily add
  11678. -- a new font, perhaps with higher resolution (bigger letters), or even
  11679. -- variable width characters, and the program would take it all in its
  11680. -- stride.
  11681. --
  11682. -- If you have a wide screen (>80 cols), you might like to try evaluating:
  11683. --
  11684. --               (concat . map say . lines . say) "Hi"
  11685. --
  11686. -- and contemplating how easy it might have been to get my original
  11687. -- Basic version to perform this trick...
  11688. --
  11689. -- Enjoy!
  11690. ------------------------------------------------------------------------------
  11691.  
  11692. say   = ('\n':) . unlines . map join . transpose . map picChar
  11693.         where join  = foldr1 (\xs ys -> xs ++ "  " ++ ys)
  11694.  
  11695. -- mapping characters to letters: --------------------------------------------
  11696.  
  11697. picChar c  | isUpper c  = alphas !! (ord c - ord 'A')
  11698.            | isLower c  = alphas !! (ord c - ord 'a')
  11699.            | isSpace c  = blank
  11700.            | isDigit c  = digits !! (ord c - ord '0')
  11701.            | c=='/'     = slant
  11702.            | c=='\\'    = reverse slant
  11703.            | otherwise  = head ([ letter | (c',letter) <- punct, c'==c ]
  11704.                                 ++ [empty])
  11705.  
  11706. -- letters data: -------------------------------------------------------------
  11707.  
  11708. blank  =  ["     ", "     ", "     ", "     ", "     "]
  11709.  
  11710. slant  =  ["    ",  "   ",   "  ",    " ",     ""     ]
  11711.  
  11712. empty  =  repeat ""
  11713.  
  11714. punct  =  [('.',  ["     ", "     ", "     ", "  .. ", "  .. "]),
  11715.            ('?',  [" ??? ", "?   ?", "   ? ", "  ?  ", "  .  "]),
  11716.            ('!',  ["  !  ", "  !  ", "  !  ", "  !  ", "  .  "]),
  11717.            ('-',  ["     ", "     ", "-----", "     ", "     "]),
  11718.            ('+',  ["  +  ", "  +  ", "+++++", "  +  ", "  +  "]),
  11719.            (':',  ["     ", "  :: ", "     ", "  :: ", "     "]),
  11720.            (';',  ["     ", "  ;; ", "     ", "  ;; ", " ;;  "])
  11721.           ]
  11722.  
  11723. digits = [[" OOO ", "0  00", "0 0 0", "00  0", " 000 "],
  11724.           ["  1  ", " 11  ", "  1  ", "  1  ", "11111"],
  11725.           [" 222 ", "2   2", "   2 ", "  2  ", "22222"],
  11726.           ["3333 ", "    3", " 333 ", "    3", "3333 "],
  11727.           ["   4 ", "  44 ", " 4 4 ", "44444", "   4 "],
  11728.           ["55555", "5    ", "5555 ", "    5", "5555 "],
  11729.           ["   66", "  6  ", " 666 ", "6   6", " 666 "],
  11730.           ["77777", "    7", "   7 ", "   7 ", "  7  "],
  11731.           [" 888 ", "8   8", " 888 ", "8   8", " 888 "],
  11732.           [" 999 ", "9   9", " 999 ", "  9  ", "99   "]]
  11733.  
  11734. alphas = [["  A  ", " A A ", "AAAAA", "A   A", "A   A"],
  11735.           ["BBBB ", "B   B", "BBBB ", "B   B", "BBBB "],
  11736.           [" CCCC", "C    ", "C    ", "C    ", " CCCC"],
  11737.           ["DDDD ", "D   D", "D   D", "D   D", "DDDD "],
  11738.           ["EEEEE", "E    ", "EEEEE", "E    ", "EEEEE"],
  11739.           ["FFFFF", "F    ", "FFFF ", "F    ", "F    "],
  11740.           [" GGGG", "G    ", "G  GG", "G   G", " GGG "],
  11741.           ["H   H", "H   H", "HHHHH", "H   H", "H   H"],
  11742.           ["IIIII", "  I  ", "  I  ", "  I  ", "IIIII"],
  11743.           ["JJJJJ", "   J ", "   J ", "J  J ", " JJ  "],
  11744.           ["K   K", "K  K ", "KKK  ", "K  K ", "K   K"],
  11745.           ["L    ", "L    ", "L    ", "L    ", "LLLLL"],
  11746.           ["M   M", "MM MM", "M M M", "M   M", "M   M"],
  11747.           ["N   N", "NN  N", "N N N", "N  NN", "N   N"],
  11748.           [" OOO ", "O   O", "O   O", "O   O", " OOO "],
  11749.           ["PPPP ", "P   P", "PPPP ", "P    ", "P    "],
  11750.           [" QQQ ", "Q   Q", "Q Q Q", "Q  Q ", " QQ Q"],
  11751.           ["RRRR ", "R   R", "RRRR ", "R  R ", "R   R"],
  11752.           [" SSSS", "S    ", " SSS ", "    S", "SSSS "],
  11753.           ["TTTTT", "  T  ", "  T  ", "  T  ", "  T  "],
  11754.           ["U   U", "U   U", "U   U", "U   U", " UUU "],
  11755.           ["V   V", "V   V", "V   V", " V V ", "  V  "],
  11756.           ["W   W", "W   W", "W   W", "W W W", " W W "],
  11757.           ["X   X", " X X ", "  X  ", " X X ", "X   X"],
  11758.           ["Y   Y", " Y Y ", "  Y  ", "  Y  ", "  Y  "],
  11759.           ["ZZZZZ", "   Z ", "  Z  ", " Z   ", "ZZZZZ"]
  11760.          ]
  11761.  
  11762. -- end of banner program -----------------------------------------------------
  11763. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickgsGýÿÿàÜÙàZgsGýÿÿàÜÙàZ=UtilsUtilsNickCWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickarrayDÿÿÿ fiùjã
  11764. ZlexerDÿÿÿ fiùj[ ZarrayDÿÿÿ fiùjã
  11765. ZlexerDÿÿÿ fiùj[ ZYgsgsNick™-- An inefficient implementation of Haskell arrays based on the
  11766. -- functional specification in the Haskell report version 1.2
  11767. --
  11768. -- To save you some typing, just in case you wanted to use this
  11769. -- stuff ... but don't expect constant time lookup!
  11770.  
  11771. infixl 9  !
  11772. infixl 9  //
  11773. infix  1  :=
  11774.  
  11775. data Assoc a b =  a := b  
  11776. data Array a b = MkArray (a,a) (a -> b) 
  11777.  
  11778. array       :: (Ix a) => (a,a) -> [Assoc a b] -> Array a b
  11779. listArray  :: (Ix a) => (a,a) -> [b] -> Array a b
  11780. (!)       :: (Ix a) => Array a b -> a -> b
  11781. bounds       :: (Ix a) => Array a b -> (a,a)
  11782. indices       :: (Ix a) => Array a b -> [a]
  11783. elems       :: (Ix a) => Array a b -> [b]
  11784. assocs       :: (Ix a) => Array a b -> [Assoc a b]
  11785. accumArray :: (Ix a) => (b -> c -> b) -> b -> (a,a) -> [Assoc a c] -> Array a b
  11786. (//)       :: (Ix a) => Array a b -> [Assoc a b] -> Array a b
  11787. accum       :: (Ix a) => (b -> c -> b) -> Array a b -> [Assoc a c] -> Array a b
  11788. amap       :: (Ix a) => (b -> c) -> Array a b -> Array a c
  11789. ixmap       :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c -> Array a c
  11790.  
  11791. array b ivs           = MkArray b
  11792.              (\j -> case [v | (i := v) <- ivs, i == j] of
  11793.                  [v] -> v
  11794.                 []  -> error "(!){PreludeArray}: \
  11795.                      \undefined array element"
  11796.                 _   -> error "(!){PreludeArray}: \
  11797.                      \multiply defined array element")
  11798. listArray b vs          = array b (zipWith (:=) (range b) vs)
  11799.  
  11800. (!) (MkArray _ f)     = f
  11801. bounds (MkArray b _)  = b
  11802. indices              = range . bounds
  11803. elems a               = [a!i | i <- indices a]
  11804. assocs a              = [i := a!i | i <- indices a]
  11805. a // us              = array (bounds a)
  11806.                 ([i := a!i | i <- indices a \\ [i | i:=_ <- us]]
  11807.                  ++ us)
  11808.  
  11809. accum f               = foldl (\a (i := v) -> a // [i := f (a!i) v])
  11810.  
  11811. accumArray f z b      = accum f (array b [i := z | i <- range b])
  11812. amap f a              = array b [i := f (a!i) | i <- range b]
  11813.                         where b = bounds a
  11814. ixmap b f a           = array b [i := a ! f i | i <- range b]
  11815.  
  11816. instance (Ix a, Text a, Text b) => Text (Assoc a b)  where
  11817.     showsPrec _ (a := b) = shows a . showString " := " . shows b
  11818.  
  11819. instance (Ix a) => Ix (a,a) where
  11820.     range ((ma,mb),(na,nb)) = [(a,b) | a <- range (ma,na), b <- range (mb,nb)]
  11821.  
  11822. -- Some applications, taken from the Gentle Introduction ...
  11823.  
  11824. fibs n = a where a = array (0,n) ([ 0 := 1, 1 := 1 ] ++
  11825.                                   [ i := a!(i-2) + a!(i-1) | i <- [2..n] ])
  11826.  
  11827. fibs10 = fibs 10
  11828.  
  11829. wavefront n = a where a = array ((1,1),(n,n))
  11830.                              ([ (1,j) := 1 | j <- [1..n] ] ++
  11831.                               [ (i,1) := 1 | i <- [2..n] ] ++
  11832.                               [ (i,j) := a!(i,j-1) + a!(i-1,j-1) + a!(i-1,j)
  11833.                                            | i <- [2..n], j <- [2..n] ])
  11834.  
  11835. listwave n = [ [wf!(i,j) | j <- [1..n]] | i <- [1..n] ]
  11836.              where wf = wavefront n
  11837.  
  11838. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     -- A simple attempt to provide the facilities of the Haskell Text
  11839. -- class for reading values.  If you really want to use this, I
  11840. -- would suggest combining it with the Text class in a modified
  11841. -- version of the prelude.
  11842. --
  11843. -- Based, not surprisingly, on the definitions in the Haskell report
  11844. -- version 1.2:
  11845.  
  11846. type  ReadS a = String -> [(a,String)]
  11847.  
  11848. class  Read a  where
  11849.     readsPrec :: Int -> ReadS a
  11850.     readList  :: ReadS [a]
  11851.     readList    = readParen False (\r -> [pr | ("[",s)    <- lex r,
  11852.                            pr    <- readl s])
  11853.               where readl  s = [([],t)   | ("]",t)  <- lex s] ++
  11854.                    [(x:xs,u) | (x,t)    <- reads s,
  11855.                            (xs,u)   <- readl' t]
  11856.             readl' s = [([],t)   | ("]",t)  <- lex s] ++
  11857.                        [(x:xs,v) | (",",t)  <- lex s,
  11858.                            (x,u)    <- reads t,
  11859.                            (xs,v)   <- readl' u]
  11860. instance  Read ()  where
  11861.     readsPrec p    = readParen False
  11862.                             (\r -> [((),t) | ("(",s) <- lex r,
  11863.                          (")",t) <- lex s ] )
  11864.  
  11865. instance  Read Char  where
  11866.     readsPrec p      = readParen False
  11867.                             (\r -> [(c,t) | ('\'':s,t)<- lex r,
  11868.                         (c,_)     <- readLitChar s])
  11869.  
  11870.     readList = readParen False (\r -> [(l,t) | ('"':s, t) <- lex r,
  11871.                            (l,_)      <- readl s ])
  11872.            where readl ('"':s)    = [("",s)]
  11873.              readl ('\\':'&':s)    = readl s
  11874.              readl s        = [(c:cs,u) | (c ,t) <- readLitChar s,
  11875.                               (cs,u) <- readl t          ]
  11876. instance  Read Int  where
  11877.     readsPrec p        = readSigned readDec
  11878.  
  11879. instance  (Read a) => Read [a]  where
  11880.     readsPrec p        = readList
  11881.  
  11882. instance  (Read a, Read b) => Read (a,b)  where
  11883.     readsPrec p = readParen False
  11884.                             (\r -> [((x,y), w) | ("(",s) <- lex r,
  11885.                          (x,t)   <- reads s,
  11886.                          (",",u) <- lex t,
  11887.                          (y,v)   <- reads u,
  11888.                          (")",w) <- lex v ] )
  11889.  
  11890. reads             :: (Read a) => ReadS a
  11891. reads        =  readsPrec 0
  11892.  
  11893. read             :: (Read a) => String -> a
  11894. read s             =  case [x | (x,t) <- reads s, ("","") <- lex t] of
  11895.             [x] -> x
  11896.             []  -> error "read{PreludeRead}: no parse"
  11897.             _   -> error "read{PreludeRead}: ambiguous parse"
  11898.  
  11899. readParen       :: Bool -> ReadS a -> ReadS a
  11900. readParen b g    =  if b then mandatory else optional
  11901.            where optional r  = g r ++ mandatory r
  11902.              mandatory r = [(x,u) | ("(",s) <- lex r,
  11903.                         (x,t)   <- optional s,
  11904.                         (")",u) <- lex t    ]
  11905.  
  11906. lex                 :: ReadS String
  11907. lex ""            = [("","")]
  11908. lex (c:s) | isSpace c    = lex (dropWhile isSpace s)
  11909. lex ('-':'-':s)        = case dropWhile (/= '\n') s of
  11910.                  '\n':t -> lex t
  11911.                  _    -> [] -- unterminated end-of-line
  11912.                           -- comment
  11913.  
  11914. lex ('{':'-':s)        = lexNest lex s
  11915.               where
  11916.               lexNest f ('-':'}':s) = f s
  11917.               lexNest f ('{':'-':s) = lexNest (lexNest f) s
  11918.               lexNest f (c:s)          = lexNest f s
  11919.               lexNest _ ""        = [] -- unterminated
  11920.                              -- nested comment
  11921.  
  11922. lex ('<':'-':s)        = [("<-",s)]
  11923. lex ('\'':s)        = [('\'':ch++"'", t) | (ch,'\'':t)  <- lexLitChar s,
  11924.                            ch /= "'"        ]
  11925. lex ('"':s)        = [('"':str, t)      | (str,t) <- lexString s]
  11926.               where
  11927.               lexString ('"':s) = [("\"",s)]
  11928.               lexString s = [(ch++str, u)
  11929.                         | (ch,t)  <- lexStrItem s,
  11930.                           (str,u) <- lexString t  ]
  11931.  
  11932.               lexStrItem ('\\':'&':s) = [("\\&",s)]
  11933.               lexStrItem ('\\':c:s) | isSpace c
  11934.                   = [("\\&",t) | '\\':t <- [dropWhile isSpace s]]
  11935.               lexStrItem s          = lexLitChar s
  11936.  
  11937. lex (c:s) | isSingle c    = [([c],s)]
  11938.       | isSym1 c    = [(c:sym,t)         | (sym,t) <- [span isSym s]]
  11939.       | isAlpha c    = [(c:nam,t)         | (nam,t) <- [span isIdChar s]]
  11940.       | isDigit c    = [(c:ds++fe,t)         | (ds,s)  <- [span isDigit s],
  11941.                            (fe,t)  <- lexFracExp s       ]
  11942.       | otherwise    = []    -- bad character
  11943.         where
  11944.         isSingle c  =  c `elem` ",;()[]{}_"
  11945.         isSym1 c    =  c `elem` "-~" || isSym c
  11946.         isSym c        =  c `elem` "!@#$%&*+./<=>?\\^|:"
  11947.         isIdChar c  =  isAlphanum c || c `elem` "_'"
  11948.  
  11949.         lexFracExp ('.':s) = [('.':ds++e,u) | (ds,t) <- lexDigits s,
  11950.                               (e,u)  <- lexExp t    ]
  11951.         lexFracExp s       = [("",s)]
  11952.  
  11953.         lexExp (e:s) | e `elem` "eE"
  11954.              = [(e:c:ds,u) | (c:t)    <- [s], c `elem` "+-",
  11955.                            (ds,u) <- lexDigits t] ++
  11956.                [(e:ds,t)   | (ds,t)    <- lexDigits s]
  11957.         lexExp s = [("",s)]
  11958.  
  11959. lexDigits        :: ReadS String    
  11960. lexDigits        =  nonnull isDigit
  11961.  
  11962. nonnull            :: (Char -> Bool) -> ReadS String
  11963. nonnull p s        =  [(cs,t) | (cs@(_:_),t) <- [span p s]]
  11964.  
  11965. lexLitChar        :: ReadS String
  11966. lexLitChar ('\\':s)    =  [('\\':esc, t) | (esc,t) <- lexEsc s]
  11967.     where
  11968.     lexEsc (c:s)     | c `elem` "abfnrtv\\\"'" = [([c],s)]
  11969.     lexEsc ('^':c:s) | c >= '@' && c <= '_'  = [(['^',c],s)]
  11970.     lexEsc s@(d:_)     | isDigit d         = lexDigits s
  11971.     lexEsc ('o':s)    =  [('o':os, t) | (os,t) <- nonnull isOctDigit s]
  11972.     lexEsc ('x':s)    =  [('x':xs, t) | (xs,t) <- nonnull isHexDigit s]
  11973.     lexEsc s@(c:_)     | isUpper c
  11974.             =  case [(mne,s') | mne <- "DEL" : asciiTab,
  11975.                         ([],s') <- [match mne s]      ]
  11976.                of (pr:_) -> [pr]
  11977.                   []     -> []
  11978.     lexEsc _    =  []
  11979. lexLitChar (c:s)    =  [([c],s)]
  11980. lexLitChar ""        =  []
  11981.  
  11982. isOctDigit c  =  c >= '0' && c <= '7'
  11983. isHexDigit c  =  isDigit c || c >= 'A' && c <= 'F'
  11984.                || c >= 'a' && c <= 'f'
  11985.  
  11986. match            :: (Eq a) => [a] -> [a] -> ([a],[a])
  11987. match (x:xs) (y:ys) | x == y  =  match xs ys
  11988. match xs     ys              =  (xs,ys)
  11989.  
  11990. asciiTab = ["NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
  11991.         "BS",  "HT",  "LF",  "VT",  "FF",  "CR",  "SO",  "SI", 
  11992.         "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
  11993.         "CAN", "EM",  "SUB", "ESC", "FS",  "GS",  "RS",  "US", 
  11994.         "SP"] 
  11995.  
  11996.  
  11997.  
  11998. readLitChar         :: ReadS Char
  11999. readLitChar ('\\':s)    =  readEsc s
  12000.     where
  12001.     readEsc ('a':s)     = [('\a',s)]
  12002.     readEsc ('b':s)     = [('\b',s)]
  12003.     readEsc ('f':s)     = [('\f',s)]
  12004.     readEsc ('n':s)     = [('\n',s)]
  12005.     readEsc ('r':s)     = [('\r',s)]
  12006.     readEsc ('t':s)     = [('\t',s)]
  12007.     readEsc ('v':s)     = [('\v',s)]
  12008.     readEsc ('\\':s) = [('\\',s)]
  12009.     readEsc ('"':s)     = [('"',s)]
  12010.     readEsc ('\'':s) = [('\'',s)]
  12011.     readEsc ('^':c:s) | c >= '@' && c <= '_'
  12012.              = [(chr (ord c - ord '@'), s)]
  12013.     readEsc s@(d:_) | isDigit d
  12014.              = [(chr n, t) | (n,t) <- readDec s]
  12015.     readEsc ('o':s)  = [(chr n, t) | (n,t) <- readOct s]
  12016.     readEsc ('x':s)     = [(chr n, t) | (n,t) <- readHex s]
  12017.     readEsc s@(c:_) | isUpper c
  12018.              = let table = ('\DEL',"DEL") : zip ['\NUL'..] asciiTab
  12019.                in case [(c,s') | (c,mne) <- table,
  12020.                          ([],s') <- [match mne s]]
  12021.                   of (pr:_) -> [pr]
  12022.                  []    -> []
  12023.     readEsc _     = []
  12024. readLitChar (c:s)    =  [(c,s)]
  12025.  
  12026. readDec, readOct, readHex :: ReadS Int
  12027. readDec = readInt 10 isDigit (\d -> ord d - ord '0')
  12028. readOct = readInt  8 isOctDigit (\d -> ord d - ord '0')
  12029. readHex = readInt 16 isHexDigit hex
  12030.         where hex d = ord d - (if isDigit d then ord '0'
  12031.                    else ord (if isUpper d then 'A' else 'a')
  12032.                     - 10)
  12033.  
  12034. readInt :: Int -> (Char -> Bool) -> (Char -> Int) -> ReadS Int
  12035. readInt radix isDig digToInt s =
  12036.     [(foldl1 (\n d -> n * radix + d) (map (fromInteger . digToInt) ds), r)
  12037.     | (ds,r) <- nonnull isDig s ]
  12038.  
  12039. readSigned:: ReadS Int -> ReadS Int
  12040. readSigned readPos = readParen False read'
  12041.              where read' r  = read'' r ++
  12042.                       [(-x,t) | ("-",s) <- lex r,
  12043.                         (x,t)   <- read'' s]
  12044.                read'' r = [(n,s)  | (str,s) <- lex r,
  12045.                               (n,"")  <- readPos str]
  12046.  
  12047.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     VNickappx_aDÿÿÿ fiùj−%[appx_bDÿÿÿ fiùj’t\appx_cDÿÿÿ fiùj°#]appx_dDÿÿÿ fiùj ]appx_eDÿÿÿ fiùj|^appx_fDÿÿÿ fiùjÏ
  12048. ^appx_gDÿÿÿ fiùj‹^ch00Dÿÿÿ fiùj†_ch01Dÿÿÿ fiùjæ_ch02Dÿÿÿ fiùj`ch03Dÿÿÿ fiùj€_ch04Dÿÿÿ fiùj|    `ch05Dÿÿÿ fiùjÇ`ch06Dÿÿÿ fiùj 'ach07Dÿÿÿ fiùjä<bch08Dÿÿÿ fiùjïcch09Dÿÿÿ fiùjÑ•dch10Dÿÿÿ fiùjÃLech11Dÿÿÿ fiùjWcch12Dÿÿÿ fiùjkJfch13Dÿÿÿ fiùjÇ"gch14Dÿÿÿ fiùj*hhypeDÿÿÿ fiùjâ
  12049. aReadmeDÿÿÿ fiùjj grelease221Dÿÿÿ fiùjª«irelease228Dÿÿÿ fiùjnÕjappx_aDÿÿÿ fiùj−%[appx_bDÿÿÿ fiùj’t\appx_cDÿÿÿ fiùj°#]appx_dDÿÿÿ fiùj ]appx_eDÿÿÿ fiùj|^appx_fDÿÿÿ fiùjÏ
  12050. ^appx_gDÿÿÿ fiùj‹^ch00Dÿÿÿ fiùj†_ch01Dÿÿÿ fiùjæ_ch02Dÿÿÿ fiùj`ch03Dÿÿÿ fiùj€_ch04Dÿÿÿ fiùj|    `ch05Dÿÿÿ fiùjÇ`ch06Dÿÿÿ fiùj 'ach07Dÿÿÿ fiùjä<bch08Dÿÿÿ fiùjïcch09Dÿÿÿ fiùjÑ•dch10Dÿÿÿ fiùjÃLech11Dÿÿÿ fiùjWcch12Dÿÿÿ fiùjkJfch13Dÿÿÿ fiùjÇ"gch14Dÿÿÿ fiùj*hhypeDÿÿÿ fiùjâ
  12051. aReadmeDÿÿÿ fiùjj grelease221Dÿÿÿ fiùjª«irelease228Dÿÿÿ fiùjnÕj<DocsDocsVNick
  12052.  
  12053. Introduction to Gofer                    APPENDIX A: SUMMARY OF GRAMMAR
  12054.  
  12055.  
  12056. APPENDIX A: SUMMARY OF GRAMMAR
  12057.  
  12058. This section gives a summary of the grammar for the  language  used  by
  12059. Gofer.  The non-terminals <interp> and <module> describe the syntax  of
  12060. expressions that can be entered into the Gofer interpreter and that  of
  12061. files of definitions that can be loaded into Gofer respectively.
  12062.  
  12063. The following notational conventions are used in the Grammar  which  is
  12064. specified using a variant of BNF:
  12065.  
  12066.   o <angle brackets> are used to distinguish names of nonterminals from
  12067.     keywords.
  12068.  
  12069.   o vertical | bars  are used to separate alternatives.
  12070.  
  12071.   o {braces} enclose items which may be repeated zero or more times.
  12072.  
  12073.   o [brackets] are used for optional items.
  12074.  
  12075.   o (parentheses) are used for grouping.
  12076.  
  12077.   o "quotes" surround characters which might otherwise be confused with
  12078.     the notations introduced above.
  12079.  
  12080. The following terminal symbols are used but not defined by the grammar:
  12081.  
  12082.   VARID    identifier beginning with lower case letter as described in
  12083.            section 6.
  12084.   CONID    like VARID, but beginning with upper case letter.
  12085.   VAROP    operator symbol not beginning with a colon, as described in
  12086.            section 6.
  12087.   CONOP    constructor function operator, like VAROP, but beginning
  12088.            with a colon character.
  12089.   INTEGER  integer constant, as described in section 7.3.
  12090.   FLOAT    floating point constant, as described in section 7.4.
  12091.   CHAR     character constant, as described in section 7.5.
  12092.   STRING   string constant, as described in section 7.7.
  12093.  
  12094.  
  12095. Top-level grammar
  12096. -----------------
  12097.  
  12098.     <module>   ::= "{" <topdecls> "}"               module
  12099.  
  12100.     <interp>   ::= <exp> [<where>]                  top-level expression
  12101.  
  12102.     <topdecls> ::= <topdecls>; <topdecls>           multiple declarations
  12103.                 |  data <typeLhs> = <constrs>       datatype declaration
  12104.                 |  type <typeLhs> = <type>          synonym declaration
  12105.                 |  infixl [<digit>] <op> {, <op>}   fixity declarations
  12106.                 |  infixr [<digit>] <op> {, <op>}
  12107.                 |  infix  [<digit>] <op> {, <op>}
  12108.                 |  primitive <prims> :: <type>      primitive bindings
  12109.                 |  <class>                          class declaration
  12110.                 |  <inst>                           instance declaration
  12111.                 |  <decls>                          value declarations
  12112.  
  12113.  
  12114.                                       93
  12115.  
  12116.  
  12117.  
  12118.  
  12119. Introduction to Gofer                    APPENDIX A: SUMMARY OF GRAMMAR
  12120.  
  12121.  
  12122.     <typeLhs>  ::= CONID {VARID}                    type declaration lhs
  12123.  
  12124.     <constrs>  ::= <constrs> "|" <constrs>          multiple constructors
  12125.                 |  <type> CONOP <type>              infix constructor
  12126.                 |  CONID {<type>}                   constructor, n>=0
  12127.  
  12128.     <prims>    ::= <prims>, <prims>                 multiple bindings
  12129.                 |  <var> <string>                   primitive binding
  12130.  
  12131. Type expressions
  12132. ----------------
  12133.  
  12134.     <sigType>  ::= [<context> => ] <type>           [qualified] type
  12135.  
  12136.     <context>  ::= "(" [<pred> {, <pred>}] ")"      general form
  12137.                 |  <pred>                           singleton context
  12138.     <pred>     ::= CONID <type> {<type>}            predicate
  12139.  
  12140.     <type>     ::= <ctype> [ -> <type> ]            function type
  12141.     <ctype>    ::= CONID {<atype>}                  datatype or synonym
  12142.                 |  <atype>
  12143.     <atype>    ::= VARID                            type variable
  12144.                 |  "(" ")"                          unit type
  12145.                 |  "(" <type> ")"                   parenthesised type
  12146.                 |  "(" <type>,<type> {,<type>} ")"  tuple type
  12147.                 |  "[" <type> "]"                   list type
  12148.  
  12149. Class and instance declarations
  12150. -------------------------------
  12151.  
  12152.     <class>    ::= class [<context> =>] <pred> [<cbody>]
  12153.     <cbody>    ::= where "{" <cdecls> "}"           class body
  12154.     <cdecls>   ::= <cdecls>; <cdecls>               multiple declarations
  12155.                 |  <var> {, <var>} :: <type>        member functions
  12156.                 |  <fun> <rhs> [<where>]            default bindings
  12157.  
  12158.     <inst>     ::= instance [<context> =>] <pred> [<ibody>]
  12159.     <ibody>    ::= where "{" <idecls> "}"           instance body
  12160.     <idecls>   ::= <idecls>; <idecls>               multiple declarations
  12161.                 |  <fun> <rhs> [<where>]            member definition
  12162.  
  12163. Value declarations
  12164. ------------------
  12165.  
  12166.     <decls>  ::= <decls>; <decls>                 multiple declarations
  12167.               |  <var> {, <var>} :: <sigType>     type declaration
  12168.               |  <fun> <rhs> [<where>]            function binding
  12169.               |  <pat> <rhs> [<where>]            pattern binding
  12170.  
  12171.     <rhs>    ::= = <exp>                          simple right hand side
  12172.               |  <gdRhs> {<gdRhs>}                guarded right hand sides
  12173.  
  12174.     <gdRhs>  ::= "|" <exp> = <exp>                guarded right hand side
  12175.  
  12176.     <where>  ::= where "{" <decls> "}"            local definitions
  12177.  
  12178.  
  12179.  
  12180.                                       94
  12181.  
  12182.  
  12183.  
  12184.  
  12185. Introduction to Gofer                    APPENDIX A: SUMMARY OF GRAMMAR
  12186.  
  12187.  
  12188.     <fun>    ::= <var>                            function of arity 0
  12189.               |  <pat> <varop> <pat>              infix operator
  12190.               |  "(" <pat> <varop> ")"            section-like notation
  12191.               |  "(" <varop> <pat> ")"
  12192.               |  <fun> <apat>                     function with argument
  12193.               |  "(" <fun> ")"                    parenthesised lhs
  12194.  
  12195. Expressions
  12196. -----------
  12197.  
  12198.     <exp>    ::= \ <apat> {<apat>} -> <exp>       lambda expression
  12199.               |  let "{" <decls> "}" in <exp>     local definition
  12200.               |  if <exp> then <exp> else <exp>   conditional expression
  12201.               |  case <exp> of "{" <alts> "}"     case expression
  12202.               |  <opExp> :: <sigType>             typed expression
  12203.               |  <opExp>
  12204.     <opExp>  ::= <opExp> <op> <opExp>             operator application
  12205.               |  <pfxExp>
  12206.     <pfxExp> ::= - <appExp>                       negation
  12207.               |  <appExp>
  12208.     <appExp> ::= <appExp> <atomic>                function application
  12209.               |  <atomic>
  12210.     <atomic> ::= <var>                            variable
  12211.               |  <conid>                          constructor
  12212.               |  INTEGER                          integer literal
  12213.               |  FLOAT                            floating point literal
  12214.               |  CHAR                             character literal
  12215.               |  STRING                           string literal
  12216.               |  "(" ")"                          unit element
  12217.               |  "(" <exp> ")"                    parenthesised expr.
  12218.               |  (<exp> <op>)                     sections
  12219.               |  (<op> <exp>)
  12220.               |  "[" <list> "]"                   list expression
  12221.               |  "(" <exp>, <exp> {, <exp>} ")"   tuple
  12222.  
  12223.     <list>   ::= [ <exp> {, <exp>} ]              enumerated list
  12224.               |  <exp> "|" <quals>                list comprehension
  12225.               |  <exp> ..                         arithmetic sequence
  12226.               |  <exp, <exp> ..
  12227.               |  <exp> .. <exp>
  12228.               |  <exp>, <exp> .. <exp>
  12229.     <quals>  ::= <quals>, <quals>                 multiple qualifiers
  12230.               |  <pat> <- <exp>                   generator
  12231.               |  <pat> = <exp>                    local definition
  12232.               |  <exp>                            boolean guard
  12233.  
  12234.     <alts>   ::= <alts>, <alts>                   multiple alternatives
  12235.               |  <pat> <altRhs> [<where>]         alternative
  12236.     <altRhs> ::= -> <exp>                         single alternative
  12237.               |  <gdAlt> {<gdAlt>}                guarded alternatives
  12238.     <gdAlt>  ::= "|" <exp> -> <exp>               guarded alternative
  12239.  
  12240. Patterns
  12241. --------
  12242.  
  12243.     <pat>    ::= <pat> <conop> <pat>              operator application
  12244.  
  12245.  
  12246.                                       95
  12247.  
  12248.  
  12249.  
  12250.  
  12251. Introduction to Gofer                    APPENDIX A: SUMMARY OF GRAMMAR
  12252.  
  12253.  
  12254.               |  <var> + <integer>                (n+k) pattern
  12255.               |  <appPat>
  12256.     <appPat> ::= <appPat> <apat>                  application
  12257.               |  <apat>
  12258.     <apat>   ::= <var>                            variable
  12259.               |  <var> @ <pat>                    as pattern
  12260.               |  ~ <pat>                          irrefutable pattern
  12261.               |  _                                wildcard
  12262.               |  <conid>                          constructor
  12263.               |  INTEGER                          integer literal
  12264.               |  CHAR                             character literal
  12265.               |  STRING                           string literal
  12266.               |  "(" ")"                          unit element
  12267.               |  "(" <pat> ")"                    parenthesised expr.
  12268.               |  (<pat> <conop>)                  sections
  12269.               |  (<conop> <pat>)
  12270.               |  "[" [ <pat> {, <pat>} ] "]"      list
  12271.               |  "(" <pat>, <pat> {, <pat>} ")"   tuple
  12272.  
  12273. Variables and operators
  12274. -----------------------
  12275.  
  12276.     <var>    ::= <varid>  |  "(" - ")"            variable
  12277.     <op>     ::= <varop>  |  <conop>   |  -       operator
  12278.  
  12279.     <varid>  ::= VARID    |  "(" VAROP ")"        variable identifier
  12280.     <varop>  ::= VAROP    |  ` VARID `            variable operator
  12281.  
  12282.     <conid>  ::= CONID    |  "(" CONOP ")"        constructor identifier
  12283.     <conop>  ::= CONOP    |  ` CONID `            constructor operator
  12284.  
  12285.  
  12286.  
  12287.  
  12288.  
  12289.  
  12290.  
  12291.  
  12292.  
  12293.  
  12294.  
  12295.  
  12296.  
  12297.  
  12298.  
  12299.  
  12300.  
  12301.  
  12302.  
  12303.  
  12304.  
  12305.  
  12306.  
  12307.  
  12308.  
  12309.  
  12310.  
  12311.  
  12312.                                       96
  12313.  
  12314.  
  12315. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  12316.  
  12317. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12318.  
  12319.  
  12320. APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12321.  
  12322. --         __________   __________   __________   __________   ________
  12323. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  12324. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  12325. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  12326. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  12327. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  12328. --
  12329. --    Functional programming environment, Version 2.28
  12330. --    Copyright Mark P Jones 1991-1993.
  12331. --
  12332. --    Standard prelude for use of overloaded values using type classes.
  12333. --    Based on the Haskell standard prelude version 1.2.
  12334.  
  12335. help = "press :? for a list of commands"
  12336.  
  12337. -- Operator precedence table: -----------------------------------------------
  12338.  
  12339. infixl 9 !!
  12340. infixr 9 .
  12341. infixr 8 ^
  12342. infixl 7 *
  12343. infix  7 /, `div`, `quot`, `rem`, `mod`
  12344. infixl 6 +, -
  12345. infix  5 \\
  12346. infixr 5 ++, :
  12347. infix  4 ==, /=, <, <=, >=, >
  12348. infix  4 `elem`, `notElem`
  12349. infixr 3 &&
  12350. infixr 2 ||
  12351. infixr 0 $
  12352.  
  12353. -- Standard combinators: ----------------------------------------------------
  12354.  
  12355. primitive strict "primStrict" :: (a -> b) -> a -> b
  12356.  
  12357. const          :: a -> b -> a
  12358. const k x       = k
  12359.  
  12360. id             :: a -> a
  12361. id    x         = x
  12362.  
  12363. curry          :: ((a,b) -> c) -> a -> b -> c
  12364. curry f a b     =  f (a,b)
  12365.  
  12366. uncurry        :: (a -> b -> c) -> (a,b) -> c
  12367. uncurry f (a,b) = f a b
  12368.  
  12369. fst            :: (a,b) -> a
  12370. fst (x,_)       = x
  12371.  
  12372. snd            :: (a,b) -> b
  12373. snd (_,y)       = y
  12374.  
  12375. fst3           :: (a,b,c) -> a
  12376.  
  12377.  
  12378.                                       97
  12379.  
  12380.  
  12381.  
  12382.  
  12383. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12384.  
  12385.  
  12386. fst3 (x,_,_)    = x
  12387.  
  12388. snd3           :: (a,b,c) -> b
  12389. snd3 (_,x,_)    = x
  12390.  
  12391. thd3           :: (a,b,c) -> c
  12392. thd3 (_,_,x)    = x
  12393.  
  12394. (.)           :: (b -> c) -> (a -> b) -> (a -> c)
  12395. (f . g) x       = f (g x)
  12396.  
  12397. flip           :: (a -> b -> c) -> b -> a -> c
  12398. flip  f x y     = f y x
  12399.  
  12400. ($)            :: (a -> b) -> a -> b     -- pronounced as `apply' elsewhere
  12401. f $ x           = f x
  12402.  
  12403. -- Boolean functions: -------------------------------------------------------
  12404.  
  12405. (&&), (||)     :: Bool -> Bool -> Bool
  12406. False && x      = False
  12407. True  && x      = x
  12408.  
  12409. False || x      = x
  12410. True  || x      = True
  12411.  
  12412. not            :: Bool -> Bool
  12413. not True        = False
  12414. not False       = True
  12415.  
  12416. and, or        :: [Bool] -> Bool
  12417. and             = foldr (&&) True
  12418. or              = foldr (||) False
  12419.  
  12420. any, all       :: (a -> Bool) -> [a] -> Bool
  12421. any p           = or  . map p
  12422. all p           = and . map p
  12423.  
  12424. otherwise      :: Bool
  12425. otherwise       = True
  12426.  
  12427. -- Character functions: -----------------------------------------------------
  12428.  
  12429. primitive ord "primCharToInt" :: Char -> Int
  12430. primitive chr "primIntToChar" :: Int -> Char
  12431.  
  12432. isAscii, isControl, isPrint, isSpace            :: Char -> Bool
  12433. isUpper, isLower, isAlpha, isDigit, isAlphanum  :: Char -> Bool
  12434.  
  12435. isAscii c     =  ord c < 128
  12436.  
  12437. isControl c   =  c < ' '    ||  c == '\DEL'
  12438.  
  12439. isPrint c     =  c >= ' '   &&  c <= '~'
  12440.  
  12441. isSpace c     =  c == ' '   || c == '\t'  || c == '\n'  || c == '\r'  ||
  12442.  
  12443.  
  12444.                                       98
  12445.  
  12446.  
  12447.  
  12448.  
  12449. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12450.  
  12451.  
  12452.                                c == '\f'  || c == '\v'
  12453.  
  12454. isUpper c     =  c >= 'A'   &&  c <= 'Z'
  12455. isLower c     =  c >= 'a'   &&  c <= 'z'
  12456.  
  12457. isAlpha c     =  isUpper c  ||  isLower c
  12458. isDigit c     =  c >= '0'   &&  c <= '9'
  12459. isAlphanum c  =  isAlpha c  ||  isDigit c
  12460.  
  12461.  
  12462. toUpper, toLower      :: Char -> Char
  12463.  
  12464. toUpper c | isLower c  = chr (ord c - ord 'a' + ord 'A')
  12465.           | otherwise  = c
  12466.  
  12467. toLower c | isUpper c  = chr (ord c - ord 'A' + ord 'a')
  12468.           | otherwise  = c
  12469.  
  12470. minChar, maxChar      :: Char
  12471. minChar                = chr 0
  12472. maxChar                = chr 255
  12473.  
  12474. -- Standard type classes: ---------------------------------------------------
  12475.  
  12476. class Eq a where
  12477.     (==), (/=) :: a -> a -> Bool
  12478.     x /= y      = not (x == y)
  12479.  
  12480. class Eq a => Ord a where
  12481.     (<), (<=), (>), (>=) :: a -> a -> Bool
  12482.     max, min             :: a -> a -> a
  12483.  
  12484.     x <  y            = x <= y && x /= y
  12485.     x >= y            = y <= x
  12486.     x >  y            = y < x
  12487.  
  12488.     max x y | x >= y  = x
  12489.             | y >= x  = y
  12490.     min x y | x <= y  = x
  12491.             | y <= x  = y
  12492.  
  12493. class Ord a => Ix a where
  12494.     range   :: (a,a) -> [a]
  12495.     index   :: (a,a) -> a -> Int
  12496.     inRange :: (a,a) -> a -> Bool
  12497.  
  12498. class Ord a => Enum a where
  12499.     enumFrom       :: a -> [a]              -- [n..]
  12500.     enumFromThen   :: a -> a -> [a]         -- [n,m..]
  12501.     enumFromTo     :: a -> a -> [a]         -- [n..m]
  12502.     enumFromThenTo :: a -> a -> a -> [a]    -- [n,n'..m]
  12503.  
  12504.     enumFromTo n m        = takeWhile (m>=) (enumFrom n)
  12505.     enumFromThenTo n n' m = takeWhile ((if n'>=n then (>=) else (<=)) m)
  12506.                                       (enumFromThen n n')
  12507.  
  12508.  
  12509.  
  12510.                                       99
  12511.  
  12512.  
  12513.  
  12514.  
  12515. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12516.  
  12517.  
  12518. class (Eq a, Text a) => Num a where         -- simplified numeric class
  12519.     (+), (-), (*), (/) :: a -> a -> a
  12520.     negate             :: a -> a
  12521.     fromInteger           :: Int -> a
  12522.  
  12523. -- Type class instances: ----------------------------------------------------
  12524.  
  12525. primitive primEqInt    "primEqInt",
  12526.       primLeInt    "primLeInt"   :: Int -> Int -> Bool
  12527. primitive primPlusInt  "primPlusInt",
  12528.       primMinusInt "primMinusInt",
  12529.       primDivInt   "primDivInt",
  12530.       primMulInt   "primMulInt"  :: Int -> Int -> Int
  12531. primitive primNegInt   "primNegInt"  :: Int -> Int
  12532.  
  12533. instance Eq ()  where () == () = True
  12534. instance Ord () where () <= () = True
  12535.  
  12536. instance Eq Int  where (==) = primEqInt
  12537.  
  12538. instance Ord Int where (<=) = primLeInt
  12539.  
  12540. instance Ix Int where
  12541.     range (m,n)      = [m..n]
  12542.     index (m,n) i    = i - m
  12543.     inRange (m,n) i  = m <= i && i <= n
  12544.  
  12545. instance Enum Int where
  12546.     enumFrom n       = iterate (1+) n
  12547.     enumFromThen n m = iterate ((m-n)+) n
  12548.  
  12549. instance Num Int where
  12550.     (+)           = primPlusInt
  12551.     (-)           = primMinusInt
  12552.     (*)           = primMulInt
  12553.     (/)           = primDivInt
  12554.     negate        = primNegInt
  12555.     fromInteger x = x
  12556.  
  12557. {- PC version off -}
  12558. primitive primEqFloat    "primEqFloat",
  12559.           primLeFloat    "primLeFloat"    :: Float -> Float -> Bool
  12560. primitive primPlusFloat  "primPlusFloat", 
  12561.           primMinusFloat "primMinusFloat", 
  12562.           primDivFloat   "primDivFloat",
  12563.           primMulFloat   "primMulFloat"   :: Float -> Float -> Float 
  12564. primitive primNegFloat   "primNegFloat"   :: Float -> Float
  12565. primitive primIntToFloat "primIntToFloat" :: Int -> Float
  12566.  
  12567. instance Eq Float where (==) = primEqFloat
  12568.  
  12569. instance Ord Float where (<=) = primLeFloat
  12570.  
  12571. instance Enum Float where
  12572.     enumFrom n       = iterate (1.0+) n
  12573.     enumFromThen n m = iterate ((m-n)+) n
  12574.  
  12575.  
  12576.                                       100
  12577.  
  12578.  
  12579.  
  12580.  
  12581. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12582.  
  12583.  
  12584. instance Num Float where
  12585.     (+)         = primPlusFloat
  12586.     (-)         = primMinusFloat
  12587.     (*)         = primMulFloat
  12588.     (/)         = primDivFloat 
  12589.     negate      = primNegFloat
  12590.     fromInteger = primIntToFloat
  12591.  
  12592. primitive sin "primSinFloat",  asin  "primAsinFloat",
  12593.           cos "primCosFloat",  acos  "primAcosFloat",
  12594.       tan "primTanFloat",  atan  "primAtanFloat",
  12595.           log "primLogFloat",  log10 "primLog10Float",
  12596.       exp "primExpFloat",  sqrt  "primSqrtFloat" :: Float -> Float
  12597. primitive atan2    "primAtan2Float" :: Float -> Float -> Float
  12598. primitive truncate "primFloatToInt" :: Float -> Int
  12599.  
  12600. pi :: Float
  12601. pi  = 3.1415926535
  12602.  
  12603. {- PC version on -}
  12604.  
  12605. primitive primEqChar   "primEqChar",
  12606.       primLeChar   "primLeChar"  :: Char -> Char -> Bool
  12607.  
  12608. instance Eq Char  where (==) = primEqChar   -- c == d  =  ord c == ord d
  12609.  
  12610. instance Ord Char where (<=) = primLeChar   -- c <= d  =  ord c <= ord d
  12611.  
  12612. instance Ix Char where
  12613.     range (c,c')      = [c..c']
  12614.     index (c,c') ci   = ord ci - ord c
  12615.     inRange (c,c') ci = ord c <= i && i <= ord c' where i = ord ci
  12616.  
  12617. instance Enum Char where
  12618.     enumFrom c        = map chr [ord c .. ord maxChar]
  12619.     enumFromThen c c' = map chr [ord c, ord c' .. ord lastChar]
  12620.                         where lastChar = if c' < c then minChar else maxChar
  12621.  
  12622. instance Eq a => Eq [a] where
  12623.     []     == []     =  True
  12624.     []     == (y:ys) =  False
  12625.     (x:xs) == []     =  False
  12626.     (x:xs) == (y:ys) =  x==y && xs==ys
  12627.  
  12628. instance Ord a => Ord [a] where
  12629.     []     <= _      =  True
  12630.     (_:_)  <= []     =  False
  12631.     (x:xs) <= (y:ys) =  x<y || (x==y && xs<=ys)
  12632.  
  12633. instance (Eq a, Eq b) => Eq (a,b) where
  12634.     (x,y) == (u,v)  =  x==u && y==v
  12635.  
  12636. instance (Ord a, Ord b) => Ord (a,b) where
  12637.     (x,y) <= (u,v)  = x<u  ||  (x==u && y<=v)
  12638.  
  12639. instance Eq Bool where
  12640.  
  12641.  
  12642.                                       101
  12643.  
  12644.  
  12645.  
  12646.  
  12647. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12648.  
  12649.  
  12650.     True  == True   =  True
  12651.     False == False  =  True
  12652.     _     == _      =  False
  12653.  
  12654. instance Ord Bool where
  12655.     False <= x      = True
  12656.     True  <= x      = x
  12657.  
  12658. -- Standard numerical functions: --------------------------------------------
  12659.  
  12660. primitive div    "primDivInt",
  12661.       quot   "primQuotInt",
  12662.           rem    "primRemInt",
  12663.           mod    "primModInt"    :: Int -> Int -> Int
  12664.  
  12665. subtract  :: Num a => a -> a -> a
  12666. subtract   = flip (-)
  12667.  
  12668. even, odd :: Int -> Bool
  12669. even x     = x `rem` 2 == 0
  12670. odd        = not . even
  12671.  
  12672. gcd       :: Int -> Int -> Int
  12673. gcd x y    = gcd' (abs x) (abs y)
  12674.              where gcd' x 0 = x
  12675.                    gcd' x y = gcd' y (x `rem` y)
  12676.  
  12677. lcm       :: Int -> Int -> Int
  12678. lcm _ 0    = 0
  12679. lcm 0 _    = 0
  12680. lcm x y    = abs ((x `quot` gcd x y) * y)
  12681.  
  12682. (^)       :: Num a => a -> Int -> a
  12683. x ^ 0      = fromInteger 1
  12684. x ^ (n+1)  = f x n x
  12685.              where f _ 0 y = y
  12686.                    f x n y = g x n where
  12687.                              g x n | even n    = g (x*x) (n`quot`2)
  12688.                                    | otherwise = f x (n-1) (x*y)
  12689.  
  12690. abs                     :: (Num a, Ord a) => a -> a
  12691. abs x | x>=fromInteger 0 = x
  12692.       | otherwise        = -x
  12693.  
  12694. signum            :: (Num a, Ord a) => a -> Int
  12695. signum x
  12696.       | x==fromInteger 0 = 0
  12697.       | x> fromInteger 0 = 1
  12698.       | otherwise        = -1
  12699.  
  12700. sum, product    :: Num a => [a] -> a
  12701. sum              = foldl' (+) (fromInteger 0)
  12702. product          = foldl' (*) (fromInteger 1)
  12703.  
  12704. sums, products    :: Num a => [a] -> [a]
  12705. sums             = scanl (+) (fromInteger 0)
  12706.  
  12707.  
  12708.                                       102
  12709.  
  12710.  
  12711.  
  12712.  
  12713. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12714.  
  12715.  
  12716. products         = scanl (*) (fromInteger 1)
  12717.  
  12718. -- Standard list processing functions: --------------------------------------
  12719.  
  12720. head             :: [a] -> a
  12721. head (x:_)        = x
  12722.  
  12723. last             :: [a] -> a
  12724. last [x]          = x
  12725. last (_:xs)       = last xs
  12726.  
  12727. tail             :: [a] -> [a]
  12728. tail (_:xs)       = xs
  12729.  
  12730. init             :: [a] -> [a]
  12731. init [x]          = []
  12732. init (x:xs)       = x : init xs
  12733.  
  12734. (++)             :: [a] -> [a] -> [a]    -- append lists.  Associative with
  12735. []     ++ ys      = ys                   -- left and right identity [].
  12736. (x:xs) ++ ys      = x:(xs++ys)
  12737.  
  12738. genericLength    :: Num a => [b] -> a
  12739. genericLength     = foldl' (\n _ -> n + fromInteger 1) (fromInteger 0)
  12740.  
  12741. length         :: [a] -> Int           -- calculate length of list
  12742. length            = foldl' (\n _ -> n+1) 0
  12743.  
  12744. (!!)             :: [a] -> Int -> a      -- xs!!n selects the nth element of
  12745. (x:_)  !! 0       = x                    -- the list xs (first element xs!!0)
  12746. (_:xs) !! (n+1)   = xs !! n              -- for any n < length xs.
  12747.  
  12748. iterate          :: (a -> a) -> a -> [a] -- generate the infinite list
  12749. iterate f x       = x : iterate f (f x)  -- [x, f x, f (f x), ...
  12750.  
  12751. repeat           :: a -> [a]             -- generate the infinite list
  12752. repeat x          = xs where xs = x:xs   -- [x, x, x, x, ...
  12753.  
  12754. cycle            :: [a] -> [a]           -- generate the infinite list
  12755. cycle xs          = xs' where xs'=xs++xs'-- xs ++ xs ++ xs ++ ...
  12756.  
  12757. copy             :: Int -> a -> [a]      -- make list of n copies of x
  12758. copy n x          = take n xs where xs = x:xs
  12759.  
  12760. nub              :: Eq a => [a] -> [a]   -- remove duplicates from list
  12761. nub []            = []
  12762. nub (x:xs)        = x : nub (filter (x/=) xs)
  12763.  
  12764. reverse          :: [a] -> [a]           -- reverse elements of list
  12765. reverse           = foldl (flip (:)) []
  12766.  
  12767. elem, notElem    :: Eq a => a -> [a] -> Bool
  12768. elem              = any . (==)           -- test for membership in list
  12769. notElem           = all . (/=)           -- test for non-membership
  12770.  
  12771. maximum, minimum :: Ord a => [a] -> a
  12772.  
  12773.  
  12774.                                       103
  12775.  
  12776.  
  12777.  
  12778.  
  12779. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12780.  
  12781.  
  12782. maximum           = foldl1 max          -- max element in non-empty list
  12783. minimum           = foldl1 min          -- min element in non-empty list
  12784.  
  12785. concat           :: [[a]] -> [a]        -- concatenate list of lists
  12786. concat            = foldr (++) []
  12787.  
  12788. transpose        :: [[a]] -> [[a]]      -- transpose list of lists
  12789. transpose         = foldr
  12790.                       (\xs xss -> zipWith (:) xs (xss ++ repeat []))
  12791.                       []
  12792.  
  12793. -- null provides a simple and efficient way of determining whether a given
  12794. -- list is empty, without using (==) and hence avoiding a constraint of the
  12795. -- form Eq [a].
  12796.  
  12797. null             :: [a] -> Bool
  12798. null []           = True
  12799. null (_:_)        = False
  12800.  
  12801. -- (\\) is used to remove the first occurrence of each element in the second
  12802. -- list from the first list.  It is a kind of inverse of (++) in the sense
  12803. -- that  (xs ++ ys) \\ xs = ys for any finite list xs of proper values xs.
  12804.  
  12805. (\\)             :: Eq a => [a] -> [a] -> [a]
  12806. (\\)              = foldl del
  12807.                     where []     `del` _  = []
  12808.                           (x:xs) `del` y
  12809.                              | x == y     = xs
  12810.                              | otherwise  = x : xs `del` y
  12811.  
  12812.  
  12813. -- map f xs applies the function f to each element of the list xs returning
  12814. -- the corresponding list of results.  filter p xs returns the sublist of xs
  12815. -- containing those elements which satisfy the predicate p.
  12816.  
  12817. map              :: (a -> b) -> [a] -> [b]
  12818. map f []          = []
  12819. map f (x:xs)      = f x : map f xs
  12820.  
  12821. filter           :: (a -> Bool) -> [a] -> [a]
  12822. filter _ []       = []
  12823. filter p (x:xs)
  12824.     | p x         = x : xs'
  12825.     | otherwise   = xs'
  12826.                   where xs' = filter p xs
  12827.  
  12828. -- Fold primitives:  The foldl and scanl functions, variants foldl1 and
  12829. -- scanl1 for non-empty lists, and strict variants foldl' scanl' describe
  12830. -- common patterns of recursion over lists.  Informally:
  12831. --
  12832. --  foldl f a [x1, x2, ..., xn]  = f (...(f (f a x1) x2)...) xn
  12833. --                               = (...((a `f` x1) `f` x2)...) `f` xn
  12834. -- etc...
  12835. --
  12836. -- The functions foldr, scanr and variants foldr1, scanr1 are duals of these
  12837. -- functions:
  12838.  
  12839.  
  12840.                                       104
  12841.  
  12842.  
  12843.  
  12844.  
  12845. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12846.  
  12847.  
  12848. -- e.g.  foldr f a xs = foldl (flip f) a (reverse xs)  for finite lists xs.
  12849.  
  12850. foldl            :: (a -> b -> a) -> a -> [b] -> a
  12851. foldl f z []      = z
  12852. foldl f z (x:xs)  = foldl f (f z x) xs
  12853.  
  12854. foldl1           :: (a -> a -> a) -> [a] -> a
  12855. foldl1 f (x:xs)   = foldl f x xs
  12856.  
  12857. foldl'           :: (a -> b -> a) -> a -> [b] -> a
  12858. foldl' f a []     =  a
  12859. foldl' f a (x:xs) =  strict (foldl' f) (f a x) xs
  12860.  
  12861. scanl            :: (a -> b -> a) -> a -> [b] -> [a]
  12862. scanl f q xs      = q : (case xs of
  12863.                          []   -> []
  12864.                          x:xs -> scanl f (f q x) xs)
  12865.  
  12866. scanl1           :: (a -> a -> a) -> [a] -> [a]
  12867. scanl1 f (x:xs)   = scanl f x xs
  12868.  
  12869. scanl'           :: (a -> b -> a) -> a -> [b] -> [a]
  12870. scanl' f q xs     = q : (case xs of
  12871.                          []   -> []
  12872.                          x:xs -> strict (scanl' f) (f q x) xs)
  12873.  
  12874. foldr            :: (a -> b -> b) -> b -> [a] -> b
  12875. foldr f z []      = z
  12876. foldr f z (x:xs)  = f x (foldr f z xs)
  12877.  
  12878. foldr1           :: (a -> a -> a) -> [a] -> a
  12879. foldr1 f [x]      = x
  12880. foldr1 f (x:xs)   = f x (foldr1 f xs)
  12881.  
  12882. scanr            :: (a -> b -> b) -> b -> [a] -> [b]
  12883. scanr f q0 []     = [q0]
  12884. scanr f q0 (x:xs) = f x q : qs
  12885.                     where qs@(q:_) = scanr f q0 xs
  12886.  
  12887. scanr1           :: (a -> a -> a) -> [a] -> [a]
  12888. scanr1 f [x]      = [x]
  12889. scanr1 f (x:xs)   = f x q : qs
  12890.                     where qs@(q:_) = scanr1 f xs
  12891.  
  12892. -- List breaking functions:
  12893. --
  12894. --   take n xs       returns the first n elements of xs
  12895. --   drop n xs       returns the remaining elements of xs
  12896. --   splitAt n xs    = (take n xs, drop n xs)
  12897. --
  12898. --   takeWhile p xs  returns the longest initial segment of xs whose
  12899. --                   elements satisfy p
  12900. --   dropWhile p xs  returns the remaining portion of the list
  12901. --   span p xs       = (takeWhile p xs, dropWhile p xs)
  12902. --
  12903. --   takeUntil p xs  returns the list of elements upto and including the
  12904.  
  12905.  
  12906.                                       105
  12907.  
  12908.  
  12909.  
  12910.  
  12911. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12912.  
  12913.  
  12914. --                   first element of xs which satisfies p
  12915.  
  12916. take                :: Int -> [a] -> [a]
  12917. take 0     _         = []
  12918. take _     []        = []
  12919. take (n+1) (x:xs)    = x : take n xs
  12920.  
  12921. drop                :: Int -> [a] -> [a]
  12922. drop 0     xs        = xs
  12923. drop _     []        = []
  12924. drop (n+1) (_:xs)    = drop n xs
  12925.  
  12926. splitAt             :: Int -> [a] -> ([a], [a])
  12927. splitAt 0     xs     = ([],xs)
  12928. splitAt _     []     = ([],[])
  12929. splitAt (n+1) (x:xs) = (x:xs',xs'') where (xs',xs'') = splitAt n xs
  12930.  
  12931. takeWhile           :: (a -> Bool) -> [a] -> [a]
  12932. takeWhile p []       = []
  12933. takeWhile p (x:xs)
  12934.          | p x       = x : takeWhile p xs
  12935.          | otherwise = []
  12936.  
  12937. takeUntil           :: (a -> Bool) -> [a] -> [a]
  12938. takeUntil p []       = []
  12939. takeUntil p (x:xs)
  12940.        | p x         = [x]
  12941.        | otherwise   = x : takeUntil p xs
  12942.  
  12943. dropWhile           :: (a -> Bool) -> [a] -> [a]
  12944. dropWhile p []       = []
  12945. dropWhile p xs@(x:xs')
  12946.          | p x       = dropWhile p xs'
  12947.          | otherwise = xs
  12948.  
  12949. span, break         :: (a -> Bool) -> [a] -> ([a],[a])
  12950. span p []            = ([],[])
  12951. span p xs@(x:xs')
  12952.          | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  12953.          | otherwise = ([],xs)
  12954. break p              = span (not . p)
  12955.  
  12956. -- Text processing:
  12957. --   lines s     returns the list of lines in the string s.
  12958. --   words s     returns the list of words in the string s.
  12959. --   unlines ls  joins the list of lines ls into a single string
  12960. --               with lines separated by newline characters.
  12961. --   unwords ws  joins the list of words ws into a single string
  12962. --               with words separated by spaces.
  12963.  
  12964. lines     :: String -> [String]
  12965. lines ""   = []
  12966. lines s    = l : (if null s' then [] else lines (tail s'))
  12967.              where (l, s') = break ('\n'==) s
  12968.  
  12969. words     :: String -> [String]
  12970.  
  12971.  
  12972.                                       106
  12973.  
  12974.  
  12975.  
  12976.  
  12977. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  12978.  
  12979.  
  12980. words s    = case dropWhile isSpace s of
  12981.                   "" -> []
  12982.                   s' -> w : words s''
  12983.                         where (w,s'') = break isSpace s'
  12984.  
  12985. unlines   :: [String] -> String
  12986. unlines    = concat . map (\l -> l ++ "\n")
  12987.  
  12988. unwords   :: [String] -> String
  12989. unwords [] = []
  12990. unwords ws = foldr1 (\w s -> w ++ ' ':s) ws
  12991.  
  12992. -- Merging and sorting lists:
  12993.  
  12994. merge               :: Ord a => [a] -> [a] -> [a] 
  12995. merge []     ys      = ys
  12996. merge xs     []      = xs
  12997. merge (x:xs) (y:ys)
  12998.         | x <= y     = x : merge xs (y:ys)
  12999.         | otherwise  = y : merge (x:xs) ys
  13000.  
  13001. sort                :: Ord a => [a] -> [a]
  13002. sort                 = foldr insert []
  13003.  
  13004. insert              :: Ord a => a -> [a] -> [a]
  13005. insert x []          = [x]
  13006. insert x (y:ys)
  13007.         | x <= y     = x:y:ys
  13008.         | otherwise  = y:insert x ys
  13009.  
  13010. qsort               :: Ord a => [a] -> [a]
  13011. qsort []             = []
  13012. qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
  13013.                              [ x ] ++
  13014.                        qsort [ u | u<-xs, u>=x ]
  13015.  
  13016. -- zip and zipWith families of functions:
  13017.  
  13018. zip  :: [a] -> [b] -> [(a,b)]
  13019. zip   = zipWith  (\a b -> (a,b))
  13020.  
  13021. zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
  13022. zip3  = zipWith3 (\a b c -> (a,b,c))
  13023.  
  13024. zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
  13025. zip4  = zipWith4 (\a b c d -> (a,b,c,d))
  13026.  
  13027. zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
  13028. zip5  = zipWith5 (\a b c d e -> (a,b,c,d,e))
  13029.  
  13030. zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
  13031. zip6  = zipWith6 (\a b c d e f -> (a,b,c,d,e,f))
  13032.  
  13033. zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
  13034. zip7  = zipWith7 (\a b c d e f g -> (a,b,c,d,e,f,g))
  13035.  
  13036.  
  13037.  
  13038.                                       107
  13039.  
  13040.  
  13041.  
  13042.  
  13043. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  13044.  
  13045.  
  13046. zipWith                  :: (a->b->c) -> [a]->[b]->[c]
  13047. zipWith z (a:as) (b:bs)   = z a b : zipWith z as bs
  13048. zipWith _ _      _        = []
  13049.  
  13050. zipWith3                 :: (a->b->c->d) -> [a]->[b]->[c]->[d]
  13051. zipWith3 z (a:as) (b:bs) (c:cs)
  13052.                           = z a b c : zipWith3 z as bs cs
  13053. zipWith3 _ _ _ _          = []
  13054.  
  13055. zipWith4                 :: (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e]
  13056. zipWith4 z (a:as) (b:bs) (c:cs) (d:ds)
  13057.                           = z a b c d : zipWith4 z as bs cs ds
  13058. zipWith4 _ _ _ _ _        = []
  13059.  
  13060. zipWith5                 :: (a->b->c->d->e->f) -> [a]->[b]->[c]->[d]->[e]->[f]
  13061. zipWith5 z (a:as) (b:bs) (c:cs) (d:ds) (e:es)
  13062.                           = z a b c d e : zipWith5 z as bs cs ds es
  13063. zipWith5 _ _ _ _ _ _      = []
  13064.  
  13065. zipWith6                 :: (a->b->c->d->e->f->g)
  13066.                             -> [a]->[b]->[c]->[d]->[e]->[f]->[g]
  13067. zipWith6 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs)
  13068.                           = z a b c d e f : zipWith6 z as bs cs ds es fs
  13069. zipWith6 _ _ _ _ _ _ _    = []
  13070.  
  13071. zipWith7                 :: (a->b->c->d->e->f->g->h)
  13072.                              -> [a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]
  13073. zipWith7 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs)
  13074.                           = z a b c d e f g : zipWith7 z as bs cs ds es fs gs
  13075. zipWith7 _ _ _ _ _ _ _ _  = []
  13076.  
  13077. unzip                    :: [(a,b)] -> ([a],[b])
  13078. unzip                     = foldr (\(a,b) ~(as,bs) -> (a:as, b:bs)) ([], [])
  13079.  
  13080. -- Formatted output: --------------------------------------------------------
  13081.  
  13082. primitive primPrint "primPrint"  :: Int -> a -> String -> String
  13083.  
  13084. show'       :: a -> String
  13085. show' x      = primPrint 0 x []
  13086.  
  13087. cjustify, ljustify, rjustify :: Int -> String -> String
  13088.  
  13089. cjustify n s = space halfm ++ s ++ space (m - halfm)
  13090.                where m     = n - length s
  13091.                      halfm = m `div` 2
  13092. ljustify n s = s ++ space (n - length s)
  13093. rjustify n s = space (n - length s) ++ s
  13094.  
  13095. space       :: Int -> String
  13096. space n      = copy n ' '
  13097.  
  13098. layn        :: [String] -> String
  13099. layn         = lay 1 where lay _ []     = []
  13100.                            lay n (x:xs) = rjustify 4 (show n) ++ ") "
  13101.                                            ++ x ++ "\n" ++ lay (n+1) xs
  13102.  
  13103.  
  13104.                                       108
  13105.  
  13106.  
  13107.  
  13108.  
  13109. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  13110.  
  13111.  
  13112. -- Miscellaneous: -----------------------------------------------------------
  13113.  
  13114. until                  :: (a -> Bool) -> (a -> a) -> a -> a
  13115. until p f x | p x       = x
  13116.             | otherwise = until p f (f x)
  13117.  
  13118. until'                 :: (a -> Bool) -> (a -> a) -> a -> [a]
  13119. until' p f              = takeUntil p . iterate f
  13120.  
  13121. primitive error "primError" :: String -> a
  13122.  
  13123. undefined              :: a
  13124. undefined | False       = undefined
  13125.  
  13126. asTypeOf               :: a -> a -> a
  13127. x `asTypeOf` _          = x
  13128.  
  13129. -- A trimmed down version of the Haskell Text class: ------------------------
  13130.  
  13131. type  ShowS   = String -> String
  13132.  
  13133. class Text a where 
  13134.     showsPrec      :: Int -> a -> ShowS
  13135.     showList       :: [a] -> ShowS
  13136.  
  13137.     showsPrec       = primPrint
  13138.     showList []     = showString "[]"
  13139.     showList (x:xs) = showChar '[' . shows x . showl xs
  13140.                       where showl []     = showChar ']'
  13141.                             showl (x:xs) = showChar ',' . shows x . showl xs
  13142.  
  13143. shows      :: Text a => a -> ShowS
  13144. shows       = showsPrec 0
  13145.  
  13146. show       :: Text a => a -> String
  13147. show x      = shows x ""
  13148.  
  13149. showChar   :: Char -> ShowS
  13150. showChar    = (:)
  13151.  
  13152. showString :: String -> ShowS
  13153. showString  = (++)
  13154.  
  13155. instance Text () where
  13156.     showsPrec d ()    = showString "()"
  13157.  
  13158. instance Text Bool where
  13159.     showsPrec d True  = showString "True"
  13160.     showsPrec d False = showString "False"
  13161.  
  13162. primitive primShowsInt "primShowsInt" :: Int -> Int -> String -> String
  13163. instance Text Int where showsPrec = primShowsInt
  13164.  
  13165. {- PC version off -}
  13166. primitive primShowsFloat "primShowsFloat" :: Int -> Float -> String -> String
  13167. instance Text Float where showsPrec = primShowsFloat
  13168.  
  13169.  
  13170.                                       109
  13171.  
  13172.  
  13173.  
  13174.  
  13175. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  13176.  
  13177.  
  13178. {- PC version on -}
  13179.  
  13180. instance Text Char where
  13181.     showsPrec p c = showString [q, c, q] where q = '\''
  13182.     showList cs   = showChar '"' . showl cs
  13183.                     where showl ""       = showChar '"'
  13184.                           showl ('"':cs) = showString "\\\"" . showl cs
  13185.                           showl (c:cs)   = showChar c . showl cs
  13186.               -- Haskell has   showLitChar c . showl cs
  13187.  
  13188. instance Text a => Text [a]  where
  13189.     showsPrec p = showList
  13190.  
  13191. instance (Text a, Text b) => Text (a,b) where
  13192.     showsPrec p (x,y) = showChar '(' . shows x . showChar ',' .
  13193.                                        shows y . showChar ')'
  13194.  
  13195. -- I/O functions and definitions: -------------------------------------------
  13196.  
  13197. stdin         =  "stdin"
  13198. stdout        =  "stdout"
  13199. stderr        =  "stderr"
  13200. stdecho       =  "stdecho"
  13201.  
  13202. {- The Dialogue, Request, Response and IOError datatypes are now builtin:
  13203. data Request  =  -- file system requests:
  13204.                 ReadFile      String         
  13205.               | WriteFile     String String
  13206.               | AppendFile    String String
  13207.                  -- channel system requests:
  13208.               | ReadChan      String 
  13209.               | AppendChan    String String
  13210.                  -- environment requests:
  13211.               | Echo          Bool
  13212.           | GetArgs
  13213.           | GetProgName
  13214.           | GetEnv        String
  13215.  
  13216. data Response = Success
  13217.               | Str     String 
  13218.               | Failure IOError
  13219.           | StrList [String]
  13220.  
  13221. data IOError  = WriteError   String
  13222.               | ReadError    String
  13223.               | SearchError  String
  13224.               | FormatError  String
  13225.               | OtherError   String
  13226.  
  13227. type Dialogue    =  [Response] -> [Request]
  13228. -}
  13229.  
  13230. type SuccCont    =                Dialogue
  13231. type StrCont     =  String     -> Dialogue
  13232. type StrListCont =  [String]   -> Dialogue
  13233. type FailCont    =  IOError    -> Dialogue
  13234.  
  13235.  
  13236.                                       110
  13237.  
  13238.  
  13239.  
  13240.  
  13241. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  13242.  
  13243.  
  13244.  
  13245. done            ::                                                Dialogue
  13246. readFile        :: String ->           FailCont -> StrCont     -> Dialogue
  13247. writeFile       :: String -> String -> FailCont -> SuccCont    -> Dialogue
  13248. appendFile      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  13249. readChan        :: String ->           FailCont -> StrCont     -> Dialogue
  13250. appendChan      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  13251. echo            :: Bool ->             FailCont -> SuccCont    -> Dialogue
  13252. getArgs         ::                     FailCont -> StrListCont -> Dialogue
  13253. getProgName     ::               FailCont -> StrCont     -> Dialogue
  13254. getEnv        :: String ->           FailCont -> StrCont     -> Dialogue
  13255.  
  13256. done resps    =  []
  13257. readFile name fail succ resps =
  13258.      (ReadFile name) : strDispatch fail succ resps
  13259. writeFile name contents fail succ resps =
  13260.     (WriteFile name contents) : succDispatch fail succ resps
  13261. appendFile name contents fail succ resps =
  13262.     (AppendFile name contents) : succDispatch fail succ resps
  13263. readChan name fail succ resps =
  13264.     (ReadChan name) : strDispatch fail succ resps
  13265. appendChan name contents fail succ resps =
  13266.     (AppendChan name contents) : succDispatch fail succ resps
  13267. echo bool fail succ resps =
  13268.     (Echo bool) : succDispatch fail succ resps
  13269. getArgs fail succ resps =
  13270.     GetArgs : strListDispatch fail succ resps
  13271. getProgName fail succ resps =
  13272.     GetProgName : strDispatch fail succ resps
  13273. getEnv name fail succ resps =
  13274.     (GetEnv name) : strDispatch fail succ resps
  13275.  
  13276. strDispatch fail succ (resp:resps) = 
  13277.             case resp of Str val     -> succ val resps
  13278.                          Failure msg -> fail msg resps
  13279.  
  13280. succDispatch fail succ (resp:resps) = 
  13281.             case resp of Success     -> succ resps
  13282.                          Failure msg -> fail msg resps
  13283.  
  13284. strListDispatch fail succ (resp:resps) =
  13285.         case resp of StrList val -> succ val resps
  13286.              Failure msg -> fail msg resps
  13287.  
  13288. abort           :: FailCont
  13289. abort err        = done
  13290.  
  13291. exit            :: FailCont
  13292. exit err         = appendChan stderr msg abort done
  13293.                    where msg = case err of ReadError s   -> s
  13294.                                            WriteError s  -> s
  13295.                                            SearchError s -> s
  13296.                                            FormatError s -> s
  13297.                                            OtherError s  -> s
  13298.  
  13299. print           :: Text a => a -> Dialogue
  13300.  
  13301.  
  13302.                                       111
  13303.  
  13304.  
  13305.  
  13306.  
  13307. Introduction to Gofer          APPENDIX B: CONTENTS OF STANDARD PRELUDE
  13308.  
  13309.  
  13310. print x          = appendChan stdout (show x) exit done
  13311.  
  13312. prints          :: Text a => a -> String -> Dialogue
  13313. prints x s       = appendChan stdout (shows x s) exit done
  13314.  
  13315. interact    :: (String -> String) -> Dialogue
  13316. interact f     = readChan stdin exit
  13317.                 (\x -> appendChan stdout (f x) exit done)
  13318.  
  13319. run        :: (String -> String) -> Dialogue
  13320. run f         = echo False exit (interact f)
  13321.  
  13322. primitive primFopen "primFopen" :: String -> a -> (String -> a) -> a
  13323.  
  13324. openfile        :: String -> String
  13325. openfile f       = primFopen f (error ("can't open file "++f)) id
  13326.  
  13327. -- End of Gofer standard prelude: --------------------------------------------
  13328.  
  13329.  
  13330.  
  13331.  
  13332.  
  13333.  
  13334.  
  13335.  
  13336.  
  13337.  
  13338.  
  13339.  
  13340.  
  13341.  
  13342.  
  13343.  
  13344.  
  13345.  
  13346.  
  13347.  
  13348.  
  13349.  
  13350.  
  13351.  
  13352.  
  13353.  
  13354.  
  13355.  
  13356.  
  13357.  
  13358.  
  13359.  
  13360.  
  13361.  
  13362.  
  13363.  
  13364.  
  13365.  
  13366.  
  13367.  
  13368.                                       112
  13369.  
  13370.  
  13371. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  13372.  
  13373. Introduction to Gofer         APPENDIX C: RELATIONSHIP WITH HASKELL 1.1
  13374.  
  13375.  
  13376. APPENDIX C: RELATIONSHIP WITH HASKELL 1.1
  13377.  
  13378. The language supported by Gofer is both syntactically and  semantically
  13379. similar to that of  the  functional  programming  language  Haskell  as
  13380. defined in the report  for  Haskell  version  1.1  [5].   This  section
  13381. details the differences between the two languages, outlined briefly  in
  13382. section 2.
  13383.  
  13384. Haskell features not included in Gofer:
  13385. ---------------------------------------
  13386.   o  Modules
  13387.  
  13388.   o  Arrays
  13389.  
  13390.   o  Derived instances for standard classes -- the ability to construct
  13391.      instances of particular classes automatically.
  13392.  
  13393.   o  Default mechanism for eliminating unresolved overloading involving
  13394.      numeric and standard classes.   Since  Gofer  is  an  experimental
  13395.      system, it can be  used  with  a  range  of  completely  different
  13396.      prelude files; there is no concept of `standard classes'.
  13397.  
  13398.   o  Overloaded numeric constants.  In  the  absence  of  a  defaulting
  13399.      mechanism  as  mentioned  in  the  previous  item,  problems  with
  13400.      unresolved overloading make implicitly typed programming involving
  13401.      numeric constants impractical in an interpreter based system.
  13402.  
  13403.   o  Full range of numeric types  and  classes.   Gofer  has  only  two
  13404.      primitive numeric types Int and Float (the second of which is  not
  13405.      supported in the PC version).  Although is would  be  possible  to
  13406.      modify the standard prelude so that  Gofer  uses  the  same  class
  13407.      hierarchy as Haskell, this is unnecessarily sophisticated for  the
  13408.      intended uses of Gofer.
  13409.  
  13410.   o  Datatype definitions in Haskell may involve class constraints such
  13411.      as:
  13412.  
  13413.               data  Ord a => Set a = Set [a]
  13414.  
  13415.      It is  not  clear  how  such  constraints  should  be  interpreted
  13416.      (particularly in the light of the  extended  form  of  constraints
  13417.      used by Gofer) in such a way to  make  them useful whilst avoiding
  13418.      unwanted ambiguity problems.
  13419.  
  13420.  
  13421. Gofer features not supported in Haskell:
  13422. ----------------------------------------
  13423.   o  Type classes may have multiple parameters.
  13424.  
  13425.   o  Predicates  in  type  expressions  may  involve   arbitrary   type
  13426.      expressions, not just type variables as used in Haskell.
  13427.  
  13428.   o  Instances of type classes can be defined at  non-overlapping,  but
  13429.      otherwise arbitrary types, as described in section 14.2.5.
  13430.  
  13431.   o  List comprehensions  may include  local definitions,  specified by
  13432.  
  13433.  
  13434.                                       113
  13435.  
  13436.  
  13437.  
  13438.  
  13439. Introduction to Gofer         APPENDIX C: RELATIONSHIP WITH HASKELL 1.1
  13440.  
  13441.  
  13442.      qualifiers of the form <pat>=<expr> as described in section 10.2.
  13443.  
  13444.   o  No restrictions are placed on the form of predicates  that  appear
  13445.      in the context for a class or instance declaration.   This  has  a
  13446.      number  of  consequences,  including  the  possibility  of   using
  13447.      (mutually)  recursive  groups  of  dictionaries,  but  means  that
  13448.      decidability of the predicate entailment  relation  may  be  lost.
  13449.      This is not a great problem  in  practice,  since  all  dictionary
  13450.      construction  is  performed  before  evaluation   and   supposedly
  13451.      non-terminating dictionary constructions will actually generate an
  13452.      error due to the limited amount of  space  available  for  holding
  13453.      dictionaries (see section 14.4.2).
  13454.  
  13455.  
  13456. Other differences:
  13457. ------------------
  13458.   o  Whilst superficially similar the approach to type classes in Gofer
  13459.      is quite different from that used in Haskell.  In particular,  the
  13460.      approach used in Gofer ensures that all necessary dictionaries are
  13461.      constructed before the evaluation of an expression begins,  rather
  13462.      than being built (possibly several times) during the evaluation as
  13463.      is the case with Haskell.  See section 14 and reference  [11]  for
  13464.      further details.
  13465.  
  13466.   o  Input/Output facilities - Gofer supports  only  a  subset  of  the
  13467.      requests available in Haskell.  In principle, it should not be too
  13468.      difficult to add most of the remaining forms of request (with  the
  13469.      exception of those associated with binary files)  to  Gofer.   The
  13470.      principal motivation for including the I/O facilities in Gofer was
  13471.      to  make  it  possible  to  experiment  with  simple   interactive
  13472.      programs.
  13473.  
  13474.   o  In Gofer, unary minus has greater  precedence  than  any  operator
  13475.      symbol, but lower than that of function application.  In  Haskell,
  13476.      the precedence of unary minus is the same as  that  of  the  infix
  13477.      (subtraction) operator of the same name.
  13478.  
  13479.   o  In Haskell, the character `-'  can  only  be  used  as  the  first
  13480.      character of an operator symbol.  In  Gofer,  this  character  may
  13481.      appear  in  any  position  in  an  operator  (except  for  symbols
  13482.      beginning with "--", which indicates the start of a comment).  The
  13483.      only problems that I am aware  of  with  this  is  that  a  lambda
  13484.      expression such as "\-2->2" will be parsed as such  by  a  Haskell
  13485.      system, but cause a syntax error in Gofer.  This  form  of  lambda
  13486.      expression is sufficiently unusual that I do not believe this will
  13487.      cause any problems in practice; in any case, the  parsing  problem
  13488.      can be solved by inserting a space: "\ -2->2".
  13489.  
  13490.   o  Pattern bindings are not currently permitted in either instance or
  13491.      class declarations.  This restriction has  been  made  simply  for
  13492.      ease of implementation, is not an inherent problem with  the  type
  13493.      class system and is likely to be  relaxed  in  later  versions  of
  13494.      Gofer if appropriate.  I have yet to see any examples in which the
  13495.      lack of pattern bindings in class and instance declarations causes
  13496.      any kind of deficiency.
  13497.  
  13498.  
  13499.  
  13500.                                       114
  13501.  
  13502.  
  13503.  
  13504.  
  13505. Introduction to Gofer         APPENDIX C: RELATIONSHIP WITH HASKELL 1.1
  13506.  
  13507.  
  13508.   o  Qualified  type  signatures  are  not  permitted  for  the  member
  13509.      functions  in  Gofer  class  declarations.    Once   again,   this
  13510.      restriction was made for ease of implementation  rather  than  any
  13511.      pressing technical issues.  It is  likely  that  this  restriction
  13512.      will be relaxed in future versions of Gofer,  although  I  am  not
  13513.      convinced that proper use can be made  of  such  member  functions
  13514.      without some form of nested instance declarations (yuk!).
  13515.  
  13516.   o  The definition of the class Text given  in  the  standard  prelude
  13517.      does not include the Haskell functions for reading/parsing  values
  13518.      from strings; the only reason for omitting these functions was  to
  13519.      try to avoid unnecessary complexity in the standard prelude.   The
  13520.      standard prelude  can  be  modified  to  include  the  appropriate
  13521.      additional definitions if these are required.
  13522.  
  13523.  
  13524. Known problems in Gofer:
  13525. ------------------------
  13526.   o  The null escape sequence "\&" is not generated  in  the  printable
  13527.      representations of strings produced by both the primitive function
  13528.      primPrint (used to implement the show' function) and  the  version
  13529.      of show defined in the standard prelude.  This means that  certain
  13530.      strings values are  not printed correctly  e.g.  show' "\245\&123"
  13531.      produces the string "\245123".  This is unlikely to cause too many
  13532.      problems in practice.
  13533.  
  13534.   o  Unification of a type variable a with a  type  expression  of  the
  13535.      form T a where T is  a  synonym  name  whose  expansion  does  not
  13536.      involve a will fail.   It  is  not  entirely  clear  whether  this
  13537.      behaviour is correct or not.
  13538.  
  13539.   o  Formfeeds '\f' and vertical tabs '\v' are  not  treated  as  valid
  13540.      whitespace characters in the way suggested by the Haskell  report.
  13541.  
  13542.   o  Inability to recover from program stack  overlow  errors  in  some
  13543.      situations.  This problem only affects the  PC  implementation  of
  13544.      Gofer.
  13545.  
  13546.   o  Implementation of ReadFile may lose referential transparency;  the
  13547.      response to a particular ReadFile request may  be  affected  by  a
  13548.      later WriteFile or AppendFile request for the same  file.   Whilst
  13549.      this problem can be solved for UNIX based implementations, I  have
  13550.      not yet found a portable solution suitable for all of the  systems
  13551.      on which Gofer can be used.
  13552.  
  13553.  
  13554. Areas for possible future improvement:
  13555. --------------------------------------
  13556.   o  Relaxing the restriction on type synonyms in predicates.
  13557.  
  13558.   o  General  purpose  automatic  default  mechanism  for   eliminating
  13559.      certain forms of unresolved overloading.
  13560.  
  13561.   o  Improved checking and use of superclass and  instance  constraints
  13562.      during static analysis and type checking.
  13563.  
  13564.  
  13565.  
  13566.                                       115
  13567.  
  13568.  
  13569.  
  13570.  
  13571. Introduction to Gofer         APPENDIX C: RELATIONSHIP WITH HASKELL 1.1
  13572.  
  13573.  
  13574.   o  Simple facility to force dictionary construction at load-time.
  13575.  
  13576.   o  Provision for shell escapes :! etc within the Gofer interpreter.
  13577.  
  13578.   o  Debugging  facilities,  including  breakpoints  and  tracing  from
  13579.      within interpreter.
  13580.  
  13581.   o  Separate interpreter and compiler programs for creating standalone
  13582.      applications using Gofer.
  13583.  
  13584.  
  13585.  
  13586.  
  13587.  
  13588.  
  13589.  
  13590.  
  13591.  
  13592.  
  13593.  
  13594.  
  13595.  
  13596.  
  13597.  
  13598.  
  13599.  
  13600.  
  13601.  
  13602.  
  13603.  
  13604.  
  13605.  
  13606.  
  13607.  
  13608.  
  13609.  
  13610.  
  13611.  
  13612.  
  13613.  
  13614.  
  13615.  
  13616.  
  13617.  
  13618.  
  13619.  
  13620.  
  13621.  
  13622.  
  13623.  
  13624.  
  13625.  
  13626.  
  13627.  
  13628.  
  13629.  
  13630.  
  13631.  
  13632.                                       116
  13633.  
  13634.  
  13635. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  13636.  
  13637. Introduction to Gofer          APPENDIX D: USING GOFER WITH BIRD+WADLER
  13638.  
  13639.  
  13640. APPENDIX D: USING GOFER WITH BIRD+WADLER
  13641.  
  13642. Bird and Wadler's textbook  [1]  gives  an  excellent  introduction  to
  13643. functional programming, providing an insight into both basic techniques
  13644. and matters of programming style as well as describing  the  underlying
  13645. mathematics and its use for program development and  derivation.   Most
  13646. of the programs in that book can be used with Gofer although there  are
  13647. a number of differences between the two notations.  Fortunately, it  is
  13648. not difficult to  translate  from  one  notation  to  the  other.   The
  13649. following points are particularly useful for this:
  13650.  
  13651.   o  Type constructors in Gofer  begin with capital letters (e.g. Bool,
  13652.      Char etc..) where lower case is used in  [1]  (e.g.   bool,  char,
  13653.      etc..).  Note that Gofer has no general numeric type "num" as used
  13654.      in [1];  Use  either  Int,  Float,  or  overloading  in  Gofer  as
  13655.      appropriate.
  13656.  
  13657.   o  Datatype definitions in [1] are written in the form lhs::=constrs.
  13658.      The equivalent definition in Gofer is: data lhs = constrs.
  13659.  
  13660.      Similarly, a type synonym definition in [1] of the form lhs == rhs
  13661.      can be written in Gofer as: type lhs = rhs.
  13662.  
  13663.   o  The differences between the syntax used for  guarded equations  in
  13664.      Gofer compared with the notation used in  [1]  have  already  been
  13665.      discussed in section 9.2.  For example:
  13666.  
  13667.      Using the notation of [1]:       Using Gofer:
  13668.  
  13669.      filter p (x:xs)                  filter p (x:xs)
  13670.        = x : filter p xs, if p x         | p x       = x : filter p xs
  13671.        = filter p xs,     otherwise      | otherwise = filter p xs
  13672.  
  13673.   o  In Gofer,  list comprehension qualifiers  are separated by  commas
  13674.      rather than semicolons as used in [1].
  13675.  
  13676.   o  A number of the  function names and types in the  standard prelude
  13677.      are different:
  13678.  
  13679.              [1]         Gofer            [1]         Gofer
  13680.              ---         -----            ---         ----
  13681.              (#)         length           takewhile   takeWhile
  13682.              (~)         not              dropwhile   dropWhile
  13683.              (/\)        (&&)             zipwith     zipWith
  13684.              (\/)        (||)             swap        flip
  13685.              (!)         (!!)             in          elem
  13686.              (--)        (\\)             scan        scanl
  13687.              hd          head             some        any
  13688.              tl          tail             listmin     minimum
  13689.              decode      chr              listmax     maximum
  13690.              code        ord
  13691.  
  13692.      See appendix B for a complete list of standard functions in Gofer.
  13693.  
  13694.      The version of foldl  using  "strict"  which  appears  in  [1]  is
  13695.      available in Gofer as the function "foldl'".
  13696.  
  13697.  
  13698.                                       117
  13699.  
  13700.  
  13701.  
  13702.  
  13703. Introduction to Gofer          APPENDIX D: USING GOFER WITH BIRD+WADLER
  13704.  
  13705.  
  13706.      The role of "zip" and "zipwith" in [1] is filled by the "zip"  and
  13707.      "zipWith" families of functions in Gofer.  An  expression  of  the
  13708.      form "zip (xs,ys)" in [1] is equivalent to "zip xs  ys"  in  Gofer
  13709.      etc...
  13710.  
  13711.   o  Gofer does not enforce the condition assumed in [1] that the  left
  13712.      hand sides of each of the equations defining a  function  must  be
  13713.      disjoint.
  13714.  
  13715.   o  The equality operator in Gofer is written as  "=="  and the single
  13716.      equality character "=" is a reserved symbol used to separate  left
  13717.      and right hand sides of equations.  Many  C  programmers  will  be
  13718.      familiar with this kind of notation (together with  the  kinds  of
  13719.      problems it can create!).
  13720.  
  13721.   o  Some of the  identifiers used in  [1] are reserved words in Gofer.
  13722.      Examples that are particularly likely to occur  include  "in"  and
  13723.      "then".
  13724.  
  13725.  
  13726.  
  13727.  
  13728.  
  13729.  
  13730.  
  13731.  
  13732.  
  13733.  
  13734.  
  13735.  
  13736.  
  13737.  
  13738.  
  13739.  
  13740.  
  13741.  
  13742.  
  13743.  
  13744.  
  13745.  
  13746.  
  13747.  
  13748.  
  13749.  
  13750.  
  13751.  
  13752.  
  13753.  
  13754.  
  13755.  
  13756.  
  13757.  
  13758.  
  13759.  
  13760.  
  13761.  
  13762.  
  13763.  
  13764.                                       118
  13765.  
  13766.  
  13767.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  13768.  
  13769. Introduction to Gofer                            APPENDIX E: PRIMITIVES
  13770.  
  13771.  
  13772. APPENDIX E: PRIMITIVES
  13773.  
  13774. [WARNING: The features described in this appendix  are  typically  only
  13775. needed when alternative versions of the standard prelude  are  created.
  13776. These features should only be used by expert users; misuse may lead  to
  13777. failure and runtime errors in the Gofer interpreter.  It is not usually
  13778. a good idea to use primitive functions directly in your programs.]
  13779.  
  13780. A number of primitive functions are builtin to the  Gofer  interpreter,
  13781. and may be bound to function symbols using a declaration of the form:
  13782.  
  13783.     primitive name1 code1, name2 code2, ...., namen coden :: type
  13784.  
  13785. where each name is an identifier (or an  operator  symbol  enclosed  by
  13786. parentheses) and each code is a string literal  taken  from  the  table
  13787. below.  The type specified to the right of the  ::  symbol  must  be  a
  13788. valid type for the functions being defined -- WARNING: GOFER  DOES  NOT
  13789. ATTEMPT TO CHECK FOR SUITABILITY OF THE DECLARED TYPE.   The  following
  13790. definition, taken from the standard prelude,  illustrates  the  use  of
  13791. this feature to bind  a  function  named  primPrint  to  the  primitive
  13792. function with code name string "primPrint" and type Int -> a ->  String
  13793. -> String:
  13794.  
  13795.     primitive primPrint "primPrint"  :: Int -> a -> String -> String
  13796.  
  13797. The primitive functions currently available are:
  13798.  
  13799. category     code name string    type
  13800. --------     ----------------    ----
  13801.  
  13802. integer      primPlusInt         Int -> Int -> Int 
  13803. arithmetic   primMinusInt        Int -> Int -> Int
  13804.              primMulInt          Int -> Int -> Int
  13805.              primDivInt          Int -> Int -> Int
  13806.              primModInt          Int -> Int -> Int
  13807.              primRemInt          Int -> Int -> Int
  13808.              primNegInt          Int -> Int -> Int
  13809.  
  13810.  
  13811. floating     primPlusFloat       Float -> Float -> Float
  13812. point        primMinusFloat      Float -> Float -> Float
  13813. arithmetic   primMulFloat        Float -> Float -> Float
  13814.              primDivFloat        Float -> Float -> Float
  13815.              primNegFloat        Float -> Float -> Float
  13816.  
  13817.  
  13818. coercion     primIntToChar       Int -> Char  -- chr in the standard prelude
  13819. functions    primCharToInt       Char -> Int  -- ord in the standard prelude
  13820.              primIntToFloat      Int -> Float -- implements fromInteger
  13821.  
  13822. equality     primEqInt           Int -> Int -> Bool
  13823. and <=       primLeInt           Int -> Int -> Bool
  13824. primitives   primEqFloat         Float -> Float -> Bool
  13825.              primLeFloat         Float -> Float -> Bool
  13826.  
  13827.  
  13828.  
  13829.  
  13830.                                       119
  13831.  
  13832.  
  13833.  
  13834.  
  13835. Introduction to Gofer                            APPENDIX E: PRIMITIVES
  13836.  
  13837.  
  13838. generic      primGenericEq       a -> a -> Bool
  13839. ordering     primGenericNe       a -> a -> Bool
  13840. primitives   primGenericGt       a -> a -> Bool
  13841.              primGenericLe       a -> a -> Bool
  13842.              primGenericGe       a -> a -> Bool
  13843.              primGenericLt       a -> a -> Bool
  13844.  
  13845.              These functions implement the standard generic  (i.e.  non
  13846.              overloaded) ordering primitives.  They are  not  currently
  13847.              used in the standard prelude.  A simplified prelude may be
  13848.              created by binding the  standard  operator  symbols  (==),
  13849.              (/=),  (>),  (<=),  (>=)  and  (<)  to   these   functions
  13850.              respectively.
  13851.  
  13852. output       primPrint           Int -> a -> String -> String
  13853.  
  13854.              This function is used to implement the show'  function  in
  13855.              the standard prelude and is not usually used directly.
  13856.  
  13857.              primPrint d e s produces a textual representation  of  the
  13858.              value of the expression e as a  string,  followed  by  the
  13859.              string s.  The integer parameter d is used as an indicator
  13860.              of the current precedence level.  The  primPrint  function
  13861.              is the  standard  method  of  printing  the  value  of  an
  13862.              expression whose type is not equivalent to the type String
  13863.              used by the top-level of the Gofer interpreter.
  13864.  
  13865. sequencing   primStrict          (a -> b) -> a -> b
  13866.  
  13867.              The primStrict function (bound to the identifier  "strict"
  13868.              in the standard prelude)  forces  the  evaluation  of  its
  13869.              second argument before the function supplied as the  first
  13870.              argument is  applied  to  it.   See  section  9.4  for  an
  13871.              illustration.
  13872.  
  13873.  
  13874.  
  13875.  
  13876.  
  13877.  
  13878.  
  13879.  
  13880.  
  13881.  
  13882.  
  13883.  
  13884.  
  13885.  
  13886.  
  13887.  
  13888.  
  13889.  
  13890.  
  13891.  
  13892.  
  13893.  
  13894.  
  13895.  
  13896.                                       120
  13897.  
  13898.  
  13899.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  13900.  
  13901. Introduction to Gofer           APPENDIX F: INTERPRETER COMMAND SUMMARY
  13902.  
  13903.  
  13904. APPENDIX F: INTERPRETER COMMAND SUMMARY
  13905.  
  13906. Command      Description
  13907. -------      -----------
  13908. <expr>       Analyse expression for errors, typecheck and evaluate.  If
  13909.              the expression has type Dialogue,  execute  as  a  program
  13910.              using the I/O facilities as described in section  12.   If
  13911.              the expression has type String, evaluate and print  result
  13912.              as a lazy list of characters.   In  any  other  case,  the
  13913.              standard  prelude  function  show'  is  applied   to   the
  13914.              expression and used to print the value of  the  result  in
  13915.              the form of a string, as in the previous case.
  13916.  
  13917. :t <expr>    Analyse expression for errors,  typecheck  and  print  the
  13918. :type <expr> translation and inferred type of the term.
  13919. :T
  13920.  
  13921. :q           Exit Gofer interpreter.
  13922. :quit
  13923. :Q
  13924.  
  13925. :?           Display summary of interpreter commands.
  13926. :h
  13927. :H
  13928.  
  13929. :l f1 .. fn  Removes any previously loaded  files  of  definitions  and
  13930.              attempts to load the contents of the files f1 upto fn  one
  13931.              after the other.
  13932.  
  13933. :L           Remove any previously loaded files of  definitions.   Only
  13934.              those functions and values defined in the standard prelude
  13935.              will still be be available.
  13936.  
  13937. :load        Equivalent forms of the :l command.
  13938. :L
  13939.  
  13940. :a f1 .. fn  Load the contents of the files f1 upto fn in  addition  to
  13941.              any previously loaded files.   If  any  of  the  files  of
  13942.              definitions which  have  already  been  loaded  have  been
  13943.              modified  since  they  were   last  read   then  they  are
  13944.              automatically reloaded before any of the files f1 upto  fn
  13945.              are read.
  13946.  
  13947.              If successful, a command of  the  form  ":l  f1  ..fn"  is
  13948.              equivalent to the sequence of commands:
  13949.                                :l
  13950.                                :a f1
  13951.                                 .
  13952.                                 .
  13953.                                :a fn
  13954.  
  13955. :also        Equivalent forms of the :a command.
  13956. :A
  13957.  
  13958. :r           Repeat the last load command,  attempting  to  reload  any
  13959.              files which have subsequently been modified.  Since  later
  13960.  
  13961.  
  13962.                                       121
  13963.  
  13964.  
  13965.  
  13966.  
  13967. Introduction to Gofer           APPENDIX F: INTERPRETER COMMAND SUMMARY
  13968.  
  13969.  
  13970.              files may depend on the definitions in earlier ones,  once
  13971.              one file has been reloaded, all subsequent files will also
  13972.              need to be reloaded.
  13973.  
  13974. :reload      Equivalent forms of the :r command.
  13975. :R
  13976.  
  13977. :e file      Suspend current Gofer session and start an editor  program
  13978.              to modify or view the named file.  The Gofer session  will
  13979.              be resumed when the editor  program  terminates,  and  any
  13980.              script files that  have  been  changed  will  be  reloaded
  13981.              automatically.
  13982.  
  13983.              Note that a separate editor program is required  and  that
  13984.              Gofer must be properly installed to use this feature.  The
  13985.              default editor is usually vi (Calvin version 2.0 is a good
  13986.              substitute for a PC), although this may have been  changed
  13987.              when your system was installed.   In  any  case,  you  can
  13988.              always substitute an editor of your choice by setting  the
  13989.              environment variable EDITOR to the name of your  favourite
  13990.              editor program.
  13991.  
  13992.              There are a number  of  factors  which  will  affect  your
  13993.              choice of editor.  On a slow machine, with only a  limited
  13994.              amount of memory, you  will  probably  need  to  choose  a
  13995.              relatively small editor which  can  be  loaded  reasonably
  13996.              quickly and does not require too much memory.  On  a  more
  13997.              powerful system, you may find it more  convenient  to  use
  13998.              Gofer from a window based environment, running your editor
  13999.              in one window with Gofer in another.
  14000.  
  14001. :e           Using the :e command without specifying a particular  file
  14002.              to be edited starts up  an  editor  program  as  described
  14003.              above either for the file  of  definitions  most  recently
  14004.              loaded into Gofer or, if an error occurred whilst  loading
  14005.              a file of definitions, for  the  file  of  definitions  in
  14006.              which the error was last detected.
  14007.  
  14008.              With many editor programs, it is even  possible  to  start
  14009.              the editor at the  line  where  the  error  occurred.   As
  14010.              before, it is possible to change the default behaviour  of
  14011.              Gofer in this case by  setting  the  environment  variable
  14012.              EDITLINE to a command string which can be  used  to  start
  14013.              the editor program with a given file at  a  specific  line
  14014.              number.  The positions in the string  at  which  the  file
  14015.              name and line number values should be inserted  should  be
  14016.              indicated by the strings "%s" and "%d"  respectively,  and
  14017.              may appear in either order.  The default  command  string,
  14018.              which is used if EDITLINE is not set is "vi +%d %s".
  14019.  
  14020. :edit        Equivalent forms of the :e command.
  14021. :E
  14022.  
  14023.  
  14024.  
  14025.  
  14026.  
  14027.  
  14028.                                       122
  14029.  
  14030.  
  14031.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14032.  
  14033. Introduction to Gofer                          APPENDIX G: BIBLIOGRAPHY
  14034.  
  14035.  
  14036. APPENDIX G: BIBLIOGRAPHY
  14037.  
  14038. [1]  Introduction to functional programming, Richard  Bird  and  Philip
  14039.      Wadler, Prentice Hall International, 1989.
  14040.  
  14041. [2]  The Implementation of functional programming languages,  Simon  L.
  14042.      Peyton Jones, Prentice Hall International, 1987.
  14043.  
  14044. [3]  Lambda Lifting:  Transforming  Programs  to  Recursive  Equations,
  14045.      Thomas  Johnsson,  in  Lecture  Notes  in  Computer  Science  201,
  14046.      Springer Verlag, 1985.  [but try to get a copy of the  version  of
  14047.      this paper included in Johnsson's thesis which  benefits  from  an
  14048.      extended typeface and is a little easier to read!]
  14049.  
  14050. [4]  How to make ad-hoc polymorphism less  ad-hoc,  Philip  Wadler  and
  14051.      Stephen Blott, University of Glasgow, in the  proceedings  of  the
  14052.      16th ACM annual symposium on Principles of Programming  Languages,
  14053.      Austin, Texas, January 1989.
  14054.  
  14055. [5]  Report on the programming language Haskell,  a  non-strict  purely
  14056.      functional language (Version 1.1), Paul Hudak,  Philip  Wadler  et
  14057.      al.  Technical report Yale University/Glasgow University.  August,
  14058.      1991.
  14059.  
  14060. [6]  Introduction to Orwell 6.00, Philip  Wadler  and  Quentin  Miller,
  14061.      University of Oxford, 1990.
  14062.  
  14063. [7]  Lazy ML user's manual, Lennart  Augustsson  and  Thomas  Johnsson,
  14064.      1990.
  14065.  
  14066. [8]  Computing with lattices: An application of type classes,  Mark  P.
  14067.      Jones, Technical report PRG-TR-11-90, Programming Research  Group,
  14068.      Oxford University Computing Laboratory, June 1990.
  14069.  
  14070. [9]  Towards a theory of qualified  types,  Mark  P.  Jones,  Technical
  14071.      report PRG-TR-6-91, Programming Research Group, Oxford  University
  14072.      Computing Laboratory, April 1991.
  14073.  
  14074. [10] Type inference for  qualified  types,  Mark  P.  Jones,  Technical
  14075.      report PRG-TR-10-91, Programming Research Group, Oxford University
  14076.      Computing Laboratory, June 1991.
  14077.  
  14078. [11] A new approach to type classes,  Mark  P.  Jones,  distributed  to
  14079.      Haskell mailing list 1991.
  14080.  
  14081. [12] Practical issues in the implementation of qualified types, Mark P.
  14082.      Jones, Forthcoming 1991.
  14083.  
  14084.  
  14085.  
  14086.  
  14087.  
  14088.  
  14089.  
  14090.  
  14091.  
  14092.  
  14093.  
  14094.                                       123
  14095.  
  14096.  
  14097. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14098.  
  14099.  
  14100.  
  14101.  
  14102.  
  14103.          __________   __________   __________   __________   ________
  14104.         /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  14105.        /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  14106.       /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  14107.      /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  14108.     /_________/  /_________/  /__/         /_________/  /__/    \__\
  14109.  
  14110.     Functional programming environment, Version 2.20
  14111.  
  14112.     Copyright Mark P Jones 1991.
  14113.  
  14114.  
  14115.  
  14116.  
  14117.  
  14118.  
  14119.             A N   I N T R O D U C T I O N   T O   G O F E R
  14120.  
  14121.  
  14122.      draft version only --- please report any errors, suggestions for
  14123.     improvements, extensions (or deletions!) to jones-mark@cs.yale.edu
  14124.  
  14125.  
  14126.            This version includes a number of small corrections
  14127.                    made since the original release.
  14128.  
  14129.    --------------------------------------------------------------------
  14130.    Permission to use, copy, modify, and distribute this software and its
  14131.    documentation for any personal or educational use without fee is hereby
  14132.    granted, provided that:
  14133.     a) This copyright notice is retained in both source code and
  14134.        supporting documentation.
  14135.     b) Modified versions of this software are redistributed only if
  14136.        accompanied by a complete history (date, author, description) of
  14137.        modifications made; the intention here is to give appropriate
  14138.        credit to those involved, whilst simultaneously ensuring that any
  14139.        recipient can determine the origin of the software.
  14140.     c) The same conditions are also applied to any software system
  14141.        derived either in full or in part from Gofer.
  14142.  
  14143.    The name "Gofer" is not a trademark, registered  or  otherwise,  and
  14144.    you are free to mention this name in published material, public  and
  14145.    private correspondence, or other documents  without  restriction  or
  14146.    obligation.
  14147.  
  14148.    Gofer is provided "as is" without express or implied warranty.
  14149.    --------------------------------------------------------------------
  14150.  
  14151.  
  14152.  
  14153.  
  14154.  
  14155.  
  14156.  
  14157.  
  14158.  
  14159.  
  14160.  
  14161.  
  14162.  
  14163.  
  14164.  
  14165. Introduction to Gofer                                                  
  14166.  
  14167.  
  14168.                       T A B L E   O F   C O N T E N T S 
  14169.  
  14170.  
  14171.     1. INTRODUCTION. . . . . . . . . . . . . . . . . . . . . . . . . .  1
  14172.  
  14173.     2. BACKGROUND AND ACKNOWLEDGEMENTS . . . . . . . . . . . . . . . .  2
  14174.  
  14175.     3. STARTING GOFER. . . . . . . . . . . . . . . . . . . . . . . . .  4
  14176.  
  14177.     4. USING GOFER - A BASIC INTRODUCTION. . . . . . . . . . . . . . .  5
  14178.  
  14179.     5. STANDARD AND USER-DEFINED FUNCTIONS . . . . . . . . . . . . . .  6
  14180.  
  14181.     6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS. . . . . . . . . . .  8
  14182.  
  14183.     7. BUILT-IN TYPES. . . . . . . . . . . . . . . . . . . . . . . . . 12
  14184.     7.1  Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  14185.     7.2  Booleans. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  14186.     7.3  Integers. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  14187.     7.4  Floating point numbers. . . . . . . . . . . . . . . . . . . . 14
  14188.     7.5  Characters. . . . . . . . . . . . . . . . . . . . . . . . . . 14
  14189.     7.6  Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
  14190.     7.7  Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
  14191.     7.8  Tuples and the unit type. . . . . . . . . . . . . . . . . . . 18
  14192.  
  14193.     8. ERRORS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
  14194.     8.1  Errors detected on input. . . . . . . . . . . . . . . . . . . 19
  14195.     8.2  Errors during evaluation. . . . . . . . . . . . . . . . . . . 19
  14196.  
  14197.     9. MORE ABOUT VALUE DECLARATIONS . . . . . . . . . . . . . . . . . 21
  14198.     9.1  Simple pattern matching . . . . . . . . . . . . . . . . . . . 21
  14199.     9.2  Guarded equations . . . . . . . . . . . . . . . . . . . . . . 23
  14200.     9.3  Local definitions . . . . . . . . . . . . . . . . . . . . . . 24
  14201.     9.4  Recursion with integers . . . . . . . . . . . . . . . . . . . 24
  14202.     9.5  Recursion with lists. . . . . . . . . . . . . . . . . . . . . 26
  14203.     9.6  Lazy evaluation . . . . . . . . . . . . . . . . . . . . . . . 27
  14204.     9.7  Infinite data structures. . . . . . . . . . . . . . . . . . . 29
  14205.     9.8  Polymorphism. . . . . . . . . . . . . . . . . . . . . . . . . 30
  14206.     9.9  Higher-order functions. . . . . . . . . . . . . . . . . . . . 31
  14207.     9.10 Variable declarations . . . . . . . . . . . . . . . . . . . . 32
  14208.     9.11 Pattern bindings and irrefutable patterns . . . . . . . . . . 33
  14209.     9.12 Type declarations . . . . . . . . . . . . . . . . . . . . . . 35
  14210.  
  14211.     10. INCREASING YOUR POWER OF EXPRESSION. . . . . . . . . . . . . . 37
  14212.     10.1 Arithmetic sequences. . . . . . . . . . . . . . . . . . . . . 37
  14213.     10.2 List comprehensions . . . . . . . . . . . . . . . . . . . . . 38
  14214.     10.3 Lambda expressions. . . . . . . . . . . . . . . . . . . . . . 41
  14215.     10.4 Case expressions. . . . . . . . . . . . . . . . . . . . . . . 42
  14216.     10.5 Operator sections . . . . . . . . . . . . . . . . . . . . . . 43
  14217.     10.6 Explicitly typed expressions. . . . . . . . . . . . . . . . . 44
  14218.  
  14219.     11. USER-DEFINED DATATYPES AND TYPE SYNONYMS . . . . . . . . . . . 46
  14220.     11.1 Datatype definitions. . . . . . . . . . . . . . . . . . . . . 46
  14221.     11.2 Type synonyms . . . . . . . . . . . . . . . . . . . . . . . . 47
  14222.  
  14223.  
  14224.  
  14225.  
  14226.  
  14227.  
  14228.  
  14229.  
  14230.  
  14231. Introduction to Gofer                                                  
  14232.  
  14233.  
  14234.     12. DIALOGUES: INPUT AND OUTPUT. . . . . . . . . . . . . . . . . . 49
  14235.     12.1 Basic description . . . . . . . . . . . . . . . . . . . . . . 49
  14236.     12.2 Continuation style I/O. . . . . . . . . . . . . . . . . . . . 52
  14237.     12.3 Interactive programs. . . . . . . . . . . . . . . . . . . . . 55
  14238.  
  14239.     13. LAYOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
  14240.     13.1 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . 57
  14241.     13.2 The layout rule . . . . . . . . . . . . . . . . . . . . . . . 57
  14242.  
  14243.     14. OVERLOADING IN GOFER . . . . . . . . . . . . . . . . . . . . . 61
  14244.     14.1 Type classes and predicates . . . . . . . . . . . . . . . . . 61
  14245.     14.2 The type class Eq . . . . . . . . . . . . . . . . . . . . . . 62
  14246.     14.2.1 Implicit overloading. . . . . . . . . . . . . . . . . . . . 62
  14247.     14.2.2 Instances of class Eq . . . . . . . . . . . . . . . . . . . 63
  14248.     14.2.3 Testing equality of represented values. . . . . . . . . . . 65
  14249.     14.2.4 Instance declarations without members . . . . . . . . . . . 66
  14250.     14.2.5 Equality on function types. . . . . . . . . . . . . . . . . 66
  14251.     14.2.6 Non-overlapping instances . . . . . . . . . . . . . . . . . 67
  14252.     14.3 Dictionaries. . . . . . . . . . . . . . . . . . . . . . . . . 68
  14253.     14.3.1 Superclasses. . . . . . . . . . . . . . . . . . . . . . . . 71
  14254.     14.3.2 Combining classes . . . . . . . . . . . . . . . . . . . . . 73
  14255.     14.3.3 Simplified contexts . . . . . . . . . . . . . . . . . . . . 74
  14256.     14.4 Other issues. . . . . . . . . . . . . . . . . . . . . . . . . 76
  14257.     14.4.1 Unresolved overloading. . . . . . . . . . . . . . . . . . . 76
  14258.     14.4.2 `Recursive' dictionaries. . . . . . . . . . . . . . . . . . 79
  14259.     14.4.3 Classes with multiple parameters. . . . . . . . . . . . . . 81
  14260.     14.4.4 Overloading and numeric values. . . . . . . . . . . . . . . 83
  14261.     14.4.5 Constants in dictionaries . . . . . . . . . . . . . . . . . 86
  14262.     14.4.6 The monomorphism restriction. . . . . . . . . . . . . . . . 88
  14263.  
  14264.     APPENDIX A: SUMMARY OF GRAMMAR . . . . . . . . . . . . . . . . . . 93
  14265.  
  14266.     APPENDIX B: CONTENTS OF STANDARD PRELUDE . . . . . . . . . . . . . 97
  14267.  
  14268.     APPENDIX C: RELATIONSHIP WITH HASKELL 1.1. . . . . . . . . . . . .113
  14269.  
  14270.     APPENDIX D: USING GOFER WITH BIRD+WADLER . . . . . . . . . . . . .117
  14271.  
  14272.     APPENDIX E: PRIMITIVES . . . . . . . . . . . . . . . . . . . . . .119
  14273.  
  14274.     APPENDIX F: INTERPRETER COMMAND SUMMARY. . . . . . . . . . . . . .121
  14275.  
  14276.     APPENDIX G: BIBLIOGRAPHY . . . . . . . . . . . . . . . . . . . . .123
  14277.  
  14278.  
  14279.  
  14280.  
  14281.  
  14282.  
  14283.  
  14284.  
  14285.  
  14286.  
  14287.  
  14288.  
  14289.  
  14290.  
  14291.  
  14292.  
  14293.  
  14294.  
  14295.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14296.  
  14297. Introduction to Gofer                                   1. INTRODUCTION
  14298.  
  14299.  
  14300. 1. INTRODUCTION
  14301.  
  14302. Gofer is a functional  programming  environment  (in  other  words,  an
  14303. interpreter) that I have implemented for my own personal use as part of
  14304. my research  into  `qualified  types'.   Nevertheless,  the  system  is
  14305. sufficiently complete for me to believe that Gofer may be  of  interest
  14306. and use to others interested in the field of functional programming.
  14307.  
  14308. These notes give a brief introduction to the Gofer system  and  include
  14309. some examples of Gofer  programs.   They  are  not  the  notes  that  I
  14310. originally intended to write, being somewhat longer  and  perhaps  more
  14311. tutorial in nature.  Nevertheless,  you  will  not  be  able  to  learn
  14312. functional programming from this document alone.  A  number  of  useful
  14313. references are given in the reading list at the end of  this  document.
  14314. In particular, the book by Bird and Wadler [1] is particularly good  as
  14315. a general introduction to the use, techniques and theory of  functional
  14316. programming.  Although their notation is  a  little  different from the
  14317. language used by Gofer, it is  a  relatively  straightforward  task  to
  14318. translate between the two, and some suggestions for this are given in a
  14319. appendix D.  More importantly, the underlying  semantics  of  Gofer  do
  14320. correspond to those expected by the authors of [1].
  14321.  
  14322. Whereas the work involved in investigating and implementing  the  ideas
  14323. on which Gofer is based were motivated largely by  my  own  program  of
  14324. work, the writing of these notes has rather more to do  with  the  hope
  14325. that Gofer will be  useful  to  others.   I  would  therefore  be  very
  14326. grateful for any feedback on any aspect of the these notes (or  of  the
  14327. Gofer system itself).  Please let me know if you discover  any  errors,
  14328. or if you find particular  sections  of  these  notes  rather  hard  to
  14329. follow.  Suggestions for  improvements  or  extensions  are  more  than
  14330. welcome.
  14331.  
  14332.  
  14333.  
  14334.  
  14335.  
  14336.  
  14337.  
  14338.  
  14339.  
  14340.  
  14341.  
  14342.  
  14343.  
  14344.  
  14345.  
  14346.  
  14347.  
  14348.  
  14349.  
  14350.  
  14351.  
  14352.  
  14353.  
  14354.  
  14355.  
  14356.  
  14357.  
  14358.                                       1
  14359.  
  14360.  
  14361. Works     WonderWorks     
  14362.  
  14363. Introduction to Gofer                                 3. STARTING GOFER
  14364.  
  14365.  
  14366. 3. STARTING GOFER
  14367.  
  14368. The Gofer interpreter is usually entered by giving the command `gofer',
  14369. after which a display something like the  following  will  normally  be
  14370. produced:
  14371.  
  14372.     Gofer Version 2.20
  14373.  
  14374.     Reading script file "/gofer/prelude":
  14375.     Parsing........................................................
  14376.     Dependency analysis............................................
  14377.     Type checking..................................................
  14378.     Compiling......................................................
  14379.  
  14380.     Gofer session for:
  14381.     /gofer/prelude
  14382.     Type :? for help
  14383.     ?
  14384.  
  14385. The file name "/gofer/prelude" mentioned in the  output  above  is  the
  14386. name of a file of standard definitions which are loaded into Gofer each
  14387. time that the interpreter is started.  By default,  Gofer  reads  these
  14388. definitions from  a  file  called  "prelude"  in  the  current  working
  14389. directory.  Alternatively you can set the environment variable GOFER to
  14390. the name of the  standard  prelude  file,  which  will  then  be  used,
  14391. whatever the current working directory might be.
  14392.  
  14393. Most commands in Gofer take the form of a colon followed by one or more
  14394. characters which distinguish one command from another.  There  are  two
  14395. commands which are particularly worth remembering:
  14396.  
  14397.   o  :q  exits the  Gofer  interpreter.   On most systems, you can also
  14398.      exit from Gofer by typing the end of  file  character  (^Z  on  an
  14399.      MS-DOS machine, usually ^D on a unix based machine).
  14400.  
  14401.   o  :?  prints a list of all the commands,  which can be useful if you
  14402.      forget the name of the command that you want to use.
  14403.  
  14404. The complete range of commands supported by the  Gofer  interpreter  is
  14405. described in appendix F.
  14406.  
  14407. Note that the interrupt key (^C on most systems) can  be  used  at  any
  14408. time whilst using Gofer to abandon the process of reading in a file  of
  14409. function definitions or the evaluation  of  an  expression.   When  the
  14410. interrupt key is detected, Gofer prints the string "{Interrupted!}" and
  14411. prints the "? " prompt so that further commands can be entered.
  14412.  
  14413.  
  14414.  
  14415.  
  14416.  
  14417.  
  14418.  
  14419.  
  14420.  
  14421.  
  14422.  
  14423.  
  14424.                                       4
  14425.  
  14426.  
  14427. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14428.  
  14429. Introduction to Gofer                2. BACKGROUND AND ACKNOWLEDGEMENTS
  14430.  
  14431.  
  14432. 2. BACKGROUND AND ACKNOWLEDGEMENTS
  14433.  
  14434. The language supported by Gofer is both syntactically and  semantically
  14435. similar to that of the functional programming language Haskell [5].  My
  14436. principal task in the implementation of Gofer  has  therefore  been  to
  14437. decide which  features  I  should  omit  and  then  to  implement  what
  14438. remains.  Features common to both include:
  14439.  
  14440.   o  Non-strict semantics (lazy evaluation).
  14441.   o  Higher-order functions.
  14442.   o  Extended polymorphic type system  with  support  for  user-defined
  14443.      overloading.
  14444.   o  User-defined algebraic datatypes.
  14445.   o  Pattern matching.
  14446.   o  List comprehensions.
  14447.   o  Facilities for  I/O,  whilst  retaining  referential  transparency
  14448.      within a program.
  14449.  
  14450. For the  benefit  of  readers  familiar  with  Haskell,  the  following
  14451. features of Haskell are not supported in the standard version of Gofer:
  14452.  
  14453.   o  Modules.
  14454.   o  Arrays.
  14455.   o  Defaults for unresolved overloading.
  14456.   o  Derived instances of standard classes.
  14457.   o  Contexts in datatype definitions.
  14458.   o  Full range of numeric types and classes.
  14459.  
  14460. But Gofer is not just a partial  implementation  of  Haskell;  it  also
  14461. includes a number of experimental features which extend the type system
  14462. in several ways:
  14463.  
  14464.   o  An alternative approach to type classes which avoids the need  for
  14465.      construction  of  dictionaries  during  the   evaluation   of   an
  14466.      expression.
  14467.   o  Type classes may take multiple parameters.
  14468.   o  Instances  of  type  classes   may   be   defined   at   arbitrary
  14469.      non-overlapping types.
  14470.   o  Contexts may include arbitrary type expressions.
  14471.  
  14472. These extensions stem from my own research [8, 9, 10, 11, 12] and  were
  14473. among the principal motivations for the  development  of  Gofer.   Full
  14474. details of the differences between Gofer and Haskell 1.1 are  given  in
  14475. appendix C.
  14476.  
  14477. Gofer would not have been implemented without my original  introduction
  14478. to functional programming using  Orwell  [6],  and  I  am  particularly
  14479. grateful to Quentin Miller for answering so many of my questions  about
  14480. functional programming and about the Orwell system  in  particular.   I
  14481. should also like to mention the influence of the  Haskell  B.  compiler
  14482. from Lennart Augustsson and Thomas Johnsson and based on their  earlier
  14483. LML compiler [7].
  14484.  
  14485. Right from the beginning, I wanted to be able to use Gofer on  a  range
  14486. of machines - and in particular, on the humble PC that I use  at  home.
  14487. With this in mind, Gofer was actually developed on that same  PC  using
  14488.  
  14489.  
  14490.                                       2
  14491.  
  14492.  
  14493.  
  14494.  
  14495. Introduction to Gofer                2. BACKGROUND AND ACKNOWLEDGEMENTS
  14496.  
  14497.  
  14498. Borland's Turbo C 1.5 and a public domain version of  the  yacc  parser
  14499. generator that I picked up some time ago.  Gofer was also written  with
  14500. some degree of portability in mind and has subsequently  been  compiled
  14501. to run on Sun workstations.  I hope it will also be possible to port it
  14502. to other platforms.  It is  my  intention  that  Gofer  be  distributed
  14503. complete with source code and I hope that this will be of  interest  to
  14504. some users.
  14505.  
  14506. Many of the ideas used in the back-end of the Gofer  system  (i.e.  the
  14507. compiler and abstract machine) originate from  the  chapters  of  Simon
  14508. Peyton Jones textbook [2]; I very much doubt whether Gofer  would  have
  14509. been  completed  without  frequent  reference  to   that   book.    The
  14510. lambda-lifter used in Gofer is based  on  Thomas  Johnsson's  algorithm
  14511. described in [3].
  14512.  
  14513. On  the  theoretical  side,  I'm  grateful  to  Phil  Wadler  for   the
  14514. encouragement that he has given me with my  work  on  qualified  types.
  14515. Many of the basic ideas that I have used were inspired by his  original
  14516. paper motivating the use of type classes [4].
  14517.  
  14518.  
  14519.  
  14520.  
  14521.  
  14522.  
  14523.  
  14524.  
  14525.  
  14526.  
  14527.  
  14528.  
  14529.  
  14530.  
  14531.  
  14532.  
  14533.  
  14534.  
  14535.  
  14536.  
  14537.  
  14538.  
  14539.  
  14540.  
  14541.  
  14542.  
  14543.  
  14544.  
  14545.  
  14546.  
  14547.  
  14548.  
  14549.  
  14550.  
  14551.  
  14552.  
  14553.  
  14554.  
  14555.  
  14556.                                       3
  14557.  
  14558.  
  14559. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14560.  
  14561. Introduction to Gofer             4. USING GOFER - A BASIC INTRODUCTION
  14562.  
  14563.  
  14564. 4. USING GOFER - A BASIC INTRODUCTION
  14565.  
  14566. Using Gofer is rather like using a high-level programmable  calculator;
  14567. Once the interpreter is loaded, the system  prints  a  prompt  "?"  and
  14568. waits for you to enter an expression, and then press the enter (return)
  14569. key.  Once the input is complete, Gofer evaluates  the  expression  and
  14570. prints its value on the terminal,  before  returning  to  the  original
  14571. prompt and waiting for the next expression.  For example:
  14572.  
  14573.     ? (2+3)*8
  14574.     40
  14575.     (5 reductions, 9 cells)
  14576.     ? sum [1..10]
  14577.     55
  14578.     (91 reductions, 130 cells)
  14579.     ? 
  14580.  
  14581. In the first example, the user entered the expression "(2+3)*8",  which
  14582. was evaluated by Gofer and the result "40" printed on the terminal.  At
  14583. the end of any calculation, Gofer displays the number of reductions  (a
  14584. measure of the amount of work) and cells (a measure of  the  amount  of
  14585. memory) that were used during the calculation.  These  figures  can  be
  14586. useful for comparing the performance of different ways of carrying  out
  14587. the same calculation.
  14588.  
  14589. In the second example, the user typed  the  expression  "sum  [1..10]".
  14590. The notation "[1..10]" represents the list of integers between 1 and 10
  14591. inclusive, and "sum" is a  standard  function  which  can  be  used  to
  14592. determine the sum of a list of integers.  Thus the result  obtained  by
  14593. Gofer is:
  14594.  
  14595.           1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10  =  55
  14596.  
  14597. We could have typed this sum into Gofer directly:
  14598.  
  14599.     ? 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
  14600.     55
  14601.     (10 reductions, 23 cells)
  14602.     ? 
  14603.  
  14604. and this calculation is certainly more efficient as it uses only  1/9th
  14605. of the number of reductions and 1/5th of the number  of  cells  as  the
  14606. original calculation.  On the other hand, the  original  expression  is
  14607. much shorter and you are much less likely to make a mistake  typing  in
  14608. the expression "sum [1..200]" than you would be if you tried  to  enter
  14609. the sum of the integers from 1 to 200 directly.
  14610.  
  14611. You will learn more about the kind of expressions that can  be  entered
  14612. into Gofer in the rest of this document.
  14613.  
  14614.  
  14615.  
  14616.  
  14617.  
  14618.  
  14619.  
  14620.  
  14621.  
  14622.                                       5
  14623.  
  14624.  
  14625.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14626.  
  14627. Introduction to Gofer            5. STANDARD AND USER-DEFINED FUNCTIONS
  14628.  
  14629.  
  14630. 5. STANDARD AND USER-DEFINED FUNCTIONS
  14631.  
  14632. The function "sum" used in the examples above, and indeed the  addition
  14633. and multiplication functions (+) and (*), are  all  standard  functions
  14634. which are included as part of a large collection  of  functions  called
  14635. the `standard prelude' which are loaded into the Gofer system each time
  14636. that you start the interpreter.  Quite a number of useful  calculations
  14637. can be carried out using these functions alone, but  for  more  general
  14638. use you can also define your own functions and store the definitions in
  14639. a file so that these functions can be loaded and used by by  the  Gofer
  14640. system.  For example, suppose that you create a file "fact"  containing
  14641. the following definition:
  14642.  
  14643.      fact n = product [1..n]
  14644.  
  14645. The "product" function is another standard function which can  be  used
  14646. to calculate the product of a list of integers, and so the  line  above
  14647. defines a  function  "fact"  which  calculates  the  factorial  of  its
  14648. argument.  In standard  mathematical notation,  fact n = n!   which  is
  14649. usually defined informally by an equation of the form:
  14650.  
  14651.                  n! = 1 * 2 * ... * (n-1) * n
  14652.  
  14653. Once you become familiar with the notation used by Gofer, you will  see
  14654. that the Gofer definition of the  factorial  function  is  really  very
  14655. similar to this informal mathematical definition.
  14656.  
  14657. In order to use this definition from the  Gofer  interpreter,  we  must
  14658. first load the definitions of  the  file  into  the  interpreter.   The
  14659. simplest way to do this uses the ":l" command:
  14660.  
  14661.     ? :l fact
  14662.     Reading script file "fact":
  14663.     Parsing......................................................
  14664.     Dependency analysis..........................................
  14665.     Type checking................................................
  14666.     Compiling....................................................
  14667.  
  14668.     Gofer session for:
  14669.     /gofer/prelude
  14670.     fact
  14671.     ?
  14672.  
  14673. Notice the list of filenames displayed after "Gofer session for:"; this
  14674. tells you which files of definitions are currently being used by Gofer,
  14675. the first of which is the  file  containing  the  definitions  for  the
  14676. standard prelude.  Since the file  containing  the  definition  of  the
  14677. factorial function has now  been  loaded,  we  can  make  use  of  this
  14678. function in expressions entered to the interpreter:
  14679.  
  14680.     ? fact 6
  14681.     720
  14682.     (57 reductions, 85 cells)
  14683.  
  14684. For another example, recall the  standard  mathematical  formula  which
  14685. tells us that  the  number  of  ways  of  choosing  r  objects  from  a
  14686.  
  14687.  
  14688.                                       6
  14689.  
  14690.  
  14691.  
  14692.  
  14693. Introduction to Gofer            5. STANDARD AND USER-DEFINED FUNCTIONS
  14694.  
  14695.  
  14696. collection of n objects is given by n! / (r! * (n-r)!).  In Gofer, this
  14697. function can be defined by:
  14698.  
  14699.     comb n r = fact n /(fact r * fact (n-r))
  14700.  
  14701. In order to use this function, we can either edit the file "fact" which
  14702. contains  the  definition  of  the  factorial  function,   adding   the
  14703. definition of "comb" on a new line, or we can include the definition as
  14704. part of an expression entered whilst using Gofer:
  14705.  
  14706.     ? comb 5 2 where comb n r = fact n /(fact r * fact (n-r))
  14707.     10
  14708.     (110 reductions, 161 cells)
  14709.     ? 
  14710.  
  14711. The ability to define a function as part of an expression like this  is
  14712. often quite useful.  However, if the function "comb" were likely to  be
  14713. wanted on a number of occasions, it would be more sensible to  add  its
  14714. definition to the contents of the file "fact",  instead  of  having  to
  14715. repeat the definition each time it is used.
  14716.  
  14717. You will learn more about the functions defined in the standard prelude
  14718. and find out  how  to  define  your  own  functions  in  the  following
  14719. sections.
  14720.  
  14721.  
  14722.  
  14723.  
  14724.  
  14725.  
  14726.  
  14727.  
  14728.  
  14729.  
  14730.  
  14731.  
  14732.  
  14733.  
  14734.  
  14735.  
  14736.  
  14737.  
  14738.  
  14739.  
  14740.  
  14741.  
  14742.  
  14743.  
  14744.  
  14745.  
  14746.  
  14747.  
  14748.  
  14749.  
  14750.  
  14751.  
  14752.  
  14753.  
  14754.                                       7
  14755.  
  14756.  
  14757. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  14758.  
  14759. Introduction to Gofer     6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  14760.  
  14761.  
  14762. 6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  14763.  
  14764. As the examples of the previous section show, there are  two  kinds  of
  14765. name that can be used for a function; identifiers  such  as  "sum"  and
  14766. operator symbols such as "+" and "*".  Choosing the appropriate kind of
  14767. name for a particular function  can  often  help  to  make  expressions
  14768. involving that function easier to read.  If for  example  the  addition
  14769. function was represented by the name "plus" rather  than  the  operator
  14770. symbol "+" then the sum of the integers from 1 to 5 would  have  to  be
  14771. written as:
  14772.  
  14773.                  plus (plus (plus (plus 1 2) 3) 4) 5
  14774.  
  14775. In this particular case, another way of writing the same sum is:
  14776.  
  14777.                  plus 1 (plus 2 (plus 3 (plus 4 5)))
  14778.  
  14779. Not only does the use of the identifier "plus" make  these  expressions
  14780. larger and more difficult to read than the equivalent expressions using
  14781. "+"; it  also  makes  it  very  much  harder  to  see  that  these  two
  14782. expressions do actually have the same value.
  14783.  
  14784. Gofer distinguishes between the two types of name according to the  way
  14785. that they are written:
  14786.  
  14787.   o  An  identifier  begins with a  letter  of the  alphabet optionally
  14788.      followed by a sequence of characters, each of which  is  either  a
  14789.      letter,  a  digit,  an  apostrophe  (')  or   an   underbar   (_).
  14790.      Identifiers representing functions or variables must begin with  a
  14791.      lower case letter (identifiers beginning with an upper case letter
  14792.      are  used  to  denote  a  special  kind  of  function   called   a
  14793.      `constructor function' described in section 11.1).  The  following
  14794.      identifiers are examples of Gofer variable and function names:
  14795.  
  14796.        sum    f    f''    integerSum    african_queen    do'until'zero
  14797.  
  14798.      The following identifiers are reserved words in Gofer  and  cannot
  14799.      be used as the name of a function or variable:
  14800.  
  14801.          case      of         where      let        in         if
  14802.          then      else       data       type       infix      infixl
  14803.          infixr    primitive  class      instance
  14804.  
  14805.   o  An  operator symbol  is written using one or more of the following
  14806.      symbol characters:
  14807.  
  14808.          :  !  #  $  %  &  *  +  .  /  <  =  >  ?  @  \  ^  |  -
  14809.  
  14810.      In addition, the tilde character (~) is also  permitted,  although
  14811.      only in the first position of an  operator  name.   [N.B.  Haskell
  14812.      also makes the  same  restriction  for  the  minus/dash  character
  14813.      (-)].   Operator  names  beginning  with  a  colon  are  used  for
  14814.      constructor functions in the same  way  as  identifiers  beginning
  14815.      with a capital  letter  as  mentioned  above.   In  addition,  the
  14816.      following operator symbols have special uses in Gofer:
  14817.  
  14818.  
  14819.  
  14820.                                       8
  14821.  
  14822.  
  14823.  
  14824.  
  14825. Introduction to Gofer     6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  14826.  
  14827.  
  14828.          ::    =    ..    @    \    |    <-    ->    ~    =>
  14829.  
  14830.      All other operator  symbols can be used as variables  or  function
  14831.      names, including each of the following examples:
  14832.  
  14833.          +    ++    &&    ||     <=    ==    /=    //  .
  14834.          ==>  $     @@     -*-   \/    /\    ...   ?
  14835.  
  14836.      [Note that each of the symbols in the first line is  used  in  the
  14837.      standard prelude.  If you are interested in using Gofer to develop
  14838.      programs for use with a Haskell compiler, you might also  want  to
  14839.      avoid using the operator symbols := ! :+ and :% which are used  to
  14840.      support features in Haskell not currently provided  by  the  Gofer
  14841.      standard prelude.]
  14842.  
  14843. Gofer provides two simple mechanisms which make it possible to  use  an
  14844. identifier  as  an  operator  symbol,  or  an  operator  symbol  as  an
  14845. identifier:
  14846.  
  14847.   o  Any  identifier  will be treated as an  operator  symbol  if it is
  14848.      enclosed in backquotes (`) -- for example, the  expressions  using
  14849.      the "plus" function above are a little easier to read  using  this
  14850.      technique:
  14851.  
  14852.                (((1 `plus` 2) `plus` 3) `plus` 4) `plus` 5
  14853.  
  14854.      In general, an expression of the form "x `op` y" is equivalent  to
  14855.      the corresponding expression "op x y", whilst an  expression  such
  14856.      as "f x y z" can also be written as "(x `f` y) z".
  14857.  
  14858.      [NOTE: For those using Gofer on a  PC,  you  may  find  that  your
  14859.      keyboard does not have a backquote key!  In this case  you  should
  14860.      still be able to enter a backquote by holding down the key  marked
  14861.      ALT, pressing the keys '9' and then '6' on the numeric keypad  and
  14862.      then releasing the ALT key.]
  14863.  
  14864.   o  Any  operator symbol  can be treated as an identifier by enclosing
  14865.      it in parentheses.  For example, the addition function denoted  by
  14866.      the operator symbol "+" is often written as "(+)".  Any expression
  14867.      of the form "x + y" can also be written in the form "(+) x y".
  14868.  
  14869. There are two more technical problems which have to be dealt with  when
  14870. working with operator symbols:
  14871.  
  14872.   o  Precedence: Given operator symbols (+) and (*), should "2 * 3 + 4"
  14873.      be treated as either "(2 * 3) + 4" or "2 * (3 + 4)"?
  14874.  
  14875.      This problem is solved by assigning  each  operator  a  precedence
  14876.      value (an integer in the range 0 to 9).  In a  situation  such  as
  14877.      the  above,  we  simply  compare  the  precedence  values  of  the
  14878.      operators involved,  and  carry  out  the  calculation  associated
  14879.      with  the  highest  precedence  operator  first.    The   standard
  14880.      precedence values for (+) and (*) are 6 and 7 respectively so that
  14881.      the expression above will actually be treated as "(2 * 3) + 4".
  14882.  
  14883.   o  Grouping: The above rule  is only useful when the operator symbols
  14884.  
  14885.  
  14886.                                       9
  14887.  
  14888.  
  14889.  
  14890.  
  14891. Introduction to Gofer     6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  14892.  
  14893.  
  14894.      involved have  distinct  precedences.   For  example,  should  the
  14895.      expression "1 - 2 - 3" be treated as either "(1 - 2) - 3" giving a
  14896.      result of -4, or as "1 - (2 - 3)" giving a result of 2?
  14897.  
  14898.      This problem is  solved  by  giving  each  operator  a  `grouping'
  14899.      (sometimes called its associativity).  An operator symbol  (-)  is
  14900.      said to:
  14901.  
  14902.        o  group to the left  if "x - y - z" is treated as "(x - y) - z"
  14903.  
  14904.        o  group to the right if "x - y - z" is treated as "x - (y - z)"
  14905.  
  14906.      A third possibility is that an expression of the form "x - y -  z"
  14907.      is to be treated as ambiguous and will  be  flagged  as  a  syntax
  14908.      error.   In  this  case  we  say  that   the   operator   (-)   is
  14909.      non-associative.
  14910.  
  14911.      The standard approach in Gofer is to treat (-) as grouping to  the
  14912.      left so that "1 - 2 - 3" will actually be treated as "(1-2)-3".
  14913.  
  14914. By  default,  every  operator   symbol   in   Gofer   is   treated   as
  14915. non-associative with precedence 9.  These values can be  changed  by  a
  14916. declaration of one of the following forms:
  14917.  
  14918.     infixl digit ops      to declare operators which group to the left
  14919.     infixr digit ops      to declare operators which group to the right
  14920.     infix  digit ops      to declare non-associative operators
  14921.  
  14922. In each of these declarations ops represents a  list  of  one  or  more
  14923. operator symbols separated by commas and digit is an integer between  0
  14924. and 9 which gives the precedence value for each of the listed  operator
  14925. symbols.  The precedence digit may be omitted in which case a value  of
  14926. 9 is assumed.  There are a number of restrictions on the use  of  these
  14927. declarations:
  14928.  
  14929.   o  Operator  declarations  can  only  appear  in  files  of  function
  14930.      definitions which are loaded into Gofer; they  cannot  be  entered
  14931.      directly whilst using the Gofer interpreter.
  14932.  
  14933.   o  At most one operator declaration is permitted for  any  particular
  14934.      operator symbol (even if repeated  declarations  all  specify  the
  14935.      same precedence and grouping as the original declaration).
  14936.  
  14937.   o  Any file containing a declaration for an operator  precedence  and
  14938.      grouping must also contain  a  (top-level)  declaration  for  that
  14939.      operator.
  14940.  
  14941. In theory, it is possible to use an operator declaration at  any  point
  14942. in a file of definitions.  In practice, it is sensible to  ensure  that
  14943. each operator is declared before  the  symbol  is  used.   One  way  to
  14944. guarantee this is to place all operator declarations at  the  beginning
  14945. of the file [this condition is enforced in Haskell].  Note  that  until
  14946. an operator declaration for a particular  symbol  is  encountered,  any
  14947. occurrence of that symbol will be treated as a non-associative operator
  14948. with precedence 9.
  14949.  
  14950.  
  14951.  
  14952.                                       10
  14953.  
  14954.  
  14955.  
  14956.  
  14957. Introduction to Gofer     6. FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  14958.  
  14959.  
  14960. The following operator declarations are taken from the standard prelude:
  14961.  
  14962.     -- Operator precedence table
  14963.  
  14964.     infixl 9 !!
  14965.     infixr 9 .
  14966.     infixr 8 ^
  14967.     infixl 7 *
  14968.     infix  7 /, `div`, `rem`, `mod`
  14969.     infixl 6 +, -
  14970.     infix  5 \\
  14971.     infixr 5 ++, :
  14972.     infix  4 ==, /=, <, <=, >=, >
  14973.     infix  4 `elem`, `notElem`
  14974.     infixr 3 &&
  14975.     infixr 2 ||
  14976.  
  14977. and their use is illustrated by the following examples:
  14978.  
  14979.  Expression:     Equivalent to:   Reasons:
  14980.  -----------     --------------   --------
  14981.  1 + 2 - 3       (1 + 2) - 3      (+) and (-) have the same  precedence
  14982.                                   and group to the left.
  14983.  x : ys ++ zs    x : (ys ++ zs)   (:) and (++) have the same precedence
  14984.                                   and group to the right
  14985.  x == y || z     (x == y) || z    (==) has higher precedence than (||).
  14986.  3 * 4 + 5       (3 * 4) + 5      (*) has higher precedence than (+).
  14987.  y `elem` z:zs   y `elem` (z:zs)  (:) has higher precedence than elem.
  14988.  12 / 6 / 3      syntax error     ambiguous  use  of  (/);  could  mean
  14989.                                   either (12/6)/3 or 12/(6/3).
  14990.  
  14991. Note that function application always binds more tightly than any infix
  14992. operator symbol.  For example, the expression "f x + g y" is equivalent
  14993. to "(f x) + (g y)".  Another example which often causes problems is the
  14994. expression  "f x + 1",  which is treated as "(f x)  +  1"  and  not  as
  14995. "f (x+1)" as is sometimes expected.
  14996.  
  14997.  
  14998.  
  14999.  
  15000.  
  15001.  
  15002.  
  15003.  
  15004.  
  15005.  
  15006.  
  15007.  
  15008.  
  15009.  
  15010.  
  15011.  
  15012.  
  15013.  
  15014.  
  15015.  
  15016.  
  15017.  
  15018.                                       11
  15019.  
  15020.  
  15021. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  15022. Gofer 2.28 is an interactive functional programming environment (i.e. an
  15023. interpreter) supporting a language based on the draft report for Haskell
  15024. version 1.2, including the following features:
  15025.  
  15026.   o  Lazy evaluation, higher order functions, pattern matching etc...
  15027.  
  15028.   o  Wide range of built-in types with provision for defining new free
  15029.      datatypes and type synonyms.
  15030.  
  15031.   o  Polymorphic type system with provision for overloading based on
  15032.      a system of type classes.
  15033.  
  15034.   o  Full Haskell 1.2 expression and pattern syntax including lambda,
  15035.      case, conditional and let expressions, list comprehensions, operator
  15036.      sections, and wildcard, as and irrefutable patterns.
  15037.  
  15038.   o  Partial implementation of Haskell 1.2 facilities for I/O, enabling
  15039.      the use of simple interactive programs and programs reading and writing
  15040.      text files.
  15041.  
  15042.   o  User documentation, sample programs and source code freely available.
  15043.  
  15044.   o  Supports constructor classes and overloaded monad comprehensions.
  15045.  
  15046.   o  Simple minded compiler/translator Gofer -> C with runtime system for
  15047.      generation of standalone applications.
  15048.  
  15049.   o  Runs (and originally developed) on PC compatible computers, but
  15050.      also works on Sun workstations.  Code should be portable to many
  15051.      other kinds of machine.
  15052.  
  15053. Gofer is intended as an experimental language, particularly where type classes
  15054. are involved.  Gofer extends the Haskell type class system in several ways:
  15055.  
  15056.   o  Type classes with multiple parameters are supported.
  15057.  
  15058.   o  Instances of type classes may be defined non-overlapping, but otherwise
  15059.      arbitrary types.
  15060.  
  15061.   o  Predicates in contexts may involve arbitrary type expressions, not just
  15062.      type variables as in Haskell.
  15063.  
  15064.   o  Basic approach to dictionary construction is different, based on the
  15065.      approach I described in a posting to the Haskell mailing list early in
  15066.      Feburary 1991.  The resulting system ensures that all dictionaries are
  15067.      constructed before evaluation begins, avoiding repeated construction
  15068.      and enabling the shared evaluation of overloaded constants in
  15069.      dictionaries.
  15070.  
  15071. The most significant features of Haskell not currently supported are:
  15072. modules, arrays, overloaded numeric constants, default declarations, derived
  15073. instances, contexts in datatype definitions.
  15074. ------------------------------------------------------------------------------
  15075. And just in case you wondered:
  15076.  
  15077.    The name "Gofer" is not a trademark, registered  or  otherwise,  and
  15078.    you are free to mention this name in published material, public  and
  15079.    private correspondence, or other documents  without  restriction  or
  15080.    obligation.
  15081. ------------------------------------------------------------------------------
  15082. nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  15083.  
  15084. Introduction to Gofer                                 7. BUILT-IN TYPES
  15085.  
  15086.  
  15087. 7. BUILT-IN TYPES
  15088.  
  15089. An important part of Gofer is the type system which is used  to  detect
  15090. errors  in  expressions  and  function  definitions.    Starting   with
  15091. primitive expressions such as numeric constants, Gofer assigns  a  type
  15092. to each expression that describes the kind of value represented by  the
  15093. expression.
  15094.  
  15095. In  general  we write  object :: type  to indicate  that  a  particular
  15096. expression has the indicated type.  For example:
  15097.  
  15098.     42   :: Int         indicating that  42  is an  integer (Int is the
  15099.                         name for the type of integer values).
  15100.  
  15101.     fact :: Int -> Int  indicating  that  "fact"  is a  function  which
  15102.                         takes  an  integer  argument  and  returns   an
  15103.                         integer value (its factorial).
  15104.  
  15105. The most important property of the type system is that it  is  possible
  15106. to determine the type of an expression without having to  evaluate  it.
  15107. For example, the information given above  is  sufficient  to  determine
  15108. that fact 42 :: Int without needing to calculate 42! first.
  15109.  
  15110. Gofer has a wide range of built-in types, described  in  the  following
  15111. sections.  In addition, Gofer also includes facilities for defining new
  15112. types as well as types acting as  abbreviations  for  complicated  type
  15113. expressions as described in section 11.
  15114.  
  15115.  
  15116. 7.1  Functions
  15117. --------------
  15118. If t1 and t2 are types then t1 -> t2 is the type of a  function  which,
  15119. given an argument of type t1 produces a result of type t2.  A  function
  15120. of type t1 -> t2 is said to have argument type t1 and result type t2.
  15121.  
  15122. In mathematics, the result of applying a function f to an argument x is
  15123. traditionally written as f(x).  In many situations,  these  parentheses
  15124. are unnecessary and may be omitted when using Gofer.
  15125.  
  15126. e.g. if f :: t1 -> t2 and x :: t1 then f x is the result of applying
  15127.      f to x and has type t2.
  15128.  
  15129.  
  15130. If t1, t2, ..., tn are type expressions then:
  15131.  
  15132.                    t1 -> t2 -> ... -> tn
  15133.  
  15134. can be used as an abbreviation for the type:
  15135.  
  15136.                t1 -> (t2 -> ( ... -> tn) ...)
  15137.  
  15138. In a similar way, an expression of the form f x1 x2 ... xn is simply an
  15139. abbreviation for the expression ( ... ((f x1) x2) ... xn).
  15140.  
  15141. These two conventions allow us to deal with functions taking more  than
  15142. one argument rather elegantly.  For example, the type of  the  addition
  15143.  
  15144.  
  15145.                                       12
  15146.  
  15147.  
  15148.  
  15149.  
  15150. Introduction to Gofer                                    7.1  Functions
  15151.  
  15152.  
  15153. function (+) is:
  15154.                        Int -> Int -> Int
  15155.  
  15156. In other words, "(+)" is a function which takes an integer argument and
  15157. returns a value of type (Int -> Int).  For  example,  "(+)  5"  is  the
  15158. function which takes an integer value n and returns the  value  of  the
  15159. integer n plus 5.  Hence "(+) 5 4", which is equivalent  to  "5  +  4",
  15160. evaluates to the integer 9 as expected.
  15161.  
  15162.  
  15163. 7.2  Booleans
  15164. -------------
  15165. Represented by the type "Bool", there are two boolean values written as
  15166. "True" and "False".   The  standard  prelude  includes  several  useful
  15167. functions for manipulating boolean values:
  15168.  
  15169.     (&&), (||) :: Bool -> Bool -> Bool
  15170.  
  15171.         The value of the expression b && d is True if and only if  both
  15172.         b and d are True.  If b is False then d is not evaluated.
  15173.  
  15174.         The value of the expression b || d is True if either of b or  d
  15175.         is True.  If b is True then d is not evaluated.
  15176.  
  15177.     not  :: Bool -> Bool
  15178.  
  15179.         The value of the expression not b is the opposite boolean value
  15180.         to that of b; not True = False, not False = True.
  15181.  
  15182. Gofer includes a special form of `conditional expression' which enables
  15183. an expression to select between two alternatives according to the value
  15184. of a boolean expression:
  15185.  
  15186.                      if b then t else f 
  15187.  
  15188. is an expression which is equivalent to t if b evaluates to True, or to
  15189. f if b evaluates to False.  Note that an expression  of  this  form  is
  15190. only acceptable if b is an expression of type Bool and if the types  of
  15191. t and f are the same, in which case the whole expression also has  that
  15192. type.
  15193.  
  15194.  
  15195. 7.3  Integers
  15196. -------------
  15197. Represented by the type "Int", the integer type includes both  positive
  15198. and negative integers such as -273, 0  and  383.   Like  many  computer
  15199. systems, the range of integer values that can be used is restricted and
  15200. calculations using large positive  or  negative  numbers  may  lead  to
  15201. (undetected) overflow.
  15202.  
  15203. A wide range of operators and functions are  defined  in  the  standard
  15204. prelude for use with integers:
  15205.  
  15206.     (+)     addition.
  15207.     (*)     multiplication.
  15208.     (-)     subtraction.
  15209.  
  15210.  
  15211.                                       13
  15212.  
  15213.  
  15214.  
  15215.  
  15216. Introduction to Gofer                                     7.3  Integers
  15217.  
  15218.  
  15219.     (^)     raise to power.
  15220.     negate  unary negation.  An expression of the form "-x" is treated
  15221.             as the expression "negate x".
  15222.     (/)     integer division.
  15223.     div        "        "
  15224.     rem     remainder, related to integer division by the law:
  15225.                      (x `div` y)*y + (x `rem` y) == x
  15226.     mod     modulo, like remainder except that the modulo has the same
  15227.             sign as the divisor.
  15228.     odd     returns True if argument is odd, False otherwise.
  15229.     even    returns True if argument is even, False otherwise.
  15230.     gcd     returns the greatest common divisor of its two arguments.
  15231.     lcm     returns the least common multiple of its two arguments.
  15232.     abs     returns the absolute value of its argument.
  15233.     signum  returns -1, 0 or 1 indicating that its argument is negative,
  15234.             zero or positive respectively.
  15235.  
  15236. The  less  familiar  operators  are  illustrated   by   the   following
  15237. identities:
  15238.  
  15239.      3^4 == 81,          7 `div` 3 == 2,      even 23 == False
  15240.      7 `rem` 3 == 1,    -7 `rem` 3 == -1,     7 `rem` -3 == 1
  15241.      7 `mod` 3 == 1,    -7 `mod` 3 == 2,      7 `mod` -3 == -2
  15242.      gcd 32 12 == 4,    abs (-2) == 2,        signum 12 == 1
  15243.  
  15244.  
  15245. 7.4  Floating point numbers
  15246. ---------------------------
  15247. Represented by the type "Float", elements of this type can be  used  to
  15248. represent fractional values  as  well  as  very  large  or  very  small
  15249. quantities.  Such values are however usually only accurate to  a  fixed
  15250. number of digits and rounding errors may  occur  in  some  calculations
  15251. making significant use of floating point quantities.  A  numeric  value
  15252. in an input expression will only be treated as a floating point  number
  15253. if it either includes a decimal point such as 3.14159, or if the number
  15254. is too large to be stored as a value of type Int.  Scientific  notation
  15255. may also be used to enter floating point quantities; for example  1.0e3
  15256. is equivalent to 1000.0, whilst 5.0e-2 is equivalent to 0.05.
  15257.  
  15258. [N.B. floating point numbers are not included in all implementations of
  15259. Gofer].
  15260.  
  15261.  
  15262. 7.5  Characters
  15263. ---------------
  15264. Represented by  the  type  "Char",  elements  of  this  type  represent
  15265. individual characters such as those entered at a  keyboard.   Character
  15266. values  are  written  as  single  characters  enclosed  by   apostrophe
  15267. characters: e.g. 'a',  '0',  'Z'.   Some  special  characters  must  be
  15268. entered using an `escape code'; each of these begins with  a  backslash
  15269. character '\', followed  by  one  or  more  characters  to  select  the
  15270. required character.  Some of the most useful escape codes are:
  15271.  
  15272.      '\\'             backslash
  15273.      '\''             apostrophe
  15274.      '\"'             double quote
  15275.  
  15276.  
  15277.                                       14
  15278.  
  15279.  
  15280.  
  15281.  
  15282. Introduction to Gofer                                   7.5  Characters
  15283.  
  15284.  
  15285.      '\n'             newline
  15286.      '\b' or '\BS'    backspace
  15287.      '\DEL'           delete
  15288.      '\t' or '\HT'    tab
  15289.      '\a' or '\BEL'   alarm (bell)
  15290.      '\f' or '\FF'    formfeed
  15291.  
  15292. Additional escape characters include:
  15293.  
  15294.      '\^c'            control character, where c is replaced by
  15295.                       one of the characters:
  15296.                          "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
  15297.                       For example, '\^A' represents control-A
  15298.  
  15299.      '\number'        representing the character with ASCII value
  15300.                       specified by the given decimal 'number'.
  15301.  
  15302.      '\onumber'       representing the character with ASCII value
  15303.                       specified by the given octal 'number'.
  15304.  
  15305.      '\xnumber'       representing the character with ASCII value
  15306.                       specified by the given 'hexadecimal' number.
  15307.  
  15308.      '\name'          named ASCII control character, where
  15309.                       `name' is replaced by one of the standard
  15310.                       ascii names e.g. `\DC3`.
  15311.  
  15312. In contrast with  some  common  languages  (such  as  C,  for  example)
  15313. character values are quite distinct from integers; however the standard
  15314. prelude does include functions:
  15315.  
  15316.                    ord :: Char -> Int
  15317.                    chr :: Int -> Char
  15318.  
  15319. which enable you to map a character to its corresponding  ASCII  value,
  15320. or from an ASCII value to the corresponding character:
  15321.  
  15322.     ? ord 'a'
  15323.     97
  15324.     (2 reductions, 6 cells)
  15325.     ? chr 65
  15326.     'A'
  15327.     (2 reductions, 7 cells)
  15328.     ?         
  15329.  
  15330.  
  15331. 7.6  Lists
  15332. ----------
  15333. If a is a type then [a] is the type whose elements are lists of  values
  15334. of type a.  There are several ways of writing list expressions:
  15335.  
  15336.   o   The simplest list of any type is the empty list, written [].
  15337.  
  15338.   o   Non-empty lists  can be constructed either by  explicitly listing
  15339.       the members of the list (for example: [1,3,10]) or  by  adding  a
  15340.       single element onto the front  of  another  list  using  the  (:)
  15341.  
  15342.  
  15343.                                       15
  15344.  
  15345.  
  15346.  
  15347.  
  15348. Introduction to Gofer                                        7.6  Lists
  15349.  
  15350.  
  15351.       operator (pronounced "cons").  These notations are equivalent:
  15352.  
  15353.        [1,3,10]  =  1 : [3,10]  =  1 : 3 : [10]  =  1 : 3 : 10 : []
  15354.  
  15355.       (the (:) operator groups to the right so 1 :  3  :  10  :  []  is
  15356.       equivalent to (1:(3:(10:[]))) -- a list whose first element is 1,
  15357.       second element is 3 and last element is 10).
  15358.  
  15359. The  standard  prelude  includes  a  wide  range   of   functions   for
  15360. calculations involving lists.  For example:
  15361.  
  15362.   o  length xs  returns the number of elements in the list xs.
  15363.   o  xs ++ ys   returns the list of elements in xs followed by the
  15364.                 elements in ys
  15365.   o  concat xss returns the list of elements in each of the lists in
  15366.                 xss
  15367.   o  map f xs   returns the list of values obtained by applying the
  15368.                 function f to each of the values in the list xs in turn.
  15369.  
  15370. Here are some examples using these functions:
  15371.  
  15372.     ? length [1,3,10]
  15373.     3
  15374.     (15 reductions, 28 cells)
  15375.  
  15376.     ? [1,3,10] ++ [2,6,5,7]
  15377.     [1, 3, 10, 2, 6, 5, 7]
  15378.     (19 reductions, 77 cells)
  15379.  
  15380.     ? concat [[1], [2,3], [], [4,5,6]]
  15381.     [1, 2, 3, 4, 5, 6]
  15382.     (29 reductions, 93 cells)
  15383.  
  15384.     ? map ord ['H', 'e', 'l', 'l', 'o']
  15385.     [72, 101, 108, 108, 111]
  15386.     (22 reductions, 73 cells)
  15387.  
  15388.     ?
  15389.  
  15390. Note that all of the elements in a list must be of the  same  type,  so
  15391. that an expression such as ['a', 2, False] is not permitted.
  15392.  
  15393. [ASIDE: At this point  it  might  be  useful  to  mention  an  informal
  15394. convention that is used by a  number  of  functional  programmers  when
  15395. choosing names for variables  representing  elements  of  lists,  lists
  15396. themselves, lists of lists and  so  on.   If  for  example,  a  typical
  15397. element of a list is called x, then it is often useful to use the  name
  15398. xs for a list of such values, suggesting that a list contains a  number
  15399. of "x"s.  Similarly, a list of lists might be  called  xss.   Once  you
  15400. have understood this convention it  is  much  easier  to  remember  the
  15401. relationship between the variables in the  expression  (x:xs)  than  it
  15402. would be if different names had been used such as (a:b).]
  15403.  
  15404.  
  15405.  
  15406.  
  15407.  
  15408.  
  15409.                                       16
  15410.  
  15411.  
  15412.  
  15413.  
  15414. Introduction to Gofer                                      7.7  Strings
  15415.  
  15416.  
  15417. 7.7  Strings
  15418. ------------
  15419. A string is treated as a list of characters  and  the  type  String  is
  15420. simply an abbreviation for the type [Char].   Strings  are  written  as
  15421. sequences of characters enclosed between  speech  marks.   All  of  the
  15422. escape codes that can be used for characters may  also  be  used  in  a
  15423. string:
  15424.  
  15425.     ? "hello, world"
  15426.     hello, world
  15427.     (0 reductions, 13 cells)
  15428.  
  15429.     ? "hello\nworld"
  15430.     hello
  15431.     world
  15432.     (0 reductions, 12 cells)
  15433.     ?
  15434.  
  15435. In addition, strings may contain the escape sequence "\&" which can  be
  15436. used to separate otherwise  ambiguous  pairs  of  characters  within  a
  15437. string:
  15438.  
  15439.     e.g.  "\123h"   represents the string ['\123', 'h']
  15440.           "\12\&3h" represents the string ['\12', '3', 'h']
  15441.  
  15442. A string expression may be spread over a number of lines using a gap --
  15443. a non-empty sequence of space, tab and new line characters enclosed  by
  15444. backslash characters:
  15445.  
  15446.     ? "hell\   \o"
  15447.     hello
  15448.     (0 reductions, 6 cells)
  15449.     ? 
  15450.  
  15451. Notice that strings are printed  differently from other  values,  which
  15452. gives the programmer complete control over the  format  of  the  output
  15453. produced by a program.  The only values that Gofer can in fact  display
  15454. on the terminal are strings.  If the type of an expression entered into
  15455. Gofer is equivalent to String then the expression is  printed  directly
  15456. by evaluating and printing each character  in  the  list  in  sequence.
  15457. Otherwise, the expression to  be  evaluated,  e,  is  replaced  by  the
  15458. expression show' e where show' is a built-in function (defined as  part
  15459. of the standard prelude)  which  converts  any  value  to  a  printable
  15460. representation.  The  only way of printing a  string value  in the same
  15461. way as any other value is by explicitly using the show' function:
  15462.  
  15463.     ? show' "hello"
  15464.     "hello"
  15465.     (7 reductions, 24 cells)
  15466.     ?
  15467.  
  15468. The careful reader may have been puzzled by  the  fact  the  number  of
  15469. reductions used in the first three examples above was zero.  This is in
  15470. fact quite correct since these expressions are constants and no further
  15471. evaluation can be carried out.  For constant expressions of  any  other
  15472. type there will always be at least one reduction needed  to  print  the
  15473.  
  15474.  
  15475.                                       17
  15476.  
  15477.  
  15478.  
  15479.  
  15480. Introduction to Gofer                                      7.7  Strings
  15481.  
  15482.  
  15483. value since the constant  must  first  be  translated  to  a  printable
  15484. representation using the show' function.
  15485.  
  15486. Because strings are represented as lists  of  characters,  all  of  the
  15487. standard prelude functions for manipulating lists can also be used with
  15488. strings:
  15489.  
  15490.     ? length "Hello"
  15491.     5
  15492.     (22 reductions, 36 cells)
  15493.  
  15494.     ? "Hello, " ++ "world"
  15495.     Hello, world
  15496.     (8 reductions, 37 cells)
  15497.  
  15498.     ? concat ["super","cali","fragi","listic"]
  15499.     supercalifragilistic
  15500.     (29 reductions, 101 cells)
  15501.  
  15502.     ? map ord "Hello"
  15503.     [72, 101, 108, 108, 111]
  15504.     (22 reductions, 69 cells)
  15505.  
  15506.     ? 
  15507.  
  15508.  
  15509. 7.8  Tuples and the unit type
  15510. -----------------------------
  15511. If t1, t2, ..., tn are types and n>=2, then there is a type of n-tuples
  15512. written (t1, t2, ..., tn) whose elements are also written in  the  form
  15513. (x1, x2, ..., xn) where the expressions x1, x2, ..., xn have types  t1,
  15514. t2, ..., tn respectively.
  15515.  
  15516.     e.g.  (1, [2], 3)   :: (Int, [Int], Int)
  15517.           ('a', False)  :: (Char, Bool)
  15518.           ((1,2),(3,4)) :: ((Int, Int), (Int, Int))
  15519.  
  15520. Note that, unlike lists, the elements in a  tuple  may  have  different
  15521. types, although the number of elements in the tuple is fixed.
  15522.  
  15523. The unit type is written () and has a  single  element  which  is  also
  15524. written as ().  The unit type is of particular interest in  theoretical
  15525. treatments of the type system of Gofer, although you  may  occasionally
  15526. find a use for it in practical programs.
  15527.  
  15528.  
  15529.  
  15530.  
  15531.  
  15532.  
  15533.  
  15534.  
  15535.  
  15536.  
  15537.  
  15538.  
  15539.  
  15540.  
  15541.                                       18
  15542.  
  15543.  
  15544. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  15545.  
  15546. Introduction to Gofer                                         8. ERRORS
  15547.  
  15548.  
  15549. 8. ERRORS
  15550.  
  15551. 8.1  Errors detected on input
  15552. -----------------------------
  15553. After an expression has been entered, but before any attempt is made to
  15554. evaluate it, Gofer carries out a number of checks to make sure that the
  15555. expression that you typed does not contain any errors.  Here  are  some
  15556. examples of the kind of problem that might occur:
  15557.  
  15558.   o  Syntax errors.  The most common situation in which this happens is
  15559.      when  you  make  a  typing  mistake,  either  leaving   out   some
  15560.      characters, or perhaps pressing the wrong keys  instead.   In  the
  15561.      following example, the user has missed out a `[' character:
  15562.  
  15563.          ? sum 1..100]
  15564.          ERROR: Syntax error in input (unexpected `..')
  15565.          ?
  15566.  
  15567.   o  Undefined variables.  This happens when you  enter  an  expression
  15568.      using a variable or function name that is not defined  in  any  of
  15569.      the files of definitions loaded into Gofer.  This can  often  mean
  15570.      that you have misspelt the name of a function, or that  the  files
  15571.      defining a function have not yet been loaded.  For example:
  15572.  
  15573.          ? sum [1..n]
  15574.          ERROR: Undefined variable "n"
  15575.          ? 
  15576.  
  15577.   o  Type errors.  Certain  expressions  are  sensible  only  when  the
  15578.      functions used in those expressions are applied to values  of  the
  15579.      appropriate type.  For example, whilst the factorial function  can
  15580.      be used to calculate the factorial of an integer,  it  is  clearly
  15581.      meaningless to try to  determine  the  factorial  of  a  character
  15582.      value.  This kind of problem can be detected using  the  types  of
  15583.      the components of an expression.  In the expression "fact 'A'", we
  15584.      can see that the argument 'A' has type Char which does  not  match
  15585.      the argument type Int of the factorial function.  This error  will
  15586.      be detected by Gofer if you try to evaluate the expression:
  15587.  
  15588.          ? fact 'A'
  15589.          ERROR: Type error in application
  15590.          *** expression     : fact 'A'
  15591.          *** term           : 'A'
  15592.          *** type           : Char
  15593.          *** does not match : Int
  15594.  
  15595.          ?
  15596.  
  15597.  
  15598. 8.2  Errors during evaluation
  15599. -----------------------------
  15600. If no errors are detected in an input expression, Gofer then begins  to
  15601. evaluate that expression.  Despite all of the checks that  are  carried
  15602. out before the evaluation begins, it is still possible for an error  to
  15603. occur during the evaluation of an expression.   A  typical  example  of
  15604. this is an attempt to divide a number by zero.   In  this  case,  Gofer
  15605.  
  15606.  
  15607.                                       19
  15608.  
  15609.  
  15610.  
  15611.  
  15612. Introduction to Gofer                     8.2  Errors during evaluation
  15613.  
  15614.  
  15615. prints the part of the  expression  being  evaluated  that  caused  the
  15616. error, surrounded by braces `{' and `}':
  15617.  
  15618.     ? 3/0
  15619.     {primDivInt 3 0}
  15620.     (4 reductions, 30 cells)
  15621.     ? 
  15622.  
  15623. [The function "primDivInt" which appears here is a  primitive  function
  15624. used to divide  one  integer  (its  first  argument)  by  another  (the
  15625. second)].  If an error occurs in just one part of  an  expression, only
  15626. the part causing the problem will be displayed:
  15627.  
  15628.     ? 4 + (5/0)
  15629.     {primDivInt 5 0}
  15630.     (5 reductions, 32 cells)
  15631.     ? 
  15632.  
  15633. A standard function called "error" is defined in the  standard  prelude
  15634. which is often useful for ensuring that appropriate error messages  are
  15635. produced when an error occurs:
  15636.  
  15637.     ? error "Problem has occurred"
  15638.     {error "Problem has occurred"}
  15639.     (23 reductions, 99 cells)
  15640.     ? 
  15641.  
  15642.  
  15643.  
  15644.  
  15645.  
  15646.  
  15647.  
  15648.  
  15649.  
  15650.  
  15651.  
  15652.  
  15653.  
  15654.  
  15655.  
  15656.  
  15657.  
  15658.  
  15659.  
  15660.  
  15661.  
  15662.  
  15663.  
  15664.  
  15665.  
  15666.  
  15667.  
  15668.  
  15669.  
  15670.  
  15671.  
  15672.  
  15673.                                       20
  15674.  
  15675.  
  15676.  WonderWorks     
  15677.  
  15678. Introduction to Gofer      11. USER-DEFINED DATATYPES AND TYPE SYNONYMS
  15679.  
  15680.  
  15681. 11. USER-DEFINED DATATYPES AND TYPE SYNONYMS
  15682.  
  15683. 11.1 Datatype definitions
  15684. -------------------------
  15685. In addition to the  wide  range  of  built-in  datatypes  described  in
  15686. section 7, Gofer also allows the  definition  of  new  datatypes  using
  15687. declarations of the form:
  15688.  
  15689.      data DatatypeName a1 ... an = constr1 | ... | constrm
  15690.  
  15691. where DatatypeName is the name of a new type constructor of arity n>=0,
  15692. a1, ..., an are distinct type variables representing the  arguments  of
  15693. DatatypeName and constr1, ..., constrm (m>=1) describe the way in which
  15694. elements of the new datatype are constructed.  Each constr can take one
  15695. of two forms:
  15696.  
  15697.   o  Name type1 ... typer where Name is a previously unused constructor
  15698.      function  name  (i.e.  an  identifier  beginning  with  a  capital
  15699.      letter).  This declaration introduces Name as  a  new  constructor
  15700.      function of type: type1 -> ...-> typer -> DatatypeName a1 ... an.
  15701.  
  15702.   o  type1 CONOP type2 where CONOP is a previously  unused  constructor
  15703.      function  operator (i.e.  an  operator  symbol  beginning  with  a
  15704.      colon).  This declaration introduces (CONOP) as a new  constructor
  15705.      function of type: type1 -> type2 -> DatatypeName a1 ... an.
  15706.  
  15707. [N.B. only the  type variables  a1, ..., an  may  appear  in  the  type
  15708. expressions in each constr in the definition of DatatypeName.]
  15709.  
  15710.  
  15711. As a simple example, the following definition introduces a new type Day
  15712. with elements Sun, Mon, Tue, Wed, Thu, Fri and Sat:
  15713.  
  15714.     data Day = Sun | Mon | Tue | Wed | Thu | Fri | Sat
  15715.  
  15716. Simple functions manipulating elements of type Day can be defined using
  15717. pattern matching:
  15718.  
  15719.     what_shall_I_do Sun = "relax"
  15720.     what_shall_I_do Sat = "go shopping"
  15721.     what_shall_I_do _   = "looks like I'll have to go to work"
  15722.  
  15723. Another example uses a pair of constructors to provide a representation
  15724. for temperatures which may be given using either of the  centigrade  or
  15725. fahrenheit scales:
  15726.  
  15727.     data Temp = Centigrade Float | Fahrenheit Float
  15728.  
  15729.     freezing                  :: Temp -> Bool
  15730.     freezing (Centigrade temp) = temp <= 0.0
  15731.     freezing (Fahrenheit temp) = temp <= 32.0
  15732.  
  15733. The following example uses a type variable on the left hand side of the
  15734. datatype  definition  to  implement  a   Set   type   constructor   for
  15735. representing sets using a list of values:
  15736.  
  15737.  
  15738.  
  15739.                                       46
  15740.  
  15741.  
  15742.  
  15743.  
  15744. Introduction to Gofer                         11.1 Datatype definitions
  15745.  
  15746.  
  15747.     data Set a = Set [a]
  15748.  
  15749. For example, Set [1,2,3] is an element of type  Set  Int,  representing
  15750. the set of integers {1, 2, 3} whilst Set ['a'] represents  a  singleton
  15751. set of type Set Char.  As this example shows, it is possible to use the
  15752. same  name  simultaneously  as  both  a  type  constructor  and  as   a
  15753. constructor function.
  15754.  
  15755. Datatype definitions may also be  recursive,  using  the  name  of  the
  15756. datatype  being  defined  on  the  right  hand  side  of  the  datatype
  15757. definition  (mutually   recursive   datatype   definitions   are   also
  15758. permitted).  The following example is taken from the Haskell report [5]
  15759. and  defines  a  type  representing  binary  trees  with  values  of  a
  15760. particular type at their leaves:
  15761.  
  15762.     data Tree a = Lf a | Tree a :^: Tree a
  15763.  
  15764. For example, (Lf 12 :^: (Lf 23 :^: Lf 13)) :^: Lf 10 has type Tree  Int
  15765. and represents the binary tree:
  15766.  
  15767.                               ,--- 12
  15768.                            ,--| 
  15769.                            |  |  ,--- 23
  15770.                            |  `--| 
  15771.                            |     `--- 13
  15772.                          --| 
  15773.                            `--- 10
  15774.  
  15775. As an example of a function defined on trees, here are two  definitions
  15776. using recursion and pattern matching on tree valued  expressions  which
  15777. calculate the list of elements at the leaves of a tree  traversing  the
  15778. branches of the tree from left to right.  The first definition  uses  a
  15779. simple definition, whilst the second uses an  `accumulating  parameter'
  15780. giving a more efficient algorithm:
  15781.  
  15782.     leaves, leaves'  :: Tree a -> [a]
  15783.  
  15784.     leaves (Lf l)  = [l]
  15785.     leaves (l:^:r) = leaves l ++ leaves r
  15786.  
  15787.     leaves' t = leavesAcc t []
  15788.                  where leavesAcc (Lf l)  = (l:)
  15789.                        leavesAcc (l:^:r) = leavesAcc l . leavesAcc r
  15790.  
  15791. Using the binary tree above as an example:
  15792.  
  15793.     ? leaves ((Lf 12 :^: (Lf 23 :^: Lf 13)) :^: Lf 10)
  15794.     [12, 23, 13, 10]
  15795.     (24 reductions, 73 cells)
  15796.     ? leaves' ((Lf 12 :^: (Lf 23 :^: Lf 13)) :^: Lf 10)
  15797.     [12, 23, 13, 10]
  15798.     (20 reductions, 58 cells)
  15799.     ?
  15800.  
  15801.  
  15802.  
  15803.  
  15804.  
  15805.                                       47
  15806.  
  15807.  
  15808.  
  15809.  
  15810. Introduction to Gofer                                11.2 Type synonyms
  15811.  
  15812.  
  15813. 11.2 Type synonyms
  15814. ------------------
  15815. Type synonyms are used to provide  convenient  abbreviations  for  type
  15816. expressions.  A type synonym is introduced  by  a  declaration  of  the
  15817. form:
  15818.  
  15819.      type Name a1 ... an = expansion
  15820.  
  15821. where Name is the name of a new type constructor  of  arity  n>=0,  a1,
  15822. ..., an are distinct type variables representing the arguments of  Name
  15823. and expansion is a type expression.  Note that the only type  variables
  15824. permitted in the expansion type are those on the left hand side of  the
  15825. synonym definition.  Using this declaration any type expression of  the
  15826. form:
  15827.  
  15828.                   Name type1 ... typen 
  15829.  
  15830. is treated as an abbreviation of  the  type  expression  obtained  from
  15831. expansion by replacing each of the type variables a1, ..., an with  the
  15832. corresponding type type1, ..., typen.
  15833.  
  15834. The most frequently used type synonym is almost  certainly  the  String
  15835. type which is a synonym for [Char]:
  15836.  
  15837.     type String = [Char]
  15838.  
  15839. [ASIDE: This definition is actually built in to the Gofer  system,  but
  15840. the effect is the same as if this  declaration  were  included  in  the
  15841. standard prelude.]
  15842.  
  15843. Note that the types of expressions inferred by Gofer will  not  usually
  15844. contain any type synonyms unless an explicit type signature  is  given,
  15845. either using an explicitly typed expression (section 10.6)  or  a  type
  15846. declaration (section 9.12):
  15847.  
  15848.     ? :t ['c']
  15849.     ['c'] :: [Char]
  15850.     ? :t ['c'] :: String
  15851.     ['c'] :: String
  15852.     ?
  15853.  
  15854. Unlike the datatype declarations described  in  the  previous  section,
  15855. recursive  (and  mutually  recursive)  synonym  declarations  are   not
  15856. permitted.  This rules out examples such as:
  15857.  
  15858.     type BadSynonym = [BadSynonym]
  15859.  
  15860. and ensures that the process of expanding all of the type synonyms used
  15861. in any particular type expression  will  always  terminate.   The  same
  15862. property does not hold for the illegal definition above, in  which  any
  15863. attempt to expand the type BadSynonym would lead to the non-terminating
  15864. sequence:
  15865.  
  15866.     BadSynonym ==> [BadSynonym] ==> [[BadSynonym]] ==> ....
  15867.  
  15868.  
  15869.  
  15870.  
  15871.                                       48
  15872.  
  15873.  
  15874. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  15875.  
  15876. Introduction to Gofer                  9. MORE ABOUT VALUE DECLARATIONS
  15877.  
  15878.  
  15879. 9. MORE ABOUT VALUE DECLARATIONS
  15880.  
  15881. 9.1  Simple pattern matching
  15882. ----------------------------
  15883. Although the Gofer standard prelude includes many useful functions, you
  15884. will usually need to define a collection of new functions for  specific
  15885. problems and calculations.  The declaration of a function  "f"  usually
  15886. takes the form of a number of equations of the form:
  15887.  
  15888.             f <pat1> <pat2> ... <patn>  =   <rhs>
  15889.  
  15890. (or an equivalent expression, if "f"  is  written  as  by  an  operator
  15891. symbol).   Each  of  the  expressions  <pat1>,  <pat2>,   ...,   <patn>
  15892. represents an argument to the function "f" and is called  a  `pattern'.
  15893. The number of such arguments is called the arity of  "f".   If  "f"  is
  15894. defined by more than one equation then they must  be  entered  together
  15895. and each one must give the same arity for "f".
  15896.  
  15897. When a function is defined by more than one equation, it  will  usually
  15898. be necessary to evaluate one or more of the arguments to  the  function
  15899. to  determine  which  equation  applies.   This   process   is   called
  15900. `pattern-matching'.  In all of the previous examples we have used  only
  15901. the simplest kind of pattern -- a variable.  As  an  example,  consider
  15902. the factorial function defined in section 5:
  15903.  
  15904.     fact n = product [1..n]
  15905.  
  15906. If we then wish to evaluate the expression "fact 6" we first match  the
  15907. expression "6" against the pattern "n" and then evaluate the expression
  15908. obtained from "product [1..n]" by replacing the variable "n"  with  the
  15909. expression "6".  The process of matching the arguments  of  a  function
  15910. against the patterns in its definition and obtaining another expression
  15911. to be evaluated is called a `reduction'.  Using Gofer, it  is  easy  to
  15912. verify that the evaluation of "fact 6" takes one  more  reduction  than
  15913. that of "product [1..6]":
  15914.  
  15915.     ? fact 6
  15916.     720
  15917.     (57 reductions, 85 cells)
  15918.     ? product [1..6]
  15919.     720
  15920.     (56 reductions, 85 cells)
  15921.     ? 
  15922.  
  15923. Many kinds of constants such as the boolean values True and  False  can
  15924. also be used in  patterns,  as  in  the  following  definition  of  the
  15925. function "not" taken from the standard prelude:
  15926.  
  15927.     not True  = False
  15928.     not False = True
  15929.  
  15930. In order to determine the value of an expression of the form  "not  b",
  15931. we must first evaluate the expression "b".  If  the  result  is  "True"
  15932. then we use the first equation  and  the  value  of  "not  b"  will  be
  15933. "False".  If the value of "b" is "False", then the second  equation  is
  15934. used and the value of "not b" will be "True".
  15935.  
  15936.  
  15937.                                       21
  15938.  
  15939.  
  15940.  
  15941.  
  15942. Introduction to Gofer                      9.1  Simple pattern matching
  15943.  
  15944.  
  15945. Other constants, including integers, characters and strings may also be
  15946. used in patterns.  For example, if we define a function "hello" by:
  15947.  
  15948.     hello "Mark"  =  "Howdy"
  15949.     hello name    =  "Hello " ++ name ++ ", nice to meet you!"
  15950.  
  15951. then:
  15952.  
  15953.     ? hello "Mark"
  15954.     Howdy
  15955.     (1 reduction, 12 cells)
  15956.     ? hello "Fred"
  15957.     Hello Fred, nice to meet you!
  15958.     (13 reductions, 66 cells)
  15959.     ?
  15960.  
  15961. Note that the  order  in  which  the  equations  are  written  is  very
  15962. important because Gofer always uses the first applicable equation.   If
  15963. instead we had defined the function with the equations:
  15964.  
  15965.     hello name    =  "Hello " ++ name ++ ", nice to meet you!"
  15966.     hello "Mark"  =  "Howdy"
  15967.  
  15968. then the results obtained using this function would have been a  little
  15969. different:
  15970.  
  15971.     ? hello "Mark"
  15972.     Hello Mark, nice to meet you!
  15973.     (13 reductions, 66 cells)
  15974.     ? hello "Fred"
  15975.     Hello Fred, nice to meet you!
  15976.     (13 reductions, 66 cells)
  15977.     ?
  15978.  
  15979. There are a number of other useful kinds of pattern, some of which  are
  15980. illustrated by the following examples:
  15981.  
  15982.   o  Wildcard:       _        matches  any value  at all;  it is like a
  15983.                               variable pattern, except that there is no
  15984.                               way of referring to the matched value.
  15985.  
  15986.   o  Tuples:         (x,y)    matches a  pair  whose  first  and second
  15987.                               elements are called x and y respectively.
  15988.  
  15989.   o  Lists:          [x]      matches a list with precisely one element
  15990.                               called x.
  15991.                      [_,2,_]  matches  a   list  with   precisely three
  15992.                               elements,  the  second  of  which  is the
  15993.                               integer 2.
  15994.                      []       matches the empty list.
  15995.                      (x:xs)   matches a non-empty  list with head x and
  15996.                               tail xs.
  15997.  
  15998.   o  As patterns:    p@(x,y)  matches a  pair  whose  first and  second
  15999.                               components  are  called  x  and  y.   The
  16000.                               complete pair can  also  be  referred  to
  16001.  
  16002.  
  16003.                                       22
  16004.  
  16005.  
  16006.  
  16007.  
  16008. Introduction to Gofer                      9.1  Simple pattern matching
  16009.  
  16010.  
  16011.                               directly as p.
  16012.  
  16013.   o  (n+k) patterns: (m+1)    matches an integer value  greater than or
  16014.                               equal to 1.  The value referred to by the
  16015.                               variable m is one  less  than  the  value
  16016.                               matched.
  16017.  
  16018. A further kind of pattern (called an irrefutable pattern) is introduced
  16019. in section 9.11.
  16020.  
  16021. Note that no variable name can be used more than once on the left  hand
  16022. side of each equation in a function definition.  The following example:
  16023.  
  16024.     areTheyTheSame x x = True 
  16025.     areTheyTheSame _ _ = False 
  16026.  
  16027. will not be accepted by the Gofer system, but should instead be defined
  16028. using the notation of guards introduced in the next section:
  16029.  
  16030.     areTheyTheSame x y
  16031.             | x==y      = True
  16032.             | otherwise = False
  16033.  
  16034.  
  16035. 9.2  Guarded equations
  16036. ----------------------
  16037. Each of the equations in a function  definition  may  contain  `guards'
  16038. which require  certain conditions  on  the  values  of  the  function's
  16039. arguments to be met.  As an example, here is a function which uses  the
  16040. standard prelude function even :: Int -> Bool to determine whether  its
  16041. argument is an even integer or not, and returns the  string  "even"  or
  16042. "odd" as appropriate:
  16043.  
  16044.     oddity n | even n    = "even"
  16045.              | otherwise = "odd"
  16046.  
  16047. In general, an equation using guards takes the form:
  16048.  
  16049.     f x1 x2 ... xn | condition1  =  e1
  16050.                    | condition2  =  e2
  16051.                    .
  16052.                    . 
  16053.                    | conditionm  =  em
  16054.  
  16055. This equation is used by evaluating each  of  the  conditions  in  turn
  16056. until one of them evaluates to "True", in which case the value  of  the
  16057. function is given by the corresponding expression e on the  right  hand
  16058. side of the `=' sign.  In Gofer, the variable "otherwise" is defined to
  16059. be equal to "True", so that writing "otherwise" as the condition  in  a
  16060. guard means that the corresponding expression will always be used if no
  16061. previous guard has been satisfied.
  16062.  
  16063. [ASIDE: in the notation of [1], the above examples would be written as:
  16064.  
  16065.     oddity n        =  "even",   if even n
  16066.                     =  "odd",    otherwise
  16067.  
  16068.  
  16069.                                       23
  16070.  
  16071.  
  16072.  
  16073.  
  16074. Introduction to Gofer                            9.2  Guarded equations
  16075.  
  16076.  
  16077.     f x1 x2 ... xn  = e1,     if condition1
  16078.                     = e2,     if condition2
  16079.                       .
  16080.                       .
  16081.                     = em,     if conditionm
  16082.  
  16083. Translation between the two notations is relatively straightforward.]
  16084.  
  16085.  
  16086. 9.3  Local definitions
  16087. ----------------------
  16088. Function definitions may include local definitions for variables  which
  16089. can be used both in guards and on the right hand side of  an  equation.
  16090. Consider the following function which calculates the number of distinct
  16091. real roots for a quadratic equation of the form a*x*x + b*x + c = 0:
  16092.  
  16093.     numberOfRoots a b c | discr>0   =  2
  16094.                         | discr==0  =  1
  16095.                         | discr<0   =  0
  16096.                           where discr = b*b - 4*a*c
  16097.  
  16098. [ASIDE: The operator (==) is used to test whether two values are  equal
  16099. or not.  You should take care not to confuse this with the  single  `='
  16100. sign used in function definitions].
  16101.  
  16102. Local definitions can also be introduced at an arbitrary  point  in  an
  16103. expression using an expression of the form:
  16104.  
  16105.                   let <decls> in <expr>
  16106.  
  16107. For example:
  16108.  
  16109.     ? let x = 1 + 4 in x*x + 3*x + 1
  16110.     41
  16111.     (8 reductions, 15 cells)
  16112.     ? let p x = x*x + 3*x + 1  in  p (1 + 4)
  16113.     41
  16114.     (7 reductions, 15 cells)
  16115.     ?
  16116.  
  16117.  
  16118. 9.4  Recursion with integers
  16119. ----------------------------
  16120. Recursion  is  a  particularly  important  and  powerful  technique  in
  16121. functional programming which is useful for defining functions involving
  16122. a wide range of datatypes.  In this section, we describe one particular
  16123. application of recursion to give  an  alternative  definition  for  the
  16124. factorial function from section 5.
  16125.  
  16126. Suppose that we wish to calculate the factorial of a given  integer  n.
  16127. We can split the problem up into two special cases:
  16128.  
  16129.   o  If n is zero then the value of n! is 1.
  16130.  
  16131.   o  Otherwise, n!  = 1 * 2 * ... * (n-1) * n = (n-1)! * n  and  so  we
  16132.      can calculate the value of n! by calculating the value  of  (n-1)!
  16133.  
  16134.  
  16135.                                       24
  16136.  
  16137.  
  16138.  
  16139.  
  16140. Introduction to Gofer                      9.4  Recursion with integers
  16141.  
  16142.  
  16143.      and then multiplying it by n.
  16144.  
  16145. This process can be expressed directly in  Gofer  using  a  conditional
  16146. expression:
  16147.  
  16148.     fact1 n  =  if n==0 then 1 else n * fact1 (n-1)
  16149.  
  16150. This definition may seem rather circular; in  order  to  calculate  the
  16151. value of n!, we must first calculate (n-1)!, and unless n  is  1,  this
  16152. requires the calculation of (n-2)! etc...  However, if  we  start  with
  16153. some positive value for the variable n, then we will  eventually  reach
  16154. the case where the value of 0! is required -- and this does not require
  16155. any further calculation.  The following diagram illustrates how  6!  is
  16156. evaluated using "fact1":
  16157.  
  16158.     fact1 6  ==>  6 * fact1 5
  16159.              ==>  6 * (5 * fact1 4)
  16160.              ==>  6 * (5 * (4 * fact1 3))
  16161.              ==>  6 * (5 * (4 * (3 * fact1 2)))
  16162.              ==>  6 * (5 * (4 * (3 * (2 * fact1 1))))
  16163.              ==>  6 * (5 * (4 * (3 * (2 * (1 * fact1 0)))))
  16164.              ==>  6 * (5 * (4 * (3 * (2 * (1 * 1)))))
  16165.              ==>  6 * (5 * (4 * (3 * (2 * 1))))
  16166.              ==>  6 * (5 * (4 * (3 * 2)))
  16167.              ==>  6 * (5 * (4 * 6))
  16168.              ==>  6 * (5 * 24)
  16169.              ==>  6 * 120
  16170.              ==>  720
  16171.  
  16172. Incidentally, there are several other ways  of  writing  the  recursive
  16173. definition of "fact1" above in Gofer.  For example, using guards:
  16174.  
  16175.     fact2 n
  16176.       | n==0        =  1
  16177.       | otherwise   =  n * fact2 (n-1)
  16178.  
  16179. or using pattern matching with an integer constant:
  16180.  
  16181.     fact3 0         =  1
  16182.     fact3 n         =  n * fact3 (n-1)
  16183.  
  16184. Which of these you use is largely a matter of personal taste.
  16185.  
  16186. Yet another style of definition uses the (n+k)  patterns  mentioned  in
  16187. section 9.1:
  16188.  
  16189.     fact4 0         =  1
  16190.     fact4 (n+1)     =  (n+1) * fact4 n
  16191.  
  16192. which is equivalent to:
  16193.  
  16194.     fact5 n | n==0  =  1
  16195.             | n>=1  =  n * fact5 (n-1)
  16196.  
  16197. [COMMENT: Although each of the above definitions gives the same  result
  16198. as the original "fact" function  for  each  non-negative  integer,  the
  16199.  
  16200.  
  16201.                                       25
  16202.  
  16203.  
  16204.  
  16205.  
  16206. Introduction to Gofer                      9.4  Recursion with integers
  16207.  
  16208.  
  16209. functions can still be distinguished by the values obtained  when  they
  16210. are applied to negative integers:
  16211.  
  16212.   o  "fact (-1)" evaluates to the integer 1.
  16213.   o  "fact1 (-1)" causes Gofer to enter an infinite loop, which is only
  16214.      eventually terminated when Gofer runs out of `stack space'.
  16215.   o  "fact4 (-1)" causes an evaluation error and prints the
  16216.       message {fact4 (-1)} on the screen.
  16217.  
  16218. To most people, this suggests that the definition of "fact4" is perhaps
  16219. preferable to that of either "fact" or "fact1" as it neither gives  the
  16220. wrong answer  without  allowing  this  to  be  detected  nor  causes  a
  16221. potentially non-terminating computation.]
  16222.  
  16223.  
  16224. 9.5  Recursion with lists
  16225. -------------------------
  16226. The same kind of  technique  that  can  be  used  to  define  recursive
  16227. functions with integers can also be used to define recursive  functions
  16228. on lists.  As an example, suppose that we wish to define a function  to
  16229. calculate the length of  a  list.   As  the  standard  prelude  already
  16230. includes such a function called "length", we  will  call  the  function
  16231. developed here "len" to avoid any conflict.  Now suppose that  we  wish
  16232. to find the length of a given list.  There are two cases to consider:
  16233.  
  16234.   o  If the list is empty then it has length 0
  16235.  
  16236.   o  Otherwise, it is non-empty and can be written in the  form  (x:xs)
  16237.      for some element x and some list xs.  Thus the  original  list  is
  16238.      one element longer than xs, and so has length 1 + len xs.
  16239.  
  16240. Writing these two cases out leads directly to the following definition:
  16241.  
  16242.     len []      =  0
  16243.     len (x:xs)  =  1 + len xs
  16244.  
  16245. The following diagram illustrates the way that  this  function  can  be
  16246. used to determine the length of the list [1,2,3,4] (remember that  this
  16247. is just an abbreviation for 1 : 2 : 3 : 4 : []):
  16248.  
  16249.     len [1,2,3,4]  ==>  1 + len [2,3,4]
  16250.                    ==>  1 + (1 + len [3,4])
  16251.                    ==>  1 + (1 + (1 + len [4]))
  16252.                    ==>  1 + (1 + (1 + (1 + len [])))
  16253.                    ==>  1 + (1 + (1 + (1 + 0)))
  16254.                    ==>  1 + (1 + (1 + 1))
  16255.                    ==>  1 + (1 + 2)
  16256.                    ==>  1 + 3
  16257.                    ==>  4
  16258.  
  16259. As  further  examples,  you  might  like  to  look  at  the   following
  16260. definitions which use similar ideas to define the functions product and
  16261. map introduced in earlier sections:
  16262.  
  16263.     product []     = 1
  16264.     product (x:xs) = x * product xs
  16265.  
  16266.  
  16267.                                       26
  16268.  
  16269.  
  16270.  
  16271.  
  16272. Introduction to Gofer                         9.5  Recursion with lists
  16273.  
  16274.  
  16275.     map f []      =  []
  16276.     map f (x:xs)  =  f x : map f xs
  16277.  
  16278.  
  16279. 9.6  Lazy evaluation
  16280. --------------------
  16281. Gofer evaluates expressions using a technique  sometimes  described  as
  16282. `lazy evaluation' which means that:
  16283.  
  16284.   o  No expression is evaluated until its value is needed.
  16285.  
  16286.   o  No  shared  expression  is  evaluated  more  than  once;  if   the
  16287.      expression is ever evaluated then the result is shared between all
  16288.      those places in which it is used.
  16289.  
  16290. The first of these ideas is illustrated by the following function:
  16291.  
  16292.     ignoreArgument x = "I didn't need to evaluate x"
  16293.  
  16294. Since the result of the function "ignoreArgument" doesn't depend on the
  16295. value of its argument "x", that argument will not be evaluated:
  16296.  
  16297.     ? ignoreArgument (1/0)
  16298.     I didn't need to evaluate x
  16299.     (1 reduction, 31 cells)
  16300.     ?
  16301.  
  16302. In some situations, it is useful to be able to force Gofer to  evaluate
  16303. the argument to a function before the function is applied.  This can be
  16304. achieved using the function "strict" defined in the  standard  prelude;
  16305. An expression of the form "strict f x" is evaluated by first evaluating
  16306. the argument "x" and then applying the function "f" to the result:
  16307.  
  16308.     ? strict ignoreArgument (1/0)
  16309.     {primDivInt 1 0}
  16310.     (4 reductions, 29 cells)
  16311.     ?
  16312.  
  16313. The second  basic  idea  behind  lazy  evaluation  is  that  no  shared
  16314. expression should be  evaluated  more  than  once.   For  example,  the
  16315. following two expressions can be used to calculate 3*3*3*3:
  16316.  
  16317.     ? square * square where square = 3 * 3
  16318.     81
  16319.     (3 reductions, 9 cells)
  16320.     ? (3 * 3) * (3 * 3)
  16321.     81
  16322.     (4 reductions, 11 cells)
  16323.     ?
  16324.  
  16325. Notice that the first expression requires one less reduction  than  the
  16326. second.  Excluding the single reduction step  needed  to  convert  each
  16327. integer into a string, the sequences of reductions that will be used in
  16328. each case are as follows:
  16329.  
  16330.  
  16331.  
  16332.  
  16333.                                       27
  16334.  
  16335.  
  16336.  
  16337.  
  16338. Introduction to Gofer                              9.6  Lazy evaluation
  16339.  
  16340.  
  16341.     square * square where square = 3 * 3
  16342.        -- calculate the value of square by reducing 3 * 3 ==> 9
  16343.        -- and replace each occurrence of square with this result
  16344.        ==> 9 * 9
  16345.        ==> 81
  16346.  
  16347.     (3 * 3) * (3 * 3)   -- evaluate first (3 * 3)
  16348.        ==> 9 * (3 * 3)  -- evaluate second (3 * 3)
  16349.        ==> 9 * 9
  16350.        ==>
  16351.  
  16352. Lazy evaluation is a very powerful feature of programming in a language
  16353. like Gofer, and means that only the minimum amount  of  calculation  is
  16354. used to determine the result of an expression.  The  following  example
  16355. is often used to illustrate this point.
  16356.  
  16357. Consider the task  of  finding  the  smallest  element  of  a  list  of
  16358. integers.  The standard prelude includes a function "minimum" which can
  16359. be used for this very purpose:
  16360.  
  16361.     ? minimum [100,99..1]
  16362.     1
  16363.     (809 reductions, 1322 cells)
  16364.     ?
  16365.  
  16366. (The expression [100,99..1] denotes the list of integers from 1 to  100
  16367. arranged in decreasing order, as described in section 10.1).
  16368.  
  16369. A rather different approach involves sorting the elements of  the  list
  16370. into increasing  order  (using  the  function  "sort"  defined  in  the
  16371. standard prelude) and  then  take  the  element  at  the  head  of  the
  16372. resulting list  (using  the  standard  function  "head").   Of  course,
  16373. sorting the list in its entirety is  likely  to  require  significantly
  16374. more work than the previous approach:
  16375.  
  16376.     ? sort [100,99..1]
  16377.     [1, 2, 3, 4, 5, 6, 7, 8, ... etc ..., 99, 100]
  16378.     (10712 reductions, 21519 cells)
  16379.     ?
  16380.  
  16381. However, thanks to lazy-evaluation, calculating just the first  element
  16382. of the sorted list actually requires less work in this particular  case
  16383. than the first solution using "minimum":
  16384.  
  16385.     ? head (sort [100,99..1])
  16386.     1
  16387.     (713 reductions, 1227 cells)
  16388.     ?
  16389.  
  16390. Incidentally, it is  probably worth  pointing  out  that  this  example
  16391. depends rather heavily on the particular algorithm  used  to  "sort"  a
  16392. list of elements.  The results are rather different if we  compare  the
  16393. same two approaches used to calculate the maximum value in the list:
  16394.  
  16395.     ? maximum [100,99..1]
  16396.     100
  16397.  
  16398.  
  16399.                                       28
  16400.  
  16401.  
  16402.  
  16403.  
  16404. Introduction to Gofer                              9.6  Lazy evaluation
  16405.  
  16406.  
  16407.     (812 reductions, 1225 cells)
  16408.     ? last (sort [100,99..1])
  16409.     100
  16410.     (10612 reductions, 20732 cells)
  16411.     ?
  16412.  
  16413. This difference is caused by the fact that each  element  in  the  list
  16414. produced by "sort" is  only  known  once  the  values  of  all  of  the
  16415. preceding elements are also known.  Thus  the  complete  list  must  be
  16416. sorted in order to obtain the last element.
  16417.  
  16418.  
  16419. 9.7  Infinite data structures
  16420. -----------------------------
  16421. One particular benefit of lazy evaluation is that it makes it  possible
  16422. for functions  in  Gofer  to  manipulate  `infinite'  data  structures.
  16423. Obviously we cannot hope either to   construct  or  store  an  infinite
  16424. object in its entirety -- the advantage of lazy evaluation is  that  it
  16425. allows us to construct infinite objects piece  by  piece  as  necessary
  16426. (and to reuse the storage space used by parts of the object  when  they
  16427. are no longer required).
  16428.  
  16429. As a simple example, consider the following function which can be  used
  16430. to produce infinite lists of integer values:
  16431.  
  16432.     countFrom n = n : countFrom (n+1)
  16433.  
  16434. If we evaluate the expression "countFrom 1", Gofer just prints the list
  16435. of integer values beginning with 1 until it is interrupted.  Once  each
  16436. element in the list has been printed, the storage  used  to  hold  that
  16437. element can be reused to hold later elements in the  list.   Evaluating
  16438. this expression is equivalent to using an `infinite' loop to print  the
  16439. list of integers in an imperative programming language:
  16440.  
  16441.     ? countFrom 1
  16442.     [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,^C{Interrupted!}
  16443.     (53 reductions, 160 cells)
  16444.     ?
  16445.  
  16446. For practical applications, we are usually only interested in  using  a
  16447. finite portion of an infinite data  structure  (just  as  loops  in  an
  16448. imperative programming language are usually terminated  after  finitely
  16449. many iterations).  For example, using  "countFrom"  together  with  the
  16450. function "take" defined in the standard  prelude,  we  can  repeat  the
  16451. calculation from section 4 to find the sum of the integers 1 to 10:
  16452.  
  16453.     ? sum (take 10 (countFrom 1))
  16454.     55
  16455.     (62 reductions, 119 cells)
  16456.     ?
  16457.  
  16458. [ASIDE: The expression "take n xs" evaluates to a list  containing  the
  16459. first n elements of the list xs (or to xs itself if the  list  contains
  16460. fewer than n elements).  Thus "countFrom 1" generates the infinite list
  16461. of integers, "take 10" ensures that only the  first  ten  elements  are
  16462. calculated, and "sum" calculates the sum of those integers as before.]
  16463.  
  16464.  
  16465.                                       29
  16466.  
  16467.  
  16468.  
  16469.  
  16470. Introduction to Gofer                     9.7  Infinite data structures
  16471.  
  16472.  
  16473. A particular advantage of using infinite data  structures  is  that  it
  16474. enables us to describe an object without being tied to  one  particular
  16475. application of that object.  Consider the following definition for  the
  16476. infinite list of powers of two [1, 2, 4, 8, ...]:
  16477.  
  16478.     powersOfTwo = 1 : map double powersOfTwo 
  16479.                   where double n = 2*n
  16480.  
  16481. This list be used in a variety of ways; using the operator (!!) defined
  16482. in the standard prelude [xs!!n evaluates to the nth element of the list
  16483. xs], we can define a function to find the nth power of 2 for  an  given
  16484. integer n:
  16485.  
  16486.     twoToThe n = powersOfTwo !! n 
  16487.  
  16488. Alternatively, we can use the list "powersOfTwo" to define  a  function
  16489. mapping lists of  bits  (represented  by  integers  0  and  1)  to  the
  16490. corresponding decimal number: simply reverse the order of  the  digits,
  16491. multiply each by the corresponding power of two and calculate the  sum.
  16492. Using functions from the standard  prelude,  this  translates  directly
  16493. into the definition:
  16494.  
  16495.     binToDec ds = sum (zipWith (*) (reverse ds) powersOfTwo)
  16496.  
  16497. For example:
  16498.  
  16499.     ? twoToThe 12
  16500.     4096
  16501.     (15 reductions, 21 cells)
  16502.     ? binToDec [1,0,1,1,0]
  16503.     22
  16504.     (40 reductions, 85 cells)
  16505.     ?
  16506.  
  16507. 9.8  Polymorphism
  16508. -----------------
  16509. Given the definition of "product" in section 9.5, it  is  easy  to  see
  16510. that product takes a single argument which is a list  of  integers  and
  16511. returns a single integer value -- the product of the  elements  of  the
  16512. list.  In other words, "product" has type [Int] -> Int.  On  the  other
  16513. hand, it is not immediately clear what the type of the  function  "map"
  16514. should be.  Clearly the first argument of "map" must be a function  and
  16515. both the second argument and the result are lists, so that the type  of
  16516. "map" must be of the form:
  16517.  
  16518.              (a -> b)   ->      [c]      ->     [d]
  16519.              \______/          \___/           \___/
  16520.            type of 1st      type of 2nd      type of result
  16521.            argument "f"     argument "xs"    "map f xs"
  16522.  
  16523. But what can be said about the types a, b, c and  d?   One  possibility
  16524. would be to choose a = b = c = d = Int which would  be  acceptable  for
  16525. expressions such as  "map  fact  [1,2,3,4]",  but  this  would  not  be
  16526. suitable in an expression such as  "map  chr  [65,75,32]"  because  the
  16527. "chr" function does not have type Int -> Int.
  16528.  
  16529.  
  16530.  
  16531.                                       30
  16532.  
  16533.  
  16534.  
  16535.  
  16536. Introduction to Gofer                                 9.8  Polymorphism
  16537.  
  16538.  
  16539. Notice however that the argument type of "f" must be the  same  as  the
  16540. type of elements in the second argument (i.e.  a  =  c)  since  "f"  is
  16541. applied to each element in that list.  Similarly, the  result  type  of
  16542. "f" must be the same as the type of elements in the result list (i.e. b
  16543. = d) since each element in  this  list  is  obtained  as  a  result  of
  16544. applying the function "f" to some value.  It is therefore reasonable to
  16545. treat the "map" function as having any type of the form:
  16546.  
  16547.                   (a -> b)  ->  [a]  ->  [b]
  16548.  
  16549. The letters  "a"  and  "b"  used  in  this  type  expression  represent
  16550. arbitrary types and are called type variables.  An  object  whose  type
  16551. includes one or more type variables can be thought of  as  having  many
  16552. different types and is often described as having a  `polymorphic  type'
  16553. (literally: its type has `many shapes').
  16554.  
  16555. The ability to define and use polymorphic functions in Gofer turns  out
  16556. to be very useful.  Here are the types of some of the other polymorphic
  16557. functions which have been used in previous  examples  which  illustrate
  16558. this point:
  16559.  
  16560.     length :: [a] -> Int
  16561.     (++)   :: [a] -> [a] -> [a]
  16562.     concat :: [[a]] -> [a]
  16563.  
  16564. Thus we can use precisely the same "length" function to determine  both
  16565. the length of a list of integers as well as finding  the  length  of  a
  16566. string:
  16567.  
  16568.     ? length [1..10]
  16569.     10
  16570.     (98 reductions, 138 cells)
  16571.     ? length "Hello"
  16572.     5
  16573.     (22 reductions, 36 cells)
  16574.     ? 
  16575.  
  16576.  
  16577. 9.9  Higher-order functions
  16578. ---------------------------
  16579. In Gofer, function values are treated in much the same way as any other
  16580. kind of value; in particular, they can be used both  as  arguments  to,
  16581. and results of other functions.
  16582.  
  16583. Functions which manipulate  other  functions  in  this  way  are  often
  16584. described as `higher-order functions'.  Consider the following example,
  16585. taken from the standard prelude:
  16586.  
  16587.     (.)       :: (b -> c) -> (a -> b) -> (a -> c)
  16588.     (f . g) x  = f (g x)
  16589.  
  16590. As indicated by the type declaration, we think of the (.) operator as a
  16591. function taking two function arguments and returning  another  function
  16592. value as its result.  If f and  g  are  functions  of  the  appropriate
  16593. types, then (f . g) is a function called the composition of f  with  g.
  16594. Applying (f . g) to a value is equivalent to applying g to that  value,
  16595.  
  16596.  
  16597.                                       31
  16598.  
  16599.  
  16600.  
  16601.  
  16602. Introduction to Gofer                       9.9  Higher-order functions
  16603.  
  16604.  
  16605. and then applying f to the result [As described, far  more  eloquently,
  16606. by the second line of the declaration above!].
  16607.  
  16608. Many problems can often be described very elegantly as a composition of
  16609. other functions.  Consider the problem of calculating the total  number
  16610. of characters used in a list of strings.  A simple  recursive  function
  16611. provides one solution:
  16612.  
  16613.     countChars []     = 0
  16614.     countChars (w:ws) = length w + countChars ws 
  16615.  
  16616.     ? countChars ["super","cali","fragi","listic"]
  16617.     20
  16618.     (96 reductions, 152 cells)
  16619.     ?
  16620.  
  16621. An alternative approach is to notice that we can  calculate  the  total
  16622. number of characters by  first  combining  all  of  the  words  in  the
  16623. argument list into a single word (using concat) and  then  finding  the
  16624. length of that word:
  16625.  
  16626.     ? (length . concat) ["super","cali","fragi","listic"]
  16627.     20
  16628.     (113 reductions, 211 cells)
  16629.     ?
  16630.  
  16631. Another solution is to first find the length of each word in  the  list
  16632. (using the "map" function to apply "length"  to  each  word)  and  then
  16633. calculate the sum of these individual lengths:
  16634.  
  16635.     ? (sum . map length) ["super","cali","fragi","listic"]
  16636.     20
  16637.     (105 reductions, 172 cells)
  16638.     ?
  16639.  
  16640.  
  16641. 9.10 Variable declarations
  16642. --------------------------
  16643. A variable declaration  is  a  special  form  of  function  definition,
  16644. almost always consisting of a single equation of the form:
  16645.  
  16646.                            var = rhs
  16647.  
  16648. (i.e. a function declaration of arity 0).  Whereas the  values  defined
  16649. by function declarations of arity>0 are guaranteed to be functions, the
  16650. values defined by variable declarations may or may not be functions:
  16651.  
  16652.     odd = not . even   -- if an integer is not even then it must be odd
  16653.     val = sum [1..100]
  16654.  
  16655. Note that variables defined like this at the top level  of  a  file  of
  16656. definitions will be evaluated using lazy evaluation.  The first time we
  16657. refer  to  the  variable  "val"  defined  above  (either  directly   or
  16658. indirectly), Gofer evaluates the sum of the integers from 1 to 100  and
  16659. overwrites the definition of "val" with this number.  This  calculation
  16660. can then be avoided for each subsequent use of "val" (unless  the  file
  16661.  
  16662.  
  16663.                                       32
  16664.  
  16665.  
  16666.  
  16667.  
  16668. Introduction to Gofer                        9.10 Variable declarations
  16669.  
  16670.  
  16671. containing the definition of "val" is reloaded).
  16672.  
  16673.     ? val
  16674.     5050
  16675.     (809 reductions, 1120 cells)
  16676.  
  16677.     ? val
  16678.     5050
  16679.     (1 reduction, 7 cells)
  16680.  
  16681.     ?
  16682.  
  16683. Because of this behaviour,  we  should  probably  try  to  avoid  using
  16684. variable declarations where the resulting value will require a  lot  of
  16685. storage space.  If we load a file of definitions including the line:
  16686.  
  16687.     longList = [1..10000]
  16688.  
  16689. and  then  evaluate  the  expression  "length   longList"   (eventually
  16690. obtaining the expected result of 10000), then Gofer will  evaluate  the
  16691. definition of "longList" and replace  it  with  the  complete  list  of
  16692. integers from  1  upto  10000.   Unlike  other  memory  used  during  a
  16693. calculation, it will not be possible to  reuse  this  space  for  other
  16694. calculations without reloading the file defining "longList", or loading
  16695. other files instead.
  16696.  
  16697.  
  16698. 9.11 Pattern bindings and irrefutable patterns
  16699. ----------------------------------------------
  16700. Another useful way of defining variables uses `pattern bindings'  which
  16701. are equations of the form:
  16702.  
  16703.                         pat = rhs
  16704.  
  16705. where the expression on the left hand side is a pattern as described in
  16706. section 9.1.  As a simple example of  pattern  bindings,  here  is  one
  16707. possible definition for the function "head"  which  returns  the  first
  16708. element in a list of values:
  16709.  
  16710.     head xs  =  x  where  (x:ys) = xs
  16711.  
  16712. [The definition  "head (x:_) = x"  used  in  the  standard  prelude  is
  16713. slightly more efficient, but otherwise equivalent.]
  16714.  
  16715. [ASIDE: Note that pattern bindings are treated quite  differently  from
  16716. function bindings (of which the variable declarations described in  the
  16717. last section are a special case).  There are two situations in which an
  16718. ambiguity may occur; i.e. if the left hand side of  an  equation  is  a
  16719. simple variable or an (n+k) pattern of the kind  described  in  section
  16720. 9.1.  In both cases, these are treated as function bindings, the former
  16721. being a variable declaration whilst the latter will  be  treated  as  a
  16722. definition for the operator symbol (+).]
  16723.  
  16724. Pattern bindings are often useful for defining functions which we might
  16725. think of as `returning more  than  one  value'  --  although  they  are
  16726. actually packaged up in a single value such as a tuple.  As an example,
  16727.  
  16728.  
  16729.                                       33
  16730.  
  16731.  
  16732.  
  16733.  
  16734. Introduction to Gofer    9.11 Pattern bindings and irrefutable patterns
  16735.  
  16736.  
  16737. consider the function "span" defined in the standard prelude.
  16738.  
  16739.     span :: (a -> Bool) -> [a] -> ([a],[a])
  16740.  
  16741. If xs is a list of values and p is a predicate, then span p xs  returns
  16742. the pair of lists (ys,zs) such that ys++zs == xs, all of  the  elements
  16743. in ys satisfy the predicate p and the first  element  of  zs  does  not
  16744. satisfy p.  A suitable definition, using a pattern  binding  to  obtain
  16745. the two lists resulting  from  the  recursive  call  to  "span"  is  as
  16746. follows:
  16747.  
  16748.     span p []               = ([],[])
  16749.     span p xs@(x:xs')
  16750.                 | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  16751.                 | otherwise = ([],xs)
  16752.  
  16753.  
  16754. For consistency with the lazy evaluation strategy used  in  Gofer,  the
  16755. right hand side of a pattern binding is not evaluated until  the  value
  16756. of one of the  variables  bound  by  that  pattern  is  required.   The
  16757. definition:
  16758.  
  16759.     (0:xs) = [1,2,3]
  16760.  
  16761. will not cause any errors when it is loaded into Gofer, but will  cause
  16762. an error if we attempt to evaluate the variable xs:
  16763.  
  16764.     ? xs
  16765.     {v120 [1, 2, 3]}
  16766.     (11 reductions, 46 cells)
  16767.     ?
  16768.  
  16769. The variable name "v120" appearing in this expression is the name of  a
  16770. function called a `conformality check' which is  defined  automatically
  16771. by Gofer to ensure that the value on the right hand side of the pattern
  16772. binding conforms with the pattern on the left.
  16773.  
  16774. Compare this  with  the  behaviour  of  pattern  matching  in  function
  16775. definitions such as:
  16776.  
  16777.     ? example [1] where example (0:xs) = "Hello"
  16778.     {v126 [1]}
  16779.     (4 reductions, 22 cells)
  16780.     ?
  16781.  
  16782. where  the  equivalent  of  the  conformality  check  is  carried   out
  16783. immediately even if none of the values of the variables in the  pattern
  16784. are actually required.  The reason for  this  difference  is  that  the
  16785. arguments supplied to a function must be evaluated to  determine  which
  16786. equation in the definition of the function should be used.   The  error
  16787. produced by the example above was caused by the fact that the  argument
  16788. [1] does not match the pattern used in the equation defining  "example"
  16789. (represented by an internal Gofer function called "v126").
  16790.  
  16791. A different kind of behaviour can be obtained using a  pattern  of  the
  16792. form ~pat, known as an irrefutable (or lazy) pattern.  This pattern can
  16793.  
  16794.  
  16795.                                       34
  16796.  
  16797.  
  16798.  
  16799.  
  16800. Introduction to Gofer    9.11 Pattern bindings and irrefutable patterns
  16801.  
  16802.  
  16803. initially be matched against any value, delaying the  check  that  this
  16804. value does indeed match pat until the value of  one  of  the  variables
  16805. appearing in it is required.  The basic idea (together with the  method
  16806. used to implement irrefutable patterns in Gofer) is illustrated by  the
  16807. identity:
  16808.  
  16809.     f ~pat = rhs     is equivalent to     f v = rhs where pat=v
  16810.  
  16811. The following examples, based  very  closely  on  those  given  in  the
  16812. Haskell report [5], illustrate the use of  irrefutable  patterns.   The
  16813. variable "undefined" used in these examples is included in the standard
  16814. prelude  and  causes  a  run-time  error  each  time  it  is  evaluated
  16815. (technically speaking, it represents the bottom element of the relevant
  16816. semantic domain, and is the only value having all possible types):
  16817.  
  16818.    (\ (x,y) -> 0) undefined = {undefined}
  16819.    (\~(x,y) -> 0) undefined = 0
  16820.  
  16821.    (\ [x] -> 0) [] = {v113 []}
  16822.    (\~[x] -> 0) [] = 0
  16823.  
  16824.    (\~[x, (a,b)] -> x) [(0,1),undefined] = {undefined}
  16825.    (\~[x,~(a,b)] -> x) [(0,1),undefined] = (0,1)
  16826.  
  16827.    (\ (x:xs) -> x:x:xs) undefined = {undefined}
  16828.    (\~(x:xs) -> x:x:xs) undefined = {undefined}:{undefined}:{undefined}
  16829.  
  16830. Irrefutable patterns are not used very frequently,  although  they  are
  16831. particularly convenient in some situations (see  section  12  for  some
  16832. examples).  Be careful not to use irrefutable patterns where  they  are
  16833. not appropriate.  An attempt to define a map function "map'" using:
  16834.  
  16835.     map' f ~(x:xs) = f x : map' f xs
  16836.     map' f []      = []
  16837.  
  16838. turns out to be equivalent to the definition:
  16839.  
  16840.     map' f ys  =  f x : map f xs where (x:xs) = ys
  16841.  
  16842. and will not behave as you might have intended:
  16843.  
  16844.     ? map' ord "abc"
  16845.     [97, 98, 99, {v124 []}, {v124 []}, {v^C{Interrupted!}
  16846.     (35 reductions, 159 cells)
  16847.     ?
  16848.  
  16849.  
  16850. 9.12 Type declarations
  16851. -----------------------
  16852. The type system used in Gofer is sufficiently powerful to enable  Gofer
  16853. to determine the type of any function without the need to  declare  the
  16854. types of its arguments and the return  value  as  in  some  programming
  16855. languages.  Despite this, Gofer allows the use of type declarations  of
  16856. the form:
  16857.  
  16858.                 var1, ..., varn :: type
  16859.  
  16860.  
  16861.                                       35
  16862.  
  16863.  
  16864.  
  16865.  
  16866. Introduction to Gofer                            9.12 Type declarations
  16867.  
  16868.  
  16869. which enable the programmer  to  declare  the  intended  types  of  the
  16870. variables var1,  ...,  varn  defined  in  either  function  or  pattern
  16871. bindings.   There  are  a  number  of  benefits   of   including   type
  16872. declarations of this kind in a program:
  16873.  
  16874.   o  Documentation: The  type  of  a  function  often  provides  useful
  16875.      information about the way in which a function is  to  be  used  --
  16876.      including the number and order of its arguments.
  16877.  
  16878.   o  Restriction: In some situations, the type of a  function  inferred
  16879.      by Gofer is  more  general  than  is  required.   As  an  example,
  16880.      consider the following function, intended to act as  the  identity
  16881.      on integer values:
  16882.  
  16883.          idInt x  =  x
  16884.  
  16885.      Without an explicit type declaration, Gofer treats  "idInt"  as  a
  16886.      polymorphic function of type a -> a and the expression "idInt 'A'"
  16887.      does not cause a type error.  This problem can be  solved by using
  16888.      an explicit type declaration  to restrict the type of "idInt" to a
  16889.      particular instance of the polymorphic type a -> a:
  16890.  
  16891.          idInt :: Int -> Int
  16892.  
  16893.      Note that a declaration such as:
  16894.  
  16895.          idInt :: Int -> a
  16896.  
  16897.      is not a valid type for the function "idInt"  (the  value  of  the
  16898.      expression "idInt 42" is an  integer  and  cannot  be  treated  as
  16899.      having an arbitrary type, depending  on  the  value  of  the  type
  16900.      variable "a"), and hence will not be accepted by Gofer.
  16901.  
  16902.   o  Consistency check: As illustrated above, declared types are always
  16903.      checked against the definition of a value to make sure  that  they
  16904.      are compatible.   Thus  Gofer  can  be  used  to  check  that  the
  16905.      programmer's intentions (as described by  the  types  assigned  to
  16906.      variables  in  type  declarations)   are   consistent   with   the
  16907.      definitions of those values.
  16908.  
  16909.   o  Overloading: Explicit type declarations can be  used  to  solve  a
  16910.      number  of  problems  associated  with  overloaded  functions  and
  16911.      values.  See section 14 for further details.
  16912.  
  16913.  
  16914.  
  16915.  
  16916.  
  16917.  
  16918.  
  16919.  
  16920.  
  16921.  
  16922.  
  16923.  
  16924.  
  16925.  
  16926.  
  16927.                                       36
  16928.  
  16929.  
  16930. onderWorks     WonderWorks     WonderWorks     
  16931.  
  16932. Introduction to Gofer           10. INCREASING YOUR POWER OF EXPRESSION
  16933.  
  16934.  
  16935. 10. INCREASING YOUR POWER OF EXPRESSION
  16936.  
  16937. This section describes a number of useful extensions to the basic range
  16938. of expressions used in the previous sections.  None of  these  add  any
  16939. extra computational power to Gofer -- anything that can  be  done  with
  16940. these constructs  could  also  be  done  with  the  constructs  already
  16941. described.  They are however included in Gofer because they allow  many
  16942. expressions and function definitions to be  written  more  clearly  and
  16943. concisely than the equivalent expressions without these notations.
  16944.  
  16945. 10.1 Arithmetic sequences
  16946. -------------------------
  16947. A number of useful  lists  can  be  generated  using  the  notation  of
  16948. arithmetic  sequences  (so  named  because  of  their   similarity   to
  16949. arithmetic progressions in mathematics).  The following list summarises
  16950. the four forms of sequence  expression  that  can  be  used  in  Gofer,
  16951. together with their translation using the standard functions  enumFrom,
  16952. enumFromTo, enumFromThen and enumFromThenTo:
  16953.  
  16954.     [ n .. ]         enumFrom n
  16955.  
  16956.                      Produces the (potentially infinite) list of values
  16957.                      starting with the value of  n  and  increasing  in
  16958.                      single steps.
  16959.  
  16960.                      e.g. [1..] = [1, 2, 3, 4, 5, 6, 7, 8, 9, etc...
  16961.  
  16962.     [ n .. m ]       enumFromTo n m
  16963.  
  16964.                      Produces the list of  elements  from  n  upto  and
  16965.                      including m in single steps.  If m is less than  n
  16966.                      then the list is empty.
  16967.  
  16968.                      e.g. [-3..3] = [-3, -2, -1, 0, 1, 2, 3]
  16969.                           [1..1]  = [1]
  16970.                           [9..0]  = []
  16971.  
  16972.     [ n, m .. ]      enumFromThen n m
  16973.  
  16974.                      Produces the (potentially infinite) list of values
  16975.                      whose first two elements are given by the values n
  16976.                      and m.  If m is greater than n then the  following
  16977.                      elements of the list are increasing  in  steps  of
  16978.                      the same size.  A similar result is obtained if  m
  16979.                      is less than n  in  which  case  the  elements  of
  16980.                      [n,m..] will be decreasing.  If n and m are  equal
  16981.                      then [n,m..] is an infinite  list  in  which  each
  16982.                      element is equal to n.
  16983.  
  16984.                      e.g. [1,3..] = [1, 3, 5, 7, 9, 11, 13, etc...
  16985.                           [0,0..] = [0, 0, 0, 0, 0, 0, 0, etc...
  16986.                           [5,4..] = [5, 4, 3, 2, 1, 0, -1, etc...
  16987.  
  16988.     [ n, n' .. m ]   enumFromThenTo n n' m
  16989.  
  16990.                      Produces the list of elements from  [n,n'..]  upto
  16991.  
  16992.  
  16993.                                       37
  16994.  
  16995.  
  16996.  
  16997.  
  16998. Introduction to Gofer                         10.1 Arithmetic sequences
  16999.  
  17000.  
  17001.                      the limit value m.   If  m  is  less  than  n  and
  17002.                      [n,n'..] is increasing, or m is greater than n and
  17003.                      [n,n'..] is decreasing the  resulting list will be
  17004.                      empty.
  17005.  
  17006.                      e.g. [1,3..12] = [1, 3, 5, 7, 9, 11]
  17007.                           [0,0..10] = [0, 0, 0, 0, 0, 0, 0, etc...
  17008.                           [5,4..1]  = [5, 4, 3, 2, 1]
  17009.  
  17010. In  the  standard  prelude,   the   functions   enumFrom,   enumFromTo,
  17011. enumFromThen and enumFromThenTo are overloaded and may also be used  to
  17012. enumerate lists of characters or floating point values:
  17013.  
  17014.     ? ['0'..'9'] ++ ['A'..'Z']
  17015.     0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
  17016.     (397 reductions, 542 cells)
  17017.  
  17018.     ? [1.2, 1.35 .. 2.00]
  17019.     [1.2, 1.35, 1.5, 1.65, 1.8, 1.95]
  17020.     (56 reductions, 133 cells)
  17021.  
  17022.     ?
  17023.  
  17024. Arithmetic sequences such as those described above play the  same  role
  17025. in functional programming languages as the iterative  `for'  constructs
  17026. in traditional imperative languages.  A good example  of  this  is  the
  17027. example in section 4 used to calculate the sum of the integers  from  1
  17028. upto 10 -- "sum [1..10]".   An  equivalent  program  in  an  imperative
  17029. language might look something like (especially if you think of C!):
  17030.  
  17031.     int i;
  17032.     int total=0;
  17033.     for (i=1; i<=10; i++)
  17034.         total = total + i;
  17035.     return total;
  17036.  
  17037. The advantages of the functional notation in this case are clear:
  17038.  
  17039.    o  It is more compact.
  17040.  
  17041.    o  It separates the task of  generating  the  sequence  of  integers
  17042.       [1..10] from the task of finding their sum.
  17043.  
  17044.    o  It does not require the declaration or use of auxiliary variables
  17045.       such as "i" and "total" in the above.
  17046.  
  17047.  
  17048. 10.2 List comprehensions
  17049. -------------------------
  17050. List comprehensions provide another very powerful and compact  notation
  17051. for describing certain kinds of list expression.  The basic form  of  a
  17052. list comprehension is:
  17053.  
  17054.                       [ <expr> | <qualifiers> ]
  17055.  
  17056. There are three kinds of qualifier that can be used in Gofer:
  17057.  
  17058.  
  17059.                                       38
  17060.  
  17061.  
  17062.  
  17063.  
  17064. Introduction to Gofer                          10.2 List comprehensions
  17065.  
  17066.  
  17067.   o  Generators: A qualifier of the form pat<-exp is  used  to  extract
  17068.      each element that matches the pattern pat from the list exp in the
  17069.      order that they elements appear in that list.  A simple example of
  17070.      this is the expression [x*x | x<-[1..10]] which denotes  the  list
  17071.      of the squares of the integers between  1  and  10  inclusive  and
  17072.      evaluates to [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] as expected.
  17073.  
  17074.      Formally, we can define the meaning of a list comprehension with a
  17075.      single generator by the equation:
  17076.  
  17077.           [ e | pat <- exp ]  =  loop exp
  17078.                                  where loop []       = []
  17079.                                        loop (pat:xs) = e : loop xs
  17080.                                        loop (_:xs)   = loop xs
  17081.  
  17082.      If pat is an irrefutable pattern (for example,  a  variable)  then
  17083.      this is equivalent to:
  17084.  
  17085.           [ e | pat <- exp ]  =  map f exp
  17086.                                  where f pat = e
  17087.  
  17088.      The full definition is needed for those cases  where  the  pattern
  17089.      pat may not match all of the elements in the list  exp.   This  is
  17090.      the case in expressions such as [ y | (3,y)<-[(1,2),(3,4),(5,6)] ]
  17091.      which evaluates to the singleton list [4].
  17092.  
  17093.   o  Filters: A boolean  valued  expression  may  also  be  used  as  a
  17094.      qualifier in which case it is  often  called  a  filter.   We  can
  17095.      define the meaning of a list comprehension with a single filter by
  17096.      the equation:
  17097.  
  17098.             [ e | condition ]  =  if condition then [e] else []
  17099.  
  17100.      Whilst this form of list comprehension is occasionally  useful  as
  17101.      it stands, it is more common to use filters  in  conjunction  with
  17102.      generators as described below.
  17103.  
  17104.   o  Local definitions: A qualifier of the form pat=expr can be used to
  17105.      introduce a local definition within  a  list  comprehension.   Its
  17106.      meaning can be defined formally using the equation:
  17107.  
  17108.          [ e | pat = exp ]  =  [ let pat=exp in e ]
  17109.  
  17110.      As in the case of filters, local  definitions  are  more  commonly
  17111.      used within lists of more than one qualifier as  described  below.
  17112.      Particular care should be taken to distinguish  a  filter  of  the
  17113.      form pat==expr from a local definition of the form pat=expr.
  17114.  
  17115.      [ASIDE: I originally suggested this form of qualifier in a message
  17116.      sent to the Haskell mailing list, only to discover that a  similar
  17117.      (and more comprehensive) suggestion had been made by Kevin Hammond
  17118.      almost a year earlier.  There was a certain amount of  controversy
  17119.      surrounding the choice of an appropriate syntax and semantics  for
  17120.      the construct and consequently, this feature is not currently part
  17121.      of the Haskell  standard.   The  syntax  and  semantics  above  is
  17122.      implemented by Gofer in the hope  that  it  will  give  functional
  17123.  
  17124.  
  17125.                                       39
  17126.  
  17127.  
  17128.  
  17129.  
  17130. Introduction to Gofer                          10.2 List comprehensions
  17131.  
  17132.  
  17133.      programmers an opportunity to experiment  with  this  facility  in
  17134.      their own programs.]
  17135.  
  17136. The real power of this notation is that it is possible to  use  several
  17137. qualifiers, separated by commas on the right of the  vertical  bar  `|'
  17138. symbol in a list comprehension.  Formally, if qs1 and qs2 are two  such
  17139. lists of qualifiers,  then  we  can  define  the  meaning  of  multiple
  17140. qualifiers using:
  17141.  
  17142.          [ e | qs1, qs2 ]  =  concat [ [ e | qs2 ] | qs1 ]
  17143.  
  17144. The  following  examples  illustrate  how  this  definition  works   in
  17145. practice:
  17146.  
  17147.   o  Variables generated by later qualifiers  vary  more  quickly  than
  17148.      those generated by earlier qualifiers:
  17149.  
  17150.          ? [ (x,y) | x<-[1..3], y<-[1..2] ]
  17151.          [(1,1), (1,2), (2,1), (2,2), (3,1), (3,2)]
  17152.          (107 reductions, 246 cells)
  17153.          ?
  17154.  
  17155.   o  Later qualifiers may use the values generated by earlier ones:
  17156.  
  17157.          ? [ (x,y) | x<-[1..3], y<-[1..x]]
  17158.          [(1,1), (2,1), (2,2), (3,1), (3,2), (3,3)]
  17159.          (107 reductions, 246 cells)
  17160.  
  17161.          ? [ x | x<-[1..10], even x ]
  17162.          [2, 4, 6, 8, 10]
  17163.          (108 reductions, 171 cells)
  17164.          ?
  17165.  
  17166.   o  Variables defined in later qualifiers  hide  those  introduced  by
  17167.      earlier  ones.   The  following   expressions   are   valid   list
  17168.      comprehensions, but this style of definition in  which  names  are
  17169.      reused can result in programs which are difficult  to  understand,
  17170.      and is not recommended:
  17171.  
  17172.          ? [ x | x<-[[1,2],[3,4]], x<-x ]
  17173.          [1, 2, 3, 4]
  17174.          (18 reductions, 53 cells)
  17175.  
  17176.          ? [ x | x<-[1,2], x<-[3,4] ]
  17177.          [3, 4, 3, 4]
  17178.          (18 reductions, 53 cells)
  17179.          ?
  17180.  
  17181.   o  Changing  the  order  of  qualifiers  has  a  direct   effect   on
  17182.      efficiency.  The following two examples produce the  same  result,
  17183.      but the first uses more reductions and cells  because  it  repeats
  17184.      the evaluation of "even x" for each possible value of "y".
  17185.  
  17186.          ? [ (x,y) | x<-[1..3], y<-[1..2], even x ]
  17187.          [(2,1), (2,2)]
  17188.          (110 reductions, 186 cells)
  17189.  
  17190.  
  17191.                                       40
  17192.  
  17193.  
  17194.  
  17195.  
  17196. Introduction to Gofer                          10.2 List comprehensions
  17197.  
  17198.  
  17199.          ? [ (x,y) | x<-[1..3], even x, y<-[1..2] ]
  17200.          [(2,1), (2,2)]
  17201.          (62 reductions, 118 cells)
  17202.          ? 
  17203.  
  17204.      The following example illustrates a similar kind of behaviour with
  17205.      local definitions; in the first case the expression  "fact  x"  is
  17206.      evaluated twice for each possible value of "x", whilst the  second
  17207.      expression uses a local definition to ensure that  the  evaluation
  17208.      is not repeated:
  17209.  
  17210.          ? [ fact x + y | x<-[1..3], y<-[1..2] ]
  17211.          [2, 3, 3, 4, 7, 8]
  17212.          (246 reductions, 398 cells)
  17213.  
  17214.          ? [ factx + y | x<-[1..3], factx = fact x, y<-[1..2] ]
  17215.          [2, 3, 3, 4, 7, 8]
  17216.          (173 reductions, 294 cells)
  17217.          ?
  17218.  
  17219.  
  17220. 10.3 Lambda expressions
  17221. ------------------------
  17222. In addition to  named  function  definitions,  Gofer  also  allows  the
  17223. definition and use of unnamed functions using a `lambda expression'  of
  17224. the form:
  17225.  
  17226.                   \ <atomic patterns> -> <expr>
  17227.  
  17228. [ASIDE:  This  is  a  slight  generalisation  of  the  form  of  lambda
  17229. expression  used  in  most   theoretical   treatments   of   functional
  17230. programming and  dating  back  to  the  pioneering  work  of  logicians
  17231. including  Alonzo Church and  Haskell Curry,  from whom the programming
  17232. language takes its name.  The `\' character used at the beginning of  a
  17233. Gofer lambda expression has been  chosen  for  its  resemblance  to the
  17234. greek letter lambda that might be used if the  standard  character  set
  17235. were  a little larger.]
  17236.  
  17237. This expression denotes a function taking a number of  parameters  (one
  17238. for each pattern) and producing the result specified by the  expression
  17239. to the right of the -> symbol.  For example, (\x->x*x)  represents  the
  17240. function which takes a single integer argument  `x'  and  produces  the
  17241. square of that  number as its result.   Another  example is the  lambda
  17242. expression (\x y->x+y) which takes two integer  arguments  and  outputs
  17243. their sum; this expression is in fact equivalent to the (+) operator:
  17244.  
  17245.     ? (\x y->x+y) 2 3
  17246.     5
  17247.     (3 reductions, 7 cells)
  17248.     ?
  17249.  
  17250. A lambda expression of the form illustrated above is equivalent to  the
  17251. following expression using a local definition:
  17252.  
  17253.       (let newName <atomic patterns> = <expr> in newName)
  17254.  
  17255.  
  17256.  
  17257.                                       41
  17258.  
  17259.  
  17260.  
  17261.  
  17262. Introduction to Gofer                           10.3 Lambda expressions
  17263.  
  17264.  
  17265. where "newName" is a new variable name, chosen to avoid conflicts  with
  17266. other variables that are already in use.  This name will be printed  if
  17267. you enter an expression involving a lambda expression without supplying
  17268. the full number of parameters for that function:
  17269.  
  17270.     ? (\x y -> x+y) 42
  17271.     v117 42
  17272.     (2 reductions, 14 cells)
  17273.     ?
  17274.  
  17275. Lambda expressions  are  particularly  useful  for  certain  styles  of
  17276. functional programming; an example of this  is  the  continuation-based
  17277. approach to I/O described in section 12.
  17278.  
  17279.  
  17280. 10.4 Case expressions
  17281. ---------------------
  17282. A case expression can be used to evaluate an expression and,  depending
  17283. on the result, return one of a number of  possible  values.   As  such,
  17284. case statements are a  straightforward  generalisation  of  conditional
  17285. expressions.  Indeed, an expression of the form "if e then t else f" is
  17286. in fact equivalent to the case expression:
  17287.  
  17288.                         case e of 
  17289.                           True  -> t
  17290.                           False -> f
  17291.  
  17292. In general, a case expression takes the form "case exp of  alts"  where
  17293. exp  is  the  expression  to  be  evaluated  and  alts  is  a  list  of
  17294. alternatives, each of which is of the form:
  17295.  
  17296.         pat -> rhs                    for a simple alternative
  17297.  
  17298.     or: pat | condition1 -> rhs1      using guard expressions as
  17299.             | condition2 -> rhs2      described in section 9.2 for
  17300.                   .                   function definitions
  17301.                   .
  17302.             | conditionn -> rhsn
  17303.  
  17304. In Gofer, a case expression of the form case e of alts  is  implemented
  17305. by choosing a new function name "newName" as in  the  previous  section
  17306. and  using  the  alternatives  in  alts  to  construct  an  appropriate
  17307. definition for this function (essentially by replacing each `->' symbol
  17308. with a `=' symbol).  The complete case expression is  then  treated  as
  17309. being equivalent to the expression "newName e".  A  simple  example  of
  17310. this is the "scanl" function whose definition in the standard prelude:
  17311.  
  17312.     scanl f q xs = q : (case xs of
  17313.                         []   -> []
  17314.                         x:xs -> scanl f (f q x) xs)
  17315.  
  17316. is equivalent to:
  17317.  
  17318.     scanl f q xs = q : scanl' xs
  17319.                    where scanl' []     = []
  17320.                          scanl' (x:xs) = scanl f (f q x) xs
  17321.  
  17322.  
  17323.                                       42
  17324.  
  17325.  
  17326.  
  17327.  
  17328. Introduction to Gofer                             10.4 Case expressions
  17329.  
  17330.  
  17331. This latter form is precisely the definition used in [1] (but using the
  17332. name "scan" where Gofer uses "scanl").
  17333.  
  17334. Evaluating a case expression in which none of  the  alternatives  match
  17335. the value  of  the  discriminant  results  in  an  error  such  as  the
  17336. following:
  17337.  
  17338.     ? case [1,2] of [] -> "empty list"
  17339.     {v117 [1, 2]}
  17340.     (6 reductions, 31 cells)
  17341.     ?
  17342.  
  17343. The function name "v117" which appears here is the name of the function
  17344. which is used internally by Gofer  to  implement  the  case  expression
  17345. whilst the expression "[1, 2]" gives the discriminant value which could
  17346. not be matched.
  17347.  
  17348. By combining case expressions with the lambda expressions introduced in
  17349. the previous section, any function declaration can be translated into a
  17350. single equation of the form <functionName> = <expr>.  For example,  the
  17351. standard function "map" whose definition is usually written as:
  17352.  
  17353.     map f []     = []
  17354.     map f (x:xs) = f x : map f xs
  17355.  
  17356. can also be defined by the equation:
  17357.  
  17358.     map = \f xs -> case xs of
  17359.                      []     -> []
  17360.                      (y:ys) -> f y : map f ys
  17361.  
  17362. This kind  of  translation  is  used  in  the  implementation  of  many
  17363. functional programming languages, including Gofer.   See  Simon  Peyton
  17364. Jones book [2] for more details of this.
  17365.  
  17366.  
  17367. 10.5 Operator sections
  17368. ----------------------
  17369. As we have seen, most functions in Gofer taking more than one  argument
  17370. are treated as a function of a  single  argument,  whose  result  is  a
  17371. function which can then be applied to the  remaining  arguments.   Thus
  17372. "(+) 1" denotes the function which takes an integer  argument  "n"  and
  17373. returns the integer value "1+n".   Functions  of  this  kind  involving
  17374. operator symbols are sufficiently common that Gofer provides a  special
  17375. syntax for them.  Using e to denote an atomic expression and the symbol
  17376. "*" to represent an arbitrary infix operator, there are functions (e *)
  17377. and (* e), known as `sections of the operator (*)' defined by:
  17378.  
  17379.                   (e *) x  = e * x
  17380.                   (* e) x  = x * e
  17381.  
  17382. or, using lambda expressions as introduced in section 10.3:
  17383.  
  17384.                   (e *)    =  \x -> e * x
  17385.                   (* e)    =  \x -> x * e
  17386.  
  17387.  
  17388.  
  17389.                                       43
  17390.  
  17391.  
  17392.  
  17393.  
  17394. Introduction to Gofer                            10.5 Operator sections
  17395.  
  17396.  
  17397. For example: (1+)   is the successor function which returns the value
  17398.                     of its argument plus 1,
  17399.              (1.0/) is the reciprocal function,
  17400.              (/2)   is the halving function,
  17401.              (:[])  is the function which maps any value to the
  17402.                     singleton list containing that element.
  17403.  
  17404. In Gofer, the expressions "(e *)" and "(* e)" are actually  treated  as
  17405. abbreviations for "(*) e" and "flip (*) e" respectively,  where  "flip"
  17406. is the function defined by:
  17407.  
  17408.      flip        :: (a -> b -> c) -> b -> a -> c
  17409.      flip  f x y  =  f y x
  17410.  
  17411. There is an important special case which occurs with an  expression  of
  17412. the form (- e); this is interpreted  as  "negate  e"  and  not  as  the
  17413. section which subtracts the value of "e" from its argument.  The latter
  17414. function can be written as the section (+ (- e))  or  as  "subtract  e"
  17415. where "subtract" is the function defined in the standard prelude using:
  17416.  
  17417.     subtract = flip (-)
  17418.  
  17419.  
  17420. 10.6 Explicitly typed expressions
  17421. ----------------------------------
  17422. As described in section 9.12, it is often useful to be able to  declare
  17423. the type of a variable defined in a function or pattern  binding.   For
  17424. much the same reasons, Gofer allows expressions of the form:
  17425.  
  17426.                          <expr> :: <type>
  17427.  
  17428. so that the type of an expression can be  specified  explicitly.   Note
  17429. that the :t command can be used  to  find  the  type  of  a  particular
  17430. expression that is inferred by Gofer:
  17431.  
  17432.     ? :t  \x -> [x]
  17433.     \x -> [x] :: a -> [a]
  17434.  
  17435.     ? :t  sum . map length
  17436.     sum . map length :: [[a]] -> Int
  17437.  
  17438.     ? 
  17439.  
  17440. The types inferred in each case can be modified by  including  explicit
  17441. types in these expressions:
  17442.  
  17443.     ? :t  (\x -> [x]) :: Char -> String
  17444.     \x -> [x] :: Char -> String
  17445.  
  17446.     ? :t  sum . map (length :: String -> Int)
  17447.     sum . map length :: [String] -> Int
  17448.  
  17449.     ?
  17450.  
  17451. Note that an error occurs if the type declared in an  explicitly  typed
  17452. expression is not compatible with the type inferred by Gofer:
  17453.  
  17454.  
  17455.                                       44
  17456.  
  17457.  
  17458.  
  17459.  
  17460. Introduction to Gofer                 10.6 Explicitly typed expressions
  17461.  
  17462.  
  17463.     ? :t (\x -> [x]) :: Int -> a
  17464.     ERROR: Declared type too general
  17465.     *** Expression    : \x -> [x]
  17466.     *** Declared type : Int -> a
  17467.     *** Inferred type : Int -> [Int]
  17468.  
  17469.     ?
  17470.  
  17471. Explicitly typed expressions  are  most  commonly  used  together  with
  17472. overloaded functions and values as described in section 14.
  17473.  
  17474.  
  17475.  
  17476.  
  17477.  
  17478.  
  17479.  
  17480.  
  17481.  
  17482.  
  17483.  
  17484.  
  17485.  
  17486.  
  17487.  
  17488.  
  17489.  
  17490.  
  17491.  
  17492.  
  17493.  
  17494.  
  17495.  
  17496.  
  17497.  
  17498.  
  17499.  
  17500.  
  17501.  
  17502.  
  17503.  
  17504.  
  17505.  
  17506.  
  17507.  
  17508.  
  17509.  
  17510.  
  17511.  
  17512.  
  17513.  
  17514.  
  17515.  
  17516.  
  17517.  
  17518.  
  17519.  
  17520.  
  17521.                                       45
  17522.  
  17523.  
  17524. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  17525.  
  17526. Introduction to Gofer                   12. DIALOGUES: INPUT AND OUTPUT
  17527.  
  17528.  
  17529. 12. DIALOGUES: INPUT AND OUTPUT
  17530.  
  17531. The Gofer system implements a subset of  the  facilities  for  programs
  17532. involving I/O described in the Haskell report [5].  In particular, this
  17533. makes it possible for Gofer programs to be run  interactively,  and  to
  17534. make limited use of  text  files  for  both  reading  and  writing.   A
  17535. significant factor in the design of the Haskell I/O facilities is  that
  17536. it allows  the  use  of  such  programs  without  loss  of  referential
  17537. transparency.
  17538.  
  17539. 12.1 Basic description
  17540. ----------------------
  17541. Programs using the I/O facilities in Gofer are modelled by functions of
  17542. type Dialogue, defined by the type synonym:
  17543.  
  17544.     type Dialogue    =  [Response] -> [Request]
  17545.  
  17546. In other words, a Gofer program produces a list of output values,  each
  17547. of which may be thought of as a request for some  particular  input  or
  17548. output action, and obtains the corresponding list of  operating  system
  17549. responses as its input.  Note that the input list of responses will  be
  17550. evaluated lazily; i.e. we can ensure that we do not attempt  to  obtain
  17551. the response to a given request until that request has been completed.
  17552.  
  17553. The current range of requests supported by Gofer is  described  by  the
  17554. following datatype definition, taken from the standard prelude:
  17555.  
  17556.     data Request  =  -- file system requests:
  17557.                     ReadFile      String         
  17558.                   | WriteFile     String String
  17559.                   | AppendFile    String String
  17560.                      -- channel system requests:
  17561.                   | ReadChan      String 
  17562.                   | AppendChan    String String
  17563.                      -- environment requests:
  17564.                   | Echo          Bool
  17565.  
  17566. Each response is an element  of  the  type  defined  by  the  following
  17567. datatype definition, using an auxiliary datatype IOError to describe  a
  17568. variety of error conditions that may occur:
  17569.  
  17570.     data Response = Success
  17571.                   | Str String 
  17572.                   | Failure IOError
  17573.  
  17574.     data IOError  = WriteError   String
  17575.                   | ReadError    String
  17576.                   | SearchError  String
  17577.                   | FormatError  String
  17578.                   | OtherError   String
  17579.  
  17580. The following list describes the kind of  I/O  behaviour  specified  by
  17581. each form of Request and indicates the possible  Response  values  that
  17582. may be obtained in each case:
  17583.  
  17584.   o  ReadFile  string:  Read  contents  of  file  named  by   "string".
  17585.  
  17586.  
  17587.                                       49
  17588.  
  17589.  
  17590.  
  17591.  
  17592. Introduction to Gofer                            12.1 Basic description
  17593.  
  17594.  
  17595.      Possible responses to this request are:
  17596.  
  17597.        o  Str contents  if the request is successful,  where "contents"
  17598.           is a string (evaluated lazily) containing the contents of the
  17599.           file specified by the ReadFile request.
  17600.  
  17601.        o  Failure (SearchError name) occurs if file  "name"  cannot  be
  17602.           accessed.
  17603.  
  17604.        o  Failure (ReadError name) occurs if some  other  error  occurs
  17605.           whilst opening the file "name".
  17606.  
  17607.   o  WriteFile name string:  Write  the  given  "string"  to  the  file
  17608.      "name".  If the file does not already exist, it is created  before
  17609.      attempting to write the value to file.  If the file already exists
  17610.      then it will be truncated to zero length before the write  begins.
  17611.      No response is obtained until the string argument has  been  fully
  17612.      evaluated and its contents written to  file.   Possible  responses
  17613.      are:
  17614.  
  17615.        o  Success if the write to file was completed successfully.
  17616.  
  17617.        o  Failure (WriteError msg) if  an  error  was  detected  whilst
  17618.           trying to perform the output.  If the problem occurred whilst
  17619.           attempting to open the specified file,  then  "msg"  contains
  17620.           the   filename,   otherwise   it   contains    a    printable
  17621.           representation of the evaluation error which occurred.
  17622.  
  17623.   o  AppendFile name string: Similar to the  WriteFile  request  except
  17624.      that the value of the given "string" is  appended  onto  the  file
  17625.      "name" if that file already exists.  The  responses  that  may  be
  17626.      obtained from this request are the same as those for WriteFile.
  17627.  
  17628.   o  ReadChan name:  Read  from  the  input  stream  "name".  Note that
  17629.      it is an error to attempt to read from the same channel more  than
  17630.      once in the same program.  Possible responses are:
  17631.  
  17632.        o  Str contents if the request is successful,  where  "contents"
  17633.           is  a  string  (evaluated  lazily)  containing  the  list  of
  17634.           characters entered on the input stream.
  17635.  
  17636.        o  Failure (SearchError name) if the  named  channel  cannot  be
  17637.           found.  The only input channel known to Gofer is the standard
  17638.           input channel "stdin".  For convenience, the standard prelude
  17639.           defines the variable stdin bound to this string.
  17640.  
  17641.        o  Failure (ReadError name) if a ReadChan request for the  named
  17642.           channel has already been given by a previous request.
  17643.  
  17644.   o  AppendChan name string:  Output "string" on  channel  "name".   No
  17645.      response is obtained until the string has been fully evaluated and
  17646.      written to the named channel.  Possible responses are:
  17647.  
  17648.        o  Success if the append to channel was completed successfully.
  17649.  
  17650.        o  Failure (SearchError name) if the  named  channel  cannot  be
  17651.  
  17652.  
  17653.                                       50
  17654.  
  17655.  
  17656.  
  17657.  
  17658. Introduction to Gofer                            12.1 Basic description
  17659.  
  17660.  
  17661.           found.  The only output channels known to Gofer are "stdout",
  17662.           "stderr" and "stdecho" (which is actually just  another  name
  17663.           for  "stdout"  in  Gofer).   For  convenience,  the  standard
  17664.           prelude defines variables stdout, stderr and stdecho bound to
  17665.           the corresponding string values.
  17666.  
  17667.        o  Failure (WriteError msg)  if  an  error  is  detected  whilst
  17668.           trying to perform the output.  The string  "msg"  contains  a
  17669.           printable  representation  of  the  evaluation  error   which
  17670.           occurred.
  17671.  
  17672.   o  Echo status: Set the echo status on  the  standard  input  channel
  17673.      stdin to the given boolean value.  If the  echo  status  is  True,
  17674.      then user input will be echoed onto the screen as it is  typed and
  17675.      the usual line editing facilities  (such a  backspace  or  delete)
  17676.      provided by the host system can be used to edit the input lines as
  17677.      they are entered.  If the echo status is  False,  then  individual
  17678.      characters may be read from the standard input channel without any
  17679.      echo or line editing features.
  17680.  
  17681.      Note that at most one Echo request can be used in a  program,  and
  17682.      must precede any ReadChan request for stdin.  If  not  set  by  an
  17683.      explicit Echo request, the echo status defaults to True.  Possible
  17684.      responses are:
  17685.  
  17686.        o  Success if the request was completed successfully.
  17687.  
  17688.        o  Failure  (OtherError  msg)  if  the  request  could  not   be
  17689.           completed either because a readChannel request for stdin  has
  17690.           already been processed, or because a  previous  Echo  request
  17691.           has already been given.  The  corresponding  values of  "msg"
  17692.           are   "stdin already in use"   and    "repeated Echo request"
  17693.           respectively.
  17694.  
  17695. A simple example of a program using these facilities to output a short
  17696. message on the standard output stream is:
  17697.  
  17698.     helloWorld      :: Dialogue
  17699.     helloWorld resps = [AppendChan stdout "hello, world"]
  17700.  
  17701. Any expression entered into Gofer of type "Dialogue" will be treated as
  17702. a Gofer program using I/O and will be executed accordingly:
  17703.  
  17704.     ? helloWorld
  17705.     hello, world
  17706.     (1 reduction, 28 cells)
  17707.     ?
  17708.  
  17709. Notice that without the explicit type declaration, the type that  would
  17710. be  inferred  for  helloWorld   would   be  a -> [Request],  and  hence
  17711. helloWorld would not be executed as a Dialogue program.  This point can
  17712. be illustrated using lambda expressions:
  17713.  
  17714.     ? \resps -> [AppendChan stdout "hello, world"]
  17715.     v128
  17716.     (1 reduction, 7 cells)
  17717.  
  17718.  
  17719.                                       51
  17720.  
  17721.  
  17722.  
  17723.  
  17724. Introduction to Gofer                            12.1 Basic description
  17725.  
  17726.  
  17727.     ? (\resps -> [AppendChan stdout "hello, world"]) :: Dialogue
  17728.     hello, world
  17729.  
  17730.     (1 reduction, 28 cells)
  17731.     ? 
  17732.  
  17733. In many cases the  structure  of  an  expression  is  enough  to  fully
  17734. determine its type  as  Dialogue  (or  equivalently  as  [Response]  ->
  17735. [Request]), in which case no explicit types are required to ensure that
  17736. the expression is treated as a Gofer program using I/O:
  17737.  
  17738.     ? \~[Success] -> [AppendChan stdout "hello, world"]
  17739.     hello, world
  17740.     (1 reduction, 29 cells)
  17741.     ?
  17742.  
  17743. Note the use of the  irrefutable  pattern  ~[Success]  for  the  lambda
  17744. expression in the last  example;  without  this,  the  usual  rules  of
  17745. pattern matching as described in section 9 would force Gofer to try  to
  17746. match the pattern [Success] against the list of responses,  before  the
  17747. corresponding request had been produced:
  17748.  
  17749.     ? \ [Success] -> [AppendChan stdout "hello, world"]
  17750.  
  17751.     Aborting Dialogue:
  17752.           {error "Attempt to read response before request complete"}
  17753.     (50 reductions, 229 cells)
  17754.     ?
  17755.  
  17756. The next example takes a single string as a parameter and displays  the
  17757. contents of the corresponding file:
  17758.  
  17759.     showFile               :: String -> Dialogue 
  17760.     showFile name ~(read:_) = [ReadFile name, AppendChan stdout result] 
  17761.      where result = case read of Str contents -> contents 
  17762.                                  Failure _    -> "Can't open " ++ name 
  17763.  
  17764. With a few modifications, we can  implement  a  similar  program  which
  17765. prompts for, and reads, a filename from the  standard  input  and  then
  17766. reads and displays the contents of that file as before.   This  program
  17767. is based on a similar example in the Haskell report [5]:
  17768.  
  17769.     main ~(Success : ~(Str userInput : ~(r3 : _)))  
  17770.       = [ AppendChan stdout "Please type a filename: ", 
  17771.           ReadChan stdin, 
  17772.           ReadFile name, 
  17773.           AppendChan stdout (case r3 of Str contents -> contents
  17774.                                         Failure _    -> "Can't open "
  17775.                                                         ++ name)
  17776.         ] where (name : _) = lines userInput
  17777.  
  17778.  
  17779.  
  17780.  
  17781.  
  17782.  
  17783.  
  17784.  
  17785.                                       52
  17786.  
  17787.  
  17788.  
  17789.  
  17790. Introduction to Gofer                       12.2 Continuation style I/O
  17791.  
  17792.  
  17793. 12.2 Continuation style I/O
  17794. ---------------------------
  17795. As an alternative to the `stream-based' approach to programs using  the
  17796. I/O facilities in Gofer, the  standard  prelude  defines  a  family  of
  17797. functions which enables such programs to be written in a `continuation'
  17798. style.  The basic idea is to define a function  corresponding  to  each
  17799. different kind of request, whose parameters include the values required
  17800. to make the request together with two continuations.  The continuations
  17801. are functions describing "what to do next", one of which is used if the
  17802. request is successful, the other if the request fails.
  17803.  
  17804. As an example, the ReadFile request  is  represented  by  the  function
  17805. "readFile" whose definition is equivalent to:
  17806.  
  17807.     readFile name fail succ ~(r:rs) = ReadFile name : rest rs
  17808.      where rest = case r of Str s           -> succ s
  17809.                             Failure ioerror -> fail ioerror
  17810.  
  17811. The first thing to happen  when  a  dialogue  expression  of  the  form
  17812. "readFile name fail  succ"  is  evaluated  is  that  the  corresponding
  17813. request "ReadFile name" is added to the list of I/O  requests.   A  new
  17814. dialogue value "rest" is chosen,  depending  on  the  response  to  the
  17815. ReadFile request, and the program continues by  passing  the  remaining
  17816. part of the response list to "rest".  The functions "succ"  and  "fail"
  17817. (called the success and failure  continuations  respectively)  describe
  17818. the way in which the new dialogue "rest" is obtained.
  17819.  
  17820. The following example (edited a little to fit within the margins of this
  17821. document) shows how the readFile function described above can be used to
  17822. print the contents of a file called "test" on the display:
  17823.  
  17824.     ? readFile "test" (\ioerror resps -> [])
  17825.                       (\s resps->[AppendChan stdout s])
  17826.     This is a test message
  17827.  
  17828.     (4 reductions, 52 cells)
  17829.     ?
  17830.  
  17831. The success continuation "(\s resps->[AppendChan stdout s])" used  here
  17832. receives the contents of the file "test" in the the parameter  "s"  and
  17833. uses an AppendChan request to output that string on  the  display.   As
  17834. this example shows, the stream based approach of the  previous  section
  17835. can be combined with the continuation based style of  I/O  without  any
  17836. difficulty.  The failure continuation "(\ioerror resps -> [])"  ignores
  17837. the error condition "ioerror" which caused  the  request  to  fail  and
  17838. gives a dialogue which terminates immediately without any action.   For
  17839. example, assuming that the file "Test" cannot be found:
  17840.  
  17841.     ? readFile "Test" (\ioerror resps -> [])
  17842.                       (\s resps->[AppendChan stdout s])
  17843.  
  17844.     (4 reductions, 24 cells)
  17845.     ?
  17846.  
  17847. In practice, it is  usually  a  good  idea  to  produce  some  kind  of
  17848. diagnostic message when an error occurs:
  17849.  
  17850.  
  17851.                                       53
  17852.  
  17853.  
  17854.  
  17855.  
  17856. Introduction to Gofer                       12.2 Continuation style I/O
  17857.  
  17858.  
  17859.     ? readFile "Test"
  17860.          (\ioerror resps -> [AppendChan stdout (show' ioerror)])
  17861.          (\s resps       -> [AppendChan stdout s])
  17862.     SearchError "Test"
  17863.     (11 reductions, 59 cells)
  17864.     ?
  17865.  
  17866. In each of the  examples  above,  the  failure  continuation  has  type
  17867. "FailCont" as defined by the following type  synonym  in  the  standard
  17868. prelude:
  17869.  
  17870.    type FailCont  =  IOError -> Dialogue
  17871.  
  17872. Similarly, the success continuation, which takes a string  representing
  17873. an input string and produces a new Dialogue has type "StrCont":
  17874.  
  17875.     type StrCont  =  String -> Dialogue
  17876.  
  17877. A third kind of continuation is needed for those requests which  return
  17878. a  response  of  the  form  "Success"  if  successful   (e.g.    output
  17879. requests).  In this case the continuation is simply another dialogue:
  17880.  
  17881.     type SuccCont =  Dialogue
  17882.  
  17883. The following list  gives  the  type  of  each  of  the  six  functions
  17884. corresponding to the six different kinds of I/O  request  described  in
  17885. the previous section.  Full definitions for each of these functions are
  17886. given in appendix B:
  17887.  
  17888.     readFile   :: String -> FailCont -> StrCont -> Dialogue
  17889.     writeFile  :: String -> String -> FailCont -> SuccCont -> Dialogue
  17890.     appendFile :: String -> String -> FailCont -> SuccCont -> Dialogue
  17891.     readChan   :: String -> FailCont -> StrCont  -> Dialogue
  17892.     appendChan :: String -> String -> FailCont -> SuccCont -> Dialogue
  17893.     echo       :: Bool -> FailCont -> SuccCont -> Dialogue
  17894.  
  17895. As an illustration of the use of these functions, we show how  each  of
  17896. the example programs from the previous section can be  rewritten  using
  17897. the  continuation  based  style  of  I/O,  starting  with  the  program
  17898. "helloWorld":
  17899.  
  17900.     helloWorld :: Dialogue
  17901.     helloWorld  = appendChan stdout "hello, world" abort done
  17902.  
  17903. In this case, the explicit type declaration is  not  actually  required
  17904. since the type of the expression is completely determined by  the  type
  17905. of "appendChan".  The failure continuation "abort" is equivalent to the
  17906. function "(\ioerror resps -> [])" described above  and  terminates  the
  17907. program if an error occurs without any further action.   In  a  similar
  17908. way, "done"  is  the  trivial  dialogue  which  terminates  immediately
  17909. without any action.   Both of these values are defined in the  standard
  17910. prelude:
  17911.  
  17912.    done         :: Dialogue
  17913.    done resps    = []
  17914.  
  17915.  
  17916.  
  17917.                                       54
  17918.  
  17919.  
  17920.  
  17921.  
  17922. Introduction to Gofer                       12.2 Continuation style I/O
  17923.  
  17924.  
  17925.    abort        :: FailCont
  17926.    abort ioerror = done
  17927.  
  17928. Using the same approach, the "showFile" and "main"  programs  from  the
  17929. previous section are written as:
  17930.  
  17931.     showFile :: String -> Dialogue
  17932.     showFile name
  17933.      = readFile name (\ioerror -> appendChan stdout
  17934.                                      ("Can't open " ++ name) abort done)
  17935.                      (\contents-> appendChan stdout contents abort done)
  17936.  
  17937.     main :: Dialogue
  17938.     main  = appendChan stdout "Please type a filename: " abort
  17939.             (readChan stdin abort
  17940.             (\userInput -> let (name : _) = lines userInput in
  17941.              readFile name
  17942.               (\ioerror  -> appendChan stdout ("Can't open " ++ name)
  17943.                                 abort done)
  17944.               (\contents -> appendChan stdout contents abort done)))
  17945.  
  17946.  
  17947. 12.3 Interactive programs
  17948. -------------------------
  17949. One of the principal motivations for including facilities  for  I/O  in
  17950. Gofer programs was to provide a way of using  interactive  programs  as
  17951. described in [1].  An interactive program is represented by a  function
  17952. of type String -> String mapping an input string of characters  entered
  17953. at the keyboard into an output string to be displayed on the screen.
  17954.  
  17955. There are two functions defined in the standard prelude  which  can  be
  17956. used to `execute' functions of this kind as interactive programs:
  17957.  
  17958.   o  "interact f" executes f::String->String as an interactive  program
  17959.      with echo on.  This  means  that  characters  are  read  from  the
  17960.      keyboard a line at a time.  The usual editing characters  such  as
  17961.      backspace can be used to correct mistakes which are noticed before
  17962.      the return key is pressed at the end  of  each  line.   The  input
  17963.      stream can be terminated by typing an end of file character at the
  17964.      beginning of a line:
  17965.  
  17966.          ? interact (map toUpper)
  17967.          This text was entered using the interact function
  17968.          THIS TEXT WAS ENTERED USING THE INTERACT FUNCTION
  17969.          ^Z
  17970.          (874 reductions, 1037 cells)
  17971.          ?
  17972.  
  17973.   o  "run f" behaves like "interact f" except that echo is turned  off.
  17974.      In this case, the only way of terminating the input stream without
  17975.      reaching the end of the string produced  by  "f"  is  to  use  the
  17976.      interrupt key:
  17977.  
  17978.          ? run (map toUpper)     
  17979.          ALTHOUGH THIS IS ENTERED IN LOWER CASE, IT STILL
  17980.          APPEARS IN UPPER CASE !
  17981.  
  17982.  
  17983.                                       55
  17984.  
  17985.  
  17986.  
  17987.  
  17988. Introduction to Gofer                         12.3 Interactive programs
  17989.  
  17990.  
  17991.          {Interrupted!}
  17992.  
  17993.          (1227 reductions, 1463 cells)
  17994.          ?
  17995.  
  17996. [ASIDE: of these two functions, only "interact" is also included in the
  17997. standard prelude for Haskell, although "run" may also  be  added  to  a
  17998. Haskell system using the definition below.]
  17999.  
  18000. The definitions of "interact" and "run"  provide  further  examples  of
  18001. Gofer programs using simple I/O facilities:
  18002.  
  18003.     interact        :: (String -> String) -> Dialogue
  18004.     interact f       = readChan stdin abort
  18005.                             (\s -> appendChan stdout (f s) abort done)
  18006.  
  18007.     run             :: (String -> String) -> Dialogue
  18008.     run f            = echo False abort (interact f)
  18009.  
  18010. [EXERCISE for the interested reader:  construct alternative definitions
  18011. for these functions using the stream based approach from section 12.1.]
  18012.  
  18013.  
  18014.  
  18015.  
  18016.  
  18017.  
  18018.  
  18019.  
  18020.  
  18021.  
  18022.  
  18023.  
  18024.  
  18025.  
  18026.  
  18027.  
  18028.  
  18029.  
  18030.  
  18031.  
  18032.  
  18033.  
  18034.  
  18035.  
  18036.  
  18037.  
  18038.  
  18039.  
  18040.  
  18041.  
  18042.  
  18043.  
  18044.  
  18045.  
  18046.  
  18047.  
  18048.  
  18049.                                       56
  18050.  
  18051.  
  18052.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  18053.  
  18054. Introduction to Gofer                                        13. LAYOUT
  18055.  
  18056.  
  18057. 13. LAYOUT
  18058.  
  18059. 13.1 Comments
  18060. -------------
  18061. Comments provide an informal but useful way  of  annotating  a  program
  18062. with  a  description  of  its  purpose,  structure   and   development.
  18063. Following  the  definition  of  Haskell,  two  styles  of  comment  are
  18064. supported by Gofer:
  18065.  
  18066.   o  A one line comment begins with the  two  characters  "--"  and  is
  18067.      terminated at the end of the same line.   Note  that  an  operator
  18068.      symbol cannot begin with "--" as  this  will  be  treated  as  the
  18069.      beginning of a comment.  It is however possible  to  use  the  two
  18070.      characters "--" at any other position within an  operator  symbol.
  18071.      Thus a line such as:
  18072.  
  18073.                            (xs ++ ys) -- xs
  18074.  
  18075.      includes a comment and will actually be treated as if the line had
  18076.      been written:
  18077.                                (xs ++ ys)
  18078.  
  18079.      Whereas the line:
  18080.  
  18081.                            xs >--> ys >--> zs
  18082.  
  18083.      does not contain any comments (although it  will  cause  an  error
  18084.      unless ">-->" has been defined  using  an  appropriate  infixl  or
  18085.      infixr declaration).
  18086.  
  18087.   o  A nested comment begins with the characters "{-",  ends  with  the
  18088.      characters "-}" and may span  any  number  of  lines.   [N.B.  the
  18089.      initial "{-" string  cannot  overlap  with  the  terminating  "-}"
  18090.      string so that the shortest possible nested comment is "{--}", and
  18091.      not "{-}"].  An unterminated nested comment will be treated as  an
  18092.      error.
  18093.  
  18094.      As the name suggests, comments of this kind may be nested so  that
  18095.      "{- {- ... -} ... {- ... -} -}" is treated as  a  single  comment.
  18096.      This makes nested comments particularly convenient  for  enclosing
  18097.      parts  of  a  program  which  may  already  contain  other  nested
  18098.      comments.
  18099.  
  18100. Both kinds of comment may be used in expressions entered directly  into
  18101. the Gofer system, or more usually, in files of definitions loaded  into
  18102. Gofer.  The two  styles  of  comment  may  be  mixed  within  the  same
  18103. expression or program, remembering that the string "--" has no  special
  18104. significance within a nested comment and that the strings "{-" and "-}"
  18105. have no special significance in a single line comment.  Thus:
  18106.  
  18107.             [ 2, -- {-                 [ 2, {-
  18108.               3, -- -}                   -- -} 3,
  18109.               4 ]                        4 ]
  18110.  
  18111. are both equivalent to the list expression [2,3,4].
  18112.  
  18113.  
  18114.  
  18115.                                       57
  18116.  
  18117.  
  18118.  
  18119.  
  18120. Introduction to Gofer                              13.2 The layout rule
  18121.  
  18122.  
  18123. 13.2 The layout rule
  18124. --------------------
  18125. In a tradition dating back at least a quarter of a century to  Landin's
  18126. ISWIM family of languages,  most  Gofer  programs  use  indentation  to
  18127. indicate the structure of a program.  For example, in a definition such
  18128. as:
  18129.  
  18130.                     f x y = g (x + w)
  18131.                             where g u = u + v
  18132.                                         where v = u * u
  18133.                                   w   = 2 + y
  18134.  
  18135. it is clear from the layout that the definition of w is intended to  be
  18136. local to f rather than to g.  Another example  where  layout  plays  an
  18137. important role is in distinguishing the two definitions:
  18138.  
  18139.          example x y z = a + b       example x y z = a + b
  18140.                where a = f x y             where a   = f x
  18141.                      b = g z                     y b = g z
  18142.  
  18143. There are three situations in Gofer where indentation is typically used
  18144. to determine the structure of a program:
  18145.  
  18146.   o  At the top-level of a file of definitions.
  18147.  
  18148.   o  In a group of local declarations following either of the  keywords
  18149.      "let" or "where".
  18150.  
  18151.   o  In a group of alternatives in a  case  expression,  following  the
  18152.      keyword "of".
  18153.  
  18154. In each case, Gofer actually expects to find a list of  items  enclosed
  18155. between braces `{' and `}' with individual  items  separated  from  one
  18156. another by semicolons `;'.  However, if the leading brace is not  found
  18157. then Gofer uses the layout rule described below to arrange for `{', `}'
  18158. and `;' tokens to be  inserted  into  the  input  stream  automatically
  18159. according to the indentation of each line.
  18160.  
  18161. In this way, the first example above will in fact be treated as if the
  18162. user had entered:
  18163.  
  18164.                     f x y = g (x + w)
  18165.                             where {g u = u + v
  18166.                                          where {v = u * u
  18167.                                   }; w   = 2 + y
  18168.                     }
  18169.  
  18170. or, equivalently, just:
  18171.  
  18172.   f x y = g (x + w) where {g u = u + v where {v = u * u}; w = 2 + y}
  18173.  
  18174. where the additional punctuation using the `{', `}' and `;'  characters
  18175. makes the intended grouping clear, regardless of indentation.
  18176.  
  18177.  
  18178.  
  18179.  
  18180.  
  18181.                                       58
  18182.  
  18183.  
  18184.  
  18185.  
  18186. Introduction to Gofer                              13.2 The layout rule
  18187.  
  18188.  
  18189. The layout rule used in Gofer is the same as that of Haskell,  and  can
  18190. be described as follows:
  18191.  
  18192.   o  An opening brace `{' is inserted in front of the  first  token  at
  18193.      the beginning of a file or following one of the keywords  "where",
  18194.      "let" or "of", unless that token is itself an opening brace.
  18195.  
  18196.   o  A `;' token is inserted  in  front  of  the  first  token  in  any
  18197.      subsequent line with exactly the same indentation as the token  in
  18198.      front of which the opening brace was inserted.
  18199.  
  18200.   o  The layout rule ends and a `}' token is inserted in front  of  the
  18201.      first token in a subsequent line  whose  indentation  is  strictly
  18202.      less than that of the token in front of which  the  opening  brace
  18203.      was inserted.
  18204.  
  18205.   o  A closing brace `}' will also be inserted at any  point  where  an
  18206.      otherwise unexpected token is encountered.  This part of the rule
  18207.      makes it possible to use expressions such as:
  18208.  
  18209.                        let a = fact 12 in a+a
  18210.  
  18211.      without needing to use the layout characters explicitly as in:
  18212.  
  18213.                       let {a = fact 12} in a+a.
  18214.  
  18215.   o  Lines containing only whitespace (blanks and tabs) and comments do
  18216.      not affect the use of the layout rule.
  18217.  
  18218.   o  For the purposes of determining the indentation of each line in  a
  18219.      file, tab stops are assumed to be placed every 8 characters,  with
  18220.      the leftmost tab stop in column 9.  Each tab character inserts one
  18221.      or more spaces as necessary to move to the next tab stop.
  18222.  
  18223.   o  The indentation of the end of file token is zero.
  18224.  
  18225. The following (rather contrived) program, is based on an example in the
  18226. Haskell report [5], and provides an extended example of the use of  the
  18227. layout rule.  A file containing the following definitions:
  18228.  
  18229.     data Stack a = Empty
  18230.                  | MkStack a (Stack a)
  18231.  
  18232.     push    :: a -> Stack a -> Stack a
  18233.     push x s = MkStack x s
  18234.  
  18235.     size  :: Stack a -> Int
  18236.     size s = length (stkToList s) where
  18237.                stkToList Empty         = []
  18238.                stkToList (MkStack x s) = x:xs where xs = stkToList s
  18239.  
  18240.     pop :: Stack a -> (a, Stack a)
  18241.     pop (MkStack x s) = (x, case s of r -> i r where i x = x)
  18242.  
  18243.     top :: Stack a -> a
  18244.     top (MkStack x s) = x
  18245.  
  18246.  
  18247.                                       59
  18248.  
  18249.  
  18250.  
  18251.  
  18252. Introduction to Gofer                              13.2 The layout rule
  18253.  
  18254.  
  18255. will be treated by Gofer as if it has been written:
  18256.  
  18257.     {data Stack a = Empty
  18258.                   | MkStack a (Stack a)
  18259.  
  18260.     ;push    :: a -> Stack a -> Stack a
  18261.     ;push x s = MkStack x s
  18262.  
  18263.     ;size  :: Stack a -> Int
  18264.     ;size s = length (stkToList s) where
  18265.                {stkToList Empty = []
  18266.                ;stkToList (MkStack x s) = x:xs where {xs = stkToList s
  18267.  
  18268.     }};pop :: Stack a -> (a, Stack a)
  18269.     ;pop (MkStack x s) = (x, case s of {r -> i r where {i x = x}})
  18270.  
  18271.     ;top :: Stack a -> a
  18272.     ;top (MkStack x s) = x
  18273.     }
  18274.  
  18275. Note that some of the more sophisticated forms of expression cannot  be
  18276. written on a single line (and hence entered  directly  into  the  Gofer
  18277. system) without explicit use of the layout characters `{', `}' and `;':
  18278.  
  18279.     ? len [1..10] where len [] = 0;  len (x:xs) = 1 + len xs
  18280.     10
  18281.     (81 reductions, 108 cells)
  18282.  
  18283.     ? f True where f x = case x of True->n where {n=not x}; False->True
  18284.     False
  18285.     (4 reductions, 11 cells)
  18286.  
  18287.     ?
  18288.  
  18289. One situation in which the layout  rule  can  cause  problems  is  with
  18290. top-level definitions.  For example, the two lines:
  18291.  
  18292.    f x  = 1 + x
  18293.     g y = 1 - y
  18294.  
  18295. will be treated as a single line "f x = 1 + x g y = 1 - y", which  will
  18296. cause a syntax  error.   This  kind  of  problem  becomes  rather  more
  18297. difficult to spot if the two definitions are not on  subsequent  lines,
  18298. particularly if they are separated by several lines of  comments.   For
  18299. this reason, it is usually a good  idea  to  ensure  that  all  of  the
  18300. top-level definitions in a file start in the  same  column  (the  first
  18301. column is usually the most convenient).  COBOL and Fortran  programmers
  18302. are not likely to find this problem too distressing :-)
  18303.  
  18304.  
  18305.  
  18306.  
  18307.  
  18308.  
  18309.  
  18310.  
  18311.  
  18312.  
  18313.                                       60
  18314.  
  18315.  
  18316. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ------------------------------------------------------------------------------
  18317.  
  18318. This directory contains a draft of the user documentation for Gofer.
  18319. More precisely, the files in this directory are as follows:
  18320.  
  18321.     Readme        this file
  18322.     hype        a summary of the main features of Gofer
  18323.     ch*, appx_*    individual chapters and appendices for the
  18324.             main Gofer user manual (Gofer version 2.20)
  18325.             (126 pages)
  18326.     release.221    release notes for Gofer 2.21 (21 pages)
  18327.     release.228    release notes for Gofer 2.28 (49 pages)
  18328.     goferdoc.tex    Jeroen Fokker's LaTeX version of the main
  18329.             Gofer user manual.
  18330.  
  18331. Some of the information in the earlier documentation is rather out
  18332. of date.  You have been warned!!!
  18333.  
  18334. Given the number of pages involved, you will probably want to be
  18335. selective about what you read and, in the interests of all of those
  18336. poor trees, selective about what you print -- particularly bearing in
  18337. mind the fact that this is only a draft and likely to change!  Another
  18338. point worth mentioning is that the files are just plain ASCII text
  18339. files -- they can be printed out without problem on a dot matrix
  18340. printer ...
  18341.  
  18342. Those of you with fancy printers and document preparation software may
  18343. be dissappointed that I haven't used anything more than ASCII text to
  18344. produce these documents.  The simple reason for this is that ASCII is
  18345. the only format that I can reasonably guarantee will be available on
  18346. all of the machines on which Gofer is used.
  18347.  
  18348. Entries marked with a `+' in the list below are likely to be of most
  18349. interest to those who are already familiar with Orwell.
  18350.  
  18351. These files may contain many errors; I would be grateful for any
  18352. corrections or suggestions!
  18353.  
  18354.     ch00     Title and contents pages
  18355.  
  18356.     ch01     INTRODUCTION
  18357.     ch02     BACKGROUND AND ACKNOWLEDGEMENTS
  18358.   + ch03     STARTING GOFER
  18359.     ch04     USING GOFER - A BASIC INTRODUCTION
  18360.     ch05     STANDARD AND USER-DEFINED FUNCTIONS
  18361.     ch06     FUNCTION NAMES - IDENTIFIERS AND OPERATORS
  18362.     ch07     BUILT-IN TYPES
  18363.     ch08     ERRORS
  18364.     ch09     MORE ABOUT VALUE DECLARATIONS
  18365.   + ch10     INCREASING YOUR POWER OF EXPRESSION
  18366.     ch11     USER-DEFINED DATATYPES AND TYPE SYNONYMS
  18367.   + ch12     DIALOGUES: INPUT AND OUTPUT
  18368.     ch13     LAYOUT
  18369.   + ch14     OVERLOADING IN GOFER
  18370.  
  18371.   + appx_a   SUMMARY OF GRAMMAR
  18372.   + appx_b   CONTENTS OF STANDARD PRELUDE
  18373.   + appx_c   RELATIONSHIP WITH HASKELL 1.1
  18374.   + appx_d   USING GOFER WITH BIRD+WADLER
  18375.     appx_e   PRIMITIVES
  18376.   + appx_f   INTERPRETER COMMAND SUMMARY
  18377.     appx_g   BIBLIOGRAPHY
  18378.  
  18379. Each file contains one or more pages of plain ASCII text.
  18380. Each page is exactly 66 lines long.
  18381.  
  18382. If the format of these files is unsuitable for your printer, you may
  18383. like to get hold of a copy of the source code and page formatter from
  18384. which these documents were produced.  These should be available from
  18385. the same place that you obtained the files in this directory.
  18386.  
  18387. ------------------------------------------------------------------------------
  18388. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  18389.  
  18390. Introduction to Gofer                          14. OVERLOADING IN GOFER
  18391.  
  18392.  
  18393. 14. OVERLOADING IN GOFER
  18394.  
  18395. One of the biggest differences between Gofer and most other programming
  18396. languages  (with  the  exception  of  Haskell)  is  the   approach   to
  18397. overloading; enabling the definition and use of functions in which  the
  18398. meaning of a function symbol may depend on the types of its arguments.
  18399.  
  18400. Like Haskell, overloading in Gofer is based around  a  system  of  type
  18401. classes which allow overloaded functions to be  grouped  together  into
  18402. related groups  of  functions.   Whilst  the  precise  details  of  the
  18403. approach to type classes used by  Gofer are quite  different from those
  18404. of Haskell,  both rely on the same basic ideas and use a similar syntax
  18405. for defining and using type classes.   It would therefore seem possible
  18406. that experience gained with the overloading system in one language  can
  18407. readily by applied to the other.
  18408.  
  18409. The differences embodied in the Gofer system of classes  stem  from  my
  18410. own, theoretically based investigations into `qualified types' some  of
  18411. which is detailed in references [8-12].  In my  personal  opinion,  the
  18412. Gofer system has some significant advantages over the Haskell  approach
  18413. (see [12] for details) and one of the principal motivations behind  the
  18414. implementation to Gofer was to provide a way of  testing  such  claims.
  18415. One fact which I believe has already been established  using  Gofer  is
  18416. that the use and implementation of overloaded functions need  not  have
  18417. the significant effect on performance that was anticipated  with  early
  18418. implementations of Haskell.
  18419.  
  18420. This section outlines  the  system  of  type  classes  used  in  Gofer,
  18421. indicating briefly how they can be used and how they are implemented.
  18422.  
  18423.  
  18424. 14.1 Type classes and predicates
  18425. --------------------------------
  18426. A type class can be thought of as a family of types (or more  generally
  18427. as a family of tuples of types) whose elements are called instances  of
  18428. the class.  If C is the name of  an  n-parameter  type  class  then  an
  18429. expression of the form C t1 t2 ... tn where t1, t2, ...,  tn  are  type
  18430. expressions is called a predicate and represents the assertion that the
  18431. specified tuple of types is an instance of the class C.
  18432.  
  18433. Given a polymorphic function (e.g. map::(a->b)->[a]->[b]), we are  free
  18434. to use the function at any type which can be obtained  by  substituting
  18435. arbitrary types for each of the type variables in its type.  In  Gofer,
  18436. a type expression may be qualified by  one  or  more  predicates  which
  18437. restrict the range of types at which a value can be used:
  18438.  
  18439. e.g. a function of type C a => a -> a -> a can be treated as a function
  18440.      of type t -> t -> t for any instance t of the class C.
  18441.  
  18442. The predicate C a in the type expression in  the  previous  example  is
  18443. called the context of the type.  Contexts may  contain  more  than  one
  18444. predicate in which case the predicates involved must  be  separated  by
  18445. commas and the context enclosed in parentheses as in (C a, D  b).   The
  18446. empty context is written () and any type expression t is equivalent  to
  18447. the qualified type () => t.  For uniformity, a context  with  only  one
  18448. element may also be enclosed by parentheses.
  18449.  
  18450.  
  18451.                                       61
  18452.  
  18453.  
  18454.  
  18455.  
  18456. Introduction to Gofer                  14.1 Type classes and predicates
  18457.  
  18458.  
  18459. For technical reasons, type synonyms are  not  currently  permitted  in
  18460. predicates.  This is consistent with the use of predicates in  Haskell,
  18461. but may be relaxed, at least in certain cases,  in  later  versions  of
  18462. Gofer.
  18463.  
  18464.  
  18465. 14.2 The type class Eq
  18466. ----------------------
  18467. The type class Eq is a simple and useful example, whose  instances  are
  18468. precisely those types whose elements can be tested for  equality.   The
  18469. declaration of this class given in the standard prelude is as follows:
  18470.  
  18471.     class Eq a where
  18472.         (==), (/=) :: a -> a -> Bool
  18473.         x /= y      = not (x == y)
  18474.  
  18475. There are three parts in any class declaration.   For  this  particular
  18476. example we have:
  18477.  
  18478.   o  The first line (called the `header') of the declaration introduces
  18479.      a name Eq for the  class  and  indicates  that  it  has  a  single
  18480.      parameter, represented by the type variable a.
  18481.  
  18482.   o  The  second  line  of  the  declaration  (the  `signature   part')
  18483.      indicates that there are functions denoted by the operator symbols
  18484.      (==) and (/=) of type a -> a -> Bool for each instance a of  class
  18485.      Eq.  Using the notation introduced in the previous  section,  both
  18486.      of these operators have type:
  18487.  
  18488.                       Eq a => a -> a -> Bool
  18489.  
  18490.      These functions are called the `members' (or  `member  functions')
  18491.      of the class.  [This terminology, taken from  Haskell,  is  rather
  18492.      unfortunate; thinking of a type class  as  a  set  of  types,  the
  18493.      elements of the class are called `instances', whilst the `members'
  18494.      of the class correspond more closely  to  the  instance  variables
  18495.      that are used in the terminology of object-oriented programming.]
  18496.  
  18497.      The intention is that the (==) function will be used to  implement
  18498.      an equality test for each instance of the  class,  with  the  (/=)
  18499.      operator providing the  corresponding  inequality  function.   The
  18500.      ability to include related groups of  functions  within  a  single
  18501.      type class in this way is a useful tool in program design.
  18502.  
  18503.   o  The  third  line  of   the   class   declaration   (the   `default
  18504.      definitions') provides a default definition of the  (/=)  operator
  18505.      in terms of the (==) operator.  Thus it is only necessary to  give
  18506.      a definition for the (==) operator in order to define all  of  the
  18507.      member functions for the class Eq.  It  is  possible  to  override
  18508.      default member definitions by giving an alternative definition  as
  18509.      appropriate for specific instances of the class.
  18510.  
  18511.  
  18512.  
  18513.  
  18514.  
  18515.  
  18516.  
  18517.                                       62
  18518.  
  18519.  
  18520.  
  18521.  
  18522. Introduction to Gofer                       14.2.1 Implicit overloading
  18523.  
  18524.  
  18525. 14.2.1 Implicit overloading
  18526. ---------------------------
  18527. Member functions are clearly marked as overloaded  functions  by  their
  18528. definition as part of a class declaration, but this is not the only way
  18529. in which overloaded  functions  occur  in  Gofer;  the  restriction  to
  18530. particular instances of a type class is also carried over into the type
  18531. of any function defined either directly or indirectly in terms  of  the
  18532. member functions of that class.  For example, the  types  inferred  for
  18533. the following two functions:
  18534.  
  18535.     x  `elem`   xs   =   any (x==) xs
  18536.     xs `subset` ys   =   all (`elem` ys) xs
  18537.  
  18538. are:
  18539.  
  18540.     elem   :: Eq a => a -> [a] -> Bool
  18541.     subset :: Eq a => [a] -> [a] -> Bool
  18542.  
  18543. [ASIDE: On the  other  hand,  if  none  of  the  functions  used  in  a
  18544. particular expression or definition are overloaded then there will  not
  18545. be any overloading in the corresponding value.  Gofer does not  support
  18546. the concept of implicit overloading used  in  some  languages  where  a
  18547. value of a particular type might automatically be coerced to a value of
  18548. some supertype.  An example of this would be the automatic  translation
  18549. of a badly typed expression "1.0 == 1" to a  well-typed  expression  of
  18550. the form "1.0 == float 1" for some  (potentially  overloaded)  coercion
  18551. function "float" mapping numeric values to elements of type Float.]
  18552.  
  18553. Note also that the types appearing in the context of a  qualified  type
  18554. reflect the types at which overloaded functions are used.  Thus:
  18555.  
  18556.     f x ys  =  [x] == ys
  18557.  
  18558. has type  Eq [a] => a -> [a] -> Bool, and not Eq a => a -> [a] -> Bool,
  18559. which is the type that would be assigned to "f" in a Haskell system.
  18560.  
  18561.  
  18562. 14.2.2 Instances of class Eq
  18563. ----------------------------
  18564. Instances of a type class are defined  using  declarations  similar  to
  18565. those used to define  the  corresponding  type  class.   The  following
  18566. examples, taken from the standard prelude, give the definitions  for  a
  18567. number of simple instances of the class Eq:
  18568.  
  18569.     instance Eq Int  where  (==) = primEqInt
  18570.  
  18571.     instance Eq Bool where
  18572.         True  == True   =  True
  18573.         False == False  =  True
  18574.         _     == _      =  False
  18575.  
  18576.     instance Eq Char  where  c == d  =  ord c == ord d
  18577.  
  18578.     instance (Eq a, Eq b) => Eq (a,b) where
  18579.         (x,y) == (u,v)  =  x==u && y==v
  18580.  
  18581.  
  18582.  
  18583.                                       63
  18584.  
  18585.  
  18586.  
  18587.  
  18588. Introduction to Gofer                      14.2.2 Instances of class Eq
  18589.  
  18590.  
  18591.     instance Eq a => Eq [a] where
  18592.         []     == []     =  True
  18593.         []     == (y:ys) =  False
  18594.         (x:xs) == []     =  False
  18595.         (x:xs) == (y:ys) =  x==y && xs==ys
  18596.  
  18597. The interpretation of these declarations is as follows:
  18598.  
  18599.   o  The first declaration  makes Int an instance  of  class  Eq.   The
  18600.      function "primEqInt" is a primitive Gofer function which tests the
  18601.      equality of two integer values and has type Int -> Int -> Bool.
  18602.  
  18603.   o  The second declaration makes  Bool an instance of  class Eq with a
  18604.      simple definition involving pattern matching.
  18605.  
  18606.   o  The third declaration makes Char an instance of  class  Eq.   This
  18607.      definition indicates that a pair of characters are equal  if  they
  18608.      have the same ASCII value,  which  is  obtained  using  the  "ord"
  18609.      function.  Note that the two occurrences of the symbol (==) in the
  18610.      equation:
  18611.  
  18612.                        c == d  =  ord c == ord d
  18613.  
  18614.      have  different  meanings;  the  first  denotes  equality  between
  18615.      characters (elements of type  Char),  whilst  the  second  denotes
  18616.      equality between integers (elements of type Int).
  18617.  
  18618.   o  The fourth declaration provides an equality  operation  on  pairs.
  18619.      Given two elements (x,y) and (u,v) of type (a,b) for some a, b, it
  18620.      must be possible to check that both x==u and y==v before we can be
  18621.      sure that the two pairs are indeed equal.  In other words, both  a
  18622.      and b must also be instances of Eq  in  order  to  make  (a,b)  an
  18623.      instance of Eq.  This requirement is described by the  first  line
  18624.      in the instance declaration using the expression:
  18625.  
  18626.                        (Eq a, Eq b) => Eq (a,b)
  18627.  
  18628.   o  The fifth declaration makes [a] an instance of Eq, whenever  a  is
  18629.      itself an instance  of  Eq  in  a  similar  way  to  the  previous
  18630.      example.  The context Eq a is used in the  last  equation  in  the
  18631.      declaration:
  18632.  
  18633.                      (x:xs) == (y:ys)  =  x==y && xs==ys
  18634.  
  18635.      which contains three occurrences of the (==) operator;  the  first
  18636.      and third are used to compare lists of type [a], whilst the second
  18637.      is used to compare elements of type a, using the instance Eq a.
  18638.  
  18639. Combining these five declarations, we obtain definitions for (==) on an
  18640. infinite  family  of  types  including  Int,  Char,  Bool,  (Int,Bool),
  18641. (Char,Int), [Char], (Bool,[Int]), [(Bool,Int)], etc...:
  18642.  
  18643.     ? 2 == 3                            -- using Eq Int
  18644.     False
  18645.     (2 reductions, 10 cells)
  18646.     ? (["Hello"],3) == (["Hello"],3)    -- using Eq ([[Char]],Int)
  18647.  
  18648.  
  18649.                                       64
  18650.  
  18651.  
  18652.  
  18653.  
  18654. Introduction to Gofer                      14.2.2 Instances of class Eq
  18655.  
  18656.  
  18657.     True
  18658.     (31 reductions, 65 cells)
  18659.     ?
  18660.  
  18661. On the other hand, any attempt to use (==) to compare elements of  some
  18662. type not covered by a suitable instance declaration will result  in  an
  18663. error.  For example, the standard prelude does not define the  equality
  18664. operation on triples of values:
  18665.  
  18666.     ? (1,2,3) == (1,2,3)
  18667.     ERROR: Cannot derive instance in expression
  18668.     *** Expression        : (==) d125 (1,2,3) (1,2,3)
  18669.     *** Required instance : Eq (Int,Int,Int)
  18670.     ?
  18671.  
  18672. This can  be  solved  by  including  an  instance  declaration  of  the
  18673. following form into a file of definitions loaded into Gofer:
  18674.  
  18675.     instance (Eq a, Eq b, Eq c) => Eq (a,b,c) where
  18676.         (x,y,z) == (u,v,w)  =  x==u && y==v && z==w
  18677.  
  18678. Giving:
  18679.  
  18680.     ? (1,2,3) == (1,2,3)
  18681.     True
  18682.     (6 reductions, 20 cells)
  18683.     ?
  18684.  
  18685. In general, an instance declaration has the form:
  18686.  
  18687.              instance  context => predicate  where
  18688.                  definitions of member functions
  18689.  
  18690. The context part of the declaration gives a list  of  predicates  which
  18691. must be satisfied for the predicate on the right hand side of the  `=>'
  18692. sign to be valid.  Constant predicates (i.e. predicates  not  involving
  18693. any type variables) required by an instance declaration  (such  as  the
  18694. predicate Eq Int  required  by  the  third  declaration)  need  not  be
  18695. included in the context.  If the resulting context is empty (as in  the
  18696. first three declarations above) then it may be omitted,  together  with
  18697. the corresponding `=>' symbol.
  18698.  
  18699.  
  18700. 14.2.3 Testing equality of represented values
  18701. ---------------------------------------------
  18702. Instances of  Eq  can  also  be  defined  for  other  types,  including
  18703. user-defined datatypes, and unlike the instances described  above,  the
  18704. definition of (==) need not be used to  determine  whether  the  values
  18705. being compared have the same structure; it  is  often  more  useful  to
  18706. check that they represent the same value.  As an example, suppose  that
  18707. we introduce a type constructor Set for representing  sets  of  values,
  18708. using a list to store the values held in the set:
  18709.  
  18710.     data Set a = Set [a]
  18711.  
  18712. As usual, we say that two sets are equal if they have the same members,
  18713.  
  18714.  
  18715.                                       65
  18716.  
  18717.  
  18718.  
  18719.  
  18720. Introduction to Gofer     14.2.3 Testing equality of represented values
  18721.  
  18722.  
  18723. ignoring any repetitions or differences in the ordering of the elements
  18724. in the lists  representing  the  sets.   This  is  achieved  using  the
  18725. following instance declaration:
  18726.  
  18727.     instance Eq a => Eq (Set a) where
  18728.         Set xs == Set ys  =  xs `subset` ys  &&  ys `subset` xs
  18729.                              where xs `subset` ys = all (`elem` ys) xs
  18730.  
  18731. A couple of examples illustrate the use of this definition:
  18732.  
  18733.     ? Set [1,2,3] == Set [3,4,1]
  18734.     False
  18735.     (49 reductions, 89 cells)
  18736.     ? Set [1,2,3] == Set [1,2,2,2,1,3]
  18737.     True
  18738.     (157 reductions, 240 cells)
  18739.     ? 
  18740.  
  18741.  
  18742. 14.2.4 Instance declarations without members
  18743. --------------------------------------------
  18744. It is possible to give an instance declaration without  specifying  any
  18745. definitions for the member functions of the class.  For example:
  18746.  
  18747.     instance Eq ()
  18748.  
  18749. In this case, the definition of  (==) for the instance  Eq ()  is  left
  18750. completely undefined, and hence so is the definition of (/=), which  is
  18751. defined in terms of (==):
  18752.  
  18753.     ? () == ()
  18754.     {undefined_member (==)}
  18755.     (3 reductions, 34 cells)
  18756.     ? () /= ()
  18757.     {undefined_member (==)}
  18758.     (4 reductions, 36 cells)
  18759.     ? 
  18760.  
  18761.  
  18762. 14.2.5 Equality on function types
  18763. ---------------------------------
  18764. If an expression requires an  instance  of  a  class  which  cannot  be
  18765. obtained using the rules in the given instance  declarations,  then  an
  18766. error message will be produced when  the  expression  is  type-checked.
  18767. For example, in general there is no sensible way to  determine  when  a
  18768. pair of functions are equal, and the standard prelude does not  include
  18769. a definition for an instance of the form Eq (a -> b) for  any  types  a
  18770. and b:
  18771.  
  18772.     ? (1==) == (\x->1==x)
  18773.     ERROR: Cannot derive instance in expression
  18774.     *** Expression        : (==) d148 ((==) {dict} 1) (\x->(==) {dict} 1 x)
  18775.     *** Required instance : Eq (Int -> Bool)
  18776.  
  18777.     ?
  18778.  
  18779.  
  18780.  
  18781.                                       66
  18782.  
  18783.  
  18784.  
  18785.  
  18786. Introduction to Gofer                 14.2.5 Equality on function types
  18787.  
  18788.  
  18789. If for some reason, you would prefer this kind of error to  produce  an
  18790. error message when an expression is evaluated, rather than when  it  is
  18791. type-checked, you can  use  an  instance  declaration  to  specify  the
  18792. required behaviour.  For example:
  18793.  
  18794.     instance Eq (a -> b) where 
  18795.         (==) = error "Equality not defined between functions"
  18796.  
  18797. Evaluating the previous expression once this instance  declaration  has
  18798. been included now produces the following result:
  18799.  
  18800.     ? (1==) == (\x->1==x)
  18801.     {error "Equality not defined between functions"}
  18802.     (42 reductions, 173 cells)
  18803.     ? 
  18804.  
  18805. A limited form of equality can be defined for functions of type  (a->b)
  18806. if a has only finitely many elements, such as the boolean type Bool:
  18807.  
  18808.     instance Eq a => Eq (Bool -> a) where
  18809.         f == g   =   f False == g False   &&   f True == g True
  18810.  
  18811. [ASIDE: This instance declaration would not be accepted  in  a  Haskell
  18812. program which insists that the predicate  on  the  right  of  the  `=>'
  18813. symbol contains precisely one type constructor symbol.]
  18814.  
  18815. Using this instance declaration once for each argument, we can now test
  18816. two functions taking boolean arguments for equality (assuming of course
  18817. that their result type is also an instance of Eq).
  18818.  
  18819.     ? (&&) == (||)
  18820.     False
  18821.     (9 reductions, 21 cells)
  18822.     ? not == (\x -> if x then False else True)
  18823.     True
  18824.     (8 reductions, 16 cells)
  18825.     ? (&&) == (\x y-> if x then y else False)
  18826.     True
  18827.     (16 reductions, 30 cells)
  18828.     ? 
  18829.  
  18830.  
  18831. 14.2.6 Non-overlapping instances
  18832. --------------------------------
  18833. Other instance declarations for types of the form a -> b can be used at
  18834. the same time, so  long  as  no  pair  of  declarations  overlap.   For
  18835. example, adding the following instance declaration
  18836.  
  18837.     instance Eq a => Eq (() -> a)  where  f == g  =  f () == g ()
  18838.  
  18839. enables us to evaluate expressions such as:
  18840.  
  18841.     ? (\()->"Hello") == const "Hello"
  18842.     True
  18843.     (30 reductions, 55 cells)
  18844.     ? 
  18845.  
  18846.  
  18847.                                       67
  18848.  
  18849.  
  18850.  
  18851.  
  18852. Introduction to Gofer                  14.2.6 Non-overlapping instances
  18853.  
  18854.  
  18855. If however, we try to use instance declarations for types of  the  form
  18856. (a -> b) and (Bool -> a) at the same time, then Gofer produces an error
  18857. message similar to the following:
  18858.  
  18859.     ERROR "file" (line 37): Overlapping instances for class "Eq"
  18860.     *** This instance   : Eq (a -> b)
  18861.     *** Overlaps with   : Eq (Bool -> a)
  18862.     *** Common instance : Eq (Bool -> a)
  18863.  
  18864.     ? 
  18865.  
  18866. indicating that, given the task of testing two values of type (Bool->a)
  18867. for equality, there are (at least) two definitions of (==)  that  could
  18868. be used, with potentially different  results  being  obtained  in  each
  18869. case.
  18870.  
  18871. Here is a further example of the use of non-overlapping instances of  a
  18872. class to define a function "cat" (inspired by the unix (tm) command  of
  18873. the same name) which uses the I/O facilities  of  Gofer  to  print  the
  18874. contents of one or more files on the terminal:
  18875.  
  18876.     class    Cat a        where cat  :: a -> Dialogue
  18877.     instance Cat [Char]   where cat n = showFile n done
  18878.     instance Cat [[Char]] where cat   = foldr showFile done
  18879.  
  18880.     showFile name cont = readFile name abort
  18881.                              (\s->appendChan stdout s abort cont)
  18882.  
  18883. Given these declarations, an expression of the form:
  18884.  
  18885.                             cat "file"
  18886.  
  18887. can be used to display the contents of the named file, whilst a list of
  18888. files can be printed one after the other using  an  expression  of  the
  18889. form:
  18890.  
  18891.                cat ["file1", "file2", ..., "filen"].
  18892.  
  18893.  
  18894. 14.3 Dictionaries
  18895. -----------------
  18896. In order to understand some of the messages produced by Gofer, as  well
  18897. as  some  of  the  more  subtle  problems  associated  with  overloaded
  18898. functions, it is useful to have a  rough  idea  of  the  way  in  which
  18899. overloaded functions are implemented.
  18900.  
  18901. The basic idea is that a function with a qualified type context => type
  18902. where context is a non-empty list of predicates  is  implemented  by  a
  18903. function which takes an  extra  argument  for  each  predicate  in  the
  18904. context.  When the function is used, each of these parameters is filled
  18905. by a `dictionary'  which  gives  the  values  of  each  of  the  member
  18906. functions in the appropriate class.  None of these extra parameters  is
  18907. entered by the programmer.  Instead, they  are  inserted  automatically
  18908. during type-checking.
  18909.  
  18910. For the class Eq, each dictionary has at least two elements  containing
  18911.  
  18912.  
  18913.                                       68
  18914.  
  18915.  
  18916.  
  18917.  
  18918. Introduction to Gofer                                 14.3 Dictionaries
  18919.  
  18920.  
  18921. definitions for each of the functions (==) and (/=).  A dictionary  for
  18922. an instance of Eq can be depicted by a diagram of the form:
  18923.  
  18924.                      +--------+--------+---------
  18925.                      |        |        |
  18926.                      |  (==)  |  (/=)  |  .....
  18927.                      |        |        |
  18928.                      +--------+--------+---------
  18929.  
  18930. In order to produce useful error messages and indicate the way in which
  18931. dictionary expressions are being used, Gofer uses a number  of  special
  18932. notations for printing expressions involving dictionaries:
  18933.  
  18934.    (#1 d)   selects the first element of the dictionary d
  18935.  
  18936.    (#2 d)   selects the second element of the dictionary d
  18937.  
  18938.    (#n d)   selects the nth element of the dictionary d
  18939.             (note that (#0 d) is equivalent to the dictionary d).
  18940.  
  18941.    {dict}   denotes a specific dictionary (the contents are not
  18942.             displayed).
  18943.  
  18944.    dnnn     a dictionary variable representing an unknown dictionary is
  18945.             printed as a lower case letter `d' followed by an  integer;
  18946.             e.g. d231.
  18947.  
  18948. Note that, whilst these notations are used in output produced by  Gofer
  18949. and in the following explanations, they cannot be entered directly into
  18950. Gofer expressions or programs -- even if you use  a  variable  such  as
  18951. "d1" in an expression, Gofer will not confuse this  with  a  dictionary
  18952. variable with the same name (although Gofer might confuse you by  using
  18953. the same name in two different contexts!).
  18954.  
  18955. Using these notations, the member functions (==) and (/=) of the  class
  18956. Eq behave as if they were defined by the expressions:
  18957.  
  18958.     (==) d1  =  (#1 d1)
  18959.     (/=) d1  =  (#2 d1)
  18960.  
  18961. To understand how these definitions work, we need to take a look  at  a
  18962. specific dictionary.  Following the original instance declaration  used
  18963. for Eq Int, the corresponding dictionary is:
  18964.  
  18965.                     d :: Eq Int
  18966.                     +------------+------------+
  18967.                     |            |            |
  18968.                     | primEqInt  |  defNeq d  |
  18969.                     |            |            |
  18970.                     +------------+------------+
  18971.  
  18972. Note that the  dictionary  variable  d  is  used  as  a  name  for  the
  18973. dictionary in this diagram, indicating how values within  a  dictionary
  18974. can include references to the same dictionary.
  18975.  
  18976. [ASIDE: It turns out that predicates  play  a  very  similar  role  for
  18977.  
  18978.  
  18979.                                       69
  18980.  
  18981.  
  18982.  
  18983.  
  18984. Introduction to Gofer                                 14.3 Dictionaries
  18985.  
  18986.  
  18987. dictionaries as types play for normal values.  This motivates  our  use
  18988. of the notation d :: Eq Int to indicate that d is a dictionary for  the
  18989. instance Eq Int.  One difference between these, particularly  important
  18990. for theoretical work, is that dictionary values are uniquely determined
  18991. by predicates; if d1::p and d2::p for some predicate p, then d1 = d2.]
  18992.  
  18993. The value held in the first element of the dictionary is the  primitive
  18994. equality function on  integers,  "primEqInt".   The  following  diagram
  18995. shows how the dictionary is used to evaluate the expression "2  ==  3".
  18996. Note that this expression will first be translated to  "(==) d 2 3"  by
  18997. the type checker.  The evaluation then proceeds as follows:
  18998.  
  18999.     (==) d 2 3  ==>  (#1 d) 2 3
  19000.                 ==>  primEqInt 2 3
  19001.                 ==>  False
  19002.  
  19003. The second element of the  dictionary  is  a  little  more  interesting
  19004. because it uses the default definition for (/=) given in  the  original
  19005. class definition  which,  after  translation,  is  represented  by  the
  19006. function "defNeq" defined by:
  19007.  
  19008.     defNeq d1 x y = not ((==) d1 x y)
  19009.  
  19010. Notice the way in which the  extra  dictionary  parameter  is  used  to
  19011. obtain the appropriate overloading.  For  example,  evaluation  of  the
  19012. expression  "2 /= 3", which  becomes  "(/=) d 2 3"  after  translation,
  19013. proceeds as follows:
  19014.  
  19015.     (/=) d 2 3  ==>  (#2 d) 2 3
  19016.                 ==>  defNeq d 2 3
  19017.                 ==>  not ((==) d 2 3)
  19018.                 ==>  not ((#1 d) 2 3)
  19019.                 ==>  not (primEqInt 2 3)
  19020.                 ==>  not False
  19021.                 ==>  True
  19022.  
  19023. [Clearly there is some scope for optimisation here; whilst  the  actual
  19024. reduction sequences used by Gofer are equivalent to  those  illustrated
  19025. above, the precise details are a little different.]
  19026.  
  19027. If an  instance  is  obtained  from  an  instance  declaration  with  a
  19028. non-empty context, then the basic two element dictionary  used  in  the
  19029. examples above is extended with an  extra  dictionary  value  for  each
  19030. predicate in the context.  As an example, the diagram below  shows  the
  19031. dictionaries that will be created  from  the  instance  definitions  in
  19032. section 14.2.2  for  the  instance  Eq  (Int,  [Int]).   The  functions
  19033. "eqPair" and "eqList" which are used in these dictionaries are obtained
  19034. from the definitions of (==) given in the instance declarations for  Eq
  19035. (a,b) and Eq [a] respectively:
  19036.  
  19037.     eqPair d (x,y) (u,v)   = (==) (#3 d) x u && (==) (#4 d) y v
  19038.  
  19039.     eqList d [] []         = True
  19040.     eqList d []     (y:ys) = False
  19041.     eqList d (x:xs) []     = False
  19042.     eqList d (x:xs) (y:ys) = (==) (#3 d) x y && (==) d xs ys
  19043.  
  19044.  
  19045.                                       70
  19046.  
  19047.  
  19048.  
  19049.  
  19050. Introduction to Gofer                                 14.3 Dictionaries
  19051.  
  19052.  
  19053. The dictionary structure for Eq (Int, [Int]) is as follows.  Note  that
  19054. the Gofer system ensures that there is at most  one  dictionary  for  a
  19055. particular instance of a class, and that the dictionary d1 :: Eq Int in
  19056. this system is automatically shared between d2 and d3:
  19057.  
  19058.    d3 :: Eq (Int, [Int])
  19059.    +------------+------------+------------+------------+
  19060.    |            |            |            |            |
  19061.    | eqPair d3  | defNeq d3  | d1::Eq Int |d2::Eq [Int]|
  19062.    |            |            |            |            |
  19063.    +------------+------------+-----+------+-----+------+
  19064.                                    |            |
  19065.                     +--------------+            |
  19066.                     |                           |
  19067.                     |        d2 :: Eq [Int]     V 
  19068.                     |        +------------+------------+------------+
  19069.                     |        |            |            |            |
  19070.                     |        | eqList d2  | defNeq d2  | d1::Eq Int |
  19071.                     |        |            |            |            |
  19072.                     |        +------------+------------+-----+------+
  19073.                     |                                        |
  19074.        d1 :: Eq Int V                                        |
  19075.        +------------+------------+                           |
  19076.        |            |            |                           |
  19077.        | primEqInt  | defNeq d1  |<--------------------------+
  19078.        |            |            |
  19079.        +------------+------------+
  19080.  
  19081. Once again, it may be useful to see how these definitions are  used  to
  19082. evaluate  the  expression   "(2,[1])   ==   (2,[1,3])"   which,   after
  19083. translation, becomes "(==) d3 (2,[1]) (2,[1,3])":
  19084.  
  19085.     (==) d3 (2,[1]) (2,[1,3])
  19086.              ==>   (#1 d3) (2,[1]) (2,[1,3])
  19087.              ==>   eqPair d3 (2,[1]) (2,[1,3])
  19088.              ==>   (==) (#3 d3) 2 2  &&  (==) (#4 d3) [1] [1,3]
  19089.              ==>   (==) d1 2 2       &&  (==) (#4 d3) [1] [1,3]
  19090.              ==>   (#1 d1) 2 2       &&  (==) (#4 d3) [1] [1,3]
  19091.              ==>   primEqInt 2 2     &&  (==) (#4 d3) [1] [1,3]
  19092.              ==>   True              &&  (==) (#4 d3) [1] [1,3]
  19093.              ==>   (==) (#4 d3) [1] [1,3]
  19094.              ==>   (==) d2 [1] [1,3]
  19095.              ==>   (#1 d2) [1] [1,3]
  19096.              ==>   eqList d2 [1] [1,3]
  19097.              ==>   (==) (#3 d2) 1 1  &&  (==) d2 [] [3]
  19098.              ==>   (==) d1 1 1       &&  (==) d2 [] [3]
  19099.              ==>   (#1 d1) 1 1       &&  (==) d2 [] [3]
  19100.              ==>   primEqInt 1 1     &&  (==) d2 [] [3]
  19101.              ==>   True              &&  (==) d2 [] [3]
  19102.              ==>   (==) d2 [] [3]
  19103.              ==>   False
  19104.  
  19105.  
  19106.  
  19107.  
  19108.  
  19109.  
  19110.  
  19111.                                       71
  19112.  
  19113.  
  19114.  
  19115.  
  19116. Introduction to Gofer                               14.3.1 Superclasses
  19117.  
  19118.  
  19119. 14.3.1 Superclasses
  19120. -------------------
  19121. In general, a type class declaration has the form:
  19122.  
  19123.              class  context => Class a1 ... an  where
  19124.                  type declarations for member functions
  19125.                  default definitions of member functions
  19126.  
  19127. where Class is the name of the new type class which takes n  arguments,
  19128. represented by distinct type variables a1, ..., an.  As in the case  of
  19129. instance declarations, the context that appears on the left  hand  side
  19130. of the `=>'  symbol  specifies  a  list  of  predicates  that  must  be
  19131. satisfied in order to construct any instance of "Class".
  19132.  
  19133. The predicates in the context part of a class  declaration  are  called
  19134. the superclasses of Class.  This  terminology  is  taken  from  Haskell
  19135. where all classes have a single parameter and each of the predicates in
  19136. the context part of a class declaration has the  form  C  a1;  in  this
  19137. situation, any instance of Class must also be an instance of each class
  19138. C named in the context.   In  other  words,  each  such  C  contains  a
  19139. superset of the types in Class.
  19140.  
  19141. As an example of a class declaration with a non-empty context, consider
  19142. the following declaration from the standard prelude which introduces  a
  19143. class Ord whose instances are types  with  both  strict  (<),  (>)  and
  19144. non-strict  (<=),  (>=)  versions  of  an  ordering  defined  on  their
  19145. elements:
  19146.  
  19147.     class Eq a => Ord a where
  19148.         (<), (<=), (>), (>=) :: a -> a -> Bool
  19149.         max, min             :: a -> a -> a
  19150.  
  19151.         x <  y            = x <= y && x /= y
  19152.         x >= y            = y <= x
  19153.         x >  y            = y < x
  19154.  
  19155.         max x y | x >= y  = x
  19156.                 | y >= x  = y
  19157.         min x y | x <= y  = x
  19158.                 | y <= x  = y
  19159.  
  19160. Notice that this definition provides default definitions for all of the
  19161. member functions except (<=), so  that  in  general  only  this  single
  19162. function needs to be defined to construct an instance of class Ord.
  19163.  
  19164. There are two reasons for defining Eq as a superclass of Ord:
  19165.  
  19166.   o  The default definition for (<) relies on the  use  of  (/=)  taken
  19167.      from class Eq.  In order to guarantee that this is always valid we
  19168.      must ensure that every instance of Ord must also be an instance of
  19169.      Eq.
  19170.  
  19171.   o  Given the definition of a non-strict ordering (<=) on the elements
  19172.      of a type, it is always possible to construct a definition for the
  19173.      (==) operator (and hence for (/=)) using the equation:
  19174.  
  19175.  
  19176.  
  19177.                                       72
  19178.  
  19179.  
  19180.  
  19181.  
  19182. Introduction to Gofer                               14.3.1 Superclasses
  19183.  
  19184.  
  19185.                       x==y   =   x<=y && y<=x
  19186.  
  19187.      There will therefore be no loss in generality by requiring  Eq  to
  19188.      be a superclass of Ord, and conversely, no difficulty in  defining
  19189.      an instance of Eq to accompany any instance of  Ord  for  which an
  19190.      instance of Eq has not already be provided.
  19191.  
  19192.      As an example, the following definitions  provide  an  alternative
  19193.      way to implement the equality operation on  elements  of  the  Set
  19194.      datatype described in section  14.2.3,  in  terms  of  the  subset
  19195.      ordering defined in class Ord:
  19196.  
  19197.          instance Ord (Set a) => Eq (Set a) where
  19198.              x == y   =   x <= y  &&  y <= x
  19199.  
  19200.          instance Eq a => Ord (Set a) where
  19201.              Set xs <= Set ys  =  all (`elem` ys) xs
  19202.  
  19203.      This definition is in fact no less efficient or effective than the
  19204.      original version.
  19205.  
  19206. Dictionaries for superclasses are dealt with in much the  same  way  as
  19207. the instance specific dictionaries described above.  For  example,  the
  19208. general layout of a dictionary for an instance of Ord is illustrated in
  19209. the following diagram:
  19210.  
  19211.  +--------+--------+--------+--------+--------+--------+--------+-----
  19212.  |        |        |        |        |        |        |        |
  19213.  |  (<)   |  (<=)  |  (>)   |  (>=)  |  max   |  min   |  Eq a  | .....
  19214.  |        |        |        |        |        |        |        |
  19215.  +--------+--------+--------+--------+--------+--------+--------+-----
  19216.  
  19217. Note the use of the seventh element of this dictionary which points  to
  19218. the dictionary for the appropriate instance of Eq.  This is used in the
  19219. translation of the default definition for (<) which is equivalent to:
  19220.  
  19221.       defLessThan d x y  =  (<=) d x y  &&  (/=) (#7 d) x y
  19222.  
  19223.  
  19224. 14.3.2 Combining classes
  19225. ------------------------
  19226. In general, a dictionary is made up of three separate parts:
  19227.  
  19228.      +-------------------+-------------------+-------------------+
  19229.      |  Implementation   |    Superclass     | Instance specific |
  19230.      | of class members  |   Dictionaries    |   Dictionaries    |
  19231.      |                   |                   |                   |
  19232.      +-------------------+-------------------+-------------------+
  19233.  
  19234. Each of these may be empty.  We have already  seen  examples  in  which
  19235. there are no superclass dictionaries (e.g.  instances  of  Eq)  and  in
  19236. which there are no  instance  specific  dictionaries  (e.g.   Eq  Int).
  19237. Classes with no member functions (corresponding to dictionaries with no
  19238. member functions) are sometimes useful as a convenient abbreviation for
  19239. a list of predicates.  For example:
  19240.  
  19241.  
  19242.  
  19243.                                       73
  19244.  
  19245.  
  19246.  
  19247.  
  19248. Introduction to Gofer                          14.3.2 Combining classes
  19249.  
  19250.  
  19251.     class  C a  where  cee :: a -> a
  19252.     class  D a  where  dee :: a -> a
  19253.  
  19254.     class  (C a, D a) => CandD a
  19255.  
  19256. makes CandD a an abbreviation for the context (C a, D a).  Thinking  of
  19257. single parameter type classes as sets of types, the  type  class  CandD
  19258. corresponds to the intersection of classes C and D.
  19259.  
  19260. Just as the type inferred  for  a  particular  function  definition  or
  19261. expression  does  not  involve  type  synonyms  unless  explicit   type
  19262. signatures are used, the Gofer  type  system  will  not  use  a  single
  19263. predicate of the form CandD a instead of the two predicates C a and D a
  19264. unless  explicit signatures are used:
  19265.  
  19266.     ? :t dee . cee
  19267.     \d129 d130 -> dee d130 . cee d129 :: (C a, D a) => a -> a
  19268.     ? :t dee . cee :: CandD a => a -> a
  19269.     \d129 -> dee (#2 d129) . cee (#1 d129) :: CandD a => a -> a
  19270.     ?
  19271.  
  19272. In Haskell,  all  instances  of  a  class  such  as  CandD  must   have
  19273. explicit declarations, in addition to  the  corresponding  declarations
  19274. for instances for C and D.  This problem can be avoided  by  using  the
  19275. more general form of instance declaration permitted in Gofer; a  single
  19276. instance declaration:
  19277.  
  19278.     instance CandD a
  19279.  
  19280. is all that is required to ensure that any instance  of  CandD  can  be
  19281. obtained, so long as corresponding instances for C and D can be found.
  19282.  
  19283.  
  19284. 14.3.3 Simplified contexts
  19285. --------------------------
  19286. Consider the function defined by the following equation:
  19287.  
  19288.     eg1 x   =   [x] == [x]  ||  x == x
  19289.  
  19290. This definition does not restrict the type of x in any way except that,
  19291. if x :: a, then there must be instances Eq [a] and Eq a which are  used
  19292. for the two occurrences of the (==) operator in the equation.  We might
  19293. therefore expect the type of eg1 to be:
  19294.  
  19295.     (Eq [a], Eq a) => a -> Bool
  19296.  
  19297. with translation:
  19298.  
  19299.     eg1 d1 d2 x  =  (==) d1 [x] [x]  ||  (==) d2 x x
  19300.  
  19301. However, as can be seen  from  the  case  where  a=Int  illustrated  in
  19302. section 14.3, given d1::Eq [a] we can always find a dictionary for Eq a
  19303. by taking the third element of d1 i.e. (#3 d1)::Eq a.  Since it is more
  19304. efficient to select an element from a  dictionary  than  to  complicate
  19305. both type and translation with extra parameters, the type  assigned  to
  19306. "eg1" by default is:
  19307.  
  19308.  
  19309.                                       74
  19310.  
  19311.  
  19312.  
  19313.  
  19314. Introduction to Gofer                        14.3.3 Simplified contexts
  19315.  
  19316.  
  19317.     Eq [a] => a -> Bool
  19318.  
  19319. with translation:
  19320.  
  19321.     eg1 d1 x  =  (==) d1 [x] [x]  || (==) (#3 d1) x x
  19322.  
  19323. In general, given a set of predicates corresponding  to  the  instances
  19324. required by an expression,  Gofer  will  always  attempt  to  find  the
  19325. smallest possible subset of these  predicates  such  that  all  of  the
  19326. required dictionaries can still  be  obtained,  whilst  minimising  the
  19327. number of dictionary parameters that are used.
  19328.  
  19329. The original type and translation for eg1 given above can  be  produced
  19330. by including an explicit type signature  in  the  file  containing  the
  19331. definition of eg1:
  19332.  
  19333.     eg1   ::  (Eq [a], Eq a) => a -> Bool
  19334.     eg1 x  =  [x] == [x]  ||  x == x
  19335.  
  19336. But even with this definition, Gofer will still always try to  minimise
  19337. the number of dictionaries used in any particular expression:
  19338.  
  19339.     ? :t eg1
  19340.     \d153 -> eg1 d153 (#3 d153) :: Eq [a] => a -> Bool
  19341.     ?
  19342.  
  19343. As another example, consider the expression "(\x y->  x==x  ||  y==y)".
  19344. The type and translation assigned to this term can  be  found  directly
  19345. using Gofer:
  19346.  
  19347.     ? :t (\x y-> x==x || y==y)
  19348.     \d121 d122 x y -> (==) d122 x x ||
  19349.                       (==) d121 y y
  19350.                   :: (Eq b, Eq a) => a -> b -> Bool
  19351.     ?
  19352.  
  19353. Note that the translation has two dictionary parameters d121  and  d122
  19354. corresponding to the two predicates Eq a and Eq b respectively.   Since
  19355. both of these dictionaries can be obtained from a  dictionary  for  the
  19356. predicate Eq (a,b), we can use an explicit type signature to produce  a
  19357. translation which needs only one dictionary parameter:
  19358.  
  19359.     ? :t (\x y-> x==x || y==y) :: Eq (a,b) => a -> b -> Bool
  19360.     \d121 x y -> (==) (#3 d121) x x ||
  19361.                  (==) (#4 d121) y y
  19362.              :: Eq (a,b) => a -> b -> Bool
  19363.     ?
  19364.  
  19365.  
  19366.  
  19367.  
  19368.  
  19369.  
  19370.  
  19371.  
  19372.  
  19373.  
  19374.  
  19375.                                       75
  19376.  
  19377.  
  19378.  
  19379.  
  19380. Introduction to Gofer                                 14.4 Other issues
  19381.  
  19382.  
  19383. 14.4 Other issues
  19384. -----------------
  19385.  
  19386. 14.4.1 Unresolved overloading
  19387. -----------------------------
  19388. Consider  the  use  of  the  (==)  operator  in  the  following   three
  19389. situations:
  19390.  
  19391.   o  In the expression "2 == 3", it is clear that the appropriate value
  19392.      for the equality operator in this case is primIntEq as defined  by
  19393.      the instance declaration for Eq Int.  The expression can therefore
  19394.      be translated to "primEqInt 2 3".
  19395.  
  19396.   o  In the function definition "f x  =  x==x",  we  cannot  completely
  19397.      determine the appropriate value for (==) because it depends on the
  19398.      type assigned to the variable "x",  which  may  itself  vary  with
  19399.      different uses of the function "f".  It is however possible to add
  19400.      an extra parameter to the definition,  giving "f d x = (==) d x x"
  19401.      and taking the type of "f" to be Eq a => a -> Bool.
  19402.  
  19403.      In this way, the problem of finding the appropriate definition for
  19404.      the (==) operator is deferred until the function is actually used.
  19405.  
  19406.   o  In the expression "[]==[]", the appropriate value for (==) must be
  19407.      obtained from the dictionary for some instance of the form Eq [a],
  19408.      but there is not  sufficient  information  in  the  expression  to
  19409.      determine what the value of the type variable a should be.
  19410.  
  19411.      Looking back to the instance declaration for Eq [a], we find  that
  19412.      the definition of (==) depends on the value of the dictionary  for
  19413.      the instance Eq a.  In this particular case, it is clear that  the
  19414.      expression will always evaluate to True, regardless of  the  value
  19415.      of this dictionary.  Unfortunately, the only way that this can  be
  19416.      detected is by evaluating the expression to see if the calculation
  19417.      can be completed without reference to the  dictionary  value  (see
  19418.      the comments in the aside at the end of this section).
  19419.  
  19420.      Attempting to evaluate this expression  in  Gofer  will  therefore
  19421.      result in an error message indicating that the expression does not
  19422.      contain sufficient information to resolve the use  of  overloading
  19423.      in the expression:
  19424.  
  19425.          ? [] == []
  19426.          ERROR: Unresolved overloading
  19427.          *** type        : Eq [a] => Bool
  19428.          *** translation : \d129 -> (==) d129 [] []
  19429.          ?
  19430.  
  19431.      Note  that  the  expression  has  been  converted  into  a  lambda
  19432.      expression using the dictionary variable  d129  to  represent  the
  19433.      dictionary for the unknown instance Eq [a].
  19434.  
  19435.      One simple way to resolve the overloading in an expression of this
  19436.      kind is to use an explicit type signature.   For  example,  if  we
  19437.      specify that the second empty list is an empty list of type [Int]:
  19438.  
  19439.  
  19440.  
  19441.                                       76
  19442.  
  19443.  
  19444.  
  19445.  
  19446. Introduction to Gofer                     14.4.1 Unresolved overloading
  19447.  
  19448.  
  19449.          ? [] == ([]::[Int])
  19450.          True
  19451.          (2 reductions, 9 cells)
  19452.          ?
  19453.  
  19454. The same problem occurs in Haskell, where it  is  described  using  the
  19455. idea of an `ambiguous type' -- i.e.  a  type  expression  of  the  form
  19456. context => type where one or more of the type  variables  appearing  in
  19457. the given context do not appear in  the  remaining  part  of  the  type
  19458. expression.
  19459.  
  19460. Further examples of unresolved overloading occur  with  other  classes.
  19461. As an example consider the class Reader defined by:
  19462.  
  19463.     class Reader a where 
  19464.         parse   :: String -> a   
  19465.         unparse :: a -> String
  19466.  
  19467. whose  member  functions  provide  methods  for  obtaining  the  string
  19468. representation of an element of an instance type,  and  for  converting
  19469. such representations  back  into  the  original values.  (The  standard
  19470. Haskell Text class  contains  similar  functions.)   Now  consider  the
  19471. expression "parse . unparse" which maps values from  some  instance  of
  19472. Reader to  values  of  another  instance  via  an  intermediate  string
  19473. representation.
  19474.  
  19475.     ? parse . unparse
  19476.     ERROR: Unresolved overloading
  19477.     *** type        : (Reader a, Reader b) => a -> b
  19478.     *** translation : \d129 d130 -> parse d130 . unparse d129
  19479.     ?
  19480.  
  19481. One of the first things that might surprise the reader here is that the
  19482. value produced by "parse . unparse" does not have to  be  of  the  same
  19483. type as the argument; for example, we would not usually expect to  have
  19484. any sensible interpretation for a floating point number  obtained  from
  19485. the string representation of a boolean value!
  19486.  
  19487. This can be fixed by using an explicit type declaration,  although  the
  19488. expression still produces unresolved overloading:
  19489.  
  19490.     ? (parse . unparse) :: Reader a => a -> a
  19491.     ERROR: Unresolved overloading
  19492.     *** type        : Reader a => a -> a
  19493.     *** translation : \d130 -> parse d130 . unparse d130
  19494.     ?
  19495.  
  19496. Notice however that the type of this expression  is  not  ambiguous  so
  19497. that the unresolved overloading in this example can be eliminated  when
  19498. the function is actually used:
  19499.  
  19500.     ? ((parse . unparse) :: Reader a => a -> a) 'a'
  19501.     'a'
  19502.     (4 reductions, 11 cells)
  19503.     ?
  19504.  
  19505.  
  19506.  
  19507.                                       77
  19508.  
  19509.  
  19510.  
  19511.  
  19512. Introduction to Gofer                     14.4.1 Unresolved overloading
  19513.  
  19514.  
  19515. A more serious problem occurs with the  expression  "unparse  .  parse"
  19516. which maps string values to string values via some  intermediate  type.
  19517. Clearly this will lead to a problem with unresolved overloading:
  19518.  
  19519.     ? unparse . parse
  19520.     ERROR: Unresolved overloading
  19521.     *** type        : Reader a => String -> String
  19522.     *** translation : \d130 -> unparse d130 . parse (#0 d130)
  19523.     ?
  19524.  
  19525. Notice that the type obtained in  this  case  is  ambiguous;  the  type
  19526. variable a which appears in the predicate Reader a does not  appear  in
  19527. the type String -> String.  There are a number  of  ways  of  resolving
  19528. this kind of ambiguity:
  19529.  
  19530.   o  Using an explicitly typed expression: Assuming  for  example  that
  19531.      Char is an instance of Reader, we can write:
  19532.  
  19533.          ? unparse . (parse :: String -> Char)
  19534.          v113 {dict} . v112 {dict}
  19535.          (5 reductions, 42 cells)
  19536.          ?
  19537.  
  19538.      without any ambiguity.  If such type  signatures  are  used  in  a
  19539.      number of places, it  might  be  better  to  define  an  auxiliary
  19540.      function and use that instead:
  19541.  
  19542.          charParse :: String -> Char
  19543.          charParse  = parse
  19544.  
  19545.          ? unparse . charParse
  19546.          v113 {dict} . charParse
  19547.          (4 reductions, 37 cells)
  19548.          ?
  19549.  
  19550.      In such situations, it  is  perhaps  worth  asking  if  overloaded
  19551.      functions are in  fact  the  most  appropriate  solution  for  the
  19552.      problem at hand!
  19553.  
  19554.   o  Using an extra dummy parameter in a  function  definition.   In  a
  19555.      definition such as:
  19556.  
  19557.          f = unparse . parse
  19558.  
  19559.      we can introduce an additional dummy parameter `x'  which  is  not
  19560.      used except to determine the type of the result produced by  parse
  19561.      in f:
  19562.  
  19563.          f x  =  unparse . (parse `asTypeOf` (\""->x))
  19564.  
  19565.      where the standard prelude operator `asTypeOf` defined by:
  19566.  
  19567.          asTypeOf      :: a -> a -> a
  19568.          x `asTypeOf` _ = x
  19569.  
  19570.      is used to ensure that the type of parse in the definition of f is
  19571.  
  19572.  
  19573.                                       78
  19574.  
  19575.  
  19576.  
  19577.  
  19578. Introduction to Gofer                     14.4.1 Unresolved overloading
  19579.  
  19580.  
  19581.      the same as that of the function (\""->x) -- in other  words,  the
  19582.      type must be String -> a where a is the type of the variable x.
  19583.  
  19584.      The resulting type for f is:
  19585.  
  19586.           f :: Reader a => a -> String -> String
  19587.  
  19588.      Notice how the addition of the dummy parameter has  been  used  to
  19589.      eliminate the ambiguity present in the original type.
  19590.  
  19591.      This kind of `coding trick' is rather messy and is not recommended
  19592.      for anything but the simplest examples.
  19593.  
  19594. [ASIDE: The idea of evaluating an expression with an ambiguous type  to
  19595. see if it does actually need the unspecified  dictionaries  could  have
  19596. been  implemented  quite easily in  Gofer  using  an  otherwise  unused
  19597. datatype Unresolved and generating instance declarations such as:
  19598.  
  19599.     instance Eq Unresolved where
  19600.         (==) = error "unresolved overloading for (==)"
  19601.         (/=) = error "unresolved overloading for (/=)"
  19602.  
  19603. for each class.  Given a particular expression, we  can  then  use  the
  19604. type Unused in place of any ambiguous type variables in its type.   The
  19605. evaluation of the expression could then be attempted, either completing
  19606. successfully if  the  dictionaries  are  not  required,  but  otherwise
  19607. resulting in a run-time error.
  19608.  
  19609. This approach is not used in Gofer; instead, the programmer is notified
  19610. of any unresolved  polymorphism  when  the  program  is  type  checked,
  19611. avoiding the possibility that a program  might  contain  an  undetected
  19612. ambiguity.]
  19613.  
  19614.  
  19615. 14.4.2 `Recursive' dictionaries
  19616. -------------------------------
  19617. Unlike Haskell, there are no restrictions on the form of the predicates
  19618. that may appear in the context  part  of  a  Gofer  class  or  instance
  19619. declaration.  This has a  number  of  potentially  useful  applications
  19620. because it enables the  Gofer  programs  to  use  mutually  `recursive'
  19621. systems of dictionaries.
  19622.  
  19623. One example of this is the ability  to  implement  a  large  family  of
  19624. related functions using a group of classes instead of having to  use  a
  19625. single class.  The following example illustrates the technique with  an
  19626. alternative definition for the class Eq in  which  the  (==)  and  (/=)
  19627. operators are placed in different classes:
  19628.  
  19629.     class Neq a => Eq a  where  (==) :: a -> a -> Bool
  19630.  
  19631.     class Eq a => Neq a  where  (/=) :: a -> a -> Bool
  19632.                                 x/=y  = not (x == y)
  19633.  
  19634.  
  19635. [ASIDE: These declarations clash with those in the standard prelude and
  19636. hence cannot actually be used in Gofer unless a modified version of the
  19637.  
  19638.  
  19639.                                       79
  19640.  
  19641.  
  19642.  
  19643.  
  19644. Introduction to Gofer                   14.4.2 `Recursive' dictionaries
  19645.  
  19646.  
  19647. standard prelude is used instead.]
  19648.  
  19649. If we then give instance declarations:
  19650.  
  19651.     instance Eq Int  where (==) = primEqInt
  19652.     instance Neq Int
  19653.  
  19654. and try to evaluate the expression "2==3" then the following system  of
  19655. dictionaries will be generated:
  19656.  
  19657.         d1 :: Eq Int                   d2 :: Neq Int
  19658.         +-----------+-----------+      +-----------+-----------+
  19659.         |           |           |      |           |           |
  19660.     +-->| primEqInt |d2::Neq Int+----->| defNeq d2 |d1::Eq Int +---+
  19661.     |   |           |           |      |           |           |   |
  19662.     |   +-----------+-----------+      +-----------+-----------+   |
  19663.     |                                                              |
  19664.     +------------------------------<-------------------------------+
  19665.  
  19666. where the function "defNeq" is derived from the  default definition  in
  19667. the class Neq and is equivalent to:
  19668.  
  19669.                defNeq d x y  =  not ((==) (#2 d) x y)
  19670.  
  19671. Incidentally, if the instance declaration for Neq Int  above  had  been
  19672. replaced by:
  19673.  
  19674.     instance Neq a
  19675.  
  19676. then the effect of these declarations would be similar to the  standard
  19677. definition of the class Eq, except that it would  not  be  possible  to
  19678. override the  default  definition  for  (/=).   In  other  words,  this
  19679. approach would give the same effect as defining  (/=)  as  a  top-level
  19680. function rather than a member function in the class Eq:
  19681.  
  19682.     class Eq a  where  (==) :: a -> a -> Bool
  19683.  
  19684.     (/=)   ::  Eq a => a -> a -> Bool
  19685.     x /= y  =  not (x == y)
  19686.  
  19687. There are other situations in which recursive dictionaries of the  kind
  19688. described above can be  used.   A  further  example  is  given  in  the
  19689. following section.  Unfortunately, the lack of restrictions on the form
  19690. of class and instance declarations can also lead to  problems  in  some
  19691. (mostly pathological) cases.  As an example, consider the class:
  19692.  
  19693.     class Bad [a] => Bad a  where  bad :: a -> a
  19694.  
  19695. Without defining any instances of Bad, it is not possible to  construct
  19696. any dictionaries for instances of Bad:
  19697.  
  19698.     ? bad 2
  19699.     ERROR: Cannot derive instance in expression
  19700.     *** Expression        : bad d126 2
  19701.     *** Required instance : Bad Int
  19702.     ?
  19703.  
  19704.  
  19705.                                       80
  19706.  
  19707.  
  19708.  
  19709.  
  19710. Introduction to Gofer                   14.4.2 `Recursive' dictionaries
  19711.  
  19712.  
  19713. If however we add the instance declarations:
  19714.  
  19715.     instance Bad Int where bad = id
  19716.     instance Bad [a] where bad = id
  19717.  
  19718. then any attempt to construct  a  dictionary  for  Bad  Int  will  also
  19719. require a dictionary for the superclass Bad  [Int]  and  then  for  the
  19720. superclass of that instance Bad [[Int]] etc...  Since Gofer has only  a
  19721. finite amount of space for  storing  dictionaries,  this  process  will
  19722. eventually terminate when that space has been used up:
  19723.  
  19724.     ? bad 2
  19725.     ERROR: Dictionary storage space exhausted
  19726.     ?
  19727.  
  19728. [ASIDE: depending on the configuration of your  particular  version  of
  19729. Gofer and on the nature of the class and instance declarations that are
  19730. involved, an alternative error message "ERROR: Too many type  variables
  19731. in type checker" may be produced instead of the message shown above.]
  19732.  
  19733. From a practical point of view, this problem is unlikely to  cause  too
  19734. many real difficulties:
  19735.  
  19736.   o  Class declarations involving  predicates  such  as  those  in  the
  19737.      declaration of Bad are unlikely to be used in realistic programs.
  19738.  
  19739.   o  All dictionaries are constructed before evaluation  begins.   This
  19740.      process is guaranteed to terminate  because  each  new  dictionary
  19741.      that is created uses up part of  the  space  used  to  hold  Gofer
  19742.      dictionaries.  The  construction  process  will  either  terminate
  19743.      successfully once complete, or be aborted as soon as  all  of  the
  19744.      dictionary space has been used.
  19745.  
  19746. It remains to see what impact (if any) this has on realistic  programs,
  19747. and if later versions of  Gofer  should  be  modified  to  impose  some
  19748. syntactic restrictions (as in Haskell) or perhaps some form  of  static
  19749. checking of the contexts appearing in class and instance  declarations.
  19750.  
  19751.  
  19752. 14.4.3 Classes with multiple parameters
  19753. ---------------------------------------
  19754. Gofer is the first language to support the use  of  type  classes  with
  19755. multiple parameters.  This again is  an  experimental  feature  of  the
  19756. language, intended to make it possible to explore  the  claims  from  a
  19757. number of researchers about the use of such classes.
  19758.  
  19759. Initial experiments suggest that multiple parameter  type  classes  are
  19760. likely  to  lead  to  large  numbers  of   problems   with   unresolved
  19761. overloading.  Ultimately, this may mean that such classes are  only  of
  19762. practical use in explicitly typed languages, or  alternatively  that  a
  19763. more powerful and general defaulting mechanism (similar to that used in
  19764. Haskell with numeric classes) is required to  support  user  controlled
  19765. overloading resolution.
  19766.  
  19767. The following declaration introduces a class  Iso  whose  elements  are
  19768. pairs of isomorphic types:
  19769.  
  19770.  
  19771.                                       81
  19772.  
  19773.  
  19774.  
  19775.  
  19776. Introduction to Gofer           14.4.3 Classes with multiple parameters
  19777.  
  19778.  
  19779.     class Iso b a => Iso a b  where  iso :: a -> b
  19780.  
  19781. The single member function "iso"  represents  the  isomorphism  mapping
  19782. elements of type a to corresponding  elements  of  type  b.   Note  the
  19783. `superclass' context in this declaration which formalises the idea that
  19784. if a is isomorphic to b then b is also isomorphic to a.  The class  Iso
  19785. therefore provides  further  examples  of  the  recursive  dictionaries
  19786. described in the previous section.
  19787.  
  19788. The fact that any type is isomorphic to itself can be described by the
  19789. following instance declaration:
  19790.  
  19791.     instance Iso a a where iso x = x
  19792.  
  19793. For example, the dictionary structure created in order to evaluate the
  19794. expression "iso 2 = 3" is:
  19795.  
  19796.                    d :: Iso Int Int
  19797.                    +--------------+--------------+
  19798.                    |              |              |
  19799.                +-->|      id      |d::Iso Int Int+--+
  19800.                |   |              |              |  |
  19801.                |   +--------------+--------------+  |
  19802.                |                                    |
  19803.                +------------------<-----------------+
  19804.  
  19805.     ? iso 2 == 3
  19806.     False
  19807.     (4 reductions, 11 cells)
  19808.     ? 
  19809.  
  19810. Our first taste of the problems to come occurs when we try to  evaluate
  19811. the expression "iso 2 == iso 3":
  19812.  
  19813.     ? iso 2 == iso 3
  19814.     ERROR: Unresolved overloading
  19815.     *** type        : (Eq a, Iso Int a) => Bool
  19816.     *** translation : \d130 d132 -> (==) d130 (iso d132 2) (iso d132 3)
  19817.     ?
  19818.  
  19819. In this case, the "iso" function is used to map the integers 2 and 3 to
  19820. elements of some type a, isomorphic to Int, and the values produced are
  19821. then compared using (==) at the instance Eq  a;  there  is  no  way  of
  19822. discovering what the value of a should be  without  using  an  explicit
  19823. type signature.
  19824.  
  19825. Further instances can be defined.  The following two  declarations  are
  19826. needed to describe the (approximate) isomorphism between lists of pairs
  19827. and pairs of lists:
  19828.  
  19829.     instance Iso [(a,b)] ([a],[b]) where  
  19830.         iso xs = (map fst xs, map snd xs)
  19831.  
  19832.     instance Iso ([a],[b]) [(a,b)] where
  19833.         iso (xs,ys) = zip xs ys
  19834.  
  19835.  
  19836.  
  19837.                                       82
  19838.  
  19839.  
  19840.  
  19841.  
  19842. Introduction to Gofer           14.4.3 Classes with multiple parameters
  19843.  
  19844.  
  19845. Unfortunately, even apparently straightforward examples  give  problems
  19846. with  unresolved  overloading,  forcing  the  use  of   explicit   type
  19847. declarations:
  19848.  
  19849.     ? iso [(1,2),(3,4)]
  19850.     ERROR: Unresolved overloading
  19851.     *** type        : Iso [(Int,Int)] a => a
  19852.     *** translation : \d126 -> iso d126 [(1,2),(3,4)]
  19853.  
  19854.     ? (iso [(1,2),(3,4)]) :: ([Int],[Int])
  19855.     ([1, 3],[2, 4])
  19856.     (22 reductions, 64 cells)
  19857.     ?
  19858.  
  19859. A second example of a multiple  parameter  type  class  is  defined  as
  19860. follows:
  19861.  
  19862.     class Ord a => Collects a b where
  19863.         emptyCollection :: b
  19864.         addToCollection :: a -> b -> b
  19865.         listCollection  :: b -> [a]
  19866.  
  19867. The basic intuition is that the predicate Collects a b  indicates  that
  19868. elements of type b can be used to represent collections of elements  of
  19869. type a.  A number of people have suggested using type classes  in  this
  19870. way to provide features similar to the (similarly named, but  otherwise
  19871. different) classes that occur in object-oriented languages.
  19872.  
  19873. Obvious implementations involve the use  of  ordered  lists  or  binary
  19874. search trees defined by instances of the form:
  19875.  
  19876.     data STree a = Empty | Node a (STree a) (STree a)
  19877.  
  19878.     instance Collects a [a] where ....
  19879.     instance Collects a (STree a) where ....
  19880.  
  19881. Once again, there are significant problems even  with  simple  examples
  19882. using these functions.  As an example, the standard way of  defining  a
  19883. function of type:
  19884.  
  19885.                   Collects a b => [a] -> b
  19886.  
  19887. mapping a list of values to a collection  of  those  values  using  the
  19888. higher order function "foldr":
  19889.  
  19890.     listToCollection = foldr addToCollection emptyCollection
  19891.  
  19892. actually produces a function with ambiguous type:
  19893.  
  19894.     ? :t foldr addToCollection emptyCollection
  19895.     \d139 d140 -> foldr (addToCollection d140) (emptyCollection d139)
  19896.               :: (Collects c b, Collects a b) => [a] -> b
  19897.     ?
  19898.  
  19899. which cannot be resolved, even with an explicit type declaration.
  19900.  
  19901.  
  19902.  
  19903.                                       83
  19904.  
  19905.  
  19906.  
  19907.  
  19908. Introduction to Gofer             14.4.4 Overloading and numeric values
  19909.  
  19910.  
  19911. 14.4.4 Overloading and numeric values
  19912. -------------------------------------
  19913. One of the most common uses of overloading is to allow the use  of  the
  19914. standard arithmetic operators such as (+), (*) etc. on the elements  of
  19915. a range of numeric types including integers and floating  point  values
  19916. in addition to user defined numeric types such as  arbitrary  precision
  19917. integers,  complex  and  rational  numbers,   vectors   and   matrices,
  19918. polynomials etc.  In Haskell, these features are supported by a  number
  19919. of built-in types and a complex hierarchy of  type  classes  describing
  19920. the operations defined on the elements of each numeric type.
  19921.  
  19922. As an experimental language, intended primarily for  the  investigation
  19923. of general purpose overloading, Gofer has  only  two  built-in  numeric
  19924. types; Int and Float (the second of  which  is  not  supported  in  all
  19925. implementations).  Similarly, although the Gofer system could  be  used
  19926. to  implement the  full  hierarchy  of  Haskell  numeric  classes,  the
  19927. standard prelude uses a single numeric type class Num defined by:
  19928.  
  19929.     class Eq a => Num a where           -- simplified numeric class
  19930.         (+), (-), (*), (/) :: a -> a -> a
  19931.         negate             :: a -> a
  19932.         fromInteger        :: Int -> a
  19933.  
  19934. The first four member functions (+), (-), (*),  (/)  are  the  standard
  19935. arithmetic functions on instances of Num, whilst "negate" denotes unary
  19936. negation.  The final member function, fromInteger is used to coerce any
  19937. integer value to the corresponding value in another  instance  of  Num.
  19938. An expression such as "fromInteger 3" is called an  overloaded  numeric
  19939. constant and has type Num a => a indicating that it can be  used  as  a
  19940. value of any instance of Num.  See below for examples.
  19941.  
  19942. Both Float and Int are defined as  instances  of  Num  using  primitive
  19943. functions for integer and floating point arithmetic:
  19944.  
  19945.     instance Num Int where
  19946.         (+)           = primPlusInt
  19947.         (-)           = primMinusInt
  19948.         (*)           = primMulInt
  19949.         (/)           = primDivInt
  19950.         negate        = primNegInt
  19951.         fromInteger x = x
  19952.  
  19953.     instance Num Float where
  19954.         (+)         = primPlusFloat
  19955.         (-)         = primMinusFloat
  19956.         (*)         = primMulFloat
  19957.         (/)         = primDivFloat 
  19958.         negate      = primNegFloat
  19959.         fromInteger = primIntToFloat
  19960.  
  19961. These definitions make it  possible  to  evaluate  numeric  expressions
  19962. involving both types:
  19963.  
  19964.     ? 2 + 3
  19965.     5
  19966.     (3 reductions, 6 cells)
  19967.  
  19968.  
  19969.                                       84
  19970.  
  19971.  
  19972.  
  19973.  
  19974. Introduction to Gofer             14.4.4 Overloading and numeric values
  19975.  
  19976.  
  19977.     ? 3.2 + 4.321
  19978.     7.521
  19979.     (3 reductions, 13 cells)
  19980.     ?
  19981.  
  19982. Note  however  that  any  attempt  to  evaluate  an  expression  mixing
  19983. different arithmetic types is likely to cause a type error:
  19984.  
  19985.     ? 4.2 * 4
  19986.     ERROR: Type error in application
  19987.     *** expression     : 4.2 * 4
  19988.     *** term           : 4.2
  19989.     *** type           : Float
  19990.     *** does not match : Int
  19991.     ?
  19992.  
  19993. Further problems occur when we try to define functions intended  to  be
  19994. used with arbitrary instances  of  Num  rather  than  specific  numeric
  19995. types.  As an example of this, the  standard  prelude  function  "sum",
  19996. roughly equivalent to:
  19997.  
  19998.     sum []     = 0
  19999.     sum (x:xs) = x + sum xs
  20000.  
  20001. has type [Int] -> Int,  rather than the  more general Num a => [a] -> a
  20002. which could be used to find the sum of a list of numeric values in  any
  20003. instance of Num.  The problem in this particular case is caused by the
  20004. integer constant 0 in the first line of the definition.  Replacing this
  20005. with the expression fromInteger 0 leads to the following definition for
  20006. a generic sum function of the required type:
  20007.  
  20008.     genericSum       :: Num a => [a] -> a
  20009.     genericSum []     = fromInteger 0
  20010.     genericSum (x:xs) = x + genericSum xs
  20011.  
  20012. For example:
  20013.  
  20014.     ? genericSum [1,2,3]
  20015.     6
  20016.     (10 reductions, 18 cells)
  20017.     ? genericSum [1.0,2.0,3.0]
  20018.     6.0
  20019.     (11 reductions, 27 cells)
  20020.     ?
  20021.  
  20022. The fromInteger function  can  also  be  used  to  solve  the  previous
  20023. problem:
  20024.  
  20025.     ? 4.2 * fromInteger 4
  20026.     16.8
  20027.     (3 reductions, 13 cells)
  20028.     ?
  20029.  
  20030. In Haskell, any integer  constant  k  appearing  in  an  expression  is
  20031. treated as if the programmer had actually written  "fromInteger  k"  so
  20032. that  both  of  the  preceding  problems  are  automatically  resolved.
  20033.  
  20034.  
  20035.                                       85
  20036.  
  20037.  
  20038.  
  20039.  
  20040. Introduction to Gofer             14.4.4 Overloading and numeric values
  20041.  
  20042.  
  20043. Unfortunately, this  also  creates  some  new  problems;  applying  the
  20044. function fromInteger to each integer constant in the previous  examples
  20045. causes problems with unresolved overloading:
  20046.  
  20047.     ? fromInteger 2 + fromInteger 3
  20048.     ERROR: Unresolved overloading
  20049.     *** type        : Num a => a
  20050.     *** translation : \d143 -> (+) d143 (fromInteger d143 2)
  20051.                                         (fromInteger d143 3)
  20052.     ?
  20053.  
  20054. Once again, Haskell provides a solution to this problem in the form  of
  20055. a `default mechanism' for  numeric  types  which,  once  the  following
  20056. problem has been detected, will typically `default'  the  unknown  type
  20057. represented by the type variable a above to be Int, so that the  result
  20058. is actually equivalent to the following:
  20059.  
  20060.     ? (fromInteger 2 + fromInteger 3) :: Int
  20061.     5
  20062.     (4 reductions, 8 cells)
  20063.     ?
  20064.  
  20065. There are a number of problems with the Haskell default mechanism; both
  20066. theoretical and practical.  In addition, if a default mechanism of some
  20067. form is used then it should also be capable of dealing  with  arbitrary
  20068. user-defined type classes, rather than  a  small  group  of  `standard'
  20069. classes, in order to provide solutions to  the  unresolved  overloading
  20070. problems described in  previous  sections.   Therefore,  for  the  time
  20071. being, Gofer does  not  support  any  form  of  default  mechanism  and
  20072. overloaded numeric constants can only be obtained by  explicit  use  of
  20073. the fromInteger function.
  20074.  
  20075.  
  20076. 14.4.5 Constants in dictionaries
  20077. --------------------------------
  20078. The Gofer system constructs new dictionaries as necessary, and  deletes
  20079. them when they are no longer required.  At any one time,  there  is  at
  20080. most one dictionary for each instance of a class.   Coupled  with  lazy
  20081. evaluation, this has a number of advantages for classes in which member
  20082. functions are defined by variable declarations as in section 9.10.   As
  20083. an example, consider the class Finite defined by:
  20084.  
  20085.     class Finite a  where  members :: [a]
  20086.  
  20087. The only member in this class is a list enumerating the elements of the
  20088. type.  For example:
  20089.  
  20090.     instance Finite Bool  where  members = [False, True]
  20091.  
  20092.     instance (Finite a, Finite b) => Finite (a,b) where
  20093.         members = [ (x,y) | x<-members, y<-members ]
  20094.  
  20095. In order to overcome any problems with unresolved overloading, explicit
  20096. type signatures are often needed to resolve overloading:
  20097.  
  20098.     ? members :: [Bool]
  20099.  
  20100.  
  20101.                                       86
  20102.  
  20103.  
  20104.  
  20105.  
  20106. Introduction to Gofer                  14.4.5 Constants in dictionaries
  20107.  
  20108.  
  20109.     [False, True]
  20110.     (6 reductions, 26 cells)
  20111.     ? length (members :: [((Bool,Bool),(Bool,Bool))])
  20112.     16
  20113.     (103 reductions, 195 cells)
  20114.     ?
  20115.  
  20116. In some cases, the required overloading is implicit  from  the  context
  20117. and no additional type information is required,  as  in  the  following
  20118. example:
  20119.  
  20120.     ? [ x && y | (x,y) <- members ]
  20121.     [False, False, False, True]
  20122.     (29 reductions, 90 cells)
  20123.     ?
  20124.  
  20125. We can also use the technique of passing a `dummy' parameter to resolve
  20126. overloading problems in a function definition:
  20127.  
  20128.     size  :: Finite a => a -> Int
  20129.     size x = length (members `asTypeOf` [x])
  20130.  
  20131. which calculates the number of elements of  a  finite  type,  given  an
  20132. arbitrary element of that type:
  20133.  
  20134.     ? size (True,False)
  20135.     4
  20136.     (31 reductions, 60 cells)
  20137.     ?
  20138.  
  20139. Now consider the expression "size (True,False)  +  size  (True,False)".
  20140. At first glance, we expect  this  to  repeat  the  calculation  in  the
  20141. previous example two  times,  requiring  approximately  twice  as  many
  20142. reductions and cells as before.  However,  before  this  expression  is
  20143. evaluated, Gofer constructs a dictionary for Finite  (Bool,Bool).   The
  20144. evaluation of the first summand forces Gofer to evaluate the value  for
  20145. "members" in this dictionary.  Since precisely the same  dictionary  is
  20146. used to calculate the value of the second summand,  the  evaluation  of
  20147. "members" is not repeated and the complete  calculation  actually  uses
  20148. rather fewer reductions and cells:
  20149.  
  20150.     ? size (True,False) + size (True,False)
  20151.     8
  20152.     (51 reductions, 90 cells)
  20153.     ?
  20154.  
  20155. On the other hand, repeating the original calculation gives exactly the
  20156. same number of reductions and cells as before, because the dictionaries
  20157. constructed at the beginning of each calculation are not  retained  for
  20158. use in subsequent calculations.
  20159.  
  20160. We can force Gofer to construct specific  dictionaries  whilst  reading
  20161. from a file of definitions, so that they are not deleted at the end  of
  20162. each calculation, using an explicitly typed  variable  definition  such
  20163. as:
  20164.  
  20165.  
  20166.  
  20167.                                       87
  20168.  
  20169.  
  20170.  
  20171.  
  20172. Introduction to Gofer                  14.4.5 Constants in dictionaries
  20173.  
  20174.  
  20175.     boolBoolMembers = members :: [(Bool,Bool)]
  20176.  
  20177. This forces Gofer to construct the dictionary Finite (Bool,Bool)  when
  20178. the file of definitions is loaded and prevents it from being deleted at
  20179. the end of each calculation.  Having  loaded  a  file  containing  this
  20180. definition, the  first two  attempts  to  evaluate  "size (True,False)"
  20181. give:
  20182.  
  20183.     ? size (True,False)
  20184.     4
  20185.     (31 reductions, 60 cells)
  20186.     ? size (True,False)
  20187.     4
  20188.     (20 reductions, 32 cells)
  20189.     ?
  20190.  
  20191.  
  20192. 14.4.6 The monomorphism restriction
  20193. -----------------------------------
  20194. This section  describes  a  technique  used  to  limit  the  amount  of
  20195. overloading used in the definition of certain values to avoid a  number
  20196. of technical problems.  This particular topic has attracted quite a lot
  20197. of attention within the Haskell community where  it  is  affectionately
  20198. known as the `dreaded monomorphism restriction'.  Although the  initial
  20199. formulation of the rule was rather cumbersome and limiting, the current
  20200. version used in both  Gofer  and  Haskell  is  unlikely  to  cause  any
  20201. problems in practice.  In  addition,  many  of  the  examples  used  to
  20202. motivate the need for the monomorphism restriction in Haskell occur  as
  20203. a result  of  the  use  of  implicitly  overloaded  numeric  constants,
  20204. described in section 14.4.4, and hence do not occur in Gofer.
  20205.  
  20206. The monomorphism restriction takes its name from the way  in  which  it
  20207. limits the amount of polymorphism that can be used in particular  kinds
  20208. of declaration.  Although we touch  on  this  point  in  the  following
  20209. discussion, the description given here uses  an  equivalent,  but  less
  20210. abstract approach, based on observations about  the  implementation  of
  20211. overloaded functions.
  20212.  
  20213. Basic ideas:
  20214. ------------
  20215. As we have seen,  the  implementation  of  overloading  used  by  Gofer
  20216. depends on being able to add extra arguments to a  function  definition
  20217. to supply the required dictionary parameters.   For  example,  given  a
  20218. function definition such as:
  20219.  
  20220.     isElement x []     =  False
  20221.     isElement x (y:ys) =  x==y || isElement x ys
  20222.  
  20223. we first add a dictionary parameter for the use of the overloaded  (==)
  20224. operator on the right hand side, obtaining:
  20225.  
  20226.     isElement x []     = False
  20227.     isElement x (y:ys) = (==) d x y || isElement x ys
  20228.  
  20229. Finally, we have to add the variable d  as  a  new  parameter  for  the
  20230. function isElement, on both the  left  and  right  hand  sides  of  the
  20231.  
  20232.  
  20233.                                       88
  20234.  
  20235.  
  20236.  
  20237.  
  20238. Introduction to Gofer               14.4.6 The monomorphism restriction
  20239.  
  20240.  
  20241. definition:
  20242.  
  20243.     isElement d x []     = False
  20244.     isElement d x (y:ys) = (==) d x y || isElement d x ys
  20245.  
  20246. The monomorphism restriction imposes conditions which prevent this last
  20247. step from being used for certain kinds of value binding.
  20248.  
  20249. Declaration groups:
  20250. -------------------
  20251. Before giving the full details, it  is  worth  pointing  out  that,  in
  20252. general,  the  monomorphism  restriction  affects   groups   of   value
  20253. declarations rather than just individual  definitions.   To  illustrate
  20254. this point, consider the function definitions:
  20255.  
  20256.     f x y  =  x==y || g x y
  20257.     g x y  =  not (f x y)
  20258.  
  20259. Adding an appropriate dictionary parameter for the (==) operator gives:
  20260.  
  20261.     f x y  =  (==) d x y || g x y
  20262.     g x y  =  not (f x y)
  20263.  
  20264. The next stage is to  make  this  dictionary  variable  into  an  extra
  20265. parameter to the function f wherever it appears, giving:
  20266.  
  20267.     f d x y  =  (==) d x y || g x y
  20268.     g x y    =  not (f d x y)
  20269.  
  20270. But now the right hand side  of  the  second  definition  mentions  the
  20271. dictionary variable d  which  must  therefore  be  added  as  an  extra
  20272. parameter to g:
  20273.  
  20274.     f d x y  =  (==) d x y || g d x y
  20275.     g d x y  =  not (f d x y)
  20276.  
  20277. In other words, if dictionary parameters are added  to  any  particular
  20278. function  definition,  then  each  use  of  that  function  in  another
  20279. definition will also be require  extra  dictionary  parameters.   As  a
  20280. result, the monomorphism restriction has to be applied to the  smallest
  20281. groups of  declarations  such  that  any  pair  of  mutually  recursive
  20282. bindings are in the same group.
  20283.  
  20284. As the example above shows, if one (or more) of the bindings in a given
  20285. declaration group is affected by the monomorphism restriction  so  that
  20286. the appropriate dictionary parameters cannot be added as parameters for
  20287. that definition, then the same condition must also be imposed on all of
  20288. the other bindings in the group.  [Adding the extra parameter to  f  in
  20289. the example forces us to  add  an  extra  parameter  for  g;  if  extra
  20290. parameters were not permitted for g then they could not be added to f.]
  20291.  
  20292.  
  20293.  
  20294.  
  20295.  
  20296.  
  20297.  
  20298.  
  20299.                                       89
  20300.  
  20301.  
  20302.  
  20303.  
  20304. Introduction to Gofer               14.4.6 The monomorphism restriction
  20305.  
  20306.  
  20307. Restricted bindings:
  20308. --------------------
  20309. There are three main reasons for avoiding adding dictionary  parameters
  20310. to a particular value binding:
  20311.  
  20312.   o  Dictionary parameters unnecessary.  If the dictionary  values  are
  20313.      completely determined by context then it is not necessary to  pass
  20314.      the appropriate values as dictionary parameters.  For example, the
  20315.      function definition:
  20316.  
  20317.          f x  =   x == 0  ||  x == 2
  20318.  
  20319.      can be translated as:
  20320.  
  20321.          f x  =   (==) {dict} x 0  ||  (==) {dict} x 2
  20322.  
  20323.      where, in both cases, the symbol {dict} denotes the dictionary for
  20324.      Eq Int.  As a further optimisation, once the dictionary  is  fully
  20325.      determined, this can be simplified to:
  20326.  
  20327.          f x  =   primEqInt x 0 || primEqInt x 2
  20328.  
  20329.   o  Dictionary parameters cannot be added in a pattern  binding.   One
  20330.      potential solution to this problem would be to replace the pattern
  20331.      binding by an equivalent set of function bindings.   In  practice,
  20332.      we do not use this technique because it typically causes ambiguity
  20333.      problems, as illustrated by the pattern binding:
  20334.  
  20335.          (plus,times) = ((+), (*))
  20336.  
  20337.      Translating this into a group of function bindings gives:
  20338.  
  20339.          newVariable  = ((+), (*))
  20340.          plus         = fst newVariable     -- fst (x,_) = x
  20341.          times        = snd newVariable     -- snd (_,y) = y
  20342.  
  20343.      The type of newVariable is (Num a, Num b) => (a->a->a, b->b->b) so
  20344.      that  the  correct  translation  of  these  bindings   using   two
  20345.      dictionary variables gives:
  20346.  
  20347.          newVariable da db = ((+) da, (*) db)
  20348.          plus da db        = fst (newVariable da db)
  20349.          times da db       = snd (newVariable da db)
  20350.  
  20351.      and hence the correct types for plus and times are:
  20352.  
  20353.          plus  :: (Num a, Num b) => a -> a -> a
  20354.          times :: (Num a, Num b) => b -> b -> b
  20355.      
  20356.      both of which are ambiguous.
  20357.  
  20358.   o  Adding dictionary parameters may translate a  variable  definition
  20359.      into  a  function  definition,  loosing  the  benefits  of  shared
  20360.      evaluation.  As an  example,  consider  the  following  definition
  20361.      using the function "size" and the class Finite  described  in  the
  20362.      previous section:
  20363.  
  20364.  
  20365.                                       90
  20366.  
  20367.  
  20368.  
  20369.  
  20370. Introduction to Gofer               14.4.6 The monomorphism restriction
  20371.  
  20372.  
  20373.          twiceSize x = n + n  where n = size x
  20374.  
  20375.      Since the variable n is defined using a local definition, we would
  20376.      not expect to have to evaluate size x more than once to  determine
  20377.      the  value  of  twiceSize.   However,  adding   extra   dictionary
  20378.      parameters without restriction gives:
  20379.  
  20380.          twiceSize d x  = n d + n d  where  n d = size d x
  20381.  
  20382.      Now that n has been replaced by a function, the evaluation will be
  20383.      repeated, once for each occurrence of the expression  "n  d".   In
  20384.      order to avoid this kind of problem, the monomorphism  restriction
  20385.      does not usually allow extra parameters to be added to a  variable
  20386.      definition.  Thus the original definition above will be translated
  20387.      to give:
  20388.  
  20389.          twiceSize d x  =  n + n  where n = size d x
  20390.  
  20391.      Note that the same rule is applied to variable definitions at  the
  20392.      top-level of a file of definitions, resulting in an error  if  any
  20393.      dictionary parameters are required for the right hand side of  the
  20394.      definition.  As an example of this:
  20395.  
  20396.          twiceMembers = members ++ members
  20397.  
  20398.      which produces an error message of the form:
  20399.  
  20400.          ERROR "ex" (line 157): Unresolved top-level overloading
  20401.          *** Binding             : twiceMembers
  20402.          *** Inferred type       : [_7]
  20403.          *** Outstanding context : Finite _7
  20404.          ?
  20405.  
  20406.      [COMMENT: A type expression of the form _n (such  as  _7  in  this
  20407.      particular example) represents a  fixed  (i.e.  monomorphic)  type
  20408.      variable.]
  20409.  
  20410.      In  the  case  of  a  variable   declaration,   the   monomorphism
  20411.      restriction can be overcome by giving an explicit  type  signature
  20412.      including an appropriate context, to indicate  that  the  variable
  20413.      defined is intended to be used as an overloaded  value.   In  this
  20414.      case, we need only include the declaration:
  20415.  
  20416.          twiceMembers :: Finite a => [a]
  20417.  
  20418.      in the file containing the definition for twiceMembers to suppress
  20419.      the previous error message and allow the function to be used as  a
  20420.      fully overloaded variable.
  20421.  
  20422.      Note that the monomorphism restriction interferes with the use  of
  20423.      polymorphism.  For example, the definition:
  20424.  
  20425.          aNumber = length (twiceMembers::[Bool]) +
  20426.                    length (twiceMembers::[(Bool,Bool)])
  20427.                    where twiceMembers = members ++ members
  20428.  
  20429.  
  20430.  
  20431.                                       91
  20432.  
  20433.  
  20434.  
  20435.  
  20436. Introduction to Gofer               14.4.6 The monomorphism restriction
  20437.  
  20438.  
  20439.      will not be accepted because the monomorphism  restriction  forces
  20440.      the local definition of  "twiceMembers"  to  be  restricted  to  a
  20441.      single overloading (the dictionary parameter supplied to each  use
  20442.      of members must be constant throughout the local definition):
  20443.  
  20444.          ERROR "ex" (line 12): Type error in type signature expression
  20445.          *** term           : twiceMembers
  20446.          *** type           : [(Bool,Bool)]
  20447.          *** does not match : [Bool]
  20448.          ?
  20449.  
  20450.      Once again, this problem can  be  fixed  using  an  explicit  type
  20451.      declaration:
  20452.  
  20453.          aNumber = length (twiceMembers::[Bool]) +
  20454.                    length (twiceMembers::[(Bool,Bool)])  
  20455.                    where twiceMembers :: Finite a => [a]
  20456.                          twiceMembers  = members ++ members
  20457.  
  20458.  
  20459. Formal definition:
  20460. ------------------
  20461. The  examples  above  describe  the  motivation  for  the  monomorphism
  20462. restriction, captured by the following definition:
  20463.  
  20464. Dictionary variables will not  be  used  as  extra  parameters  in  the
  20465. definition of a value in a given declaration group G if:
  20466.  
  20467.    either:  G includes a pattern binding
  20468.  
  20469.        or:  G includes a variable declaration, but does not include  an
  20470.             explicit type signature for any of  the  variables  in  the
  20471.             group.
  20472.  
  20473. If neither of these conditions hold, then equivalent sets of dictionary
  20474. parameters will be added to each declaration in the group.
  20475.  
  20476.  
  20477.  
  20478.  
  20479.  
  20480.  
  20481.  
  20482.  
  20483.  
  20484.  
  20485.  
  20486.  
  20487.  
  20488.  
  20489.  
  20490.  
  20491.  
  20492.  
  20493.  
  20494.  
  20495.  
  20496.  
  20497.                                       92
  20498.  
  20499.  
  20500. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  20501.  
  20502.                                                                       
  20503.  
  20504.  
  20505. -----------------------------------------------------------------------
  20506.        __________   __________   __________   __________   ________
  20507.       /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  20508.      /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  20509.     /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  20510.    /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  20511.   /_________/  /_________/  /__/         /_________/  /__/    \__\
  20512.  
  20513.   Functional programming environment, Version 2.21
  20514.  
  20515.   Copyright Mark P Jones 1991.
  20516.  
  20517.  
  20518.   Release notes
  20519.  
  20520. -----------------------------------------------------------------------
  20521.  
  20522. This document is intended as a supplement to the user manual ``An
  20523. introduction to Gofer'' supplied with the previous public release of
  20524. Gofer, version 2.20.1.  It provides brief descriptions of the changes
  20525. and new features incorporated in version 2.21.  With the exception of
  20526. bug fixes, which will be distributed as soon as they become available,
  20527. there are no plans to release a further update of Gofer for some time
  20528. (at least six months).
  20529.  
  20530. If you would like to be informed when bug-fixes or further versions
  20531. become available, please send email to me at mpj@prg.ox.ac.uk or
  20532. jones-mark@cs.yale.edu (if you have not already done so) and I will
  20533. add your name to the mailing list.
  20534.  
  20535. Please contact me if you have any questions about the Gofer system, or
  20536. if you need some advice or help to complete a port of Gofer to a new
  20537. platform.
  20538.  
  20539. In addition to PC and Sun workstations, I have now had reports that
  20540. Gofer has been successfully compiled and used on a number of other
  20541. machines including Apollo, DecStation, Mips, MicroVax and Acorn ARM
  20542. machines, with little or no changes to the original source.
  20543.  
  20544.  
  20545. ACKNOWLEDGMENTS
  20546.  
  20547. Many of the features described in this document were motivated by
  20548. comments and suggestions from users of the previously released version
  20549. of Gofer.  My thanks in particular to Julian Seward, but also to Brent
  20550. Benson, Stuart Clayman, Andy Gill, Peter Hancock, Ian Holyer, Hiroyuki
  20551. Matsuda, Aiden McCaughey, Tobias Nipkow, Will Partain, Ian Poole,
  20552. Bernard Sufrin and Phil Wadler.
  20553.  
  20554.  
  20555.  
  20556.  
  20557.  
  20558.  
  20559.  
  20560.  
  20561.  
  20562.  
  20563.                                       1
  20564.  
  20565.  
  20566.  
  20567.  
  20568. Release Notes                                    1. MINOR ENHANCEMENTS
  20569.  
  20570.  
  20571. 1. MINOR ENHANCEMENTS
  20572.  
  20573. A number of small enhancements have been made to make the source code
  20574. for Gofer a little more flexible.  In particular, this includes:
  20575.  
  20576.   o  Gofer can now be compiled using the Gnu C compiler gcc, for those
  20577.      who prefer this to the standard cc compiler provided on their
  20578.      machine.
  20579.  
  20580.   o  Default table sizes for the Unix version have been expanded which
  20581.      makes it possible to support larger programs in Gofer (a program
  20582.      of over 5000 lines has already been tested with this release).
  20583.  
  20584.   o  The Makefile has been made less SunOS specific and should be
  20585.      usable on a wider range of machines without modification.
  20586.  
  20587.  
  20588.  
  20589.  
  20590.  
  20591.  
  20592.  
  20593.  
  20594.  
  20595.  
  20596.  
  20597.  
  20598.  
  20599.  
  20600.  
  20601.  
  20602.  
  20603.  
  20604.  
  20605.  
  20606.  
  20607.  
  20608.  
  20609.  
  20610.  
  20611.  
  20612.  
  20613.  
  20614.  
  20615.  
  20616.  
  20617.  
  20618.  
  20619.  
  20620.  
  20621.  
  20622.  
  20623.  
  20624.  
  20625.  
  20626.  
  20627.  
  20628.  
  20629.                                       2
  20630.  
  20631.  
  20632.  
  20633.  
  20634. Release Notes                             2. USER INTERFACE EXTENSIONS
  20635.  
  20636.  
  20637. 2. USER INTERFACE EXTENSIONS
  20638.  
  20639. The user interface of the previous release has been extended to support
  20640. a range of new features, intended to make the Gofer environment more
  20641. convenient for program development.  Further details are given in the
  20642. following sections.
  20643.  
  20644. 2.1 Command line options
  20645. ------------------------
  20646. Although the previous version of Gofer accepted some command line
  20647. options, these were not documented.  Those who discovered the
  20648. Gofer command line options in the previous release by reading the
  20649. source code should note that a different syntax is now used which is
  20650. not compatible with the older system.
  20651.  
  20652. Options may be set when loading Gofer (on the UNIX/DOS command line)
  20653. or within the interpreter itself using the :set command.  Using this
  20654. command on its own with no arguments prints a menu of all of the
  20655. available options and displays the current settings:
  20656.  
  20657.     ? :set
  20658.     Groups of options begin with +/- to turn options on/off resp.
  20659.  
  20660.     TOGGLES:
  20661.     s    Print no. reductions/cells after eval
  20662.     t    Print type after evaluation
  20663.     d    Show dictionary values in output exprs
  20664.     f    Terminate evaluation on first error
  20665.     g    Print no. cells recovered after gc
  20666.     c    Test conformality for pattern bindings
  20667.     l    Treat input files as literate scripts
  20668.     e    Warn about errors in literate scripts
  20669.     i    Apply fromInteger to integer literals
  20670.     o    Optimise use of (&&) and (||)
  20671.     u    Catch ambiguously typed top-level vars
  20672.     a    Use any evidence, not nec. best
  20673.     E    Fail silently if evidence not found
  20674.  
  20675.     OTHER OPTIONS: (leading + or - makes no difference)
  20676.     hnum Set heap size (cannot be changed within Gofer)
  20677.     pstr Set prompt string to str
  20678.     xnum Set maximum depth for evidence search
  20679.  
  20680.     Current settings: +sdcoaE -tfgleiu -h100000 -p? -x8
  20681.     ?
  20682.  
  20683. Most options are toggles meaning that they can either be switched on
  20684. (by preceding the option with a `+' character) or off (by using a `-'
  20685. character).  Several options may be grouped together so that:
  20686.  
  20687.   :set +std -le     is equivalent to       :set +s +t +d -l -e
  20688.  
  20689. In order to distinguish command line options from filenames, a leading
  20690. `+' or `-' must also be used with the `h', `p' and `x' options, although
  20691. the choice in each case is not significant.
  20692.  
  20693.  
  20694.  
  20695.                                       3
  20696.  
  20697.  
  20698.  
  20699.  
  20700. Release Notes                                 2.1 Command line options
  20701.  
  20702.  
  20703. Options may also be used in :a and :l commands, and within project files
  20704. (see section 2.2), although it should be noted that they will be acted
  20705. upon as soon as they are encountered and will not be reapplied when
  20706. reloading files.
  20707.  
  20708. Most of the options listed above are described in more detail in the
  20709. following sections.
  20710.  
  20711.  
  20712. 2.1.1  Set Gofer prompt
  20713. -----------------------
  20714. The standard Gofer prompt "? " may be changed using a command line
  20715. option of the form -pstr where for any string str.  The new prompt is
  20716. formed from the given string, followed by a single space:
  20717.  
  20718.     ? :set -pGofer>
  20719.     Gofer> :set -p?
  20720.     ?
  20721.  
  20722. 2.1.2  Print statistics
  20723. -----------------------
  20724. In normal operation, Gofer displays the number of reductions and cells
  20725. used by a particular calculation when the result has been evaluated or
  20726. if the calculation is interrupted:
  20727.  
  20728.     ? map (\x -> x*x) [1..10]
  20729.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  20730.     (112 reductions, 204 cells)
  20731.     ? [1..]
  20732.     [1, 2, 3, 4, ^C{Interrupted!}
  20733.  
  20734.     (18 reductions, 54 cells)
  20735.     ?
  20736.  
  20737. Printing of these statistics can be suppressed using the -s option
  20738. (and subsequently restored using +s):
  20739.  
  20740.     ? :set -s
  20741.     ? map (\x -> x*x) [1..10]
  20742.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  20743.     ? [1..]
  20744.     [1, 2, 3, 4, ^C{Interrupted!}
  20745.  
  20746.     ? :set +s
  20747.     ? 2 + 4
  20748.     6
  20749.     (2 reductions, 6 cells)
  20750.     ?
  20751.  
  20752.  
  20753. 2.1.3  Print type
  20754. -----------------
  20755. Before evaluating an expression entered into the interpreter, the Gofer
  20756. type checker is used to determine the type of the resulting value.
  20757. This is used to detect errors in the original input expression, avoid
  20758. the use of runtime type checks and determine how the value should be
  20759.  
  20760.  
  20761.                                       4
  20762.  
  20763.  
  20764.  
  20765.  
  20766. Release Notes                                        2.1.3  Print type
  20767.  
  20768.  
  20769. output.  The actual type of the term is not usually displayed unless a
  20770. type error is detected.  This behaviour can be changed using the +t
  20771. option which displays the type of each value as soon as evaluation is
  20772. complete.
  20773.  
  20774.     ? :set +t
  20775.     ? map (\x -> x*x) [1..10]
  20776.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] :: [Int]
  20777.     (108 reductions, 204 cells)
  20778.  
  20779.     ? map concat
  20780.     map concat :: [[[a]]] -> [[a]]
  20781.     (2 reductions, 17 cells)
  20782.  
  20783.     ? fix where fix f = f (fix f)
  20784.     v112 :: (a -> a) -> a
  20785.     (1 reduction, 7 cells)
  20786.     ?
  20787.  
  20788. Note that values of type String and Dialogue (or equivalent forms) are
  20789. displayed in a different manner to other values, and no type information
  20790. is printed after such values to avoid any possibility of confusion:
  20791.  
  20792.     ? map                              -- the map function
  20793.     map :: (a -> b) -> [a] -> [b]
  20794.     (1 reduction, 6 cells)
  20795.  
  20796.     ? "map"                            -- a string expression
  20797.     map
  20798.     (0 reductions, 4 cells)
  20799.  
  20800.     ? print "map"                      -- a dialogue
  20801.     "map"
  20802.     (18 reductions, 44 cells)
  20803.     ?
  20804.  
  20805.  
  20806. 2.1.4  Show dictionaries
  20807. ------------------------
  20808. The implementation of overloading in Gofer uses a translation of each
  20809. expression entered into the interpreter to a new expression involving
  20810. dictionary variables and constants.  These additional parameters are
  20811. usually included in expressions displayed by the interpreter and are
  20812. often useful for understanding and resolving overloading problems:
  20813.  
  20814.     ? \x -> x + x
  20815.     ERROR: Unresolved overloading
  20816.     *** type        : Num a => a -> a
  20817.     *** translation : \d125 x -> (+) d125 x x
  20818.  
  20819.     ? :t map (1+) [1..10]
  20820.     map ((+) {dict} 1) (enumFromTo {dict} 1 10) :: [Int]
  20821.     ?
  20822.  
  20823. If necessary (perhaps to make the output of Gofer easier for a beginner
  20824. to understand), the printing of dictionary parameters may be suppressed
  20825.  
  20826.  
  20827.                                       5
  20828.  
  20829.  
  20830.  
  20831.  
  20832. Release Notes                                 2.1.4  Show dictionaries
  20833.  
  20834.  
  20835. using the -d option:
  20836.  
  20837.     ? :set -d
  20838.     ? \x -> x + x
  20839.     ERROR: Unresolved overloading
  20840.     *** type        : Num a => a -> a
  20841.     *** translation : \x -> x + x
  20842.  
  20843.     ? :t map (1+) [1..10]
  20844.     map (1 +) (enumFromTo 1 10) :: [Int]
  20845.     ?
  20846.  
  20847. The original behaviour can be obtained using :set +d within the
  20848. interpreter.
  20849.  
  20850.  
  20851. 2.1.5  Terminate on error
  20852. -------------------------
  20853. When an irreducible subexpression is encountered during the evaluation
  20854. of a particular expression, the irreducible redex is printed with
  20855. surrounding braces and the Gofer interpreter attempts to continue the
  20856. evaluation with other parts of the original expression:
  20857.  
  20858.     ? take (1/0) [1..]          -- value is bottom
  20859.     {primDivInt 1 0}
  20860.     (4 reductions, 33 cells)
  20861.     ? [1/0]                     -- value is [bottom]
  20862.     [{primDivInt 1 0}]
  20863.     (5 reductions, 34 cells)
  20864.     ? [1/0, 2]                  -- value is [bottom, 2]
  20865.     [{primDivInt 1 0}, 2]
  20866.     (7 reductions, 43 cells)
  20867.     ?
  20868.  
  20869. Notice that, reading an expression enclosed in {braces} as bottom, each
  20870. of the values printed by Gofer gives the correct value.  Of course, it
  20871. is not possible to arrange for anything to be printed when a value of
  20872. bottom is generated by a nonterminating computation:
  20873.  
  20874.     ? last [1..]
  20875.     ^C{Interrupted!}            -- nothing printed until interrupted
  20876.  
  20877.     (10470 reductions, 15712 cells)
  20878.     ?
  20879.  
  20880. An alternative behaviour is provided by the +f option, which causes the
  20881. evaluation of an expression to be abandoned completely if an error
  20882. occurs:
  20883.  
  20884.     ? :set +f
  20885.     ? take (1/0) [1..]
  20886.  
  20887.     Aborting evaluation: {primDivInt 1 0}
  20888.     (3 reductions, 55 cells)
  20889.  
  20890.  
  20891.  
  20892.  
  20893.                                       6
  20894.  
  20895.  
  20896.  
  20897.  
  20898. Release Notes                                2.1.5  Terminate on error
  20899.  
  20900.  
  20901.     ? [1/0]
  20902.  
  20903.     Aborting evaluation: {primDivInt 1 0}
  20904.     (3 reductions, 54 cells)
  20905.  
  20906.     ? [1/0,2]
  20907.  
  20908.     Aborting evaluation: {primDivInt 1 0}
  20909.     (3 reductions, 56 cells)
  20910.  
  20911.     ?
  20912.  
  20913. Note that we are no longer able to distinguish between the values
  20914. produced by these three terms from the output produced by Gofer -- the
  20915. only differences are in the number of reductions and cells used which
  20916. tells us nothing about the values of the terms.  Note that the basic
  20917. method of evaluation in Gofer is unchanged -- the +f option simply
  20918. modifies the printing mechanism (i.e the means by which values are
  20919. displayed) to be more strict (in the technical sense of the word).
  20920.  
  20921. Although the use of the +f option makes the Gofer printing mechanism
  20922. less accurate, it is sometimes useful during program development so
  20923. that an error can be detected as soon as it occurs.  The original
  20924. behaviour can of course be restored at any time using the -f
  20925. option.
  20926.  
  20927.  
  20928. 2.1.6  Heap size
  20929. ----------------
  20930. The -hnumber option can be used to set the heap size (i.e. total number
  20931. of cells available at any one time), but cannot be used once the
  20932. interpreter has been loaded.  For example, starting the interpreter
  20933. with the command:
  20934.  
  20935.     gofer -h20000
  20936.  
  20937. will typically start the Gofer interpreter with a heap of 20000 cells.
  20938. Note that the heap is used to hold an intermediate (parsed) form of an
  20939. input file while it is being read, type checked and compiled.  It
  20940. follows that, the larger the input file, the larger the heap required
  20941. to enable that file to be loaded into Gofer.  In practice, most large
  20942. programs are written (and loaded) as a number of separate files (see
  20943. section 2.2) which means that this does not usually cause problems.
  20944.  
  20945.  
  20946. 2.1.7  Garbage collector notification
  20947. -------------------------------------
  20948. It is sometimes helpful to be able to tell when the garbage collector
  20949. is being used, in order to monitor the amount of time involved and the
  20950. number of cells recovered with each garbage collection.  If the +g
  20951. command line option is given (for example, using the command :set +g)
  20952. then the garbage collector prints a message of the form {{Gc:num}} each
  20953. time that the garbage collector is invoked.  The number after the colon
  20954. indicates the total number of cells that have been recovered.
  20955.  
  20956.  
  20957.  
  20958.  
  20959.                                       7
  20960.  
  20961.  
  20962.  
  20963.  
  20964. Release Notes                    2.1.7  Garbage collector notification
  20965.  
  20966.  
  20967. The garbage collector messages are actually printed in three sections,
  20968. which indicate which stage the garbage collector has reached (this is
  20969. only noticeable on slower machines of course!):
  20970.  
  20971.             {{Gc                :              number}}
  20972.  
  20973.    garbage       marking cells      preparing           garbage
  20974.    collection      which are       unused cells         collection
  20975.    begins         still in use      for reuse           completed
  20976.  
  20977. Garbage collector messages may be printed at almost any stage in a
  20978. computation (or indeed whilst loading, type checking or compiling a
  20979. file of definitions).  For this reason, it is often better to turn
  20980. the garbage collector messages off (using :set -g for example) when
  20981. they are not required.
  20982.  
  20983.  
  20984. 2.1.8  Conformality testing
  20985. ---------------------------
  20986. As described briefly in section 9.11 of the documentation for Gofer
  20987. version 2.20, pattern bindings of the form pat=expr are implemented
  20988. using a `conformality check' to ensure that the value of expr does
  20989. indeed match the pattern pat.  For example, the pattern binding:
  20990.  
  20991.     (x:xs) = [1..]
  20992.  
  20993. is actually implemented as if it had been defined by:
  20994.  
  20995.     (x:xs) = conformality [1..]
  20996.              where conformality v@(_:_) = v
  20997.  
  20998. which is in turn treated as a group of bindings:
  20999.  
  21000.     xxs    = conformality [1..] where conformality v@(_:_) = v
  21001.     x      = head xxs
  21002.     xs     = tail xxs
  21003.  
  21004. [The variables conformality and xxs used here are given as examples
  21005. only -- in practice, Gofer maintains a supply of variable names and
  21006. selects new names from this supply to avoid clashes with variables
  21007. which are already in use.]
  21008.  
  21009. The conformality check does not cause any problems in the example
  21010. above because the list [1..] is always guaranteed to match the
  21011. pattern (x:xs) (i.e. a non-empty list).  We can however see the
  21012. conformality check in action if we try examples in which the pattern
  21013. does not match:
  21014.  
  21015.     ? x where (x:xs) = []
  21016.     {v114 []}
  21017.     (3 reductions, 25 cells)
  21018.  
  21019.     ? xs where (0:xs) = [1..]
  21020.     {v114 [1] ++ iterate (primPlusInt 1) (primPlusInt 1 1)}
  21021.     (13 reductions, 94 cells)
  21022.     ?
  21023.  
  21024.  
  21025.                                       8
  21026.  
  21027.  
  21028.  
  21029.  
  21030. Release Notes                              2.1.8  Conformality testing
  21031.  
  21032.  
  21033. The variable v114 in each of these examples is the variable name
  21034. representing the conformality check.  As the second example shows, the
  21035. value of the expression on the right hand side of the pattern binding
  21036. is evaluated as much as necessary to determine whether the pattern
  21037. fits.
  21038.  
  21039. [ASIDE: This example also demonstrates a small problem with the printer
  21040. in that, when the first element of the list is encountered, it is
  21041. unable to detect that the tail of the list has not yet been evaluated.
  21042. Consequently, the expression:
  21043.  
  21044.     [1] ++ iterate (primPlusInt 1) (primPlusInt 1 1)
  21045.  
  21046. is not enclosed in parentheses as it should be.  This is a little
  21047. annoying, but not important because the expression only appears in an
  21048. error message.  The problem cannot in general be solved unless we avoid
  21049. the use of the [...] notation for enumerating the elements of a list.]
  21050.  
  21051. The conformality check must be used for compatibility with Haskell.
  21052. However, it is sometimes useful to be able to suppress the conformality
  21053. check using the -c option (for example, to use some programs written
  21054. for a language without conformality checks within Gofer):
  21055.  
  21056.     ? :set -c
  21057.     ? x where (x:xs) = []
  21058.     {_SEL (:) [] 1}
  21059.     (5 reductions, 36 cells)
  21060.     ? xs where (0:xs) = [1..]
  21061.     [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14^C{Interrupted!}
  21062.  
  21063.     (55 reductions, 146 cells)
  21064.     ?
  21065.  
  21066. In the first example, the expression _SEL (:) [] 1 indicates that the
  21067. first component of an object constructed using the (:) operator is to
  21068. be extracted from the object [].  Clearly this is impossible, and hence
  21069. the expression _SEL (:) [] 1 is irreducible.  In the second case, the
  21070. value of xs is equivalent to _SEL (:) (1:[2..]) 2 which reduces to
  21071. the infinite list [2..] as shown, despite the fact that [1..] does not
  21072. match the pattern (0:xs).
  21073.  
  21074. [ASIDE: The _SEL function is used internally by Gofer and cannot be
  21075. entered directly into the the interpreter.  One particular reason for
  21076. this is that it is not in general possible to assign a sensible type
  21077. to _SEL.  Constructor functions appearing as the first argument to _SEL
  21078. are printed in the normal manner.  There is no standard syntax for
  21079. writing tuple constructors in Gofer or Haskell which are therefore
  21080. printed in the form (,,,) for example, where the number of commas
  21081. indicates the number of components in the tuple.  In the following
  21082. example the constructor (,) denotes the pairing constructor.
  21083.  
  21084.     ? f a b where f (n+1) y = n+y;  (a,b) = (0,1)
  21085.     {v113 0 (_SEL (,) (0,1) 2)}
  21086.     (10 reductions, 63 cells)
  21087.     ?
  21088.  
  21089.  
  21090.  
  21091.                                       9
  21092.  
  21093.  
  21094.  
  21095.  
  21096. Release Notes                              2.1.8  Conformality testing
  21097.  
  21098.  
  21099. The same notation is sometimes used in the messages produced when type
  21100. errors are detected:
  21101.  
  21102.     ? (1,2) 3
  21103.     ERROR: Type error in application
  21104.     *** expression     : (1,2) 3
  21105.     *** term           : (,)
  21106.     *** type           : a -> b -> (a,b)
  21107.     *** does not match : c -> d -> e -> f
  21108.  
  21109.     ?
  21110.  
  21111. This syntax for tuple constructor functions cannot be used in
  21112. expressions entered directly into Gofer.  It may however be a nice
  21113. extension to consider for future versions, allowing definitions such
  21114. as zip = zipWith (,)  and  distl x = map (x,).]
  21115.  
  21116.  
  21117. 2.1.9  Literate scripts
  21118. -----------------------
  21119. In common with most programming languages, Gofer typically treats input
  21120. from a file as a list definitions in which program text is the norm,
  21121. and comments play a secondary role, introduced by the character
  21122. sequences ``--'' and ``{- ... -}''.
  21123.  
  21124. An alternative approach, using an idea described by Knuth as ``literate
  21125. programming'', gives more emphasis to comments and documentation, with
  21126. additional characters needed to distinguish program text from comments.
  21127. Gofer supports a form of literate programming based on an idea due to
  21128. Richard Bird and originally implemented as part of the functional
  21129. programming language Orwell.  The same idea has subsequently been
  21130. adopted by several other functional language systems.
  21131.  
  21132. A literate script contains a sequence of lines.  Program lines are
  21133. distinguished from comments by a `>' character in the first column.
  21134. This makes it particularly easy to write a document which is both an
  21135. executable program script and at the same time, without need for any
  21136. preprocessing, suitable for use with document preparation software such
  21137. as LaTeX.  Indeed, this document is itself a literate script containing
  21138. the following definition of the squaring function.
  21139.  
  21140. > sqr x = x * x
  21141.  
  21142. The +l option sets Gofer to treat each input file as a literate
  21143. script.  It should not be used on the command line unless the prelude
  21144. file has been edited to make a literate script.
  21145.  
  21146. The effect of using literate scripts can be thought of as applying a
  21147. preprocessor to each input file before it is loaded into Gofer.  This
  21148. program has a particularly simple definition in Gofer:
  21149.  
  21150.    illiterate   :: String -> String
  21151.    illiterate cs = unlines [ xs | ('>':xs) <- lines cs ]
  21152.  
  21153. The system of literate scripts used in Orwell is actually a little more
  21154. complicated than this and requires that the programmer adopt two simple
  21155.  
  21156.  
  21157.                                       10
  21158.  
  21159.  
  21160.  
  21161.  
  21162. Release Notes                                  2.1.9  Literate scripts
  21163.  
  21164.  
  21165. conventions in an attempt to try to catch simple errors in literate
  21166. scripts:
  21167.  
  21168.   o  Every input file must contain at least one line whose first
  21169.      character is `>'.  This means that programs containing no
  21170.      definitions (because the programmer has forgotten to use the `>'
  21171.      character to mark definitions) from being accepted.
  21172.  
  21173.   o  Lines containing definitions must be separated from comment lines
  21174.      by one or more blank lines (i.e. lines containing only space and
  21175.      tab characters).  This is useful for catching programs where the
  21176.      leading `>' character has been omitted from one or more lines in
  21177.      the definition of a function.  For example:
  21178.  
  21179.      >   map f []     = []
  21180.          map f (x:xs) = f x : map f xs
  21181.  
  21182.      would result in an error if the `>' character appeared in the first
  21183.      column of the first line.
  21184.  
  21185. Gofer will report on errors of this kind if the +l option is combined
  21186. with the +e option (for example as +le).
  21187.  
  21188.  
  21189. 2.1.10 Optimise (&&) and (||)
  21190. -----------------------------
  21191. The operator symbols (&&) and (||) are usually used to represent the
  21192. boolean connectives conjunction (and) and disjunction (or).  By
  21193. default, Gofer uses the following equations to produce better code for
  21194. expressions involving these operators:
  21195.  
  21196.          x && y  =  if  x  then  y     else  False
  21197.          x || y  =  if  x  then  True  else  y
  21198.  
  21199. This optimization is only valid if the operator symbols (&&) and (||)
  21200. are indeed bound to the appropriate values at the top level (the
  21201. standard full definitions are required in order to support partial
  21202. applications involving these operators).  Although this optimization is
  21203. in general valid (because the appropriated definitions are included in
  21204. the standard prelude), it may be necessary in certain cases (for
  21205. example, when working with a non-standard prelude) to suppress the
  21206. optimization using the -o option.
  21207.  
  21208.  
  21209.  
  21210.  
  21211.  
  21212.  
  21213.  
  21214.  
  21215.  
  21216.  
  21217.  
  21218.  
  21219.  
  21220.  
  21221.  
  21222.  
  21223.                                       11
  21224.  
  21225.  
  21226.  
  21227.  
  21228. Release Notes                                       2.2  Project Files
  21229.  
  21230.  
  21231. 2.2  Project Files
  21232. ------------------
  21233. Project files provide a simple way to use programs which are
  21234. spread across a number of source files.  Larger programs are often
  21235. written in this way, to separate the different components of the
  21236. program into smaller pieces which can be developed and tested
  21237. independently of other components.
  21238.  
  21239. A project file is a simple text file containing a list of program
  21240. filenames.  The project file may also contain comments using either of
  21241. the Gofer conventions for comments.  As a simple example, a simple
  21242. project file, in a file named "miniProlog", suitable for the
  21243. stack-based version of the mini Prolog interpreter included as a
  21244. demonstration program with Gofer 2.21 is as follows:
  21245.  
  21246.     -- This is a project file suitable for loading the stack-based
  21247.     -- version of the mini Prolog interpreter into Gofer 2.21
  21248.     --
  21249.     -- Load into Gofer using the command:   :p miniProlog
  21250.     --        or from command line using:   gofer + miniProlog
  21251.  
  21252.     Parse       -- general purpose parsing library
  21253.     Interact    -- general purpose library for interactive programs
  21254.     PrologData  -- definition of main data structures
  21255.     Subst       -- substitutions and unification
  21256.     StackEngine -- inference engine
  21257.     Main        -- top level program
  21258.  
  21259. As indicated in the comments at the top, there are two ways of using
  21260. this file with Gofer.  Within the interpreter we can use the command
  21261. :p miniProlog.  Once this command has been entered, Gofer reads the
  21262. contents of the project file and then attempts to load each of the
  21263. files named.  In general, if a particular project file "proj" contains
  21264. the options op1, ..., opn and the filenames f1, ..., fm, then the
  21265. command :p proj is equivalent to the sequence of commands:
  21266.  
  21267.     :l                -- clear any previously loaded scripts
  21268.     :set op1 ... opn  -- set options
  21269.     :l f1 ... fm      -- load files
  21270.  
  21271. The project file name may also be specified on the command line used to
  21272. start the interpreter by preceding the project file name with a single
  21273. `+' character.  Note that there must be at least one space on each side
  21274. of the `+'.  This may be combined with standard command line options,
  21275. but any additional filename arguments will be ignored.  Starting Gofer
  21276. with a command of the form "gofer + proj" is equivalent to starting
  21277. Gofer without the "+ project" arguments and then giving the command
  21278. :p proj.
  21279.  
  21280. In addition, Gofer records the name of the project file and displays
  21281. this with the list of files loaded.  For example:
  21282.  
  21283.     Gofer session for: (project: miniProlog)
  21284.     /users/mpj/public/Gofer/prelude 
  21285.     Parse
  21286.     Interact
  21287.  
  21288.  
  21289.                                       12
  21290.  
  21291.  
  21292.  
  21293.  
  21294. Release Notes                                       2.2  Project Files
  21295.  
  21296.  
  21297.     PrologData
  21298.     Subst
  21299.     StackEngine
  21300.     Main
  21301.     ? 
  21302.  
  21303. Once a project file has been selected, the command :p (without any
  21304. arguments) can be used to force Gofer to reread the project file and
  21305. load fresh copies of each of the files listed there.  There are two
  21306. places in which this is particularly useful:
  21307.  
  21308.   o  If the project file itself has been modified since the last time
  21309.      that it was read.
  21310.  
  21311.   o  To force Gofer to reload all of the files in the project,
  21312.      regardless of the last time they were modified.
  21313.  
  21314. As usual, the :r command can be used to reload each of the files in the
  21315. current project without rereading the project file itself, and avoiding
  21316. the need to read certain files which have not been modified since the
  21317. previous time they were loaded.
  21318.  
  21319. The use of project files integrates smoothly with the other parts of
  21320. the Gofer environment.  As an example consider a project file proj
  21321. containing the four filenames f1, f2, f3 and f4, and suppose that the
  21322. file f3 contains an error of some kind.  This leads to the following
  21323. sequence of commands and results:
  21324.  
  21325.     :p proj       -- attempt to load project proj
  21326.                   -- reads filenames f1, f2, f3, f4 from proj
  21327.                   -- load definitions from f1
  21328.                   -- load definitions from f2
  21329.                   -- load definitions from f3 -- error occurs
  21330.                   -- error message printed
  21331.     :e            -- starts up editor at relevant line in f3
  21332.                   -- correct error
  21333.                   -- exit editor
  21334.                   -- load definitions from f3
  21335.                   -- load definitions from f4
  21336.  
  21337. After just these two commands, the error in f3 has been corrected and
  21338. all of the files mentioned in proj have been loaded, ready for use.
  21339.  
  21340.  
  21341.  
  21342.  
  21343.  
  21344.  
  21345.  
  21346.  
  21347.  
  21348.  
  21349.  
  21350.  
  21351.  
  21352.  
  21353.  
  21354.  
  21355.                                       13
  21356.  
  21357.  
  21358.  
  21359.  
  21360. Release Notes                                  2.3  Other new features
  21361.  
  21362.  
  21363. 2.3  Other new features
  21364. -----------------------
  21365.  
  21366. 2.3.1  :find - find definition
  21367. ------------------------------
  21368. The command ":f name" starts up an editor to allow you to inspect (and
  21369. possibly modify) the definition of a particular name from the files
  21370. currently loaded into Gofer.  If supported (using the EDITLINE
  21371. variable), Gofer will attempt to initialize the editor so that the
  21372. cursor is initially positioned at the first line in the definition.
  21373. There are three possibilities:
  21374.  
  21375.   o  If the name is defined by a function or variable binding then
  21376.      the cursor is positioned at the first line in the definition of
  21377.      the name (ignoring any type declaration, if present).
  21378.  
  21379.   o  If the name is a constructor function, then the cursor is
  21380.      positioned at the first line in the definition of the
  21381.      corresponding data definition.
  21382.  
  21383.   o  If the name represents an internal Gofer function, then the
  21384.      cursor will be positioned at the beginning of the standard
  21385.      prelude file.
  21386.  
  21387. Note that names of infix operators should be given without any
  21388. enclosing them in parentheses.  Thus ":f ++" starts an editor on the
  21389. standard prelude at the first line in the definition of (++).
  21390.  
  21391.  
  21392. 2.3.2  :! - shell escape
  21393. ------------------------
  21394. A command of the form ":! cmd" can be used to execute a specified
  21395. system command without leaving the Gofer interpreter.  For example,
  21396. ":! ls" (or ":! dir" on MS DOS machines) can be used to list the
  21397. contents of the current directory.
  21398.  
  21399. The command ":!" without any arguments starts a new shell:
  21400.  
  21401.   o  On a unix machine, the SHELL environment variable is used to
  21402.      determine which shell to use (the default is "/bin/sh").
  21403.  
  21404.   o  On an MS DOS machine, the COMSPEC environment variable is used
  21405.      to determine which shell to use.  This is usually COMMAND.COM
  21406.      and you may return to Gofer using the EXIT command.
  21407.  
  21408. As usual, it is not possible to use a shell escape to change the
  21409. current working directory.  The :cd command described in the following
  21410. section can be used for this purpose.
  21411.  
  21412.  
  21413. 2.3.3  :cd - change directory
  21414. -----------------------------
  21415. The command ":cd dir" changes the current working directory to the path
  21416. given by "dir".  This command is ignored if the pathname is omitted.
  21417.  
  21418.  
  21419.  
  21420.  
  21421.                                       14
  21422.  
  21423.  
  21424.  
  21425.  
  21426. Release Notes                               2.3.4  :names - list names
  21427.  
  21428.  
  21429. 2.3.4  :names - list names
  21430. --------------------------
  21431. The :n command lists the names of variables and functions whose
  21432. definitions are currently loaded into the Gofer interpreter.  Using
  21433. this command without any arguments produces the list of all names
  21434. known to the system.  For example, with just the standard prelude
  21435. loaded we obtain:
  21436.  
  21437.     ? :n
  21438.     !! && * + ++ - . / /= : < <= == > >= AppendChan AppendFile Echo
  21439.     Failure False FormatError OtherError ReadChan ReadError ReadFile
  21440.     SearchError Str Success True WriteError WriteFile [] \\ ^ abort abs
  21441.     all and any appendChan appendFile asTypeOf break chr cjustify
  21442.     concat const copy curry cycle div done drop dropWhile echo elem
  21443.     enumFrom enumFromThen enumFromThenTo enumFromTo error even exit
  21444.     filter flip foldl foldl' foldl1 foldr foldr1 fromInteger fst fst3
  21445.     gcd head help id inRange index init insert interact isAlpha
  21446.     isAlphanum isAscii isControl isDigit isLower isPrint isSpace
  21447.     isUpper iterate last layn lcm length lines ljustify map max maximum
  21448.     merge min minimum mod negate not notElem nub null odd or ord
  21449.     otherwise primDivFloat primDivInt primEqFloat primEqInt
  21450.     primIntToFloat primLeFloat primLeInt primMinusFloat primMinusInt
  21451.     primMulFloat primMulInt primNegFloat primNegInt primPlusFloat
  21452.     primPlusInt primPrint print prints product products qsort range
  21453.     readChan readFile rem repeat reverse rjustify run scanl scanl'
  21454.     scanl1 scanr scanr1 show show' showChar showList showString shows
  21455.     showsPrec signum snd snd3 sort space span splitAt stdecho stderr
  21456.     stdin stdout strDispatch strict subtract succDispatch sum sums tail
  21457.     take takeUntil takeWhile thd3 toLower toUpper transpose uncurry
  21458.     undefined unlines until until' unwords words writeFile zip zip3
  21459.     zip4 zip5 zip6 zip7 zipWith zipWith3 zipWith4 zipWith5 zipWith6
  21460.     zipWith7 ||
  21461.     (201 names listed)
  21462.     ?
  21463.  
  21464. Note that the names are listed in the standard alphabetical order.
  21465.  
  21466. The :n can also accept one or more pattern strings which limits the list
  21467. of names printed to those names matching one or more of the given
  21468. pattern strings:
  21469.  
  21470.     ? :n fold*
  21471.     foldl foldl' foldl1 foldr foldr1
  21472.     (5 names listed)
  21473.     ?
  21474.  
  21475. Each pattern string consists of a string of characters and may use the
  21476. standard wildcard characters: `*' (matches anything), `?' (matches any
  21477. single character), `\c' (matches exactly the character c) and ranges of
  21478. characters of the form `[a-zA-Z]' etc.  For example:
  21479.  
  21480.     ? :n *ap* *[Cc]han \\\\ ?
  21481.     * + - . / : < > AppendChan ReadChan \\ ^ appendChan appendFile
  21482.     map readChan
  21483.     (16 names listed)
  21484.     ?
  21485.  
  21486.  
  21487.                                       15
  21488.  
  21489.  
  21490.  
  21491.  
  21492. Release Notes                       2.3.5  $$ - recall last expression
  21493.  
  21494.  
  21495. 2.3.5  $$ - recall last expression
  21496. ----------------------------------
  21497. The previously entered expression can be recalled at any stage whilst
  21498. using the Gofer interpreter (even if the list of currently loaded files
  21499. has subsequently been changed) by using the operator symbol $$:
  21500.  
  21501.     ? 42
  21502.     42
  21503.     (1 reduction, 5 cells)
  21504.     ? [$$]
  21505.     [42]
  21506.     (3 reductions, 12 cells)
  21507.     ? [$$]
  21508.     [[42]]
  21509.     (5 reductions, 19 cells)
  21510.     ? ($$, length $$)
  21511.     ([[42]],1)
  21512.     (14 reductions, 43 cells)
  21513.     ?
  21514.  
  21515. The $$ symbol is bound to a new value each time that an expression is
  21516. evaluated, or its type determined using the :t command:
  21517.  
  21518.     ? :t $$
  21519.     ([[42]],length [[42]]) :: ([[Int]],Int)
  21520.     ? :t map (1+) [1..10]
  21521.     map ((+) {dict} 1) (enumFromTo {dict} 1 10) :: [Int]
  21522.     ? $$
  21523.     [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  21524.     (100 reductions, 189 cells)
  21525.     ?
  21526.  
  21527. Note that $$ can also be used when the last expression entered used
  21528. a where clause (such expressions are simply translated into the
  21529. appropriate let expressions):
  21530.  
  21531.     ? fibs where fibs = 0:1:zipWith (+) fibs (tail fibs)
  21532.     [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55^C{Interrupted!}
  21533.  
  21534.     (41 reductions, 136 cells)
  21535.     ? :t $$
  21536.     let {...} in fibs :: [Int]
  21537.     ? take 5 $$
  21538.     [0, 1, 1, 2, 3]
  21539.     (24 reductions, 77 cells)
  21540.     ?
  21541.  
  21542. Note that $$ expands to the unevaluated form of the expression, so that
  21543. a certain amount of computation may be repeated if $$ is used more than
  21544. once in a subsequent expression:
  21545.  
  21546.     ? sum [1..10]
  21547.     55
  21548.     (92 reductions, 130 cells)
  21549.     ? $$ + $$
  21550.     110
  21551.  
  21552.  
  21553.                                       16
  21554.  
  21555.  
  21556.  
  21557.  
  21558. Release Notes                       2.3.5  $$ - recall last expression
  21559.  
  21560.  
  21561.     (176 reductions, 254 cells)
  21562.     ? x + x where x = sum [1..10]
  21563.     110
  21564.     (89 reductions, 131 cells)
  21565.     ?
  21566.  
  21567. Note that the value of $$ is updated after the expression has been parsed
  21568. but before it is type checked:
  21569.  
  21570.     ? 42
  21571.     42
  21572.     (1 reduction, 5 cells)
  21573.     ? 4)
  21574.     ERROR: Syntax error in input (unexpected `)')
  21575.     ? $$ 4
  21576.     ERROR: Type error in application
  21577.     *** expression     : 42 4
  21578.     *** term           : 42
  21579.     *** type           : Int
  21580.     *** does not match : a -> b
  21581.  
  21582.     ?
  21583.  
  21584.  
  21585. 2.3.6  Command names
  21586. --------------------
  21587. Command names of the form :X (where X represents an arbitrary capital
  21588. letter) are no longer supported.  Each command has a mnemonic full name
  21589. of the form :name which can be abbreviated to :n where `n' is the first
  21590. letter of the full name.  The complete list of commands produced by the
  21591. :? command is as follows:
  21592.  
  21593.     ? :?
  21594.     LIST OF COMMANDS:  Any command may be abbreviated to :c where
  21595.     c is the first character in the full name.
  21596.  
  21597.     :set <options>      set command line options
  21598.     :set                help on command line options
  21599.     :?                  display this list of commands
  21600.     <expr>              evaluate expression
  21601.     :type <expr>        print type of expression
  21602.     :names [pat]        list names currently in scope
  21603.     :load <filenames>   load scripts from specified files
  21604.     :load               clear all files except prelude
  21605.     :also <filenames>   read additional script files
  21606.     :reload             repeat last load command
  21607.     :project <filename> use project file
  21608.     :edit <filename>    edit file
  21609.     :edit               edit last file
  21610.     :find <name>        edit file containing definition of name
  21611.     :! command          shell escape
  21612.     :cd dir             change directory
  21613.     :quit               exit Gofer interpreter
  21614.     ?
  21615.  
  21616.  
  21617.  
  21618.  
  21619.                                       17
  21620.  
  21621.  
  21622.  
  21623.  
  21624. Release Notes                                  3. LANGUAGE DIFFERENCES
  21625.  
  21626.  
  21627. 3. LANGUAGE DIFFERENCES
  21628.  
  21629. There are very few changes to the language supported by Gofer -- most
  21630. programs that ran correctly under the previous release should run
  21631. without any changes.  The features described in the following sections
  21632. are (for the most part) extensions to the previous version.
  21633.  
  21634. 3.1 c*p and p+k patterns
  21635. ------------------------
  21636. Motivated by recent discussion on the Haskell mailing list, starting
  21637. with a posting from Tony Davie, Gofer now supports a more general form
  21638. of n+k pattern, together with a new form of pattern, c*p.  The syntax
  21639. of patterns is extended to include:
  21640.  
  21641.         pattern ::= .... | pattern + integer | integer * pattern
  21642.  
  21643. Note that, in the previous version of Gofer, only variables were
  21644. permitted for the pattern p in a p+k pattern.  Certain restrictions are
  21645. placed on the constants c and k used in c*p and p+k patterns; Gofer
  21646. currently requires c>1 and k>0.
  21647.  
  21648. The semantics of these new patterns are described by the equations
  21649. (suggested by Kent Karlsson):
  21650.  
  21651.     case e0 of {p+k -> e; _ -> e'}
  21652.       = if e0 >= k then case e0-k of {p -> e; _ -> e'} else e'
  21653.  
  21654.     case e0 of {c*p -> e; _ -> e'}
  21655.       = if e0 >= 0 then  case e0 `divRem` c of {(p, 0) -> e; _ -> e'}
  21656.                    else  e'
  21657.  
  21658. In Gofer, both forms of pattern match nonnegative integers only (there
  21659. is no possibility for overloading here as there is in Haskell).
  21660.  
  21661. These features are included in Gofer to enable experimentation with the
  21662. use of c*p patterns.  They are not currently supported by Haskell, and
  21663. are subject to change as we gain more experience using them.  To
  21664. illustrate the potential uses for these extensions, here are two
  21665. examples provided by Tony Davie in his original message which can be
  21666. used in Gofer:
  21667.  
  21668.     x^^0       = 1                     -- fast exponentiation 
  21669.     x^^(2*n)   = xn*xn where xn = x^^n -- compare with definition
  21670.     x^^(2*n+1) = x * x^^(2*n)          -- of (^) in the prelude
  21671.  
  21672.     fib 1       = 1                    -- fast fibonnacci
  21673.     fib 2       = 1
  21674.     fib (2*n)   = (fib(n+1))^^2 - (fib(n-1))^^2
  21675.     fib (2*n+1) = (fib(n+1))^^2 + (fib n   )^^2
  21676.  
  21677.  
  21678.  
  21679.  
  21680.  
  21681.  
  21682.  
  21683.  
  21684.  
  21685.                                       18
  21686.  
  21687.  
  21688.  
  21689.  
  21690. Release Notes                                 3.2 Errors during output
  21691.  
  21692.  
  21693. 3.2 Errors during output
  21694. ------------------------
  21695. If an error of the form "error str" occurs during an output request in
  21696. a program using the facilities for I/O, the IOError value passed to
  21697. the failure continuation is the (WriteError str), rather than
  21698. (WriteError "{error str}") as in the previous release.  This enables
  21699. further evaluation of the string str (for example to produce a
  21700. compound error message by concatenating several strings together).
  21701.  
  21702. You are strongly advised to consider using the standard prelude
  21703. continuation "exit" in your programs in place of the "abort" predicate;
  21704. whereas "abort" causes a program to terminate without any indication of
  21705. the problem, "exit" attempts to print a suitable error message before
  21706. the program terminates.
  21707.  
  21708.  
  21709. 3.3 Type synonyms in predicates
  21710. -------------------------------
  21711. Type synonyms may now be used in predicates (The previous release
  21712. allowed only data constructors).  This means that programs such as the
  21713. cat program described in section 14.2.6 (page 68) of the Gofer
  21714. documentation can now be written as:
  21715.  
  21716.     class    Cat a        where cat  :: a -> Dialogue
  21717.     instance Cat String   where cat n = showFile n done
  21718.     instance Cat [String] where cat   = foldr showFile done
  21719.  
  21720.     showFile name cont = readFile name abort
  21721.                              (\s->appendChan stdout s abort cont)
  21722.  
  21723. This uses the type synonym String in place of the expanded form [Char]
  21724. required by the original program.  Note that it is still not permitted
  21725. to define overlapping instances; an attempt to add an instance for Cat
  21726. [Char] to the above will not be accepted.
  21727.  
  21728.  
  21729. 3.4 Reporting on ambiguous types
  21730. --------------------------------
  21731. Class declarations whose member functions have ambiguous types are no
  21732. longer permitted.  For example, in the class declaration:
  21733.  
  21734.     class Box a where
  21735.         mem :: Int
  21736.  
  21737. The type of the member function mem is Box a => Int which is ambiguous
  21738. and produces the error message:
  21739.  
  21740.     ERROR "examp" (line 3): Ambiguous type signature in class declaration
  21741.     *** ambiguous type : Box a => Int
  21742.     *** assigned to    : mem
  21743.  
  21744.     ?
  21745.  
  21746. Similar error messages are produced when an explicit type signature
  21747. includes an ambiguous type.  For example:
  21748.  
  21749.  
  21750.  
  21751.                                       19
  21752.  
  21753.  
  21754.  
  21755.  
  21756. Release Notes                         3.4 Reporting on ambiguous types
  21757.  
  21758.  
  21759.     func   :: Eq a => Int -> Int
  21760.     func x  = 2*x+1
  21761.  
  21762. Results in an error of the form:
  21763.  
  21764.     ERROR "examp" (line 12): Ambiguous type signature in type declaration
  21765.     *** ambiguous type : Eq a => Int -> Int
  21766.     *** assigned to    : func
  21767.  
  21768.     ?
  21769.  
  21770. By default, no error is signalled if an ambiguous type is assigned to a
  21771. variable or function by the type checker.  This makes it possible to
  21772. write definitions such as:
  21773.  
  21774.     f y xs  =  if xs==[] then 0 else g y
  21775.     g y     =  f y []
  21776.  
  21777. The types obtained for each of these terms is as follows:
  21778.  
  21779.     f :: Eq [a] => b -> [a] -> Int
  21780.     g :: Eq [a] => b -> Int
  21781.  
  21782. Note that the second type is ambiguous.  Making the analogy between
  21783. these mutually recursive functions and a two state machine, we can
  21784. think of a direct call to f as initializing the machine correctly so
  21785. that there is no problem when we enter g.  On the other hand, entering
  21786. the system at g does not initialize the machine correctly, as signalled
  21787. by the ambiguity.
  21788.  
  21789. Using the +u command line flag forces Gofer to generate an error when
  21790. an attempt to assign an ambiguous type to a top-level function occurs.
  21791. For the above example this gives:
  21792.  
  21793.     ERROR "examp" (line 20): Ambiguous type signature in inferred type
  21794.     *** ambiguous type : Eq [a] => b -> Int
  21795.     *** assigned to    : g
  21796.  
  21797.     ?
  21798.  
  21799. The restriction to top-level functions means that f can still be
  21800. implemented by writing:
  21801.  
  21802.     f :: Eq [a] => b -> [a] -> Int
  21803.     f  = f'  where  f' y xs = if xs==[] then 0 else g y
  21804.                     g' y    = f y []
  21805.  
  21806. which prevents external access to g' (preventing entry to the finite
  21807. machine described above in state g).  Note that the type signature in
  21808. this example is necessary to avoid the monomorphism restriction.
  21809.  
  21810.  
  21811.  
  21812.  
  21813.  
  21814.  
  21815.  
  21816.  
  21817.                                       20
  21818.  
  21819.  
  21820.  
  21821.  
  21822. Release Notes                                         4. OTHER MATTERS
  21823.  
  21824.  
  21825. 4. OTHER MATTERS
  21826.  
  21827. 4.1 Contributions
  21828. -----------------
  21829. I would like to hear from anyone with interesting Gofer programs or
  21830. other useful items which might be included (with full credit to the
  21831. original author(s) of course!) in subsequent releases of Gofer.  There
  21832. is already one example of this in the new release; a small gnuemacs
  21833. mode for running the Gofer interpreter from within gnuemacs on Unix
  21834. machines, contributed by Stuart Clayman.  See the file gofer.el for
  21835. more details.
  21836.  
  21837. 4.2 Future directions
  21838. ---------------------
  21839. There will not be another release of Gofer for some time.  There are
  21840. however a number of areas which I would like to investigate at some
  21841. point as extensions to the Gofer system:
  21842.  
  21843.   o  The ability to use Haskell style type classes.
  21844.  
  21845.   o  Facilities for working with modules, based on the approach
  21846.      described in the Haskell report.  A particular problem here is
  21847.      in finding an elegant way to provide the full power of the
  21848.      module system from the interactive environment.
  21849.  
  21850.   o  The ability to write stand alone applications programs using
  21851.      Gofer.
  21852.  
  21853.   o  An improved user interface.  There are a number of grand ideas
  21854.      based on the use of windowing/mouse/pulldown-menus etc.  The
  21855.      current user interface is closer to this kind of approach than
  21856.      might at first be realized.  More interesting ideas include the
  21857.      design of class, data type and value browsers, along the lines
  21858.      of a Smalltalk system.
  21859.  
  21860. I would be interested to hear from anyone with comments or suggestions
  21861. on any of these (or other ideas).
  21862.  
  21863.  
  21864.  
  21865.  
  21866.  
  21867.  
  21868.  
  21869.  
  21870.  
  21871.  
  21872.  
  21873.  
  21874.  
  21875.  
  21876.  
  21877.  
  21878.  
  21879.  
  21880.  
  21881.  
  21882.  
  21883.                                       21
  21884.  
  21885.  
  21886. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  21887.  
  21888.                                                                       
  21889.  
  21890.  
  21891. -----------------------------------------------------------------------
  21892.        __________   __________   __________   __________   ________
  21893.       /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  21894.      /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  21895.     /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  21896.    /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  21897.   /_________/  /_________/  /__/         /_________/  /__/    \__\
  21898.  
  21899.   Functional programming environment, Version 2.28
  21900.  
  21901.   Copyright Mark P Jones 1993.
  21902.  
  21903.   Release notes
  21904. -----------------------------------------------------------------------
  21905.  
  21906. This document is intended to be used as a supplement to the original
  21907. user manual ``An introduction to Gofer version 2.20'' and release
  21908. notes for Gofer 2.21 (previously supplied in a file called `update').
  21909.  
  21910. If you would like to be informed when bug-fixes or further versions
  21911. become available, please contact me at jones-mark@cs.yale.edu (if you
  21912. have not already done so) and I will add your name to the list.
  21913.  
  21914. Please contact me if you have any questions about the Gofer system, or
  21915. if you need some advice or help to complete a port of Gofer to a new
  21916. platform.
  21917.  
  21918.  
  21919. ACKNOWLEDGMENTS:
  21920. A lot of people have contributed to the development of Gofer 2.28 with
  21921. their support, encouragement, suggestions, comments and bug reports.
  21922. There are a lot of people to thank:
  21923.  
  21924.                  Ray Bellis            Brent Benson
  21925.                David Bolton           Rodney Brown
  21926.                 Dave Cattrall         Manuel Chakravarty
  21927.                 Rami El Charif        Stuart Clayman
  21928.                 Andy Duncan            Bernd Eckenfels
  21929.              Stephen Eldridge         Jeroen Fokker
  21930.                 Andy Gill             Annius Groenink
  21931.             Dipankar Gupta           Guenter Huebel
  21932.                  Jon Hallett           Kevin Hammond
  21933.                Peter Hancock             Ian Holyer
  21934.               Andrew Kennedy          Marnix Klooster
  21935.                  Tom Lane           Hiroyuki Matsuda
  21936.                Aiden McCaughey        Tobias Nipkow
  21937.               Rainer Orth               Will Partain
  21938.                Simon Peyton Jones        Ian Poole
  21939.                 Mark Raemer             Dave Rushall
  21940.               Julian Seward            Carol Tumey
  21941.                Goran Uddeborg          Gavin Wraith
  21942.                Bryan Scattergood     Matthew Smith
  21943.              Bernard Sufrin           Philip Wadler
  21944.  
  21945. This list isn't complete, and I apologize in advance if I have
  21946. inadvertently left your name out.
  21947.  
  21948.  
  21949.                                       1
  21950.  
  21951.  
  21952.  
  21953.  
  21954. Release Notes v2.28                 1. MINOR ENHANCEMENTS AND BUGFIXES
  21955.  
  21956.  
  21957. 1. MINOR ENHANCEMENTS AND BUGFIXES
  21958.  
  21959. The following sections list the minor enhancements and bugfixes that
  21960. have been made to Gofer since the release of Gofer version 2.23.  More
  21961. significant changes are described in later sections.
  21962.  
  21963.  
  21964. 1.1  Enhancements
  21965. -----------------
  21966.   o  For systems without the restrictions of older PCs, Gofer now uses
  21967.      multiple hash tables to speed the lookup of globally defined
  21968.      functions.  Loading large programs into Gofer is now much faster
  21969.      as a result.  In one example, the time taken to load a 13,000 line
  21970.      program spread across 40 individual script files was reduced by a
  21971.      factor of five!
  21972.  
  21973.   o  For the most most part, internal errors (which shouldn't normally
  21974.      appear anyway) no longer terminate the interpreter.
  21975.  
  21976.   o  Better handling for programs with objects whose type involves more
  21977.      than 26 type variables (though whether anyone has real practical
  21978.      applications for such beasts, I'm rather doubtful).
  21979.  
  21980.   o  The Gofer system now supports I/O requests GetProgName, GetArgs
  21981.      and GetEnv.  The first two requests don't have any sensible
  21982.      interpretation within the interpreter, so GetProgName always
  21983.      returns "", while GetArgs returns [].  These I/O requests are most
  21984.      useful when producing standalone applications with the Gofer
  21985.      compiler where they do indeed give the name of the program and the
  21986.      list of command line arguments as expected.
  21987.  
  21988.   o  Added primitives for direct comparison of characters.  The
  21989.      original definitions of character equality and ordering in terms
  21990.      of the equality and ordering on integers was elegant, but for some
  21991.      examples, a substantial number of the total reductions in a given
  21992.      program was taken up with calls to ord, an unnecessary
  21993.      distraction.
  21994.  
  21995.   o  Small improvements in the speed of execution of the runtime machine,
  21996.      particularly when Gofer is compiled using the GNU C compiler.
  21997.  
  21998.   o  Enabled the use of GNU C specific options to store frequently used
  21999.      global variables in CPU registers.  This is perhaps most useful
  22000.      for speeding up the performance of standalone applications
  22001.      produced using the Gofer compiler.
  22002.  
  22003.   o  Changed definitions in standard preludes to provide overloaded
  22004.      versions of sum, product, sums, products, abs, signum and (^).
  22005.      Also added a genericLength function as in Haskell.  Finally,
  22006.      added Text as a superclass of Num, again for Haskell compatibility.
  22007.  
  22008.   o  Added a new primitive function: openfile :: String -> String that
  22009.      can be used to read the contents of a file (named by the argument
  22010.      string) as a (lazy) stream of characters.  (The implementation is
  22011.      in terms of a primitive which can also be used to implement the
  22012.      hbc openFile function, provided that you also define the Either
  22013.  
  22014.  
  22015.                                       2
  22016.  
  22017.  
  22018.  
  22019.  
  22020. Release Notes v2.28                                  1.1  Enhancements
  22021.  
  22022.  
  22023.      datatype used there.)
  22024.  
  22025.   o  Added support for a simple selection of operators for monadic I/O,
  22026.      mutable variables etc. based on Lambda var (developed at Yale) and
  22027.      the Glasgow I/O system.  I will provide more documentation on this
  22028.      as soon as there is a better consensus on the names of the
  22029.      datatypes and functions that should be included in systems like
  22030.      this.
  22031.  
  22032.   o  The error function is now implemented using a primitive function.
  22033.  
  22034.   o  Added support for floating point primitives:
  22035.  
  22036.          pi          :: Float
  22037.  
  22038.          sin, asin,
  22039.          cos, acos,
  22040.          tan, atan,
  22041.          log, log10,
  22042.          exp, sqrt   :: Float -> Float
  22043.  
  22044.          atan2       :: Float -> Float -> Float
  22045.          truncate    :: Float -> Int
  22046.  
  22047.   o  Added support for the use of GNU readline (or equivalent) library
  22048.      to be used to enhance the user interface with command line
  22049.      editing.  See the source makefile for instructions on how to use
  22050.      this.
  22051.  
  22052.   o  Added floating point support to PC version of Gofer (even the
  22053.      version for humble 8086 PCs will now support floating point).
  22054.      Thanks to Jeroen Fokker for this!
  22055.  
  22056.   o  I/O datatype definitions and otherwise symbol are now builtin to
  22057.      the Gofer system.
  22058.  
  22059.   o  Other minor tweaks and improvements.
  22060.  
  22061.  
  22062. 1.2  Bug fixes
  22063. --------------
  22064. Nobody really likes to dwell on bugs, especially when they have been
  22065. eliminated.  But for those of you who want to know, here is a summary of
  22066. the bugs discovered and fixed in Gofer 2.28:
  22067.  
  22068.   o  End of file does not imply end of line (only significant on
  22069.      certain systems ... I has made an assumption which happens to hold
  22070.      under DOS and Unix, but was not true for other systems).
  22071.  
  22072.   o  Code generator produced incorrect code for some conditional
  22073.      expressions involving local variables (fairly obscure).
  22074.  
  22075.   o  Some conditional expressions entered into the interpreter were
  22076.      evaluated incorrectly, leading to unexpected evaluation errors.
  22077.  
  22078.   o  A small potential space leak concerned with saving the names of
  22079.  
  22080.  
  22081.                                       3
  22082.  
  22083.  
  22084.  
  22085.  
  22086. Release Notes v2.28                                     1.2  Bug fixes
  22087.  
  22088.  
  22089.      files passed to the editor from within Gofer was eliminated.
  22090.  
  22091.   o  A subtle bug, which only occurred when a garbage collection
  22092.      occurred in the middle of an attempt to update a cell with an
  22093.      indirection has been fixed.
  22094.  
  22095.   o  Fixing the definitions of the div and quot operators to agree with
  22096.      Haskell 1.2 (these had been changed in the transition from 1.1 to
  22097.      1.2 without my noticing).
  22098.  
  22099.   o  Corrected bug in string matching code (part of the :names command)
  22100.      which previously allowed "*e*p" to match with "negate"!
  22101.  
  22102.   o  Nested comments were not always handled correctly when they
  22103.      occurred at the very end of a script file.
  22104.  
  22105.   o  Added new clauses to parser to improve and correct error messages
  22106.      produced by some examples.
  22107.  
  22108.   o  Other miscellaneous tweaks and fixes.
  22109.  
  22110. There are no other currently known bugs in Gofer.  But someone is bound
  22111. to find a new one within hours of the release of 2.28 if past
  22112. experience is anything to go by.  If that someone is you, please let me
  22113. know!
  22114.  
  22115.  
  22116. 2. USER INTERFACE EXTENSIONS
  22117.  
  22118. The user interface of the previous release has been extended a little
  22119. to support a range of new features, intended to make the Gofer
  22120. environment more convenient for program development.  Further details
  22121. are given in the following sections.
  22122.  
  22123. 2.1  Customizing the Gofer system
  22124. ---------------------------------
  22125. Often there will be several people using Gofer on the same system.  Not
  22126. everyone will want to be using the system in the same way.  For example,
  22127. some users may wish to use their own version of the prelude or start the
  22128. interpreter with particular command line options.
  22129.  
  22130. It has always been possible to do this by installing Gofer in an
  22131. appropriate manner.  But, having had more than a couple of enquiries
  22132. about this, I wanted to take some time to spell the process out more
  22133. clearly.  The following description will be biased towards those people
  22134. using Gofer on Unix-like systems, but the same basic principles can be
  22135. applied with other operating systems too.
  22136.  
  22137. The Gofer interpreter and prelude files will typically be installed in
  22138. a given directory, accessible to all users on the system.  For the sake
  22139. of this example, let's assume that this is /usr/local/lib/Gofer.  Each
  22140. user could take a copy of the Gofer interpreter into their own file
  22141. space, but a much better option is for each user to use a short script
  22142. file stored somewhere on their path.  For example, the path on my Unix
  22143. account includes a subdirectory called bin and I store the following
  22144. script file `gofer' in this directory:
  22145.  
  22146.  
  22147.                                       4
  22148.  
  22149.  
  22150.  
  22151.  
  22152. Release Notes v2.28                  2.1  Customizing the Gofer system
  22153.  
  22154.  
  22155.     #!/bin/sh
  22156.     #
  22157.     # A simple shell script to invoke the Gofer interpreter and set
  22158.     # the path to the prelude file.  Ultimately, you might want to
  22159.     # copy this file into your own bin directory so that you can record
  22160.     # your favourite command line settings or use a different prelude
  22161.     # file ...
  22162.     #
  22163.     GOFER=/usr/local/lib/Gofer/standard.prelude
  22164.     export GOFER
  22165.     exec /usr/local/lib/Gofer/gofer $*
  22166.  
  22167. I happen to use the standard prelude file and the default settings for
  22168. all the command line options.  If, for example, I wanted to use a
  22169. different prelude file, a smaller heap and omit the printing of
  22170. statistics about the number of reductions and cells used in an
  22171. evaluation, I can modify the script to reflect this:
  22172.  
  22173.     #!/bin/sh
  22174.     #
  22175.     # A modified version of the above script
  22176.     #
  22177.     GOFER=/usr/local/lib/Gofer/simple.prelude
  22178.     export GOFER
  22179.     exec /usr/local/lib/Gofer/gofer -h20000 -s $*
  22180.  
  22181. Of course, it is also possible to keep both of these short scripts in
  22182. my bin directory, so that I have the choice of starting up Gofer in
  22183. several different configurations, depending on the kind of work I'm
  22184. going to be doing with it.
  22185.  
  22186.  
  22187. 2.2  Command line options
  22188. --------------------------
  22189. Gofer 2.28 supports a number of options which can be set, either on the
  22190. command line when Gofer interpreter is started, or using the :set
  22191. command within in the interpreter.  Using the :set command without any
  22192. arguments produces a list of all the command line options available:
  22193.  
  22194.    ? :set
  22195.    TOGGLES: groups begin with +/- to turn options on/off resp.
  22196.    s    Print no. reductions/cells after eval
  22197.    t    Print type after evaluation
  22198.    d    Show dictionary values in output exprs
  22199.    f    Terminate evaluation on first error
  22200.    g    Print no. cells recovered after gc
  22201.    c    Test conformality for pattern bindings
  22202.    l    Literate scripts as default
  22203.    e    Warn about errors in literate scripts
  22204.    i    Apply fromInteger to integer literals
  22205.    o    Optimise use of (&&) and (||)
  22206.    u    Catch ambiguously typed top-level vars
  22207.    .    Print dots to show progress
  22208.    w    Always show which files loaded
  22209.    1    Overload singleton list notation
  22210.    k    Show kind errors in full
  22211.  
  22212.  
  22213.                                       5
  22214.  
  22215.  
  22216.  
  22217.  
  22218. Release Notes v2.28                          2.2  Command line options
  22219.  
  22220.  
  22221.    OTHER OPTIONS: (leading + or - makes no difference)
  22222.    hnum Set heap size (cannot be changed within Gofer)
  22223.    pstr Set prompt string to str
  22224.    rstr Set repeat last expression string to str
  22225.  
  22226.    Current settings: +sfceow1 -tdgliu.k -h100000 -p? -r$$
  22227.    ?
  22228.  
  22229. Most of these are the same as in the previous release of Gofer.  The
  22230. following sections outline the few changes that have been made.  The
  22231. `1' and `k' toggles are for use with constructor classes and will be
  22232. described in Section 4.
  22233.  
  22234.  
  22235. 2.2.1  Print dots to show progress
  22236. ----------------------------------
  22237. One of the first differences that you might notice when running the
  22238. new version of Gofer is that the rows of dots printed when loading a
  22239. script file:
  22240.  
  22241.     ? :l examples
  22242.     Reading script file "examples":
  22243.     Parsing....................................
  22244.     Dependency analysis........................
  22245.     Type checking..............................
  22246.     Compiling..................................
  22247.  
  22248.     Gofer session for:
  22249.     /usr/local/lib/Gofer/standard.prelude
  22250.     examples
  22251.     ?
  22252.  
  22253. are no longer printed while script files are loaded.  The rows of dots
  22254. are useful for showing progress on slow machines (like the PC on which
  22255. Gofer was originally developed) where it is reassuring to know that the
  22256. system has not crashed, and is simply working its way through one
  22257. particular phase of the system.  However, on a faster system, the dots
  22258. are not necessary and printing them can impose a surprising overhead on
  22259. the time it takes to load files.  As a default, Gofer now simply prints
  22260. the names of each phase (Parsing, Dependency Analysis, Type checking
  22261. and Compiling) and, when that phase is complete, backspaces over it to
  22262. erase it from the screen.  If you are fortunate enough to be using a
  22263. fast machine, you may not always see the individual words as they flash
  22264. past.  After loading a file, your screen will typically look something
  22265. like this:
  22266.  
  22267.     ? :l examples
  22268.     Reading script file "examples":
  22269.                    
  22270.     Gofer session for:
  22271.     /usr/local/lib/Gofer/standard.prelude
  22272.     examples
  22273.     ?
  22274.  
  22275. On some systems, the use of backspace characters to erase a line may
  22276. not work properly.  One particular example of this occurs if you try to
  22277.  
  22278.  
  22279.                                       6
  22280.  
  22281.  
  22282.  
  22283.  
  22284. Release Notes v2.28                 2.2.1  Print dots to show progress
  22285.  
  22286.  
  22287. run Gofer from within emacs.  In this case, you may prefer to use the
  22288. original setting, printing the lines of dots by giving the command:
  22289.  
  22290.     :set +.
  22291.  
  22292. The default setting is (as illustrated above, :set -.).  In practice,
  22293. you will probably want to include the appropriate setting for this
  22294. option in your startup script (see Section 2.1).
  22295.  
  22296.  
  22297. 2.2.2  Always show which files loaded
  22298. -------------------------------------
  22299. Some people may feel that the list of filenames printed by Gofer after
  22300. successfully loading one or more script files is redundant.  This is
  22301. particularly likely if you are using the (usually default) :set -.
  22302. option since the list of files loaded will probably still be on the
  22303. screen.  The list of filenames can be suppressed using the :set -w
  22304. option as follows:
  22305.  
  22306.     ? :l examples
  22307.     Reading script file "examples":
  22308.                    
  22309.     Gofer session for:
  22310.     /usr/local/lib/Gofer/standard.prelude
  22311.     examples
  22312.     ? :set -w
  22313.     ? :l examples
  22314.     Reading script file "examples":
  22315.     ?
  22316.  
  22317. The default setting can be recovered using a :set +w command.
  22318.  
  22319. Note that you can also use the :info command (without any arguments) as
  22320. described in Section 2.3.2 to find out the list of files loaded into the
  22321. current Gofer session.  This should be particularly useful if you choose
  22322. the :set -w option.
  22323.  
  22324.  
  22325. 2.2.3  Set repeat string
  22326. ------------------------
  22327. The previous expression entered into the Gofer system can be recalled
  22328. as part of the next expression using the symbol $$:
  22329.  
  22330.     ? map (1+) [1..10]
  22331.     [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  22332.     (101 reductions, 189 cells)
  22333.     ? filter even $$
  22334.     [2, 4, 6, 8, 10]
  22335.     (130 reductions, 215 cells)
  22336.     ?
  22337.  
  22338. This feature was provided and documented in the previous release of
  22339. Gofer.  However, it is possible that you may prefer to use a different
  22340. character string.  This is the purpose of the -rstr option which sets
  22341. the repeat string to str.  For example, user's of SML might be more
  22342. comfortable using:
  22343.  
  22344.  
  22345.                                       7
  22346.  
  22347.  
  22348.  
  22349.  
  22350. Release Notes v2.28                           2.2.3  Set repeat string
  22351.  
  22352.  
  22353.     ? :set -rit
  22354.     ? 6*7
  22355.     42
  22356.     (3 reductions, 7 cells)
  22357.     ? it + it
  22358.     84
  22359.     (4 reductions, 11 cells)
  22360.     ?
  22361.  
  22362. Another reason for making this change might be that you have a program
  22363. which uses the symbol $$ as an operator.  Each occurrence of the $$ symbol
  22364. in a script file will be interpreted as the correct operator, whatever
  22365. the value of the repeat string.  But, if the default :set -r$$ setting is
  22366. used, any occurrence of $$ in an expression entered directly to the
  22367. evaluator will be taken as a reference to the previous expression.
  22368.  
  22369. Note that the repeat string must be either a valid Haskell identifier or
  22370. symbol, although it will always be parsed as an identifier.  If the
  22371. repeat string is set to a value which is neither an identifier or symbol
  22372. (for example, :set -r0) then the repeat last expression facility will be
  22373. disabled altogether.
  22374.  
  22375.  
  22376. 2.2.4  Other changes
  22377. --------------------
  22378. Comparing the list of command line options in Section 2.2 with the list
  22379. produced by previous versions of Gofer will reveal some other small
  22380. differences not already mentioned above.  The changes are as follows:
  22381.  
  22382.   o  The default setting for the d toggle (show dictionaries in output
  22383.      expressions) has been changed to off (:set -d).  For a lot of
  22384.      people, the appearance of dictionary values was rather confusing
  22385.      and of little use.  If you still want to see how dictionary values
  22386.      are used, you will need to do :set +d or add the +d argument to
  22387.      your startup script.
  22388.  
  22389.   o  The default setting for the e toggle (warn about errors in
  22390.      literate scripts) has been changed to :set +e for closer
  22391.      compatibility with the literate script convention outline in the
  22392.      Haskell report, version 1.2.  In addition, the setting of the l
  22393.      toggle is now used only as a default if no particular type of
  22394.      script file is specified by the file extension of a give script.
  22395.      See Section 2.4 below for further details.
  22396.  
  22397.   o  The default setting for the f toggle (terminate evaluation on
  22398.      first error) has been changed to :set +f.  The old setting of
  22399.      :set -f is, in my opinion, better for debugging purposes, but
  22400.      does not give the behaviour that those using Haskell might
  22401.      expect.  This has caused a certain amount of confusion and was
  22402.      the motivation for this change.
  22403.  
  22404.   o  The following three command line options, provided in previous
  22405.      versions of Gofer, have now been removed:
  22406.  
  22407.          TOGGLES:
  22408.          a    Use any evidence, not nec. best
  22409.  
  22410.  
  22411.                                       8
  22412.  
  22413.  
  22414.  
  22415.  
  22416. Release Notes v2.28                               2.2.4  Other changes
  22417.  
  22418.  
  22419.          E    Fail silently if evidence not found
  22420.  
  22421.          OTHER OPTIONS:
  22422.          xnum Set maximum depth for evidence search
  22423.  
  22424.      These options were only ever used for my own research and were
  22425.      (intentionally) undocumented, so it seemed sensible to remove them
  22426.      from the distributed system.  A quick patch to the source code and
  22427.      a recompilation is all that is necessary to reinstate these
  22428.      options; useful if somebody out there found out about these
  22429.      options and actually uses them (if you do, I'd love to know
  22430.      why!).
  22431.  
  22432.  
  22433. 2.3  Commands
  22434. -------------
  22435. The full list of commands that can be used from within the Gofer
  22436. interpreter are summarized using the command :? as follows:
  22437.  
  22438.     ? :?
  22439.     LIST OF COMMANDS:  Any command may be abbreviated to :c where
  22440.     c is the first character in the full name.
  22441.  
  22442.     :load <filenames>   load scripts from specified files
  22443.     :load               clear all files except prelude
  22444.     :also <filenames>   read additional script files
  22445.     :reload             repeat last load command
  22446.     :project <filename> use project file
  22447.     :edit <filename>    edit file
  22448.     :edit               edit last file
  22449.     <expr>              evaluate expression
  22450.     :type <expr>        print type of expression
  22451.     :?                  display this list of commands
  22452.     :set <options>      set command line options
  22453.     :set                help on command line options
  22454.     :names [pat]        list names currently in scope
  22455.     :info <names>       describe named objects
  22456.     :find <name>        edit file containing definition of name
  22457.     :!command           shell escape
  22458.     :cd dir             change directory
  22459.     :quit               exit Gofer interpreter
  22460.     ?
  22461.  
  22462. Almost all of these commands are the same as in the previous release.
  22463. The only new features are listed in the following sections.
  22464.  
  22465.  
  22466. 2.3.1  Shell escapes
  22467. --------------------
  22468. The shell escape command :! is used to enable you to run other programs
  22469. from within the Gofer interpreter.  For example, on a Unix system, you
  22470. can print a list of all the files in the current directory by typing:
  22471.  
  22472.     ? :!ls
  22473.     <list of all files in current directory gets printed here>
  22474.     ?
  22475.  
  22476.  
  22477.                                       9
  22478.  
  22479.  
  22480.  
  22481.  
  22482. Release Notes v2.28                               2.3.1  Shell escapes
  22483.  
  22484.  
  22485. The same thing can be achieved on a PC running DOS by typing:
  22486.  
  22487.     ? :!dir
  22488.     <list of all files in current directory gets printed here>
  22489.     ?
  22490.  
  22491. This is the same as in previous releases of Gofer; the only difference
  22492. is that there is no longer any need to type a space between the :!
  22493. command and the shell command that follows it.  In fact, there is no
  22494. longer any need to type the leading colon either.  Thus the two commands
  22495. above could equally well have been entered as:
  22496.  
  22497.     !ls
  22498.     !dir
  22499.  
  22500. To start a new shell from within Gofer, you can use the command :! or the
  22501. abbreviated form ! -- in Unix and DOS you can return to the Gofer system
  22502. by entering the shell command `exit'.  This is likely to be different if
  22503. you use Gofer on other systems.
  22504.  
  22505.  
  22506. 2.3.2  Information about named values
  22507. -------------------------------------
  22508. The :info command is a new feature which is useful for obtaining
  22509. information about the values currently loaded into a Gofer session.  It
  22510. can be used to display information about all kinds of different values
  22511. including:
  22512.  
  22513.   o  Datatypes:  The name of the datatype and a list of its associated
  22514.      constructor functions is printed:
  22515.  
  22516.          ? :info Request
  22517.          -- type constructor
  22518.          data Request
  22519.  
  22520.          -- constructors:
  22521.          ReadFile :: String -> Request
  22522.          WriteFile :: String -> String -> Request
  22523.          AppendFile :: String -> String -> Request
  22524.          ReadChan :: String -> Request
  22525.          AppendChan :: String -> String -> Request
  22526.          Echo :: Bool -> Request
  22527.          GetArgs :: Request
  22528.          GetProgName :: Request
  22529.          GetEnv :: String -> Request
  22530.  
  22531.          ?
  22532.  
  22533.   o  Type synonyms:  Prints the name and expansion of the synonym:
  22534.  
  22535.          ? :info Dialogue
  22536.          -- type constructor
  22537.          type Dialogue = [Response] -> [Request]
  22538.  
  22539.          ?
  22540.  
  22541.  
  22542.  
  22543.                                       10
  22544.  
  22545.  
  22546.  
  22547.  
  22548. Release Notes v2.28              2.3.2  Information about named values
  22549.  
  22550.  
  22551.      If the type synonym is restricted (see Section 3.1) then the
  22552.      expansion is not included in the output:
  22553.  
  22554.          ? :info Stack      
  22555.          -- type constructor
  22556.          type Stack a = <restricted>
  22557.  
  22558.          ?
  22559.  
  22560.   o  Type classes: Lists the type class name, superclasses, member
  22561.      functions and instances:
  22562.  
  22563.          ? :info Eq
  22564.          -- type class
  22565.          class Eq a where
  22566.              (==) :: Eq a => a -> a -> Bool
  22567.              (/=) :: Eq a => a -> a -> Bool
  22568.  
  22569.          -- instances:
  22570.          instance Eq ()
  22571.          instance Eq Int
  22572.          instance Eq Float
  22573.          instance Eq Char
  22574.          instance Eq a => Eq [a]
  22575.          instance (Eq a, Eq b) => Eq (a,b)
  22576.          instance Eq Bool
  22577.  
  22578.          ?
  22579.  
  22580.      Note that the member functions listed for the class include the
  22581.      class predicate as part of the type; the output is not intended
  22582.      to be thought of as a syntactically valid class declaration.
  22583.  
  22584.      Overlapping instance declarations (see Section 3.2) are listed in
  22585.      increasing order of generality.
  22586.  
  22587.   o  Other values: for example, named functions and individual
  22588.      constructor and member functions:
  22589.  
  22590.          ? :info map : <=
  22591.          map :: (a -> b) -> [a] -> [b]
  22592.  
  22593.          (:) :: a -> [a] -> [a]   -- data constructor
  22594.  
  22595.          (<=) :: Ord a => a -> a -> Bool   -- class member
  22596.  
  22597.          ?
  22598.  
  22599. As the last example shows, the :info command can take several arguments
  22600. and prints out information about each in turn.  A warning message is
  22601. displayed if there are no known references to an argument:
  22602.  
  22603.     ? :info (:)
  22604.     Unknown reference `(:)'
  22605.     ?
  22606.  
  22607.  
  22608.  
  22609.                                       11
  22610.  
  22611.  
  22612.  
  22613.  
  22614. Release Notes v2.28              2.3.2  Information about named values
  22615.  
  22616.  
  22617. This illustrates that the arguments are treated as textual names for
  22618. operators, not syntactic expressions (for example, identifiers). The
  22619. type of the (:) operator can be obtained by giving the command :info :
  22620. as above.  There is no provision for including wildcard characters of
  22621. any form in the arguments of :info commands.
  22622.  
  22623. If a particular argument can be interpreted as, for example, a
  22624. constructor function, or a type constructor depending on context, both
  22625. possibilities are displayed.  For example, loading a program containing
  22626. the definition:
  22627.  
  22628.     data Set a = Set [a]
  22629.  
  22630. We obtain:
  22631.  
  22632.     ? :info Set        
  22633.     -- type constructor
  22634.     data Set a
  22635.  
  22636.     -- constructors:
  22637.     Set :: [a] -> Set a
  22638.  
  22639.     Set :: [a] -> Set a   -- data constructor
  22640.  
  22641.     ?
  22642.  
  22643. If no arguments are supplied to :info, a list of all the script files
  22644. currently loaded into the interpreter will be displayed:
  22645.  
  22646.     ? :info
  22647.  
  22648.     Gofer session for:
  22649.     /usr/local/lib/Gofer/standard.prelude
  22650.     examples
  22651.     ?
  22652.  
  22653.  
  22654. 2.4  Literate scripts
  22655. ---------------------
  22656. Support for literate scripts -- files in which program lines begin with
  22657. a `>' character and all other lines are treated as comments -- was
  22658. provided in previous versions of Gofer.  The command line option
  22659. :set +l was used to force Gofer to treat each input file as a literate
  22660. script, while :set -l (the default) was used to treat each input file
  22661. as a standard script of definitions.
  22662.  
  22663. In practice, this turned out to be somewhat inconvenient, particularly
  22664. when loading combinations of files, some as literate scripts, some
  22665. without.  For example, quite a few people kept two versions of the
  22666. prelude, one as a literate script, one not, so that they wouldn't have
  22667. to fiddle with the settings or using the :set commands to load files.
  22668.  
  22669. Gofer version 2.28 now uses a more sophisticated scheme to determine
  22670. how an input script file should be treated, based on the use of file
  22671. extensions.  More specifically, any script file with a name ending in
  22672. one of the following suffixes:
  22673.  
  22674.  
  22675.                                       12
  22676.  
  22677.  
  22678.  
  22679.  
  22680. Release Notes v2.28                              2.4  Literate scripts
  22681.  
  22682.  
  22683.     .hs     .has    .gs     .gof    .prelude
  22684.  
  22685. will always be loaded as a normal (i.e. non-literate) script file,
  22686. regardless of the setting of the l command line option.  In a similar
  22687. way, files with names ending in one of the following suffixes:
  22688.  
  22689.     .lgs    .lhs    .verb   .lit
  22690.  
  22691. will always be treated as literate scripts.  The command line option l
  22692. is only used for files with names not ending in one of the above
  22693. suffixes.
  22694.  
  22695. For example, the commands:
  22696.  
  22697.     :set -l
  22698.     :load prog1.gs prog2 prog3.lgs
  22699.  
  22700. will load prog1.gs and prog2 as non-literate scripts, and then load
  22701. prog3.lhs as a literate script.
  22702.  
  22703.  
  22704. 2.5  Prelude files
  22705. ------------------
  22706. The Gofer system comes with a standard prelude, and a small number of
  22707. alternative preludes.  These have always been there, but a lot of
  22708. people don't seem to have noticed these, so I thought I'd say a few
  22709. words about the different preludes included with Gofer: Remember that
  22710. you can always change the prelude you are using by setting the GOFER
  22711. environment variable or by modifying a startup script as described in
  22712. Section 2.1:
  22713.  
  22714.     standard.prelude    The standard Gofer prelude, using type classes
  22715.                         and providing the familiar range of operators
  22716.                         and functions.
  22717.  
  22718.     nofloat.prelude     A simplified version of the standard.prelude
  22719.                         which does not include any floating point
  22720.                         operators.  This is likely to be of most use
  22721.                         for those using Gofer on PCs where memory is
  22722.                         at a premium; compiling a version of the
  22723.                         interpreter (or compiler runtime library)
  22724.                         without floating point support can give an
  22725.                         important saving.
  22726.  
  22727.     simple.prelude      A prelude file based on the standard prelude
  22728.                         but without type classes.  Let me emphasize
  22729.                         that point: YOU CAN USE GOFER WITHOUT HAVING
  22730.                         TO LEARN ABOUT TYPE CLASSES :-)  Some people
  22731.                         seem to take to the use of type classes right
  22732.                         from the beginning.  For those that have
  22733.                         problems understanding the technical details
  22734.                         or even the motivation, the simple.prelude
  22735.                         can be used to get you familiar with the syntax
  22736.                         of the language and the basic principles.
  22737.                         Then you can move up to the standard.prelude
  22738.                         when you're ready.  The principle differences
  22739.  
  22740.  
  22741.                                       13
  22742.  
  22743.  
  22744.  
  22745.  
  22746. Release Notes v2.28                                 2.5  Prelude files
  22747.  
  22748.  
  22749.                         can be described by listing the types of
  22750.                         commonly used operators in the simple.prelude:
  22751.  
  22752.                               (==) :: a -> a -> Bool
  22753.                               (<=) :: a -> a -> Bool
  22754.                               (<)  :: a -> a -> Bool
  22755.                               (>=) :: a -> a -> Bool
  22756.                               (>)  :: a -> a -> Bool
  22757.                               (/=) :: a -> a -> Bool
  22758.                               show :: a -> String
  22759.                               (+)  :: Int -> Int -> Int
  22760.                               (-)  :: Int -> Int -> Int
  22761.                               (*)  :: Int -> Int -> Int
  22762.                               (/)  :: Int -> Int -> Int
  22763.  
  22764.                         The resulting language is closer to the system
  22765.                         in Bird and Wadler (and can be made closer
  22766.                         still by editing the simple.prelude to use
  22767.                         zipwith instead of zipWith etc...).
  22768.  
  22769.     cc.prelude          An extended version of the standard.prelude
  22770.                         including support for a number of useful
  22771.                         constructor classes.  Most of the examples
  22772.                         and applications described in Section 4 are
  22773.                         based on this prelude.
  22774.  
  22775.     min.prelude         A minimal prelude file.  If you really want to
  22776.                         build a very small prelude for a particular
  22777.                         application, start with this and add the extra
  22778.                         things that you need.
  22779.  
  22780. As you can see, the standard extension for prelude files is .prelude
  22781. and any file ending with this suffix will be read as a non-literate
  22782. script (as described in Section 2.4).  Note that, even if you are using
  22783. a computer where the full name of a prelude file is not stored (for
  22784. example, on a DOS machine the standard.prelude file becomes
  22785. STANDARD.PRE) you should still specify the prelude file by its full
  22786. name to ensure that the Gofer system treats it correctly as a prelude
  22787. file.
  22788.  
  22789. You are also free to construct your own prelude files, typically by
  22790. modifying one of the supplied preludes described above.  Anyone who
  22791. created prelude files for use with previous releases of Gofer will need
  22792. to edit these files to ensure that they will work correctly.  Note in
  22793. particular that there is no longer any need to include definitions of
  22794. the I/O datatypes in programs.  Furthermore, the error function should
  22795. now be bound to the primitive "primError" rather than using the old
  22796. definition of error s | False = error s.
  22797.  
  22798.  
  22799. 3. LANGUAGE DIFFERENCES
  22800.  
  22801. This section outlines a number of small differences and extensions to
  22802. the language used by Gofer.  These features are not included in the
  22803. definition of Haskell, so you shouldn't be thinking that programs
  22804. written using these features can ultimately be used with a full Haskell
  22805.  
  22806.  
  22807.                                       14
  22808.  
  22809.  
  22810.  
  22811.  
  22812. Release Notes v2.28                            3. LANGUAGE DIFFERENCES
  22813.  
  22814.  
  22815. system.  The use of constructor classes -- a more substantial change is
  22816. described in Section 4.
  22817.  
  22818. 3.1  Restricted type synonyms
  22819. -----------------------------
  22820. Gofer 2.28 supports a form of restricted type synonym that can be used
  22821. to restrict the expansion of the synonym to a particular set of
  22822. functions.  Outside of the selected group of functions, the synonym
  22823. constructor behaves like a standard datatype.  More precisely, a
  22824. restricted type synonym definition is a top level declaration of the
  22825. form:
  22826.  
  22827.     type T a1 ... am = rhs in f1, ..., fn
  22828.  
  22829. where T is the name of the restricted type synonym constructor and rhs
  22830. is a type expression typically involving some of the (distinct) type
  22831. variables a1, ..., am.  The same kind of restrictions that apply to
  22832. normal type synonym declarations are also applied here.  The major
  22833. difference is that the expansion of the type synonym can only be used
  22834. within the binding group of one of the functions f1, ..., fn (all of
  22835. which must be defined by top-level definitions in the file containing
  22836. the restricted type synonym definition).  In the definition of any
  22837. other function, the type constructor T is treated as if it had been
  22838. introduced by a definition of the form:
  22839.  
  22840.     data T a1 ... am = ...
  22841.  
  22842. The original motivation for restricted type synonyms came from my work
  22843. with constructor classes as described in Section 4 and you will several
  22844. examples of this in the ccexamples.gs file in the demos/Ccexamples
  22845. directory of the standard distribution.  For a simpler example,
  22846. consider the following definition of a datatype of stacks in terms of
  22847. the standard list type:
  22848.  
  22849.     type Stack a = [a] in emptyStack, push, pop, top, isEmpty
  22850.  
  22851. The definitions for the five functions named here are as follows:
  22852.  
  22853.     emptyStack :: Stack a
  22854.     emptyStack  = []
  22855.  
  22856.     push       :: a -> Stack a -> Stack a
  22857.     push        = (:)
  22858.  
  22859.     pop        :: Stack a -> Stack a
  22860.     pop []      = error "pop: empty stack"
  22861.     pop (_:xs)  = xs
  22862.  
  22863.     top        :: Stack a -> a
  22864.     top []      = error "top: empty stack"
  22865.     top (x:_)   = x
  22866.  
  22867.     isEmpty    :: Stack a -> Bool
  22868.     isEmpty     = null
  22869.  
  22870. The type signatures here are particularly important.  For example,
  22871.  
  22872.  
  22873.                                       15
  22874.  
  22875.  
  22876.  
  22877.  
  22878. Release Notes v2.28                      3.1  Restricted type synonyms
  22879.  
  22880.  
  22881. since emptyStack is mentioned in the definition of the restricted type
  22882. synonym Stack, the definition of emptyStack is type correct.  The
  22883. declared type for emptyStack is Stack a which can be expanded to [a],
  22884. agreeing with the type for the empty list [].  However, in an expression
  22885. outside the binding group of these functions, the Stack a type is quite
  22886. distinct from the [a] type:
  22887.  
  22888.     ? emptyStack ++ [1]
  22889.     ERROR: Type error in application
  22890.     *** expression     : emptyStack ++ [1]
  22891.     *** term           : emptyStack
  22892.     *** type           : Stack a
  22893.     *** does not match : [Int]
  22894.  
  22895.     ?
  22896.  
  22897. The `binding group' of a value refers to the set of values whose
  22898. definitions are in the same mutually recursive group of bindings.  In
  22899. particular, this does not extend to the type class system so we can
  22900. define instances such as:
  22901.  
  22902.     instance Eq a => Eq (Stack a) where
  22903.         s1 == s2 | isEmpty s1 = isEmpty s2
  22904.                  | isEmpty s2 = isEmpty s1
  22905.                  | otherwise  = top s1 == top s2 && pop s1 == pop s2
  22906.  
  22907. As a convenience, Gofer allows the type signatures of functions
  22908. mentioned in the type synonym declaration to be specified within the
  22909. definition rather than in a different point in the script.  Thus the
  22910. example above could equally well have been written as:
  22911.  
  22912.     type Stack a = [a] in
  22913.         emptyStack :: Stack a,
  22914.         push       :: a -> Stack a -> Stack a,
  22915.         pop        :: Stack a -> Stack a,
  22916.         top        :: Stack a -> a,
  22917.         isEmpty    :: Stack a -> Bool
  22918.  
  22919.     emptyStack  = []
  22920.  
  22921.     push        = (:)
  22922.  
  22923.     pop []      = error "pop: empty stack"
  22924.     pop (_:xs)  = xs
  22925.  
  22926.     top []      = error "top: empty stack"
  22927.     top (x:_)   = x
  22928.  
  22929.     isEmpty     = null
  22930.  
  22931. However, the first form is necessary when you want to define two or
  22932. more restricted type synonyms simultaneously.  For example:
  22933.  
  22934.     type Pointer = Int in allocate, deref, assign
  22935.     type Heap a  = [a] in newHeap, allocate, deref, assign
  22936.     newHeap  :: Heap a
  22937.  
  22938.  
  22939.                                       16
  22940.  
  22941.  
  22942.  
  22943.  
  22944. Release Notes v2.28                      3.1  Restricted type synonyms
  22945.  
  22946.  
  22947.     allocate :: Heap a -> (Heap a, Pointer)
  22948.     deref    :: Heap a -> Pointer -> a
  22949.     assign   :: Heap a -> Pointer -> a -> Heap a
  22950.     etc ...
  22951.  
  22952. The use of restricted type synonyms doesn't quite provide proper
  22953. abstract data types.  For example, if you try:
  22954.  
  22955.     ? push 1 emptyStack
  22956.     [1]
  22957.     (5 reductions, 11 cells)
  22958.     ?
  22959.  
  22960. then the structure of the stack as a list of values is revealed by the
  22961. printing mechanism.  This happens because Gofer uses the show' function
  22962. to print out a value (in this case of type Stack Int) which looks inside
  22963. the structure of the object to see how it is represented.  This happens
  22964. to be most convenient for use in an interpreter as an aid to debugging.
  22965. For the purists (and the preservation of abstraction), Gofer could be
  22966. modified to apply the (overloaded) show function to printed values.
  22967. This would force the programmer to define the way in which stack values
  22968. are printed (distinct from lists) and preserve the abstraction.  Without
  22969. having set up this machinery, we get:
  22970.  
  22971.     ? show (push 1 emptyStack)
  22972.     ERROR: Cannot derive instance in expression
  22973.     *** Expression        : show (push 1 emptyStack)
  22974.     *** Required instance : Text (Stack Int)
  22975.  
  22976.     ?
  22977.  
  22978. The Gofer compiler described in Section 5 does not implement show' and
  22979. hence enforces the abstraction.
  22980.  
  22981.  
  22982. 3.2  Overlapping instance declarations
  22983. --------------------------------------
  22984. This section describes a somewhat technical extension, aimed at those
  22985. who work with type classes.  Many readers may prefer to skip to the
  22986. next section at this point.
  22987.  
  22988. The definition of Haskell and previous versions of Gofer insist that no
  22989. two instance declarations for a given class may contain overlapping
  22990. predicates.  Thus the declarations:
  22991.  
  22992.     class CX a where c :: a -> Int
  22993.  
  22994.     instance CX (a,Int) where c (x,y) = y
  22995.     instance CX (Int,a) where c (x,y) = x
  22996.  
  22997. are not allowed because the two predicates overlap:
  22998.  
  22999.     ERROR "misctest" (line 346): Overlapping instances for class "CX"
  23000.     *** This instance   : CX (Int,a)
  23001.     *** Overlaps with   : CX (a,Int)
  23002.     *** Common instance : CX (Int,Int)
  23003.  
  23004.  
  23005.                                       17
  23006.  
  23007.  
  23008.  
  23009.  
  23010. Release Notes v2.28             3.2  Overlapping instance declarations
  23011.  
  23012.  
  23013. As the error message indicates, given an expression c (1,2) it is not
  23014. clear whether we should use the first or the second instance
  23015. declarations to evaluate this, with potentially different results, 2 or
  23016. 1 respectively.
  23017.  
  23018. On the other hand, there are cases where this sort of thing might be
  23019. quite reasonable.  For example, the standard function show prints lists
  23020. of characters as strings, but any other kind of list is printed using
  23021. the [ ... ] notation with the items separated by commas:
  23022.  
  23023.     ? show "Hello"
  23024.     "Hello"
  23025.     ? show [True,False,True]
  23026.     [True,False,True]
  23027.     ? show [1..10]
  23028.     [1,2,3,4,5,6,7,8,9,10]
  23029.     ?
  23030.  
  23031. Haskell deals with this by an encoding using the showList function, but
  23032. a more obvious approach might be to define two instances:
  23033.  
  23034.     instance Text a => Text [a] where ... print using [ ... ] notation
  23035.     instance Text [Char] where ...        print as string
  23036.  
  23037. Other examples might include providing optimized versions of primitives
  23038. for particular frequently use operators, or providing a default
  23039. behaviour as in:
  23040.  
  23041.     class Eq a where (==) = error "no definition of equality specified"
  23042.  
  23043. Haskell requires the context of an overloaded function to be reduced to
  23044. a form where the only predicates that it contains are of the form C a.
  23045. This means that the inferred type of an object may be simplified before
  23046. the full type of that object is known.  For example, we might define a
  23047. function:
  23048.  
  23049.      f x = show [x,x]
  23050.  
  23051. The inferred type in Haskell is f :: Text a => a -> String and the
  23052. decision about which of the two instance declarations above should be
  23053. used has already been forced on us.  To see this, note that f 'a' would
  23054. evaluate to the string "['a', 'a']".  But if we allowed the second
  23055. instance declaration above to be used, show ['a', 'a'] would evaluate
  23056. to "aa".  This breaks a fundamental property of the language where we
  23057. expect to be able to replace one subexpression with another equal term
  23058. and obtain the same result.
  23059.  
  23060. In Gofer, the type system is a little different and the inferred type
  23061. is f :: Text [a] => a -> String.  The decision about which instance
  23062. declaration to use is postponed until the type assigned to 'a' is
  23063. known.  Thus both f 'a' and show ['a', 'a'] evaluate to "aa" without
  23064. any contradiction.
  23065.  
  23066. Although the type system in Gofer has always been able to support the
  23067. use of certain overlapping instance declarations, previous versions of
  23068. the system imposed stronger static restrictions which prohibited their
  23069.  
  23070.  
  23071.                                       18
  23072.  
  23073.  
  23074.  
  23075.  
  23076. Release Notes v2.28             3.2  Overlapping instance declarations
  23077.  
  23078.  
  23079. use.  Gofer 2.28 relaxes these restrictions by allowing a program to
  23080. contain overlapping instance declarations so long as:
  23081.  
  23082.   o  One of the instance predicates being declared is a substitution
  23083.      instance of the other.  Thus:
  23084.  
  23085.          instance Eq [Char] where ...    -- OK
  23086.          instance Eq a => Eq [a] where ...
  23087.  
  23088.      is permitted because the second predicate, Eq [a], is more general
  23089.      than the first, Eq [Char], which can be obtained by substituting
  23090.      Char for the type variable a.  However, the example at the
  23091.      beginning of this section:
  23092.  
  23093.          instance CX (a,Int) where ...   -- ILLEGAL
  23094.          instance CX (Int,a) where ...
  23095.  
  23096.      is not allowed since neither (a,Int) or (Int,a) is a substitution
  23097.      instance of the other (even though they have a common instance
  23098.      (Int,Int)).
  23099.  
  23100.   o  The two instances declared are not identical.  This rules out
  23101.      examples like:
  23102.  
  23103.          instance Eq Char where ...    -- ILLEGAL
  23104.          instance Eq Char where ...
  23105.  
  23106. The features described here are added principally for experimentation.
  23107. I have some particular applications that I want to try out (which is
  23108. why I actually implemented these ideas) but I would also be very
  23109. interested to hear from anyone else that makes use of this extension.
  23110.  
  23111.  
  23112. 3.3  Parsing Haskell syntax
  23113. ---------------------------
  23114. From correspondence that I have received, quite a few people use Gofer
  23115. to develop programs which, ultimately, will be compiled and executed
  23116. using a Haskell system.  Although the syntax of the two languages is
  23117. quite similar, it has been necessary to comment out module headers and
  23118. other constructs in Haskell programs before they could be used with
  23119. previous version of Gofer.
  23120.  
  23121. The new version of the Gofer system is now able to parse these
  23122. additional constructs (and will generate an error message if a syntax
  23123. error occurs).  However: NO ATTEMPT IS MADE TO INTERPRET OR USE THE
  23124. INFORMATION PROVIDED BY THESE ADDITIONAL CONSTRUCTS.  This feature is
  23125. provided purely for the convenience of those people using Gofer and
  23126. Haskell in the manner described above.  Gofer does not currently
  23127. support any notion of modules beyond the use of separate script files.
  23128.  
  23129. The following changes have been made:
  23130.  
  23131.   o  The identifiers:
  23132.  
  23133.          deriving     default      module      interface
  23134.          import       renaming     hiding      to
  23135.  
  23136.  
  23137.                                       19
  23138.  
  23139.  
  23140.  
  23141.  
  23142. Release Notes v2.28                        3.3  Parsing Haskell syntax
  23143.  
  23144.  
  23145.      are now reserved words in Gofer.  Any program that uses one of
  23146.      these as an identifier with an older version of Gofer will need
  23147.      to be modified to use a different name instead.
  23148.  
  23149.   o  Module headers and import declarations may be included in a Gofer
  23150.      program using the syntax set out in version 1.2 of the Haskell
  23151.      report.  Several modules may be included in a single file (but of
  23152.      course, Gofer makes no distinction between the sections of code
  23153.      appearing in different `modules').
  23154.  
  23155.   o  Datatype definitions may include deriving clauses such as:
  23156.  
  23157.          data Maybe a = Just a | Nothing deriving (Eq, Text)
  23158.  
  23159.      although no derived instances will actually be generated.
  23160.      If you need these facilities, you might consider writing out
  23161.      the instances of the type classes concerned yourself in a
  23162.      separate file which can be loaded when you run your program
  23163.      with Gofer, but which are omitted when you compile it with a
  23164.      proper Haskell system.
  23165.  
  23166.   o  Programs may include default declarations, although, once again,
  23167.      these are ignored; for example, there is no restriction on the
  23168.      forms of type that can be included in a default declaration, nor
  23169.      will an error occur if a single module includes multiple default
  23170.      declarations.
  23171.  
  23172.  
  23173. 3.4  Local definitions in comprehensions
  23174. ----------------------------------------
  23175. We all make mistakes.  The syntax for Gofer currently permits a local
  23176. definition to appear in a list comprehension (and indeed, in the monad
  23177. comprehensions described in the next section):
  23178.  
  23179.     [ (x,y) | x <- xs, y = f x, p y ]
  23180.  
  23181. This example is implemented by translating it to something equivalent
  23182. to:
  23183.  
  23184.     map h xs where h []     = []
  23185.                    h (x:xs) = let y = f x
  23186.                               in  if p y then (x,y) : h xs
  23187.                                          else h xs
  23188.  
  23189. It is cumbersome to rewrite this using list comprehensions without
  23190. local definitions:
  23191.  
  23192.     concat [ let y = f x in [ (x,y) | p y ] | x <- xs ]
  23193.  
  23194. so we might resort to the `hack' of writing:
  23195.  
  23196.     [ y | x <- xs, y <- [f x], p y ]
  23197.  
  23198. which works (but doesn't extend to recursive bindings, and is really an
  23199. inappropriate use for a list; a list is used to represent a sequence of
  23200. zero or more objects, so using a list when you know that there is
  23201.  
  23202.  
  23203.                                       20
  23204.  
  23205.  
  23206.  
  23207.  
  23208. Release Notes v2.28           3.4  Local definitions in comprehensions
  23209.  
  23210.  
  23211. always going to be exactly one element seems unnecessary).  So, to
  23212. summarize, I still think that local definitions can be useful in
  23213. comprehensions.
  23214.  
  23215. So where is the mistake I mentioned?  The problem is with the SYNTAX.
  23216. First, it is rather easy to confuse the comprehension above with the
  23217. comprehension:
  23218.  
  23219.     [ (x,y) | x <- xs, y == f x, p y ],
  23220.  
  23221. leading to errors which are hard to detect.  The second is that the
  23222. syntax is too restrictive; you can only give relatively simple local
  23223. declarations -- mutually recursive definitions and function bindings
  23224. are not permitted.
  23225.  
  23226. Gofer 2.28 now supports a new syntax for local definitions in
  23227. comprehensions.  The old syntax is still supported, for compatibility
  23228. with previous releases, but will be deleted in the next public release
  23229. (assuming I remember).  Local declarations can now be included in a
  23230. comprehension using a qualifier of the form let { decls }.  So the
  23231. comprehension at the beginning of this section can also be written:
  23232.  
  23233.     [ (x,y) | x <- xs, let {y = f x}, p y ]
  23234.  
  23235. Note that the braces cannot usually be omitted in Gofer due to an
  23236. undocumented extension to the syntax of Gofer function declarations.
  23237. The braces would not be needed if this syntax were added to a standard
  23238. Haskell system.
  23239.  
  23240. This extension means that it is now possible to write comprehensions
  23241. such as:
  23242.  
  23243.     [ (x,y,z) | x <- xs, let { y   = f x z;
  23244.                                z   = g x y;
  23245.                                f n = h n [] }, p x y z ]
  23246.      
  23247. Once again, this is still an experimental feature.  I suspect it will
  23248. be of most use to anyone making substantial use of monad comprehensions
  23249. as described in the next section.
  23250.  
  23251.  
  23252. 4. CONSTRUCTOR CLASSES
  23253.  
  23254. [This is a long section; if you are not interested in experimenting
  23255. with Gofer's system of constructor classes, you can skip straight ahead
  23256. to the next section without missing anything.  Of course, if you don't
  23257. know what a constructor class is, you might want to read at least some
  23258. of this section before you can make that decision.]
  23259.  
  23260. One of the biggest changes in Gofer version 2.28 is the provision of
  23261. support for constructor classes.  This section provides an overview of
  23262. constructor classes which should hopefully, in conjunction with the
  23263. example supplied with the full distribution, be enough to get you
  23264. started.  More technical details about constructor classes can be
  23265. obtained by contacting me.
  23266.  
  23267.  
  23268.  
  23269.                                       21
  23270.  
  23271.  
  23272.  
  23273.  
  23274. Release Notes v2.28                             4. CONSTRUCTOR CLASSES
  23275.  
  23276.  
  23277. Some of the following introduction here (particularly sections 4.1 and
  23278. 4.2) may seem somewhat familiar to those of you have already read one
  23279. of the papers that I have written on the subject although I have added
  23280. some more information about the Gofer implementation.
  23281.  
  23282. Others may find that this section of the documentation seems rather
  23283. technical; try not to be put off at first sight.  Looking through the
  23284. examples and the documentation, you may find it is easier to understand
  23285. than you expect!
  23286.  
  23287. A final comment before starting: there is, as yet, no strong consensus
  23288. on the names and syntax that would be best for monad operations,
  23289. comprehensions etc.  If you have any opinions, or proposals which
  23290. differ from what you see here, please let me know ... I'd be very
  23291. interested to hear other people's opinions on this.
  23292.  
  23293.  
  23294. 4.1  An overloaded map function
  23295. -------------------------------
  23296. Many functional programs use the map function to apply a function to
  23297. each of the elements in a given list.  The type and definition of this
  23298. function as given in the Gofer standard prelude are as follows:
  23299.  
  23300.     map          ::  (a -> b) -> ([a] -> [b])
  23301.     map f []      =  []
  23302.     map f (x:xs)  =  f x : map f xs
  23303.  
  23304. It is well known that the map function satisfies the familiar laws:
  23305.  
  23306.     map id         = id
  23307.     map f . map g  =  map (f . g)
  23308.  
  23309. A category theorist will recognize these observations as indicating
  23310. that there is a functor from types to types whose object part maps any
  23311. given type a to the list type [a] and whose arrow part maps each
  23312. function f::a -> b to the function map f :: [a] -> [b].  A functional
  23313. programmer will recognize that similar constructions are also used with
  23314. a wide range of other data types, as illustrated by the following
  23315. examples:
  23316.  
  23317.     data Tree a  =  Leaf a  |  Tree a :^: Tree a
  23318.  
  23319.     mapTree            :: (a -> b) -> (Tree a -> Tree b)
  23320.     mapTree f (Leaf x)  = Leaf (f x)
  23321.     mapTree f (l :^: r) = mapTree f l :^: mapTree f r
  23322.  
  23323.     data Maybe a =  Just a  |  Nothing
  23324.  
  23325.     mapMaybe           :: (a -> b) -> (Maybe a -> Maybe b)
  23326.     mapMaybe f (Just x) = Just (f x)
  23327.     mapMaybe f Nothing  = Nothing
  23328.  
  23329. Each of these functions has a similar type to that of the original map
  23330. and also satisfies the functor laws given above.  With this in mind, it
  23331. seems a shame that we have to use different names for each of these
  23332. variants.
  23333.  
  23334.  
  23335.                                       22
  23336.  
  23337.  
  23338.  
  23339.  
  23340. Release Notes v2.28                    4.1  An overloaded map function
  23341.  
  23342.  
  23343. A more attractive solution would allow the use of a single name map,
  23344. relying on the types of the objects involved to determine which
  23345. particular version of the map function is required in a given
  23346. situation.  For example, it is clear that map (1+) [1,2,3] should be
  23347. a list, calculated using the original map function on lists, while
  23348. map (1+) (Just 1) should evaluate to Just 2 using mapMaybe.
  23349.  
  23350. Unfortunately, in a language using standard Hindley/Milner type
  23351. inference, there is no way to assign a type to the map function that
  23352. would allow it to be used in this way.  Furthermore, even if typing
  23353. were not an issue, use of the map function would be rather limited
  23354. unless some additional mechanism was provided to allow the definition
  23355. to be extended to include new datatypes perhaps distributed across a
  23356. number of distinct program files.
  23357.  
  23358.  
  23359. 4.1.1  An attempt to define map using type classes
  23360. --------------------------------------------------
  23361. The ability to use a single function symbol with an interpretation that
  23362. depends on the type of its arguments is commonly known as overloading.
  23363. In Gofer, overloading is implemented using type classes -- which can be
  23364. thought of as sets of types.  For example, the Eq class defined by:
  23365.  
  23366.     class Eq a where
  23367.         (==), (/=) :: a -> a -> Bool
  23368.  
  23369. (together with an appropriate set of instance declarations) is used to
  23370. describe the set of types whose elements can be compared for equality.
  23371. The standard prelude for Gofer includes integers, floating point
  23372. numbers, characters, booleans, lists (in which the type of the members
  23373. is also in Eq) and so forth.  There is no need for all the definitions
  23374. of equality to be combined in a single script file; new definitions of
  23375. equality are typically included each time a new datatype is defined.
  23376.  
  23377. Functions such as nub, defined in the standard prelude as:
  23378.  
  23379.     nub       :: Eq a => [a] -> [a]   -- remove duplicates from list
  23380.     nub []     = []
  23381.     nub (x:xs) = x : nub (filter (x/=) xs)
  23382.  
  23383. can be used with any choice of type for the type variable a so long as
  23384. it is an instance of Eq.  Only a single definition of the nub function
  23385. is required.
  23386.  
  23387. Unfortunately, the system of type classes is not sufficiently powerful
  23388. to give a satisfactory treatment for the map function; to do so would
  23389. require a class Map and a type expression m(t) involving the type
  23390. variable t such that S = { m(t) | t is a member of Map } includes (at
  23391. least) the types:
  23392.  
  23393.     { (a -> b) -> ([a] -> [b]),
  23394.       (a -> b) -> (Tree a -> Tree b),
  23395.       (a -> b) -> (Maybe a -> Maybe b), ....
  23396.                                     | a and b arbitrary types }
  23397.  
  23398.  
  23399.  
  23400.  
  23401.                                       23
  23402.  
  23403.  
  23404.  
  23405.  
  23406. Release Notes v2.28 4.1.1  An attempt to define map using type classes
  23407.  
  23408.  
  23409. The only possibility is to take m(t) = t and choose Map as the set of
  23410. types S for which the map function is required:
  23411.  
  23412.     class Map t where map :: t
  23413.  
  23414.     instance Map ((a -> b) -> ([a] -> [b])) where ...
  23415.     instance Map ((a -> b) -> (Tree a -> Tree b)) where ...
  23416.     instance Map ((a -> b) -> (Maybe a -> Maybe b)) where ...
  23417.  
  23418. This syntax is permitted in Gofer (but not in Haskell) but it does not
  23419. give a sufficiently accurate characterization of the type of map to be
  23420. of much use.  For example, the principal type of \i j -> map j . map i
  23421. is:
  23422.  
  23423.     (Map (a -> c -> e), Map (b -> e -> d)) => a -> b -> c -> d
  23424.  
  23425. (a and b are the types of i and j respectively).  This is complicated
  23426. and does not enforce the condition that i and j have function types.
  23427. Furthermore, the type is ambiguous (the type variable e does not appear
  23428. to the right of the => symbol or in the assumptions).  Under these
  23429. conditions, we cannot guarantee a well-defined semantics for this
  23430. expression.  Other attempts to define the map function, for example
  23431. using multiple parameter type classes, have also failed for essentially
  23432. the same reasons.
  23433.  
  23434.  
  23435. 4.1.2  A solution using constructor classes
  23436. -------------------------------------------
  23437. A much better approach is to notice that each of the types for which
  23438. the map function is required is of the form:
  23439.  
  23440.     (a -> b) -> (f a -> f b).
  23441.  
  23442. The variables a and b here represent arbitrary types while f ranges
  23443. over the set of type constructors for which a suitable map function has
  23444. been defined.  In particular, we would expect to include the list
  23445. constructor (which we write as [] in Gofer), Tree and Maybe as elements
  23446. of this set.  Motivated by our earlier comments we will call this set
  23447. Functor.  With only a small extension to the Gofer syntax for type
  23448. classes this can be described by:
  23449.  
  23450.     class Functor f where
  23451.         map :: (a -> b) -> (f a -> f b)
  23452.  
  23453.     instance Functor [] where
  23454.         map f []        = []
  23455.         map f (x:xs)    = f x : map f xs
  23456.  
  23457.     instance Functor Tree where
  23458.         map f (Leaf a)  = Leaf (f a)
  23459.         map f (l :^: r) = map f l :^: map f r
  23460.  
  23461.     instance Functor Maybe where
  23462.         map f (Just x) = Just (f x)
  23463.         map f Nothing  = Nothing
  23464.  
  23465.  
  23466.  
  23467.                                       24
  23468.  
  23469.  
  23470.  
  23471.  
  23472. Release Notes v2.28        4.1.2  A solution using constructor classes
  23473.  
  23474.  
  23475. Functor is our first example of a constructor class.  The following
  23476. extract illustrates how the definitions for Functor work in practice:
  23477.  
  23478.     ? map (1+) [1,2,3]
  23479.     [2, 3, 4]
  23480.     (15 reductions, 44 cells)
  23481.     ? map (1+) (Leaf 1 :^: Leaf 2)
  23482.     Leaf 2 :^: Leaf 3
  23483.     (10 reductions, 46 cells)
  23484.     ? map (1+) (Just 1)
  23485.     Just 2
  23486.     (4 reductions, 17 cells)
  23487.     ?
  23488.  
  23489. Furthermore, by specifying the type of map function more precisely,
  23490. we avoid the ambiguity problems mentioned above.  For example, the
  23491. principal type of \i j -> map j . map i is simply:
  23492.  
  23493.     Functor f => (a -> b) -> (b -> c) -> f a -> f c
  23494.  
  23495. which is not ambiguous, and makes the types of i and j as (a -> b)
  23496. and (b -> c) respectively.
  23497.  
  23498. [You can try these examples yourself using the Gofer system.  The first
  23499. thing you need to do is start Gofer using the file cc.prelude instead
  23500. of the usual Gofer standard.prelude.  The cc.prelude includes the
  23501. definition of the functor class and the instance for Functor [].  The
  23502. remaining two instance declarations are included (along with lots of
  23503. other examples) in the file ccexamples.gs in the demos/Ccexamples
  23504. subdirectory of the standard distribution.]
  23505.  
  23506.  
  23507. 4.1.3  The kind system
  23508. ----------------------
  23509. Each instance of Functor can be thought of as a function from types to
  23510. types.  It would be nonsense to allow the type Int of integers to be an
  23511. instance of Functor, since the type (a -> b) ->(Int a -> Int b) is
  23512. obviously not well-formed.  To avoid unwanted cases like this, we have
  23513. to ensure that all of the elements in any given class are of the same
  23514. kind.
  23515.  
  23516. To do this, we formalize the notion of kind, writing * for the kind of
  23517. all types and k1 -> k2 for the kind of a constructor which takes
  23518. something of kind k1 and returns something of kind k2.  This notion
  23519. comes is motivated by some theoretical work by Henk Barendregt on the
  23520. subject of `Generalized type systems'; Do not confuse this with the use
  23521. of the symbol * in a certain well-known functional language where it
  23522. represents a type variable.  These things are completely different!
  23523.  
  23524. Rather than thinking only of types we work with constructors which
  23525. include types as a special case.  Constructors take the form:
  23526.  
  23527.     Constructor  ::=  ConstructorConstant
  23528.                   |   Constructor1 Constructor2
  23529.                   |   variable
  23530.  
  23531.  
  23532.  
  23533.                                       25
  23534.  
  23535.  
  23536.  
  23537.  
  23538. Release Notes v2.28                             4.1.3  The kind system
  23539.  
  23540.  
  23541. This corresponds very closely to the way that most type expressions
  23542. are already written in Gofer.  For example, Tree a is an application
  23543. of the constructor constant Tree to the variable a.  Gofer has some
  23544. special syntax for tuple, list and function types.  The corresponding
  23545. constructors can also be written directly in Gofer.  For example:
  23546.  
  23547.     a -> b   =  (->) a b
  23548.     [a]      =  [] a
  23549.     (a,b)    =  (,) a b
  23550.     (a,b,c)  =  (,,) a b c
  23551.     etc ...
  23552.  
  23553. Each constructor constant has a corresponding kind.  For example:
  23554.  
  23555.     Int, Float, ()    ::  *
  23556.     [], Tree, Maybe   ::  * -> *
  23557.     (->), (,)         ::  * -> * -> *
  23558.     (,,)              ::  * -> * -> * -> *
  23559.  
  23560. Applying one constructor C :: k1 -> k2 to a construct C' :: k1 gives
  23561. a constructor expression C C' with kind k2.  Notice that this is just
  23562. the same sort of thing you would expect from applying a function of
  23563. type a -> b to an value of type b; kinds really are very much like
  23564. `types for constructors'.
  23565.  
  23566. Instead of checking that type expressions contain the correct number of
  23567. arguments for each type constructor, we need to check that any type
  23568. expression has kind *.  In a similar way, all of the elements of a
  23569. constructor class must have the same kind; for example, a constructor
  23570. class constraint of the form Functor f is only valid if f is a
  23571. constructor expression of kind * -> *.  Note also that our system
  23572. includes Gofer/Haskell type classes as a special case; a type class is
  23573. simply a constructor class for which each instance has kind *.  Multiple
  23574. parameter classes can also be dealt with in the same way, using a tuple
  23575. of kinds (k1,...,kn) to indicate the kind of constructors required for
  23576. each argument.
  23577.  
  23578. The language of constructors is essentially a system of combinators
  23579. without any reduction rules.  As such, standard techniques can be
  23580. used to infer the kinds of constructor variables, constructor constants
  23581. introduced by new datatype definitions and the kind of the elements
  23582. held in any particular constructor class.  The important point is that
  23583. there is no need -- and indeed, in our current implementation, no
  23584. opportunity -- for the programmer to supply kind information
  23585. explicitly.  We regard this as a significant advantage since it means
  23586. that the programmer can avoid much of the complexity that might
  23587. otherwise result from the need to annotate type expressions with
  23588. kinds.
  23589.  
  23590.  
  23591. 4.2  Monads as an application of constructor classes
  23592. ----------------------------------------------------
  23593. Motivated by the work of Moggi and Spivey, Wadler has proposed a style
  23594. of functional programming based on the use of monads.  While the theory
  23595. of monads had already been widely studied in the context of abstract
  23596. category theory, Wadler introduced the idea that monads could be used
  23597.  
  23598.  
  23599.                                       26
  23600.  
  23601.  
  23602.  
  23603.  
  23604. Release Notes v2.28 4.2  Monads as an application of constructor classes
  23605.  
  23606.  
  23607. as a practical method for modeling so-called `impure' features in a
  23608. purely functional programming language.
  23609.  
  23610. The examples in this and following sections illustrate that the use of
  23611. constructor classes can be particularly convenient for programming in
  23612. this style.  You will also find a lot more examples prepared for use
  23613. with Gofer in the file ccexamples in the demos/Ccexamples subdirectory
  23614. of the standard distribution.
  23615.  
  23616.  
  23617. 4.2.1  A framework for programming with monads
  23618. ----------------------------------------------
  23619. The basic motivation for the use of monads is the need to distinguish
  23620. between computations and the values that they produce.  If m is a monad
  23621. then an object of type (m a) represents a computation which is expected
  23622. to produce a value of type a.  These types reflect the fact that the
  23623. use of particular programming language features in a given calculation
  23624. is a property of the computation itself and not of the result that it
  23625. produces.
  23626.  
  23627. Taking the approach outlined by Wadler in his paper `The Essence of
  23628. Functional Programming' (POPL '92), we introduce a constructor class of
  23629. monads using the definition:
  23630.  
  23631.     class Functor m => Monad m where
  23632.         result    :: a -> m a
  23633.         join      :: m (m a) -> m a
  23634.         bind      :: m a -> (a -> m b) -> m b
  23635.  
  23636.         join x     = bind x id
  23637.         x `bind` f = join (map f x)
  23638.  
  23639. The expression Functor m => Monad m defines Monad as a subclass of
  23640. Functor ensuring that, for any given monad, there will also be a
  23641. corresponding instance of the overloaded map function.  The use of a
  23642. hierarchy of classes enables us to capture the fact that not every
  23643. instance of Functor can be treated as an instance of Monad in any
  23644. natural way.
  23645.  
  23646. [If you are familiar with either my previous papers or Wadler's
  23647. writings on the use of monads, you might notice that the declaration
  23648. above uses the name `result' in place of `return' or `unit' that have
  23649. been previously used for the same thing.  The latter two choices have
  23650. been used elsewhere for rather different purposes, and there is
  23651. currently no clear picture of which names should be used.  The
  23652. identifier `result' is the latest in a long line of attempts to find a
  23653. name which both conveys the appropriate meaning and is not already in
  23654. use for other applications.]
  23655.  
  23656. By including default definitions for bind and join we only need to give
  23657. a definition for one of these (in addition to a definition for result)
  23658. to completely define an instance of Monad.  This is often quite
  23659. convenient.  On the other hand, it would be an error to omit
  23660. definitions for both operators since the default definitions are
  23661. clearly circular.  We should also mention that the member functions in
  23662. an instance of Monad are expected to satisfy a number of laws which are
  23663.  
  23664.  
  23665.                                       27
  23666.  
  23667.  
  23668.  
  23669.  
  23670. Release Notes v2.28     4.2.1  A framework for programming with monads
  23671.  
  23672.  
  23673. not reflected in the class definition above.
  23674.  
  23675. The following declaration defines the standard monad structure for the
  23676. list constructor [] which can be used to describe computations
  23677. producing multiple results, corresponding to a simple form of
  23678. non-determinism:
  23679.  
  23680.     instance Monad [] where
  23681.         result x        = [x]
  23682.         []     `bind` f = []
  23683.         (x:xs) `bind` f = f x ++ (xs `bind` f)
  23684.  
  23685. As a second example, the monad structure for the Maybe datatype, which
  23686. might be used to describe computations which fail to produce any value
  23687. at all if an error condition occurs, can be described by:
  23688.  
  23689.     instance Monad Maybe where
  23690.         result x         = Just x
  23691.         Just x  `bind` f = f x
  23692.         Nothing `bind` f = Nothing
  23693.  
  23694. Another interesting use of monads is to model programs that make use of
  23695. an internal state.  Computations of this kind can be represented by
  23696. functions of type s-> (a,s) (often referred to as state transformers)
  23697. mapping an initial state to a pair containing the result and final
  23698. state.  In order to get this into the appropriate form for the Gofer
  23699. system of constructor classes, we introduce a new datatype:
  23700.  
  23701.     data State s a = ST (s -> (a,s))
  23702.  
  23703. The functor and monad structures for state transformers are as follows:
  23704.  
  23705.     instance Functor (State s) where
  23706.         map f (ST st) = ST (\s -> let (x,s') = st s in (f x, s'))
  23707.  
  23708.     instance Monad (State s) where
  23709.         result x      = ST (\s -> (x,s))
  23710.         ST m `bind` f = ST (\s -> let (x,s') = m s
  23711.                                       ST f'  = f x
  23712.                                   in  f' s')
  23713.  
  23714. Notice that the State constructor has kind * -> * -> * and that the
  23715. declarations above define State s as a monad and functor for any state
  23716. type s (and hence State s has kind * -> * as required for an instance
  23717. of these classes).  There is no need to assume a fixed state type.
  23718.  
  23719. From a user's point of view, the most interesting properties of a monad
  23720. are described, not by the result, bind and join operators, but by the
  23721. additional operations that it supports.  The following examples are
  23722. often useful when working with state monads.  The first can be used to
  23723. `run' a program given an initial state and discarding the final state,
  23724. while the second might be used to implement an integer counter in a
  23725. State Int monad:
  23726.  
  23727.     startingWith          :: State s a -> s -> a
  23728.     ST m `startingWith` s0 = result where (result,_) = m s0
  23729.  
  23730.  
  23731.                                       28
  23732.  
  23733.  
  23734.  
  23735.  
  23736. Release Notes v2.28     4.2.1  A framework for programming with monads
  23737.  
  23738.  
  23739.     incr :: State Int Int
  23740.     incr  = ST (\s -> (s,s+1))
  23741.  
  23742. To illustrate the use of state monads, consider the task of labeling
  23743. each of the nodes in a binary tree with distinct integer values.  One
  23744. simple definition is:
  23745.  
  23746.     label     :: Tree a -> Tree (a,Int)
  23747.     label tree = fst (lab tree 0)
  23748.      where lab (Leaf n)  c  =  (Leaf (n,c), c+1)
  23749.            lab (l :^: r) c  =  (l' :^: r', c'')
  23750.                                where (l',c')  = lab l c
  23751.                                      (r',c'') = lab r c'
  23752.  
  23753. This uses an explicit counter (represented by the second parameter to
  23754. lab) and great care must be taken to ensure that the appropriate
  23755. counter value is used in each part of the program; simple errors, such
  23756. as writing c in place of c' in the last line, are easily made but can
  23757. be hard to detect.
  23758.  
  23759. An alternative definition, using a state monad and following the
  23760. layout suggested in Wadler's POPL paper, can be written as follows:
  23761.  
  23762.     label     :: Tree a -> Tree (a,Int)
  23763.     label tree = lab tree `startingWith` 0
  23764.      where lab (Leaf n)  = incr                  `bind` \c ->
  23765.                            result (Leaf (n,c))
  23766.            lab (l :^: r) = lab l                 `bind` \l' ->
  23767.                            lab r                 `bind` \r' ->
  23768.                            result (l' :^: r')
  23769.  
  23770. While this program is perhaps a little longer than the previous
  23771. version, the use of monad operations ensures that the correct counter
  23772. value is passed from one part of the program to the next.  There is no
  23773. need to mention explicitly that a state monad is required: The use of
  23774. startingWith and the initial value 0 (or indeed, the use of incr on its
  23775. own) are sufficient to determine the monad State Int needed for the
  23776. bind and result operators.  It is not necessary to distinguish between
  23777. different versions of the monad operators bind, result and join or to
  23778. rely on explicit type declarations.
  23779.  
  23780.  
  23781. 4.2.2  Monad comprehensions
  23782. ---------------------------
  23783. Several functional programming languages provide support for list
  23784. comprehensions, enabling some common forms of computation with lists to
  23785. be written in a concise form resembling the standard syntax for set
  23786. comprehensions in mathematics.  In his paper `Comprehending Monads'
  23787. (ACM Lisp and Functional Programming, 1990), Wadler made the
  23788. observation that the comprehension notation can be generalized to
  23789. arbitrary monads, of which the list constructor is just one special
  23790. case.
  23791.  
  23792. In Wadler's notation, a monad comprehension is written using the syntax
  23793. of a list comprehension but with a superscript to indicate the monad in
  23794. which the comprehension is to be interpreted.  This is a little awkward
  23795.  
  23796.  
  23797.                                       29
  23798.  
  23799.  
  23800.  
  23801.  
  23802. Release Notes v2.28                        4.2.2  Monad comprehensions
  23803.  
  23804.  
  23805. and makes the notation less powerful than might be hoped since each
  23806. comprehension is restricted to a particular monad.  Using the
  23807. overloaded operators described in the previous section, Gofer provides
  23808. a more flexible form of monad comprehension which relies on overloading
  23809. rather than superscripts.  At the time of writing, this is the only
  23810. concrete implementation of monad comprehensions known to us.
  23811.  
  23812. In our system, a monad comprehension is an expression of the form
  23813. [e | qs ] where e is an expression and gs is a list of generators of
  23814. the form p <- exp.  As a special case, if gs is empty then the
  23815. comprehension [ e | qs ] is written as [ e ].  The implementation of
  23816. monad comprehensions is based on the following translation of the
  23817. comprehension notation in terms of the result and bind operators
  23818. described in the previous section:
  23819.  
  23820.     [ e ]                = result e
  23821.     [ e | p <- exp, qs ] = exp `bind` \p -> [ e | qs ]
  23822.  
  23823. In this notation, the label function from the previous section can
  23824. be rewritten as:
  23825.  
  23826.     label     :: Tree a -> Tree (a,Int)
  23827.     label tree = lab tree `startingWith` 0
  23828.      where lab (Leaf n)  = [ Leaf (n,c) | c <- incr ]
  23829.            lab (l :^: r) = [  l :^: r   | l <- lab l, r <- lab r ]
  23830.  
  23831. Applying the translation rules for monad comprehensions to this
  23832. definition yields the previous definition in terms of result and bind.
  23833. The principal advantage of the comprehension syntax is that it is often
  23834. more concise and, in the author's opinion, sometimes more attractive.
  23835.  
  23836.  
  23837. 4.2.3  Monads with a zero
  23838. -------------------------
  23839. Assuming that you are familiar with Gofer's list comprehensions, you
  23840. will know that it is also possible to include boolean guards in
  23841. addition to generators in the definition of a list comprehension.  Once
  23842. again, Wadler showed that this was also possible in the more general
  23843. setting of monad comprehensions, so long as we restrict such
  23844. comprehensions to monads that include a special element zero satisfying
  23845. a small number of laws.  This can be dealt with in our framework by
  23846. defining a subclass of Monad:
  23847.  
  23848.     class Monad m => Monad0 m where
  23849.         zero   :: m a
  23850.  
  23851. For example, the List monad has the empty list as a zero element:
  23852.  
  23853.     instance Monad0 [] where zero = []
  23854.  
  23855. Note that not there are also some monads which do not have a zero
  23856. element and hence cannot be defined as instances of Monad0.  The
  23857. State s monads described in Section 4.2.1 are a simple example of
  23858. this.
  23859.  
  23860. Working in a monad with a zero, a comprehension involving a boolean
  23861.  
  23862.  
  23863.                                       30
  23864.  
  23865.  
  23866.  
  23867.  
  23868. Release Notes v2.28                          4.2.3  Monads with a zero
  23869.  
  23870.  
  23871. guard can be implemented using the translation:
  23872.  
  23873.     [ e | guard, qs ]  =  if guard then [ e | qs ] else zero
  23874.  
  23875. Notice that, as far as the type system is concerned, the use of
  23876. zero in the translation of a comprehension involving a guard automatically
  23877. captures the restriction to monads with a zero:
  23878.  
  23879.     ? :t \x p -> [ x | p x ]
  23880.     \x p -> [ x | p x ] :: Monad0 b => a -> (a -> Bool) -> b a
  23881.     ?
  23882.  
  23883. The inclusion of a zero element also allows a slightly different
  23884. translation for generators in comprehensions:
  23885.  
  23886.     [ e | p <- exp, qs ]  =  exp `bind` f
  23887.                              where  f p  =  [ e | qs ]
  23888.                                     f _  =  zero
  23889.  
  23890. This corresponds directly to the semantics of standard Gofer list
  23891. comprehensions, but only differs from the semantics of the translation
  23892. given in the previous section when p is an irrefutable pattern; i.e.
  23893. when p is a pattern which may not match the value (or values) generated
  23894. by exp.  You can see the difference by trying the following example
  23895. in Gofer:
  23896.  
  23897.     ? [ x | [x] <- [[1],[],[2]]]
  23898.     [1, 2]
  23899.     (9 reductions, 31 cells)
  23900.     ? map (\[x] -> x) [[1],[],[2]]
  23901.     [1, 
  23902.     Program error: {v157 []}
  23903.     (8 reductions, 66 cells)
  23904.  
  23905.     ?
  23906.  
  23907. In order to retain compatibility with the standard list comprehension
  23908. notation, Gofer always uses the second translation above for generators
  23909. if the pattern p is refutable.  This may sometimes give inferred types
  23910. which are more restrictive than you expect.  For example, tuples are
  23911. not irrefutable patterns in Gofer or Haskell, and so the function:
  23912.  
  23913.     ? :t \xs -> [ x | (x,y) <- xs ]
  23914.     \xs -> [ x | (x,y)<-xs ] :: Monad0 a => a (b,c) -> a b
  23915.     ?
  23916.  
  23917. is restricted to monads with a zero because the expanded translation
  23918. above is used.  You can always avoid this problem by using the lazy
  23919. pattern construct (i.e. the tilde operator, ~p) as in:
  23920.  
  23921.     ? :t \xs -> [ x | ~(x,y) <- xs ]
  23922.     \xs -> [ x | ~(x,y)<-xs ] :: Monad a => a (b,c) -> a b
  23923.     ?
  23924.  
  23925. [At one stage, I was using a different form of brackets to represent
  23926. monad comprehensions, implemented using the original translation to
  23927.  
  23928.  
  23929.                                       31
  23930.  
  23931.  
  23932.  
  23933.  
  23934. Release Notes v2.28                          4.2.3  Monads with a zero
  23935.  
  23936.  
  23937. avoid changing the semantics of list comprehensions.  But I finally
  23938. decided that it would be better to use standard comprehension notation
  23939. with lazy pattern annotations where necessary since this is less
  23940. cumbersome than writing \xs -> [| x | (x,y) <- xs |] in place of the
  23941. comprehension above.  Please let me know what you think!]
  23942.  
  23943.  
  23944. 4.2.4  Generic operations on monads
  23945. -----------------------------------
  23946. The combination of polymorphism and constructor classes in our system
  23947. makes it possible to define generic functions which can be used on a
  23948. wide range of different monads.  A simple example of this is the
  23949. `Kleisli composition' for an arbitrary monad, similar to the usual
  23950. composition of functions except that it also takes care of `side
  23951. effects'.  The general definition is as follows:
  23952.  
  23953.    (@@)   :: Monad m => (a -> m b) -> (c -> m a) -> (c -> m b)
  23954.    f @@ g  = join . map f . g
  23955.  
  23956. For example, in a monad of the form State s, the expression f @@ g
  23957. denotes a state transformer in which the final state of the computation
  23958. associated with g is used as the initial state for the computation
  23959. associated with f.  More precisely, for this particular kind of monad,
  23960. the general definition given above is equivalent to:
  23961.  
  23962.     (@@)  :: (b -> State s c) -> (a -> State s b) -> (a -> State s c)
  23963.     f @@ g = \a -> STM (\s0 -> let ST g'  = g a
  23964.                                    (b,s1) = g' s0
  23965.                                    ST f'  = f b
  23966.                                    (c,s2) = f' s1
  23967.                                in  (c,s2))
  23968.  
  23969. The biggest advantage of the generic definition is that there is no
  23970. need to construct new definitions of (@@) for every different monad.
  23971. On the other hand, if specific definitions were required for some
  23972. instances, perhaps in the interests of efficiency, we could simply
  23973. include (@@) as a member function of Monad and use the generic
  23974. definition as a default implementation.
  23975.  
  23976. Generic operations can also be defined using the comprehension
  23977. notation:
  23978.  
  23979.     mapl             :: Monad m => (a -> m b) -> ([a] -> m [b])
  23980.     mapl f []         = [ [] ]
  23981.     mapl f (x:xs)     = [ y:ys | y <- f x, ys <- mapl f xs ]
  23982.  
  23983. This is the same as mapping a function down the elements of a list
  23984. using the normal map function except that, in the presence of side
  23985. effects, the order in which the applications are carried out is
  23986. important.  For mapl, we start on the left (i.e. the front of the list)
  23987. and work towards the right.  There is a corresponding dual which works
  23988. in the reverse direction:
  23989.  
  23990.     mapr             :: Monad m => (a -> m b) -> ([a] -> m [b])
  23991.     mapr f []         = [ [] ]
  23992.     mapr f (x:xs)     = [ y:ys | ys <- mapr f xs, y <- f x ]
  23993.  
  23994.  
  23995.                                       32
  23996.  
  23997.  
  23998.  
  23999.  
  24000. Release Notes v2.28                4.2.4  Generic operations on monads
  24001.  
  24002.  
  24003. These general functions have applications in several kinds of monad
  24004. with examples involving state and output.
  24005.  
  24006. The comprehension notation can also be used to define a generalization
  24007. of Haskell's filter function which works in an arbitrary monad with a
  24008. zero:
  24009.  
  24010.     filter           :: Monad0 m => (a -> Bool) -> m a -> m a
  24011.     filter p xs       = [ x | x<-xs, p x ]
  24012.  
  24013. There are many other general purpose functions that can be defined
  24014. in the current framework and used in arbitrary monads.  To give you
  24015. some further examples, here are generalized versions of the foldl and
  24016. foldr functions which work in an arbitrary monad:
  24017.  
  24018.     mfoldl           :: Monad m => (a -> b -> m a) -> a -> [b] -> m a
  24019.     mfoldl f a []     = result a
  24020.     mfoldl f a (x:xs) = f a x `bind` (\fax -> mfoldl f fax xs)
  24021.  
  24022.     mfoldr           :: Monad m => (a -> b -> m b) -> b -> [a] -> m b
  24023.     mfoldr f a []     = result a
  24024.     mfoldr f a (x:xs) = mfoldr f a xs `bind` (\y -> f x y)
  24025.  
  24026. [Generalizing these definitions (and those of mapl, mapr) to work with
  24027. a second arbitrary monad (in place of the list monad) is left as an
  24028. entertaining exercise for the reader :-)]
  24029.  
  24030. As a final example, here is a definition of a `while' loop for an
  24031. arbitrary monad:
  24032.  
  24033.     while    :: Monad m => m Bool -> m b -> m ()
  24034.     while c s = c  `bind` \b ->
  24035.                 if b then s         `bind` \x ->
  24036.                           while c s
  24037.                      else result ()
  24038.  
  24039.  
  24040. 4.2.5  A family of state monads
  24041. -------------------------------
  24042. We have already described the use of monads to model programs with
  24043. state using the State datatype in Section 4.2.1.  The essential
  24044. property of any such monad is the ability to update the state and we
  24045. might therefore consider a more general class of state monads given by:
  24046.  
  24047.     class Monad (m s) => StateMonad m s where
  24048.         update :: (s -> s) -> m s s
  24049.         set    :: s -> m s s
  24050.         fetch  :: m s s
  24051.         set new = update (\old -> new)
  24052.         fetch   = update id
  24053.  
  24054. An expression of the form update f denotes the computation which
  24055. updates the state using f and result the old state as its result.  For
  24056. example, the incr function described above can be defined as:
  24057.  
  24058.     incr :: StateMonad m Int => m Int Int
  24059.  
  24060.  
  24061.                                       33
  24062.  
  24063.  
  24064.  
  24065.  
  24066. Release Notes v2.28                    4.2.5  A family of state monads
  24067.  
  24068.  
  24069.     incr  = update (1+)
  24070.  
  24071. in this more general setting.  The class declaration above also
  24072. includes set and fetch functions which set the state to a particular
  24073. value or return its value.  These are easily defined in terms of the
  24074. update function as illustrated by the default definitions.
  24075.  
  24076. The StateMonad class has two parameters; the first should be a
  24077. constructor of kind (* -> * -> *) while the second gives the state
  24078. type (of kind *); both are needed to specify the type of update.
  24079. The implementation of update for a monad of the form State s is
  24080. straightforward and provides us with our first instance of the
  24081. StateMonad class:
  24082.  
  24083.     instance StateMonad State s where
  24084.         update f = ST (\s -> (s, f s))
  24085.  
  24086. A rather more interesting family of state monads can be described using
  24087. the following datatype definition:
  24088.  
  24089.     data STM m s a = STM (s -> m (a,s)) -- a more sophisticated example,
  24090.                                         -- where the state monad is
  24091.                                         -- parameterized by a second,
  24092.                                         -- arbitrary monad.
  24093.  
  24094. Note that the first parameter to StateM has kind (* -> *), a
  24095. significant extension from Haskell (and previous versions of Gofer)
  24096. where all of the arguments to a type constructor must be types.  This
  24097. is another benefit of the kind system.
  24098.  
  24099. The functor and monad structure of a StateM m s constructor are given
  24100. by:
  24101.  
  24102.     instance Monad m => Functor (STM m s) where
  24103.         map f (STM xs) = STM (\s -> [ (f x, s') | ~(x,s') <- xs s ])
  24104.  
  24105.     instance Monad m => Monad (STM m s) where
  24106.         result x        = STM (\s -> result (x,s))
  24107.         STM xs `bind` f = STM (\s -> xs s `bind` (\(x,s') ->
  24108.                                      let STM f' = f x
  24109.                                      in  f' s'))
  24110.  
  24111. Note the condition that m is an instance of Monad in each of these
  24112. definitions.  If we hadn't used the lazy pattern construct ~(x,s') in
  24113. the instance of Functor, it would have been necessary to strengthen
  24114. this further to instances of Monad0 -- i.e. monads with a zero.
  24115.  
  24116. The definition of StateM m as an instance of StateMonad is also
  24117. straightforward:
  24118.  
  24119.     instance StateMonad (STM m) s where
  24120.         update f = STM (\s -> result (s, f s))
  24121.  
  24122. The following two functions are also useful for work with STM m s
  24123. monads.  The first, protect, allows an arbitrary computation to be
  24124. embedded in a state based computation without access to the state.
  24125.  
  24126.  
  24127.                                       34
  24128.  
  24129.  
  24130.  
  24131.  
  24132. Release Notes v2.28                    4.2.5  A family of state monads
  24133.  
  24134.  
  24135. The second, execute, is similar to the startingWith function in
  24136. Section 4.2.1, running a state based computation with a given initial
  24137. state and returning a computation as the result.
  24138.  
  24139. protect          :: Monad m => m a -> STM m s a
  24140. protect m         = STM (\s -> [ (x,s) | x<-m ])
  24141.  
  24142. execute          :: Monad m => s -> STM m s a -> m a
  24143. execute s (STM f) = [ x | ~(x,s') <- f s ]
  24144.  
  24145. Support for monads like StateM m s seems to be an important step
  24146. towards solving the problem of constructing monads by combining
  24147. features from simpler monads, in this case combining the use of state
  24148. with the features of an arbitrary monad m.  I hope that the system of
  24149. constructor classes in Gofer will be a useful tool for people working
  24150. in this area.
  24151.  
  24152.  
  24153. 4.2.6  Monads and substitution
  24154. ------------------------------
  24155. The previous sections have concentrated on the use of monads to
  24156. describe computations.  Monads also have a useful interpretation as a
  24157. general approach to substitution.  This in turn provides another
  24158. application for constructor classes.
  24159.  
  24160. Taking a fairly general approach, a substitution can be considered as a
  24161. function s::v-> t w where the types v and w
  24162. represent sets of variables and the type t a represents a set
  24163. of terms, typically involving elements of type a.  If t is
  24164. a monad and x::t v, then x `bind` s gives the result of
  24165. applying the substitution s to the term x by replacing
  24166. each occurrence of a variable v in x with the corresponding
  24167. term s v in the result.  For example:
  24168.  
  24169.     instance Monad Tree where
  24170.         result             = Leaf
  24171.         Leaf x    `bind` f = f x
  24172.         (l :^: r) `bind` f = (l `bind` f) :^: (r `bind` f)
  24173.  
  24174. With this interpretation in mind, the Kleisli composition (@@) in
  24175. Section 4.2.4 is just the standard way of composing substitutions,
  24176. while the result function corresponds to a null substitution.  The fact
  24177. that (@@) is associative with result as both a left and right identity
  24178. follows from the standard algebraic properties of a monad.
  24179.  
  24180.  
  24181. 4.3  Constructor classes in Gofer
  24182. ---------------------------------
  24183. The previous two sections should have given you some ideas about the
  24184. motivation and use for constructor classes.  It remains to say a few
  24185. words about the way that constructor classes fit into the general Gofer
  24186. framework.  In practice, this means giving a more detailed description
  24187. of the way that the kind system works.
  24188.  
  24189.  
  24190.  
  24191.  
  24192.  
  24193.                                       35
  24194.  
  24195.  
  24196.  
  24197.  
  24198. Release Notes v2.28   4.3.1  Kind errors and the k command line option
  24199.  
  24200.  
  24201. 4.3.1  Kind errors and the k command line option
  24202. ------------------------------------------------
  24203. As has already been mentioned, Gofer 2.28 uses kind information to
  24204. check that type expressions are well-formed rather than simply checking
  24205. that each type constructor is applied to an appropriate number of
  24206. arguments.  For example, having defined a tree datatype:
  24207.  
  24208.     data Tree a = Leaf a | Tree a :^: Tree a
  24209.  
  24210. the following definition will be rejected as an error:
  24211.  
  24212.     type Example  =  Tree Int Bool
  24213.  
  24214. as follows:
  24215.  
  24216.     ERROR "file" (line 42): Illegal type "Tree Int Bool" in
  24217.                             constructor application
  24218.  
  24219. The problem here is that the Tree constructor has kind * -> * so that
  24220. it expects to take one argument (a type) and deliver a type as the
  24221. result.  On the other hand, in the definition of Example, the Tree
  24222. constructor is treated as having (at least) two arguments; i.e. as
  24223. having a kind of the form (* -> * -> k) for some kind k.  Rather than
  24224. confuse a user who is not familiar with the use of kinds, Gofer
  24225. normally just prints an error message like the one above for examples
  24226. like this.
  24227.  
  24228. If you would like Gofer to give a more detailed description of the
  24229. problem, you can use the :set +k command line option as follows:
  24230.  
  24231.     ? :set +k
  24232.     ? :r
  24233.     Reading script file "file":
  24234.        
  24235.     ERROR "file" (line 42): Kind error in constructor application
  24236.     *** expression     : Tree Int Bool
  24237.     *** constructor    : Tree
  24238.     *** kind           : * -> *
  24239.     *** does not match : * -> a -> b
  24240.  
  24241.     ? 
  24242.  
  24243. When the k command line option has been selected, the :info command
  24244. described in Section 2.3.2 also includes kind information about the
  24245. kinds of type constructors defined in a program.  For example, given
  24246. the definition of Tree above and the datatypes:
  24247.  
  24248.     data STM m s x = STM (s -> m (s, x))
  24249.     data Queue a   = Empty | a :< Queue a | Queue a :> a
  24250.  
  24251. The :info command gives the following kinds (editing the output to
  24252. remove details about constructor functions for each datatype):
  24253.  
  24254.     ? :info Tree STM Queue
  24255.     -- type constructor with kind * -> *
  24256.     data Tree a
  24257.  
  24258.  
  24259.                                       36
  24260.  
  24261.  
  24262.  
  24263.  
  24264. Release Notes v2.28   4.3.1  Kind errors and the k command line option
  24265.  
  24266.  
  24267.     -- type constructor with kind (* -> *) -> * -> * -> *
  24268.     data STM a b c
  24269.  
  24270.     -- type constructor with kind * -> *
  24271.     data Queue a
  24272.  
  24273.     ?
  24274.  
  24275. In addition to calculating a kind of each type constructor introduced
  24276. in a datatype declaration, Gofer also determines a kind for each
  24277. constructor defined by means of a type synonym.  For example, the
  24278. following definitions:
  24279.  
  24280.     type Subst m v = v -> m v
  24281.     type Compose f g x = f (g x)
  24282.     type Pointer a = Int
  24283.     type Apply f x = f x
  24284.     type Fusion f g x = f x (g x)
  24285.     type Const x y   = x
  24286.  
  24287. are treated as having kinds:
  24288.  
  24289.     ? :info Subst Compose Pointer Apply Fusion Const
  24290.     -- type constructor with kind (* -> *) -> * -> *
  24291.     type Subst a b = b -> a b
  24292.  
  24293.     -- type constructor with kind (* -> *) -> (* -> *) -> * -> *
  24294.     type Compose a b c = a (b c)
  24295.  
  24296.     -- type constructor with kind * -> *
  24297.     type Pointer a = Int
  24298.  
  24299.     -- type constructor with kind (* -> *) -> * -> *
  24300.     type Apply a b = a b
  24301.  
  24302.     -- type constructor with kind (* -> * -> *) -> (* -> *) -> * -> *
  24303.     type Fusion a b c = a c (b c)
  24304.  
  24305.     -- type constructor with kind * -> * -> *
  24306.     type Const a b = a
  24307.  
  24308.     ?
  24309.  
  24310. Note however type synonyms are only used as abbreviations for other
  24311. type expressions.  It is not permitted to use a type synonym
  24312. constructor in a type expression without giving the correct number of
  24313. arguments.
  24314.  
  24315.     ? undefined :: Const Int
  24316.  
  24317.     ERROR: Wrong number of arguments for type synonym "Const"
  24318.     ?
  24319.  
  24320. Assuming that you are familiar with polymorphic functions in Gofer, you
  24321. might be wondering why some of the kinds given for the type synonyms
  24322. above are not also polymorphic in some sense.  After all, the standard
  24323.  
  24324.  
  24325.                                       37
  24326.  
  24327.  
  24328.  
  24329.  
  24330. Release Notes v2.28   4.3.1  Kind errors and the k command line option
  24331.  
  24332.  
  24333. prelude function const, is defined by
  24334.  
  24335.     const x y = x
  24336.  
  24337. with type a -> b -> a, which looks very similar to the definition of
  24338. the Const type synonym above, except that the kinds of the two
  24339. arguments have both been fixed as *.  In fact, the right hand side of
  24340. a type synonym declaration is always required to have kind *, so this
  24341. would mean that the most general kind that could be assigned to the
  24342. Const constructor would be * -> a -> *.
  24343.  
  24344. Gofer does not currently support the use of polymorphic kinds (let's
  24345. call them polykinds from now on).  First of all, it is not clear what
  24346. practical applications polykinds might offer (I have yet to find an
  24347. example where they are useful).  Furthermore, some of the deeper
  24348. theoretical issues about type inference and related topics have not yet
  24349. been studied and I suspect that polykinds would introduce significant
  24350. complications without any significant benefits.
  24351.  
  24352. The current approach is to replace any unknown part of an inferred kind
  24353. with the kind *.  Any polymorphism in the kind of a constructor
  24354. corresponds much more closely to the idea of a value that is not
  24355. actually used at all than in the language of normal expressions and
  24356. their types so this is unlikely to cause any problems.  And of course,
  24357. in Haskell and previous versions of Gofer, any variable used in a type
  24358. expression was assumed to be a type variable with kind *, so all of the
  24359. kinds above are consistent with this interpretation.
  24360.  
  24361. The rest of this section is likely to get a bit hairy.  Read on at your
  24362. peril, or skip to the start of Section 4.3.2.  Only those with a strong
  24363. interest in the type theory and pragmatics of constructor classes will
  24364. miss anything.
  24365.  
  24366. The same approach is used to determine the kinds of constructor
  24367. variables in type expressions.  In theory, this can sometimes lead to
  24368. problems.  In practice, this only happens in very contrived examples
  24369. and I doubt that any problems will occur for serious applications.  The
  24370. following example illustrates the kind of `problem' that can occur.
  24371. Suppose that we use a script containing the definitions:
  24372.  
  24373.     undefined :: a             -- the `bottom' value
  24374.     undefined  = undefined
  24375.  
  24376.     strange   :: f Tree -> f a
  24377.     strange    = undefined
  24378.     
  24379. The type signature for the `strange' function is indeed very strange;
  24380. the constructor variables f and a have kinds (* -> *) -> * and (* -> *)
  24381. respectively.  What's more, the type is very restrictive.  Without
  24382. including additional primitive constructs in the language, I very much
  24383. doubt that you will be able to find an alternative definition for
  24384. strange which is not semantically equivalent to the definition above.
  24385. And of course, the definition above doesn't really have any practical
  24386. applications anyway.  [In case you don't get my point, I'm trying to
  24387. show that this really is a very contrived example.]  I would be very
  24388. surprised to see a genuine example of a polymorphic operator which
  24389.  
  24390.  
  24391.                                       38
  24392.  
  24393.  
  24394.  
  24395.  
  24396. Release Notes v2.28   4.3.1  Kind errors and the k command line option
  24397.  
  24398.  
  24399. involves constructor variables of higher kinds in a non-trivial way
  24400. that does not also include overloading constraints as part of the
  24401. type.  For example, it is not at all difficult to think of an
  24402. interesting value of type Monad m => a -> m a, but much harder to think
  24403. of something with type a -> m a (remember this means for all a and for
  24404. all m).
  24405.  
  24406. The definitions of undefined and strange above will be accepted by the
  24407. Gofer system as will the following definition:
  24408.  
  24409.     contrived = strange undefined
  24410.  
  24411. The type of contrived will now be  f a  where f :: (* -> *) -> * and
  24412. a :: (* -> *).  However, if we modify the definition of contrived to
  24413. include a type signature:
  24414.  
  24415.     contrived :: f a
  24416.     contrived  = strange undefined
  24417.  
  24418. then we get a type checking error:
  24419.  
  24420.     ? :l file
  24421.     Reading script file "file":
  24422.     Type checking      
  24423.     ERROR "file" (line 24): Type error in function binding
  24424.     *** term           : contrived
  24425.     *** type           : a b
  24426.     *** does not match : c d
  24427.     *** because        : constructor variable kinds do not match
  24428.  
  24429.     ?
  24430.  
  24431. The problem is that for the declared type signature, the variables f and
  24432. a are treated as having kinds (* -> *) and * respectively.  These do not
  24433. agree with the real kinds for these variables.
  24434.  
  24435. To summarize, what this all means is that it is possible to define
  24436. values whose principal types cannot be expressed within the language of
  24437. Gofer types in the current implementation.  The values defined can
  24438. actually be used within a program, but it would not, for example, be
  24439. possible to allow such values to be exported from a module in a Haskell
  24440. system unless kind annotations were added to the inferred types.
  24441.  
  24442.  
  24443. 4.3.2  The kind of values in a constructor class
  24444. ------------------------------------------------
  24445. The previous section indicated that, if the :set +k command line option
  24446. has been set, the :info command will include information about the
  24447. kinds of type constructor constants in its output.  This will also
  24448. cause the :info command to display information about the kinds of
  24449. classes and constructor classes.  Notice for example in the following
  24450. how the output distinguishes between Eq, a type class, and Functor, a
  24451. constructor class in which each instance has kind (* -> *):
  24452.  
  24453.     ? :info Eq Functor
  24454.     -- type class
  24455.  
  24456.  
  24457.                                       39
  24458.  
  24459.  
  24460.  
  24461.  
  24462. Release Notes v2.28   4.3.2  The kind of values in a constructor class
  24463.  
  24464.  
  24465.     class Eq a where
  24466.         (==) :: Eq a => a -> a -> Bool
  24467.         (/=) :: Eq a => a -> a -> Bool
  24468.  
  24469.     -- instances:
  24470.     instance Eq ()
  24471.     ...
  24472.  
  24473.     -- constructor class with arity (* -> *)
  24474.     class Functor a where
  24475.         map :: Functor a => (b -> c) -> a b -> a c
  24476.  
  24477.     -- instances:
  24478.     instance Functor []
  24479.     ...
  24480.  
  24481.     ?
  24482.  
  24483.  
  24484. 4.3.3  Implementation of list comprehensions
  24485. --------------------------------------------
  24486. The implementation of overloaded monad comprehensions is cute, but also
  24487. has a couple of potential disadvantages.  These are discussed in this
  24488. section.  As you will see, they really aren't very much to worry
  24489. about.
  24490.  
  24491. First of all, the decision to overload the notation for singleton lists
  24492. so that [ exp ] == result exp can sometimes cause a few surprises:
  24493.  
  24494.     ? map (1+) [1]
  24495.     ERROR: Unresolved overloading
  24496.     *** type        : Monad a => a Int
  24497.     *** translation : map (1 +) [ 1 ]
  24498.  
  24499.     ?
  24500.  
  24501. Note that this will only occur if you are actually using a prelude
  24502. which includes the definition of the Monad class given in Section 4.2
  24503. This can be solved using the command line toggle :set -1 which forces
  24504. any expression of the form [ exp ] to be treated as a singleton list
  24505. rather than being interpreted in an arbitrary monad.  You really
  24506. have to write `result' if you do want an arbitrary monad:
  24507.  
  24508.     ? :set -1
  24509.     ? map (1+) [1]
  24510.     [2]
  24511.     (7 reductions, 18 cells)
  24512.     ? map (1+) (result 1)
  24513.     ERROR: Unresolved overloading
  24514.     *** type        : Monad a => a Int
  24515.     *** translation : map (1 +) (result 1)
  24516.  
  24517.     ?
  24518.  
  24519. This should probably be the default setting, but I have left things as
  24520. they are for the time being, partly so that other people might get the
  24521.  
  24522.  
  24523.                                       40
  24524.  
  24525.  
  24526.  
  24527.  
  24528. Release Notes v2.28       4.3.3  Implementation of list comprehensions
  24529.  
  24530.  
  24531. chance to find out about this and decide what setting they think would
  24532. be best.  As usual, the default setting can be recovered using the
  24533. :set +1 command.
  24534.  
  24535. A second concern is that the implementation of list comprehensions may
  24536. be less efficient in the presence of monad comprehensions.  Gofer
  24537. usually uses Wadler's `optimal' translation for list comprehensions as
  24538. described in Simon Peyton Jones book.  In fact, this translation will
  24539. always be used if either the prelude being used does not include the
  24540. standard Monad class or the type system is able to guarantee that a
  24541. given monad comprehension is actually a list comprehension.
  24542.  
  24543. If you use a prelude containing the Monad class, you may notice some
  24544. small differences in performance in examples such as:
  24545.  
  24546.     ? [ x * x | x <- [1..10] ]
  24547.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  24548.     (98 reductions, 203 cells)
  24549.  
  24550.     ? f [1..10] where f xs = [ x * x | x <- xs ]
  24551.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  24552.     (139 reductions, 268 cells)
  24553.  
  24554.     ?
  24555.  
  24556. The second expression is a little more expensive since the local
  24557. definition of f is polymorphic with f :: (Num b, Monad a) => a b -> a b
  24558. and hence the implementation of the comprehension in f does not use the
  24559. standard translation for lists.  To be honest, the difference between
  24560. these two functions really isn't anything to worry about in the context
  24561. of an interpreter like Gofer.  And of course, if you really want to
  24562. avoid this problem, an explicit type signature will do the trick (as in
  24563. other cases where overloading is involved):
  24564.  
  24565.     ? f [1..10] where f   :: Num b => [b] -> [b];
  24566.                       f xs = [ x * x | x <- xs ]
  24567.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  24568.     (99 reductions, 205 cells)
  24569.  
  24570.     ? f [1..10] where f   :: [Int] -> [Int]
  24571.                       f xs = [ x * x | x <- xs ]      
  24572.     [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  24573.     (99 reductions, 203 cells)
  24574.  
  24575.     ?
  24576.  
  24577. As the last example shows, there is only one more reduction in this
  24578. case and that is the reduction step that deals with the application of
  24579. f to the argument list [1..10].
  24580.  
  24581.  
  24582.  
  24583.  
  24584.  
  24585.  
  24586.  
  24587.  
  24588.  
  24589.                                       41
  24590.  
  24591.  
  24592.  
  24593.  
  24594. Release Notes v2.28                        5. GOFC, THE GOFER COMPILER
  24595.  
  24596.  
  24597. 5. GOFC, THE GOFER COMPILER
  24598.  
  24599. This release of Gofer includes gofc, a `compiler' for Gofer programs
  24600. which translates a large class of Gofer programs into C code which can
  24601. then be compiled and executed as a standalone application.
  24602.  
  24603. Before anybody gets too excited, there are a couple of points which I
  24604. should mention straight away:
  24605.  
  24606.   o  To make use of gofc, you will need a C compiler.  This is why I
  24607.      do not intend to distribute any binary versions of gofc; if you
  24608.      have the C compiler needed to compile the output of gofc then
  24609.      you should also be able to compile gofc from the sources.
  24610.  
  24611.   o  First of all, the Gofer compiler was written by modifying the
  24612.      Gofer interpreter.  Most of the modifications and changes were
  24613.      made in just a few days.  The compiler and interpreter still
  24614.      share a large proportion of code.  As such, and in case it isn't
  24615.      obvious: PLEASE DO NOT expect to gain the same kind of performance
  24616.      out of gofc as you would from one of the serious Haskell
  24617.      projects.  A considerably greater amount of time and effort has
  24618.      gone into those systems.
  24619.  
  24620.   o  The compiler is actually over a year old, but this is the first
  24621.      time it has been released.  Although I have worked with it a bit
  24622.      myself, it hasn't had half the amount of testing that Gofer user's
  24623.      have given the interpreter over the last year and a half.  It may
  24624.      not be as reliable as the interpreter.  If you have problems with
  24625.      a compiled program, try running it with the interpreter too just
  24626.      to check that you haven't found a potential bug in gofc.
  24627.  
  24628. That having been said, I hope that the Gofer compiler will be useful to
  24629. many Gofer users.  One possible advantage is that the executables may
  24630. be smaller than with some other systems.  And of course, the fact that
  24631. gofc runs on some home computers may also be useful.  Finally, gofc
  24632. provides a simplified system for experimenting with the runtime details
  24633. of an implementation.  For example, the source code for the runtime
  24634. system is set up in such a way as to make it possible to experiment
  24635. with alternative garbage collection schemes.
  24636.  
  24637.  
  24638. 5.1  Using gofc
  24639. ---------------
  24640. Compiling a program with gofc is very much like starting up the Gofer
  24641. interpreter.  The compiler starts by reading the prelude and then
  24642. loads the script files specified by the command line.  These scripts
  24643. must contain a definition for the value main :: Dialogue which will be
  24644. the dialogue expression that is evaluated when the compiled program is
  24645. executed.
  24646.  
  24647. For example, if the file apr1.gs contains the simple program:
  24648.  
  24649.     main :: Dialogue
  24650.     main  = appendChan "stdout" "Hello, world\n" exit done
  24651.  
  24652. then this can be compiled as:
  24653.  
  24654.  
  24655.                                       42
  24656.  
  24657.  
  24658.  
  24659.  
  24660. Release Notes v2.28                                    5.1  Using gofc
  24661.  
  24662.  
  24663.     machine% gofc apr1.gs
  24664.     Gofer->C Version 1.01 (2.28)  Copyright (c) Mark P Jones 1992-1993
  24665.     
  24666.     Reading script file "/usr/local/lib/Gofer/standard.prelude":
  24667.     Reading script file "apr1.gs":
  24668.                    
  24669.     Writing C output file "apr1.c":
  24670.     [Leaving Gofer->C]
  24671.     machine% 
  24672.  
  24673. The output is written to the file apr1.c -- i.e. the name obtained by
  24674. removing the .gs suffix and replacing it with a .c suffix.  Other
  24675. filename suffixes that are treated in a similar way are:
  24676.  
  24677.     .prj    .gp                   for Gofer project files
  24678.  
  24679.     .prelude                      for Gofer prelude files
  24680.  
  24681.     .gof    .gs                   for Gofer scripts
  24682.  
  24683.     .has    .hs                   for Haskell scripts
  24684.  
  24685.     .lhs    .lit                  for literate scripts
  24686.     .lgs    .verb
  24687.  
  24688. If no recognized suffix is found then the name of the output file is
  24689. obtained simply by appending the .c suffix to the input name.
  24690.  
  24691. For the benefit of those using Unix systems, let me point out that this
  24692. could cause you problems if you are not careful; if you take an input
  24693. file called `prog' and compile it to `prog.c' using gofc, make sure
  24694. that you do not compile the C program in such a way that the output is
  24695. also called `prog' since this will overwrite your original source code!
  24696. For this reason, I would always suggest using file extensions such as
  24697. the .gs example above if you are using gofc.
  24698.  
  24699. If you run gofc with multiple script files, then the name of the output
  24700. file is based on the last script file to be loaded.  For example, the
  24701. command `gofc prog1.gs prog2.gs' produces an output file `prog2.c'.
  24702.  
  24703. Gofc also works with project files, using the name of the project file
  24704. to determine the name of the output file.  For example, the miniProlog
  24705. interpreter can be compiled using:
  24706.  
  24707.     machine% gofc + miniProlog
  24708.     Gofer->C Version 1.01 (2.28)  Copyright (c) Mark P Jones 1992-1993
  24709.  
  24710.     Reading script file "/usr/local/lib/Gofer/standard.prelude":
  24711.     Reading script file "Parse":
  24712.     Reading script file "Interact":
  24713.     Reading script file "PrologData":
  24714.     Reading script file "Subst":
  24715.     Reading script file "StackEngine":
  24716.     Reading script file "Main":
  24717.                    
  24718.     Writing C output file "miniProlog.c":
  24719.  
  24720.  
  24721.                                       43
  24722.  
  24723.  
  24724.  
  24725.  
  24726. Release Notes v2.28                                    5.1  Using gofc
  24727.  
  24728.  
  24729.     [Leaving Gofer->C]
  24730.     machine% 
  24731.  
  24732. This is another case where it might well have been sensible to have
  24733. used a .prj or .gp for the project file miniProlog since compiling the
  24734. C code in miniProlog.c to a file named `miniProlog' will overwrite the
  24735. project file!  Choose filenames with care!
  24736.  
  24737. You can also specify Gofer command line options as part of the command
  24738. line used to run gofc.  Think of it like this; use exactly the same
  24739. command line to start Gofc as you would have done to start Gofer (ok,
  24740. replacing the command `gofer' with `gofc') so that you could start your
  24741. program immediately by evaluating the main expression.  To summarize
  24742. what happens next:
  24743.  
  24744.   o  Gofc will load the prelude file.  Do not worry if the prelude
  24745.      (or indeed, later files) contain lots of definitions that your
  24746.      program will not actually use; only definitions which are actually
  24747.      required to evaluate the main expression will be included in the
  24748.      output file.
  24749.  
  24750.   o  Gofc will load the script files specified.  If an error is found
  24751.      then an error message will be printed and the compilation will be
  24752.      aborted.  You would probably be sensible to run your program
  24753.      through the interpreter first to tidy up any errors and avoid this
  24754.      problem.
  24755.  
  24756.   o  Gofc will look for a definition of `main' and check that it has
  24757.      type Dialogue.  You will get an error if an appropriate main
  24758.      value cannot be found.
  24759.  
  24760.   o  Gofc determines the appropriate name for the output file.
  24761.  
  24762.   o  Gofc checks to make sure that you haven't used a primitive
  24763.      function that is not supported by the runtime system (see
  24764.      Section 5.2 for more details).
  24765.  
  24766.   o  Gofc outputs a C version of the program in the output file.
  24767.  
  24768. Once you have compiled the Gofer program to C, you need to compile
  24769. the C code to build the executable application program.  This will
  24770. vary from one system to another and is documented elsewhere.
  24771.  
  24772.  
  24773. 5.2  Primitive operations
  24774. -------------------------
  24775. The Gofer compiler accepts the same source language as the
  24776. interpreter.  However, there is a small collection of Gofer primitives
  24777. which are only implemented in the interpreter.  The most likely
  24778. omission that you will notice is the primPrint function which is used
  24779. to define the show' function in the standard prelude.  Omitting this
  24780. function is not an indication of laziness on my part; it is impossible
  24781. to implement primPrint in the current runtime system because there is
  24782. insufficient type information available at program runtime.
  24783.  
  24784.  
  24785.  
  24786.  
  24787.                                       44
  24788.  
  24789.  
  24790.  
  24791.  
  24792. Release Notes v2.28                          5.2  Primitive operations
  24793.  
  24794.  
  24795. For example, if you try to compile the program:
  24796.  
  24797.     main :: Dialogue
  24798.     main  = appendChan "stdout" (show' 42) exit done
  24799.  
  24800. the compiler will respond with the error message:
  24801.  
  24802.     ERROR: Primitive function primPrint is not
  24803.            supported by the gofc runtime system
  24804.            (used in the definition of show')
  24805.     Aborting compilation
  24806.  
  24807. The solution is to use type classes.  This is one of the reasons for
  24808. including them in the language in the first place.  This example can
  24809. be compiled by changing the original program to:
  24810.  
  24811.     main :: Dialogue
  24812.     main  = appendChan "stdout" (show 42) exit done
  24813.  
  24814. (Remember that show is the overloaded function for converting values of
  24815. any type a that is an instance of the Text class to a string value.)
  24816.  
  24817.  
  24818. 5.3  Debugging output
  24819. ---------------------
  24820. Another potentially useful feature of gofc is it's ability to dump a
  24821. listing of all the supercombinator definitions that are created by
  24822. loading a particular combination of script files.  For the time being,
  24823. this is only useful for the purpose of debugging, but with only small
  24824. modifications, it might be possible to use this as input to an
  24825. alternative backend/code generator system (the format of the output
  24826. combinators already uses explicit layout characters to make the task of
  24827. parsing easier in an application like this).
  24828.  
  24829. To illustrate how this option might be used, suppose that we were working
  24830. on a program containing the definition:
  24831.  
  24832.     hidden xs = map (\[x] -> x) xs
  24833.  
  24834. and that somewhere during the execution of our program, this function is
  24835. applied to a list value [[1],[1,2]]:
  24836.  
  24837.     ? hidden [[1],[1,2]]
  24838.     [1, 
  24839.     Program error: {v132 [1, 2]}
  24840.     (13 reductions, 75 cells)
  24841.  
  24842.     ?
  24843.  
  24844. The variable v132 which appears here is the name used internally to
  24845. represent the lambda expression in the definition of hidden.  For this
  24846. particular example, it is fairly easy to work this out, but in general,
  24847. it may not be so straightforward.  Running the program through gofc and
  24848. using the +D toggle as follows produces an output file containing Gofer
  24849. SuperCombinators, hence the .gsc suffix:
  24850.  
  24851.  
  24852.  
  24853.                                       45
  24854.  
  24855.  
  24856.  
  24857.  
  24858. Release Notes v2.28                              5.3  Debugging output
  24859.  
  24860.  
  24861.     machine% gofc +D file
  24862.     Gofer->C Version 1.01 (2.28)  Copyright (c) Mark P Jones 1992-1993
  24863.  
  24864.     [Writing supercombinators to "file.gsc"]
  24865.     Reading script file "/usr/local/lib/Gofer/standard.prelude":
  24866.     Reading script file "file":
  24867.     [Leaving Gofer->C]
  24868.     machine% 
  24869.  
  24870. Note that there is no need in this situation for the files loaded to
  24871. contain a definition for main :: Dialogue, although the compiler must
  24872. be loaded using exactly the same prelude and order of files as in the
  24873. original Gofer session to ensure that the same names are used.  Scanning
  24874. the output file, we find that the only mention of v132 is in the
  24875. definitions:
  24876.  
  24877.     v132 o1 = case o1 of {
  24878.                 (:) o3 o2 -> case o2 of {
  24879.                                [] -> o3;
  24880.                              }
  24881.               }
  24882.  
  24883.     hidden o1 = map v132 o1;
  24884.  
  24885. This shows fairly clearly where the function v132 comes from.  Of
  24886. course, this is far from perfect, but it might help someone to track
  24887. down a bug that little bit faster one day.  It's better than nothing.
  24888.  
  24889. Of course, the debugging output might also be of interest to anyone
  24890. that wants to find out more about the implementation of Gofer and
  24891. examine the supercombinator definitions generated when list
  24892. comprehensions, overloading, local function definitions etc.  have all
  24893. been eliminated.  For example, the standard prelude definitions of map
  24894. and filter become:
  24895.  
  24896.     map o2 o1 = case o1 of {
  24897.                   [] -> [];
  24898.                   (:) o4 o3 -> o2 o4 : map o2 o3;
  24899.                 }
  24900.  
  24901.     filter o2 o1 = case o1 of {
  24902.                      [] -> [];
  24903.                      (:) o4 o3 -> let { o5 = filter o2 o3;
  24904.                                   } in  | o2 o4 -> o4 : o5;
  24905.                                         | otherwise -> o5;
  24906.                    }
  24907.  
  24908. This is one of the tools I'll be using if anyone ever reports another
  24909. bug in the code generator...
  24910.  
  24911.  
  24912.  
  24913.  
  24914.  
  24915.  
  24916.  
  24917.  
  24918.  
  24919.                                       46
  24920.  
  24921.  
  24922.  
  24923.  
  24924. Release Notes v2.28                                    6. SOME HISTORY
  24925.  
  24926.  
  24927. 6. SOME HISTORY
  24928.  
  24929. Ever since the first version of Gofer was released I've had requests
  24930. from Gofer users around the world asking how Gofer got its name and how
  24931. it came into being.  This section is an attempt to try and answer those
  24932. questions.
  24933.  
  24934. 6.1  Why Gofer?
  24935. ---------------
  24936. Everything has to have a name.  You may type in an `anonymous function'
  24937. as a lambda expression but Gofer will still go ahead and give it a
  24938. name.  To tell the truth, I always intended the name `Gofer' to be
  24939. applied to my particular implementation of a functional programming
  24940. environment, not to the language on which it is based.  I wanted that
  24941. to be an anonymous language.  But common usage has given it the same
  24942. name, Gofer.
  24943.  
  24944. If you take a look in a dictionary (as some puzzled Gofer users have)
  24945. you'll find that `gofer' means:
  24946.  
  24947.      ``an employee whose duties include running errands''
  24948.  
  24949. (although you'd better choose a dictionary printed since the 70s for
  24950. this).  I'd not thought about this when I chose the name (and I would
  24951. have used a lower case g instead of an upper case G if I had).  In
  24952. fact, Gofer was originally conceived as a system for machine assisted
  24953. equational reasoning.  One of the properties of functional languages
  24954. that I find particularly attractive is that they are:
  24955.  
  24956.     GOod For Equational Reasoning.
  24957.     ^^   ^   ^          ^
  24958. So now you know.  The fact that you can also tell someone who is having
  24959. a problem with their C program to ``Gofer it!'' (unsympathetic, I know)
  24960. is nothing more than a coincidence.  Fairly recently, somebody wrote to
  24961. ask if Gofer stood for ``GOod Functional programming EnviRonment''. I
  24962. was flattered; I wish I'd thought of that one.
  24963.  
  24964. Some people have asked me why I didn't choose a title including the
  24965. name `Haskell', a language on which Gofer is very strongly based.
  24966. There are two reasons for this.  To start with, the original version of
  24967. Gofer was based on a different syntax, Orwell + type classes.  The
  24968. Haskell influence only crept in when I started on version 2.xx.
  24969. Secondly, it's only right to point out that there is quite a large gap
  24970. between a system like Gofer and the full blown Haskell systems that
  24971. have been developed.  Using a name which doesn't involve `Haskell'
  24972. directly seemed the right thing to do.  Some people tell me that it was
  24973. a mistake.  One of the objectives of Haskell was to create a standard
  24974. language for non-strict functional programming.  Gofer isn't intended
  24975. as an alternative to Haskell and I hope it will continue to grow closer
  24976. as time passes.
  24977.  
  24978. While I'm on the subject of names, I should also talk about an
  24979. additional source of confusion that may sometimes crop up.  While Gofer
  24980. is a functional programming system, there is also a campus wide
  24981. information system called `Gopher' (sharing it's name with the North
  24982. American rodents).  I would guess that the latter has many more users
  24983.  
  24984.  
  24985.                                       47
  24986.  
  24987.  
  24988.  
  24989.  
  24990. Release Notes v2.28                                    6.1  Why Gofer?
  24991.  
  24992.  
  24993. than the former.  So please be careful to spell Gofer with an `f' not
  24994. a `ph' to try and minimize the confusion.
  24995.  
  24996. It has occurred to me that I should try and think of another name for
  24997. Gofer to avoid the confusion with Gopher.  I hope that won't be
  24998. necessary, but if you have a really good suggestion, let me know!  One
  24999. possibility might be to call it `Gordon'.  The younger generation of
  25000. brits might know what the connection is.  Others may need to ask their
  25001. children...
  25002.  
  25003. 6.2  The history of Gofer
  25004. -------------------------
  25005. Here is a summary of the way that I first learnt about functional
  25006. programming, and how it started me on the path to writing Gofer.
  25007. This, slightly sentimental review is mostly for my own entertainment.
  25008. If you're the sort of person that likes to read the acknowledgments
  25009. and bibliographic notes in a thesis: this is for you.  If not, you
  25010. can always stop reading :-)
  25011.  
  25012. My first exposure to lazy functional programming languages was using a
  25013. language called `Orwell' developed and used at the Programming Research
  25014. Group in Oxford.  I've been interested in using and implementing lazy
  25015. functional programming languages ever since.
  25016.  
  25017. One of the properties of programming in Orwell that appealed to me was
  25018. the ability to use equational reasoning -- a very simple style of
  25019. mathematical reasoning -- to establish properties of programs and prove
  25020. that they would behave in particular ways.  Even more interesting,
  25021. equational reasoning can be used to calculate efficient implementations
  25022. of programs from a formal specification of what was intended.
  25023.  
  25024. Probably the first non-trivial functional program that I wrote was a
  25025. simple Prolog interpreter.  (This was originally written in Orwell and
  25026. later transcribed to be compiled using the Chalmers Haskell B compiler,
  25027. hbc.  The remnants of this program live on in the mini Prolog
  25028. interpreter that is included with the Gofer distribution and, I
  25029. believe, with at least a couple of the big Haskell systems.) Using a
  25030. sequence of something like a dozen or so transformations (most of which
  25031. were fairly mundane), I discovered that I could turn a relatively
  25032. abstract specification of a Prolog inference engine into a program that
  25033. could be interpreted as the definition of a low level stack-based
  25034. machine for executing Prolog queries.  Indeed, I used the result as the
  25035. core of a C implementation of mini Prolog.
  25036.  
  25037. The transformations themselves were simple enough but managing the
  25038. complexity of the calculations was tough.  It was not uncommon to find
  25039. that some of the intermediate steps in a calculation would span more
  25040. than 200 characters.  Even with a relatively small number of
  25041. transformation steps, carrying out proofs like this was both tedious
  25042. and prone to mistakes.  A natural application for a computer!
  25043.  
  25044. Here's an outline of what happened next:
  25045.  
  25046.    eqr   1989.  Eqr was a crude tool for machine assisted equational
  25047.          reasoning.  It worked well enough for the job I had intended
  25048.          to use it for, but it also had a number of problems.  I
  25049.  
  25050.  
  25051.                                       48
  25052.  
  25053.  
  25054.  
  25055.  
  25056. Release Notes v2.28                          6.2  The history of Gofer
  25057.  
  25058.  
  25059.          particularly missed the ability to use and record type
  25060.          information as part of an automated derivation.
  25061.  
  25062.    1.xx  1990.  Gofer 1.xx was intended to be the next step forward
  25063.          providing machine support for *typed* equational reasoning.
  25064.          It was based on Orwell syntax and was later extended to
  25065.          support Haskell style type classes.  It had a lexer, parser,
  25066.          type checker and simple top-level interactive loop.  It
  25067.          couldn't run programs or construct derivations.
  25068.  
  25069.    2.xx  January 1991.  A complete rewrite.  I remember those early
  25070.          days, several months passed before I ever got compile some of
  25071.          the earliest code.  The emphasis switched to being able to run
  25072.          programs rather than derive them when I came up with a new
  25073.          implementation technique for type classes in February 1991.
  25074.          If I wanted to see it implemented, I was going to have to do
  25075.          it myself.  Around about May, I realized I had something that
  25076.          might be useful to other people.
  25077.  
  25078.    2.20  The first public release, announced in August 1991 and
  25079.          distributed shortly after that in September.
  25080.  
  25081.    2.21  November 1991, providing a more comprehensive user
  25082.      interface, access to command line options and fixing a
  25083.      small number of embarrassing bugs in the original release.
  25084.  
  25085.    2.23  August 1992, having been somewhat preoccupied with academic
  25086.      studies for some time, the main purpose of this release
  25087.      was to correct a number of minor bugs which had again been
  25088.      discovered, either by myself or by one or more of the many
  25089.      Gofer users out there.
  25090.  
  25091.    2.28  January 1993.  The most substantial update to Gofer since
  25092.      the original release.  I had been doing a lot of work and
  25093.      experimentation with Gofer during the time between the
  25094.      release of versions 2.21 and 2.23, but I didn't have the
  25095.      time to get these extensions suitable for public distribution.
  25096.      By the time I came to release version 2.23, I also had
  25097.      several other distinct versions of Gofer (each derived
  25098.      from the source for version 2.21) including a compiler
  25099.      and a prototype implementation of constructor classes
  25100.      which was called `ccgofer'.   Work on version 2.28 started
  25101.      with efforts to merge these developments back into a single
  25102.      system (I was tired of trying to maintain several different
  25103.      versions, even though I was the only one using them).
  25104.      The rough outline of changes was as follows (with the
  25105.      corresponding version numbers for those who wonder why
  25106.      2.28 follows 2.23):
  25107.  
  25108.             2.24   enhancements and bug fixes
  25109.             2.25   merging in support for the Gofer compiler
  25110.             2.26   a reimplementation of constructor classes
  25111.             2.27   reworked code generator and other minor fixes
  25112.             2.28   preparation for public release
  25113.  
  25114.  
  25115.  
  25116.  
  25117.                                       49
  25118.  
  25119.  
  25120.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickccDÿÿÿ fiùjflrlminDÿÿÿ fiùj(knofloatDÿÿÿ fiùj+mmsimpleDÿÿÿ fiùjÊKnccDÿÿÿ fiùjflrlminDÿÿÿ fiùj(knofloatDÿÿÿ fiùj+mmsimpleDÿÿÿ fiùjÊKn<PreludesPreludesNickç--         __________   __________   __________   __________   ________
  25121. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  25122. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  25123. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  25124. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  25125. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  25126. --
  25127. --    Functional programming environment, Version 2.28
  25128. --    Copyright Mark P Jones 1991-1993.
  25129. --
  25130. --    Minimal Gofer prelude for experimentation with different approaches
  25131. --    to standard operations.
  25132. --
  25133. --    Any Gofer prelude file should typically include at least the following
  25134. --    definitions:
  25135.  
  25136. infixr 5 :
  25137. infixr 3 &&
  25138. infixr 2 ||
  25139.  
  25140. (&&), (||)     :: Bool -> Bool -> Bool
  25141. False && _      = False     -- (&&) and (||) names predefined in Gofer
  25142. True  && x      = x
  25143. False || x      = x
  25144. True  || _      = True
  25145.  
  25146. flip           :: (a -> b -> c) -> b -> a -> c
  25147. flip  f x y     =  f y x
  25148.  
  25149. primitive error "primError" :: String -> a
  25150.  
  25151. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --         __________   __________   __________   __________   ________
  25152. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  25153. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  25154. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  25155. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  25156. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  25157. --
  25158. --    Functional programming environment, Version 2.28
  25159. --    Copyright Mark P Jones 1991-1993.
  25160. --
  25161. --    Enhanced prelude for use of overloading with constructor classes.
  25162. --    Based on the Haskell standard prelude version 1.2.
  25163.  
  25164. help = "press :? for a list of commands"
  25165.  
  25166. -- Operator precedence table: -----------------------------------------------
  25167.  
  25168. infixl 9 !!
  25169. infixr 9 ., @@
  25170. infixr 8 ^
  25171. infixl 7 *
  25172. infix  7 /, `div`, `quot`, `rem`, `mod`
  25173. infixl 6 +, -
  25174. infix  5 \\
  25175. infixr 5 ++, :
  25176. infix  4 ==, /=, <, <=, >=, >
  25177. infix  4 `elem`, `notElem`
  25178. infixr 3 &&
  25179. infixr 2 ||
  25180. infixr 0 $
  25181.  
  25182. -- Standard combinators: ----------------------------------------------------
  25183.  
  25184. primitive strict "primStrict" :: (a -> b) -> a -> b
  25185.  
  25186. const          :: a -> b -> a
  25187. const k x       = k
  25188.  
  25189. id             :: a -> a
  25190. id    x         = x
  25191.  
  25192. curry          :: ((a,b) -> c) -> a -> b -> c
  25193. curry f a b     =  f (a,b)
  25194.  
  25195. uncurry        :: (a -> b -> c) -> (a,b) -> c
  25196. uncurry f (a,b) = f a b
  25197.  
  25198. fst            :: (a,b) -> a
  25199. fst (x,_)       = x
  25200.  
  25201. snd            :: (a,b) -> b
  25202. snd (_,y)       = y
  25203.  
  25204. fst3           :: (a,b,c) -> a
  25205. fst3 (x,_,_)    = x
  25206.  
  25207. snd3           :: (a,b,c) -> b
  25208. snd3 (_,x,_)    = x
  25209.  
  25210. thd3           :: (a,b,c) -> c
  25211. thd3 (_,_,x)    = x
  25212.  
  25213. (.)           :: (b -> c) -> (a -> b) -> (a -> c)
  25214. (f . g) x       = f (g x)
  25215.  
  25216. flip           :: (a -> b -> c) -> b -> a -> c
  25217. flip  f x y     = f y x
  25218.  
  25219. ($)            :: (a -> b) -> a -> b     -- pronounced as `apply' elsewhere
  25220. f $ x           = f x
  25221.  
  25222. -- Boolean functions: -------------------------------------------------------
  25223.  
  25224. (&&), (||)     :: Bool -> Bool -> Bool
  25225. False && x      = False
  25226. True  && x      = x
  25227.  
  25228. False || x      = x
  25229. True  || x      = True
  25230.  
  25231. not            :: Bool -> Bool
  25232. not True        = False
  25233. not False       = True
  25234.  
  25235. and, or        :: [Bool] -> Bool
  25236. and             = foldr (&&) True
  25237. or              = foldr (||) False
  25238.  
  25239. any, all       :: (a -> Bool) -> [a] -> Bool
  25240. any p           = or  . map p
  25241. all p           = and . map p
  25242.  
  25243. otherwise      :: Bool
  25244. otherwise       = True
  25245.  
  25246. -- Character functions: -----------------------------------------------------
  25247.  
  25248. primitive ord "primCharToInt" :: Char -> Int
  25249. primitive chr "primIntToChar" :: Int -> Char
  25250.  
  25251. isAscii, isControl, isPrint, isSpace            :: Char -> Bool
  25252. isUpper, isLower, isAlpha, isDigit, isAlphanum  :: Char -> Bool
  25253.  
  25254. isAscii c     =  ord c < 128
  25255.  
  25256. isControl c   =  c < ' '    ||  c == '\DEL'
  25257.  
  25258. isPrint c     =  c >= ' '   &&  c <= '~'
  25259.  
  25260. isSpace c     =  c == ' '   || c == '\t'  || c == '\n'  || c == '\r'  ||
  25261.                                c == '\f'  || c == '\v'
  25262.  
  25263. isUpper c     =  c >= 'A'   &&  c <= 'Z'
  25264. isLower c     =  c >= 'a'   &&  c <= 'z'
  25265.  
  25266. isAlpha c     =  isUpper c  ||  isLower c
  25267. isDigit c     =  c >= '0'   &&  c <= '9'
  25268. isAlphanum c  =  isAlpha c  ||  isDigit c
  25269.  
  25270.  
  25271. toUpper, toLower      :: Char -> Char
  25272.  
  25273. toUpper c | isLower c  = chr (ord c - ord 'a' + ord 'A')
  25274.           | otherwise  = c
  25275.  
  25276. toLower c | isUpper c  = chr (ord c - ord 'A' + ord 'a')
  25277.           | otherwise  = c
  25278.  
  25279. minChar, maxChar      :: Char
  25280. minChar                = chr 0
  25281. maxChar                = chr 255
  25282.  
  25283. -- Standard type classes: ---------------------------------------------------
  25284.  
  25285. class Eq a where
  25286.     (==), (/=) :: a -> a -> Bool
  25287.     x /= y      = not (x == y)
  25288.  
  25289. class Eq a => Ord a where
  25290.     (<), (<=), (>), (>=) :: a -> a -> Bool
  25291.     max, min             :: a -> a -> a
  25292.  
  25293.     x <  y            = x <= y && x /= y
  25294.     x >= y            = y <= x
  25295.     x >  y            = y < x
  25296.  
  25297.     max x y | x >= y  = x
  25298.             | y >= x  = y
  25299.     min x y | x <= y  = x
  25300.             | y <= x  = y
  25301.  
  25302. class Ord a => Ix a where
  25303.     range   :: (a,a) -> [a]
  25304.     index   :: (a,a) -> a -> Int
  25305.     inRange :: (a,a) -> a -> Bool
  25306.  
  25307. class Ord a => Enum a where
  25308.     enumFrom       :: a -> [a]              -- [n..]
  25309.     enumFromThen   :: a -> a -> [a]         -- [n,m..]
  25310.     enumFromTo     :: a -> a -> [a]         -- [n..m]
  25311.     enumFromThenTo :: a -> a -> a -> [a]    -- [n,n'..m]
  25312.  
  25313.     enumFromTo n m        = takeWhile (m>=) (enumFrom n)
  25314.     enumFromThenTo n n' m = takeWhile ((if n'>=n then (>=) else (<=)) m)
  25315.                                       (enumFromThen n n')
  25316.  
  25317. class (Eq a, Text a) => Num a where         -- simplified numeric class
  25318.     (+), (-), (*), (/) :: a -> a -> a
  25319.     negate             :: a -> a
  25320.     fromInteger           :: Int -> a
  25321.  
  25322. -- Type class instances: ----------------------------------------------------
  25323.  
  25324. primitive primEqInt    "primEqInt",
  25325.       primLeInt    "primLeInt"   :: Int -> Int -> Bool
  25326. primitive primPlusInt  "primPlusInt",
  25327.       primMinusInt "primMinusInt",
  25328.       primDivInt   "primDivInt",
  25329.       primMulInt   "primMulInt"  :: Int -> Int -> Int
  25330. primitive primNegInt   "primNegInt"  :: Int -> Int
  25331.  
  25332. instance Eq ()  where () == () = True
  25333. instance Ord () where () <= () = True
  25334.  
  25335. instance Eq Int  where (==) = primEqInt
  25336.  
  25337. instance Ord Int where (<=) = primLeInt
  25338.  
  25339. instance Ix Int where
  25340.     range (m,n)      = [m..n]
  25341.     index (m,n) i    = i - m
  25342.     inRange (m,n) i  = m <= i && i <= n
  25343.  
  25344. instance Enum Int where
  25345.     enumFrom n       = iterate (1+) n
  25346.     enumFromThen n m = iterate ((m-n)+) n
  25347.  
  25348. instance Num Int where
  25349.     (+)           = primPlusInt
  25350.     (-)           = primMinusInt
  25351.     (*)           = primMulInt
  25352.     (/)           = primDivInt
  25353.     negate        = primNegInt
  25354.     fromInteger x = x
  25355.  
  25356. {- PC version off -}
  25357. primitive primEqFloat    "primEqFloat",
  25358.           primLeFloat    "primLeFloat"    :: Float -> Float -> Bool
  25359. primitive primPlusFloat  "primPlusFloat", 
  25360.           primMinusFloat "primMinusFloat", 
  25361.           primDivFloat   "primDivFloat",
  25362.           primMulFloat   "primMulFloat"   :: Float -> Float -> Float 
  25363. primitive primNegFloat   "primNegFloat"   :: Float -> Float
  25364. primitive primIntToFloat "primIntToFloat" :: Int -> Float
  25365.  
  25366. instance Eq Float where (==) = primEqFloat
  25367.  
  25368. instance Ord Float where (<=) = primLeFloat
  25369.  
  25370. instance Enum Float where
  25371.     enumFrom n       = iterate (1.0+) n
  25372.     enumFromThen n m = iterate ((m-n)+) n
  25373.  
  25374. instance Num Float where
  25375.     (+)         = primPlusFloat
  25376.     (-)         = primMinusFloat
  25377.     (*)         = primMulFloat
  25378.     (/)         = primDivFloat 
  25379.     negate      = primNegFloat
  25380.     fromInteger = primIntToFloat
  25381.  
  25382. primitive sin "primSinFloat",  asin  "primAsinFloat",
  25383.           cos "primCosFloat",  acos  "primAcosFloat",
  25384.       tan "primTanFloat",  atan  "primAtanFloat",
  25385.           log "primLogFloat",  log10 "primLog10Float",
  25386.       exp "primExpFloat",  sqrt  "primSqrtFloat" :: Float -> Float
  25387. primitive atan2    "primAtan2Float" :: Float -> Float -> Float
  25388. primitive truncate "primFloatToInt" :: Float -> Int
  25389.  
  25390. pi :: Float
  25391. pi  = 3.1415926535
  25392.  
  25393. {- PC version on -}
  25394.  
  25395. primitive primEqChar   "primEqChar",
  25396.       primLeChar   "primLeChar"  :: Char -> Char -> Bool
  25397.  
  25398. instance Eq Char  where (==) = primEqChar   -- c == d  =  ord c == ord d
  25399.  
  25400. instance Ord Char where (<=) = primLeChar   -- c <= d  =  ord c <= ord d
  25401.  
  25402. instance Ix Char where
  25403.     range (c,c')      = [c..c']
  25404.     index (c,c') ci   = ord ci - ord c
  25405.     inRange (c,c') ci = ord c <= i && i <= ord c' where i = ord ci
  25406.  
  25407. instance Enum Char where
  25408.     enumFrom c        = map chr [ord c .. ord maxChar]
  25409.     enumFromThen c c' = map chr [ord c, ord c' .. ord lastChar]
  25410.                         where lastChar = if c' < c then minChar else maxChar
  25411.  
  25412. instance Eq a => Eq [a] where
  25413.     []     == []     =  True
  25414.     []     == (y:ys) =  False
  25415.     (x:xs) == []     =  False
  25416.     (x:xs) == (y:ys) =  x==y && xs==ys
  25417.  
  25418. instance Ord a => Ord [a] where
  25419.     []     <= _      =  True
  25420.     (_:_)  <= []     =  False
  25421.     (x:xs) <= (y:ys) =  x<y || (x==y && xs<=ys)
  25422.  
  25423. instance (Eq a, Eq b) => Eq (a,b) where
  25424.     (x,y) == (u,v)  =  x==u && y==v
  25425.  
  25426. instance (Ord a, Ord b) => Ord (a,b) where
  25427.     (x,y) <= (u,v)  = x<u  ||  (x==u && y<=v)
  25428.  
  25429. instance Eq Bool where
  25430.     True  == True   =  True
  25431.     False == False  =  True
  25432.     _     == _      =  False
  25433.  
  25434. instance Ord Bool where
  25435.     False <= x      = True
  25436.     True  <= x      = x
  25437.  
  25438. -- Standard numerical functions: --------------------------------------------
  25439.  
  25440. primitive div    "primDivInt",
  25441.       quot   "primQuotInt",
  25442.           rem    "primRemInt",
  25443.           mod    "primModInt"    :: Int -> Int -> Int
  25444.  
  25445. subtract  :: Num a => a -> a -> a
  25446. subtract   = flip (-)
  25447.  
  25448. even, odd :: Int -> Bool
  25449. even x     = x `rem` 2 == 0
  25450. odd        = not . even
  25451.  
  25452. gcd       :: Int -> Int -> Int
  25453. gcd x y    = gcd' (abs x) (abs y)
  25454.              where gcd' x 0 = x
  25455.                    gcd' x y = gcd' y (x `rem` y)
  25456.  
  25457. lcm       :: Int -> Int -> Int
  25458. lcm _ 0    = 0
  25459. lcm 0 _    = 0
  25460. lcm x y    = abs ((x `quot` gcd x y) * y)
  25461.  
  25462. (^)       :: Num a => a -> Int -> a
  25463. x ^ 0      = fromInteger 1
  25464. x ^ (n+1)  = f x n x
  25465.              where f _ 0 y = y
  25466.                    f x n y = g x n where
  25467.                              g x n | even n    = g (x*x) (n`quot`2)
  25468.                                    | otherwise = f x (n-1) (x*y)
  25469.  
  25470. abs                     :: (Num a, Ord a) => a -> a
  25471. abs x | x>=fromInteger 0 = x
  25472.       | otherwise        = -x
  25473.  
  25474. signum            :: (Num a, Ord a) => a -> Int
  25475. signum x
  25476.       | x==fromInteger 0 = 0
  25477.       | x> fromInteger 0 = 1
  25478.       | otherwise        = -1
  25479.  
  25480. sum, product    :: Num a => [a] -> a
  25481. sum              = foldl' (+) (fromInteger 0)
  25482. product          = foldl' (*) (fromInteger 1)
  25483.  
  25484. sums, products    :: Num a => [a] -> [a]
  25485. sums             = scanl (+) (fromInteger 0)
  25486. products         = scanl (*) (fromInteger 1)
  25487.  
  25488. -- Constructor classes: -----------------------------------------------------
  25489.  
  25490. class Functor f where
  25491.     map :: (a -> b) -> (f a -> f b)
  25492.  
  25493. class Functor m => Monad m where
  25494.     result    :: a -> m a
  25495.     join      :: m (m a) -> m a
  25496.     bind      :: m a -> (a -> m b) -> m b
  25497.  
  25498.     join x     = bind x id
  25499.     x `bind` f = join (map f x)
  25500.  
  25501. class Monad m => Monad0 m where
  25502.     zero   :: m a
  25503.  
  25504. class Monad0 c => MonadPlus c where
  25505.     (++) :: c a -> c a -> c a
  25506.  
  25507. class (Functor left, Functor right) => Adjoint left right where
  25508.     univ    :: (a -> right b) -> (left a -> b)
  25509.     unit    :: a -> right (left a)
  25510.     couniv  :: (left a -> b) -> (a -> right b)
  25511.     counit  :: left (right a) -> a
  25512.  
  25513.     unit     = couniv id
  25514.     counit   = univ id
  25515.     univ g   = counit . map g
  25516.     couniv g = map g . unit
  25517.  
  25518. class (Functor f, Functor g) => NatTransf f g where
  25519.     eta :: f a -> g a
  25520.  
  25521. -- Monad based utilities: ---------------------------------------------------
  25522.  
  25523. apply            :: Monad m => (a -> m b) -> (m a -> m b)
  25524. apply             = flip bind
  25525.  
  25526. (@@)             :: Monad m => (a -> m b) -> (c -> m a) -> (c -> m b)
  25527. f @@ g            = join . map f . g
  25528.  
  25529. concat         :: MonadPlus c => [c a] -> c a
  25530. concat          = foldr (++) zero
  25531.  
  25532. filter         :: Monad0 m => (a -> Bool) -> m a -> m a
  25533. filter p xs       = [ x | x<-xs, p x ]
  25534.  
  25535. mfoldl           :: Monad m => (a -> b -> m a) -> a -> [b] -> m a
  25536. mfoldl f a []     = result a
  25537. mfoldl f a (x:xs) = f a x `bind` (\fax -> mfoldl f fax xs)
  25538.  
  25539. mfoldr           :: Monad m => (a -> b -> m b) -> b -> [a] -> m b
  25540. mfoldr f a []     = result a
  25541. mfoldr f a (x:xs) = mfoldr f a xs `bind` (\y -> f x y)
  25542.  
  25543. mapl             :: Monad m => (a -> m b) -> ([a] -> m [b])
  25544. mapl f []         = [ [] ]
  25545. mapl f (x:xs)     = [ y:ys | y <- f x, ys <- mapl f xs ]
  25546.  
  25547. mapr             :: Monad m => (a -> m b) -> ([a] -> m [b])
  25548. mapr f []         = [ [] ]
  25549. mapr f (x:xs)     = [ y:ys | ys <- mapr f xs, y <- f x ]
  25550.  
  25551. -- The monad of lists: ------------------------------------------------------
  25552.  
  25553. instance Functor   [] where map f []     = []
  25554.                 map f (x:xs) = f x : map f xs
  25555.  
  25556. instance Monad     [] where result x        = [x]
  25557.                 []     `bind` f = []
  25558.                 (x:xs) `bind` f = f x ++ (xs `bind` f)
  25559.  
  25560. instance Monad0    [] where zero         = []
  25561.  
  25562. instance MonadPlus [] where []     ++ ys = ys
  25563.                 (x:xs) ++ ys = x : (xs ++ ys)
  25564.  
  25565. -- Standard list processing functions: --------------------------------------
  25566.  
  25567. head             :: [a] -> a
  25568. head (x:_)        = x
  25569.  
  25570. last             :: [a] -> a
  25571. last [x]          = x
  25572. last (_:xs)       = last xs
  25573.  
  25574. tail             :: [a] -> [a]
  25575. tail (_:xs)       = xs
  25576.  
  25577. init             :: [a] -> [a]
  25578. init [x]          = []
  25579. init (x:xs)       = x : init xs
  25580.  
  25581. genericLength    :: Num a => [b] -> a    -- calculate length of list
  25582. genericLength     = foldl' (\n _ -> n + fromInteger 1) (fromInteger 0)
  25583.  
  25584. length         :: [a] -> Int
  25585. length            = foldl' (\n _ -> n + 1) 0
  25586.  
  25587. (!!)             :: [a] -> Int -> a      -- xs!!n selects the nth element of
  25588. (x:_)  !! 0       = x                    -- the list xs (first element xs!!0)
  25589. (_:xs) !! (n+1)   = xs !! n              -- for any n < length xs.
  25590.  
  25591. iterate          :: (a -> a) -> a -> [a] -- generate the infinite list
  25592. iterate f x       = x : iterate f (f x)  -- [x, f x, f (f x), ...
  25593.  
  25594. repeat           :: a -> [a]             -- generate the infinite list
  25595. repeat x          = xs where xs = x:xs   -- [x, x, x, x, ...
  25596.  
  25597. cycle            :: [a] -> [a]           -- generate the infinite list
  25598. cycle xs          = xs' where xs'=xs++xs'-- xs ++ xs ++ xs ++ ...
  25599.  
  25600. copy             :: Int -> a -> [a]      -- make list of n copies of x
  25601. copy n x          = take n xs where xs = x:xs
  25602.  
  25603. nub              :: Eq a => [a] -> [a]   -- remove duplicates from list
  25604. nub []            = []
  25605. nub (x:xs)        = x : nub (filter (x/=) xs)
  25606.  
  25607. reverse          :: [a] -> [a]           -- reverse elements of list
  25608. reverse           = foldl (flip (:)) []
  25609.  
  25610. elem, notElem    :: Eq a => a -> [a] -> Bool
  25611. elem              = any . (==)           -- test for membership in list
  25612. notElem           = all . (/=)           -- test for non-membership
  25613.  
  25614. maximum, minimum :: Ord a => [a] -> a
  25615. maximum           = foldl1 max          -- max element in non-empty list
  25616. minimum           = foldl1 min          -- min element in non-empty list
  25617.  
  25618. transpose        :: [[a]] -> [[a]]      -- transpose list of lists
  25619. transpose         = foldr
  25620.                       (\xs xss -> zipWith (:) xs (xss ++ repeat []))
  25621.                       []
  25622.  
  25623. -- null provides a simple and efficient way of determining whether a given
  25624. -- list is empty, without using (==) and hence avoiding a constraint of the
  25625. -- form Eq [a].
  25626.  
  25627. null             :: [a] -> Bool
  25628. null []           = True
  25629. null (_:_)        = False
  25630.  
  25631. -- (\\) is used to remove the first occurrence of each element in the second
  25632. -- list from the first list.  It is a kind of inverse of (++) in the sense
  25633. -- that  (xs ++ ys) \\ xs = ys for any finite list xs of proper values xs.
  25634.  
  25635. (\\)             :: Eq a => [a] -> [a] -> [a]
  25636. (\\)              = foldl del
  25637.                     where []     `del` _  = []
  25638.                           (x:xs) `del` y
  25639.                              | x == y     = xs
  25640.                              | otherwise  = x : xs `del` y
  25641.  
  25642. -- Fold primitives:  The foldl and scanl functions, variants foldl1 and
  25643. -- scanl1 for non-empty lists, and strict variants foldl' scanl' describe
  25644. -- common patterns of recursion over lists.  Informally:
  25645. --
  25646. --  foldl f a [x1, x2, ..., xn]  = f (...(f (f a x1) x2)...) xn
  25647. --                               = (...((a `f` x1) `f` x2)...) `f` xn
  25648. -- etc...
  25649. --
  25650. -- The functions foldr, scanr and variants foldr1, scanr1 are duals of these
  25651. -- functions:
  25652. -- e.g.  foldr f a xs = foldl (flip f) a (reverse xs)  for finite lists xs.
  25653.  
  25654. foldl            :: (a -> b -> a) -> a -> [b] -> a
  25655. foldl f z []      = z
  25656. foldl f z (x:xs)  = foldl f (f z x) xs
  25657.  
  25658. foldl1           :: (a -> a -> a) -> [a] -> a
  25659. foldl1 f (x:xs)   = foldl f x xs
  25660.  
  25661. foldl'           :: (a -> b -> a) -> a -> [b] -> a
  25662. foldl' f a []     =  a
  25663. foldl' f a (x:xs) =  strict (foldl' f) (f a x) xs
  25664.  
  25665. scanl            :: (a -> b -> a) -> a -> [b] -> [a]
  25666. scanl f q xs      = q : (case xs of
  25667.                          []   -> []
  25668.                          x:xs -> scanl f (f q x) xs)
  25669.  
  25670. scanl1           :: (a -> a -> a) -> [a] -> [a]
  25671. scanl1 f (x:xs)   = scanl f x xs
  25672.  
  25673. scanl'           :: (a -> b -> a) -> a -> [b] -> [a]
  25674. scanl' f q xs     = q : (case xs of
  25675.                          []   -> []
  25676.                          x:xs -> strict (scanl' f) (f q x) xs)
  25677.  
  25678. foldr            :: (a -> b -> b) -> b -> [a] -> b
  25679. foldr f z []      = z
  25680. foldr f z (x:xs)  = f x (foldr f z xs)
  25681.  
  25682. foldr1           :: (a -> a -> a) -> [a] -> a
  25683. foldr1 f [x]      = x
  25684. foldr1 f (x:xs)   = f x (foldr1 f xs)
  25685.  
  25686. scanr            :: (a -> b -> b) -> b -> [a] -> [b]
  25687. scanr f q0 []     = [q0]
  25688. scanr f q0 (x:xs) = f x q : qs
  25689.                     where qs@(q:_) = scanr f q0 xs
  25690.  
  25691. scanr1           :: (a -> a -> a) -> [a] -> [a]
  25692. scanr1 f [x]      = [x]
  25693. scanr1 f (x:xs)   = f x q : qs
  25694.                     where qs@(q:_) = scanr1 f xs
  25695.  
  25696. -- List breaking functions:
  25697. --
  25698. --   take n xs       returns the first n elements of xs
  25699. --   drop n xs       returns the remaining elements of xs
  25700. --   splitAt n xs    = (take n xs, drop n xs)
  25701. --
  25702. --   takeWhile p xs  returns the longest initial segment of xs whose
  25703. --                   elements satisfy p
  25704. --   dropWhile p xs  returns the remaining portion of the list
  25705. --   span p xs       = (takeWhile p xs, dropWhile p xs)
  25706. --
  25707. --   takeUntil p xs  returns the list of elements upto and including the
  25708. --                   first element of xs which satisfies p
  25709.  
  25710. take                :: Int -> [a] -> [a]
  25711. take 0     _         = []
  25712. take _     []        = []
  25713. take (n+1) (x:xs)    = x : take n xs
  25714.  
  25715. drop                :: Int -> [a] -> [a]
  25716. drop 0     xs        = xs
  25717. drop _     []        = []
  25718. drop (n+1) (_:xs)    = drop n xs
  25719.  
  25720. splitAt             :: Int -> [a] -> ([a], [a])
  25721. splitAt 0     xs     = ([],xs)
  25722. splitAt _     []     = ([],[])
  25723. splitAt (n+1) (x:xs) = (x:xs',xs'') where (xs',xs'') = splitAt n xs
  25724.  
  25725. takeWhile           :: (a -> Bool) -> [a] -> [a]
  25726. takeWhile p []       = []
  25727. takeWhile p (x:xs)
  25728.          | p x       = x : takeWhile p xs
  25729.          | otherwise = []
  25730.  
  25731. takeUntil           :: (a -> Bool) -> [a] -> [a]
  25732. takeUntil p []       = []
  25733. takeUntil p (x:xs)
  25734.        | p x         = [x]
  25735.        | otherwise   = x : takeUntil p xs
  25736.  
  25737. dropWhile           :: (a -> Bool) -> [a] -> [a]
  25738. dropWhile p []       = []
  25739. dropWhile p xs@(x:xs')
  25740.          | p x       = dropWhile p xs'
  25741.          | otherwise = xs
  25742.  
  25743. span, break         :: (a -> Bool) -> [a] -> ([a],[a])
  25744. span p []            = ([],[])
  25745. span p xs@(x:xs')
  25746.          | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  25747.          | otherwise = ([],xs)
  25748. break p              = span (not . p)
  25749.  
  25750. -- Text processing:
  25751. --   lines s     returns the list of lines in the string s.
  25752. --   words s     returns the list of words in the string s.
  25753. --   unlines ls  joins the list of lines ls into a single string
  25754. --               with lines separated by newline characters.
  25755. --   unwords ws  joins the list of words ws into a single string
  25756. --               with words separated by spaces.
  25757.  
  25758. lines     :: String -> [String]
  25759. lines ""   = []
  25760. lines s    = l : (if null s' then [] else lines (tail s'))
  25761.              where (l, s') = break ('\n'==) s
  25762.  
  25763. words     :: String -> [String]
  25764. words s    = case dropWhile isSpace s of
  25765.                   "" -> []
  25766.                   s' -> w : words s''
  25767.                         where (w,s'') = break isSpace s'
  25768.  
  25769. unlines   :: [String] -> String
  25770. unlines    = concat . map (\l -> l ++ "\n")
  25771.  
  25772. unwords   :: [String] -> String
  25773. unwords [] = []
  25774. unwords ws = foldr1 (\w s -> w ++ ' ':s) ws
  25775.  
  25776. -- Merging and sorting lists:
  25777.  
  25778. merge               :: Ord a => [a] -> [a] -> [a] 
  25779. merge []     ys      = ys
  25780. merge xs     []      = xs
  25781. merge (x:xs) (y:ys)
  25782.         | x <= y     = x : merge xs (y:ys)
  25783.         | otherwise  = y : merge (x:xs) ys
  25784.  
  25785. sort                :: Ord a => [a] -> [a]
  25786. sort                 = foldr insert []
  25787.  
  25788. insert              :: Ord a => a -> [a] -> [a]
  25789. insert x []          = [x]
  25790. insert x (y:ys)
  25791.         | x <= y     = x:y:ys
  25792.         | otherwise  = y:insert x ys
  25793.  
  25794. qsort               :: Ord a => [a] -> [a]
  25795. qsort []             = []
  25796. qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
  25797.                              [ x ] ++
  25798.                        qsort [ u | u<-xs, u>=x ]
  25799.  
  25800. -- zip and zipWith families of functions:
  25801.  
  25802. zip  :: [a] -> [b] -> [(a,b)]
  25803. zip   = zipWith  (\a b -> (a,b))
  25804.  
  25805. zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
  25806. zip3  = zipWith3 (\a b c -> (a,b,c))
  25807.  
  25808. zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
  25809. zip4  = zipWith4 (\a b c d -> (a,b,c,d))
  25810.  
  25811. zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
  25812. zip5  = zipWith5 (\a b c d e -> (a,b,c,d,e))
  25813.  
  25814. zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
  25815. zip6  = zipWith6 (\a b c d e f -> (a,b,c,d,e,f))
  25816.  
  25817. zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
  25818. zip7  = zipWith7 (\a b c d e f g -> (a,b,c,d,e,f,g))
  25819.  
  25820.  
  25821. zipWith                  :: (a->b->c) -> [a]->[b]->[c]
  25822. zipWith z (a:as) (b:bs)   = z a b : zipWith z as bs
  25823. zipWith _ _      _        = []
  25824.  
  25825. zipWith3                 :: (a->b->c->d) -> [a]->[b]->[c]->[d]
  25826. zipWith3 z (a:as) (b:bs) (c:cs)
  25827.                           = z a b c : zipWith3 z as bs cs
  25828. zipWith3 _ _ _ _          = []
  25829.  
  25830. zipWith4                 :: (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e]
  25831. zipWith4 z (a:as) (b:bs) (c:cs) (d:ds)
  25832.                           = z a b c d : zipWith4 z as bs cs ds
  25833. zipWith4 _ _ _ _ _        = []
  25834.  
  25835. zipWith5                 :: (a->b->c->d->e->f) -> [a]->[b]->[c]->[d]->[e]->[f]
  25836. zipWith5 z (a:as) (b:bs) (c:cs) (d:ds) (e:es)
  25837.                           = z a b c d e : zipWith5 z as bs cs ds es
  25838. zipWith5 _ _ _ _ _ _      = []
  25839.  
  25840. zipWith6                 :: (a->b->c->d->e->f->g)
  25841.                             -> [a]->[b]->[c]->[d]->[e]->[f]->[g]
  25842. zipWith6 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs)
  25843.                           = z a b c d e f : zipWith6 z as bs cs ds es fs
  25844. zipWith6 _ _ _ _ _ _ _    = []
  25845.  
  25846. zipWith7                 :: (a->b->c->d->e->f->g->h)
  25847.                              -> [a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]
  25848. zipWith7 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs)
  25849.                           = z a b c d e f g : zipWith7 z as bs cs ds es fs gs
  25850. zipWith7 _ _ _ _ _ _ _ _  = []
  25851.  
  25852. unzip                    :: [(a,b)] -> ([a],[b])
  25853. unzip                     = foldr (\(a,b) ~(as,bs) -> (a:as, b:bs)) ([], [])
  25854.  
  25855. -- Formatted output: --------------------------------------------------------
  25856.  
  25857. primitive primPrint "primPrint"  :: Int -> a -> String -> String
  25858.  
  25859. show'       :: a -> String
  25860. show' x      = primPrint 0 x []
  25861.  
  25862. cjustify, ljustify, rjustify :: Int -> String -> String
  25863.  
  25864. cjustify n s = space halfm ++ s ++ space (m - halfm)
  25865.                where m     = n - length s
  25866.                      halfm = m `div` 2
  25867. ljustify n s = s ++ space (n - length s)
  25868. rjustify n s = space (n - length s) ++ s
  25869.  
  25870. space       :: Int -> String
  25871. space n      = copy n ' '
  25872.  
  25873. layn        :: [String] -> String
  25874. layn         = lay 1 where lay _ []     = []
  25875.                            lay n (x:xs) = rjustify 4 (show n) ++ ") "
  25876.                                            ++ x ++ "\n" ++ lay (n+1) xs
  25877.  
  25878. -- Miscellaneous: -----------------------------------------------------------
  25879.  
  25880. until                  :: (a -> Bool) -> (a -> a) -> a -> a
  25881. until p f x | p x       = x
  25882.             | otherwise = until p f (f x)
  25883.  
  25884. until'                 :: (a -> Bool) -> (a -> a) -> a -> [a]
  25885. until' p f              = takeUntil p . iterate f
  25886.  
  25887. primitive error "primError" :: String -> a
  25888.  
  25889. undefined              :: a
  25890. undefined | False       = undefined
  25891.  
  25892. asTypeOf               :: a -> a -> a
  25893. x `asTypeOf` _          = x
  25894.  
  25895. -- A trimmed down version of the Haskell Text class: ------------------------
  25896.  
  25897. type  ShowS   = String -> String
  25898.  
  25899. class Text a where 
  25900.     showsPrec      :: Int -> a -> ShowS
  25901.     showList       :: [a] -> ShowS
  25902.  
  25903.     showsPrec       = primPrint
  25904.     showList []     = showString "[]"
  25905.     showList (x:xs) = showChar '[' . shows x . showl xs
  25906.                       where showl []     = showChar ']'
  25907.                             showl (x:xs) = showChar ',' . shows x . showl xs
  25908.  
  25909. shows      :: Text a => a -> ShowS
  25910. shows       = showsPrec 0
  25911.  
  25912. show       :: Text a => a -> String
  25913. show x      = shows x ""
  25914.  
  25915. showChar   :: Char -> ShowS
  25916. showChar    = (:)
  25917.  
  25918. showString :: String -> ShowS
  25919. showString  = (++)
  25920.  
  25921. instance Text () where
  25922.     showsPrec d ()    = showString "()"
  25923.  
  25924. instance Text Bool where
  25925.     showsPrec d True  = showString "True"
  25926.     showsPrec d False = showString "False"
  25927.  
  25928. primitive primShowsInt "primShowsInt" :: Int -> Int -> String -> String
  25929. instance Text Int where showsPrec = primShowsInt
  25930.  
  25931. {- PC version off -}
  25932. primitive primShowsFloat "primShowsFloat" :: Int -> Float -> String -> String
  25933. instance Text Float where showsPrec = primShowsFloat
  25934. {- PC version on -}
  25935.  
  25936. instance Text Char where
  25937.     showsPrec p c = showString [q, c, q] where q = '\''
  25938.     showList cs   = showChar '"' . showl cs
  25939.                     where showl ""       = showChar '"'
  25940.                           showl ('"':cs) = showString "\\\"" . showl cs
  25941.                           showl (c:cs)   = showChar c . showl cs
  25942.               -- Haskell has   showLitChar c . showl cs
  25943.  
  25944. instance Text a => Text [a]  where
  25945.     showsPrec p = showList
  25946.  
  25947. instance (Text a, Text b) => Text (a,b) where
  25948.     showsPrec p (x,y) = showChar '(' . shows x . showChar ',' .
  25949.                                        shows y . showChar ')'
  25950.  
  25951. -- I/O functions and definitions: -------------------------------------------
  25952.  
  25953. stdin         =  "stdin"
  25954. stdout        =  "stdout"
  25955. stderr        =  "stderr"
  25956. stdecho       =  "stdecho"
  25957.  
  25958. {- The Dialogue, Request, Response and IOError datatypes are now builtin:
  25959. data Request  =  -- file system requests:
  25960.                 ReadFile      String         
  25961.               | WriteFile     String String
  25962.               | AppendFile    String String
  25963.                  -- channel system requests:
  25964.               | ReadChan      String 
  25965.               | AppendChan    String String
  25966.                  -- environment requests:
  25967.               | Echo          Bool
  25968.           | GetArgs
  25969.           | GetProgName
  25970.           | GetEnv        String
  25971.  
  25972. data Response = Success
  25973.               | Str     String 
  25974.               | Failure IOError
  25975.           | StrList [String]
  25976.  
  25977. data IOError  = WriteError   String
  25978.               | ReadError    String
  25979.               | SearchError  String
  25980.               | FormatError  String
  25981.               | OtherError   String
  25982.  
  25983. type Dialogue    =  [Response] -> [Request]
  25984. -}
  25985.  
  25986. type SuccCont    =                Dialogue
  25987. type StrCont     =  String     -> Dialogue
  25988. type StrListCont =  [String]   -> Dialogue
  25989. type FailCont    =  IOError    -> Dialogue
  25990.  
  25991. done            ::                                                Dialogue
  25992. readFile        :: String ->           FailCont -> StrCont     -> Dialogue
  25993. writeFile       :: String -> String -> FailCont -> SuccCont    -> Dialogue
  25994. appendFile      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  25995. readChan        :: String ->           FailCont -> StrCont     -> Dialogue
  25996. appendChan      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  25997. echo            :: Bool ->             FailCont -> SuccCont    -> Dialogue
  25998. getArgs         ::                     FailCont -> StrListCont -> Dialogue
  25999. getProgName     ::               FailCont -> StrCont     -> Dialogue
  26000. getEnv        :: String ->           FailCont -> StrCont     -> Dialogue
  26001.  
  26002. done resps    =  []
  26003. readFile name fail succ resps =
  26004.      (ReadFile name) : strDispatch fail succ resps
  26005. writeFile name contents fail succ resps =
  26006.     (WriteFile name contents) : succDispatch fail succ resps
  26007. appendFile name contents fail succ resps =
  26008.     (AppendFile name contents) : succDispatch fail succ resps
  26009. readChan name fail succ resps =
  26010.     (ReadChan name) : strDispatch fail succ resps
  26011. appendChan name contents fail succ resps =
  26012.     (AppendChan name contents) : succDispatch fail succ resps
  26013. echo bool fail succ resps =
  26014.     (Echo bool) : succDispatch fail succ resps
  26015. getArgs fail succ resps =
  26016.     GetArgs : strListDispatch fail succ resps
  26017. getProgName fail succ resps =
  26018.     GetProgName : strDispatch fail succ resps
  26019. getEnv name fail succ resps =
  26020.     (GetEnv name) : strDispatch fail succ resps
  26021.  
  26022. strDispatch fail succ (resp:resps) = 
  26023.             case resp of Str val     -> succ val resps
  26024.                          Failure msg -> fail msg resps
  26025.  
  26026. succDispatch fail succ (resp:resps) = 
  26027.             case resp of Success     -> succ resps
  26028.                          Failure msg -> fail msg resps
  26029.  
  26030. strListDispatch fail succ (resp:resps) =
  26031.         case resp of StrList val -> succ val resps
  26032.              Failure msg -> fail msg resps
  26033.  
  26034. abort           :: FailCont
  26035. abort err        = done
  26036.  
  26037. exit            :: FailCont
  26038. exit err         = appendChan stderr msg abort done
  26039.                    where msg = case err of ReadError s   -> s
  26040.                                            WriteError s  -> s
  26041.                                            SearchError s -> s
  26042.                                            FormatError s -> s
  26043.                                            OtherError s  -> s
  26044.  
  26045. print           :: Text a => a -> Dialogue
  26046. print x          = appendChan stdout (show x) exit done
  26047.  
  26048. prints          :: Text a => a -> String -> Dialogue
  26049. prints x s       = appendChan stdout (shows x s) exit done
  26050.  
  26051. interact    :: (String -> String) -> Dialogue
  26052. interact f     = readChan stdin exit
  26053.                 (\x -> appendChan stdout (f x) exit done)
  26054.  
  26055. run        :: (String -> String) -> Dialogue
  26056. run f         = echo False exit (interact f)
  26057.  
  26058. primitive primFopen "primFopen" :: String -> a -> (String -> a) -> a
  26059.  
  26060. openfile        :: String -> String
  26061. openfile f       = primFopen f (error ("can't open file "++f)) id
  26062.  
  26063. -- End of Gofer standard prelude: --------------------------------------------
  26064.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --         __________   __________   __________   __________   ________
  26065. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  26066. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  26067. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  26068. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  26069. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  26070. --
  26071. --    Functional programming environment, Version 2.28
  26072. --    Copyright Mark P Jones 1991-1993.
  26073. --
  26074. --    Standard prelude for use of overloaded values using type classes.
  26075. --    Based on the Haskell standard prelude version 1.2.
  26076. --
  26077. --    This prelude file is the same as standard.prelude except that it
  26078. --    does not include the Float data type and associated operations.
  26079.  
  26080. help = "press :? for a list of commands"
  26081.  
  26082. -- Operator precedence table: -----------------------------------------------
  26083.  
  26084. infixl 9 !!
  26085. infixr 9 .
  26086. infixr 8 ^
  26087. infixl 7 *
  26088. infix  7 /, `div`, `quot`, `rem`, `mod`
  26089. infixl 6 +, -
  26090. infix  5 \\
  26091. infixr 5 ++, :
  26092. infix  4 ==, /=, <, <=, >=, >
  26093. infix  4 `elem`, `notElem`
  26094. infixr 3 &&
  26095. infixr 2 ||
  26096. infixr 0 $
  26097.  
  26098. -- Standard combinators: ----------------------------------------------------
  26099.  
  26100. primitive strict "primStrict" :: (a -> b) -> a -> b
  26101.  
  26102. const          :: a -> b -> a
  26103. const k x       = k
  26104.  
  26105. id             :: a -> a
  26106. id    x         = x
  26107.  
  26108. curry          :: ((a,b) -> c) -> a -> b -> c
  26109. curry f a b     =  f (a,b)
  26110.  
  26111. uncurry        :: (a -> b -> c) -> (a,b) -> c
  26112. uncurry f (a,b) = f a b
  26113.  
  26114. fst            :: (a,b) -> a
  26115. fst (x,_)       = x
  26116.  
  26117. snd            :: (a,b) -> b
  26118. snd (_,y)       = y
  26119.  
  26120. fst3           :: (a,b,c) -> a
  26121. fst3 (x,_,_)    = x
  26122.  
  26123. snd3           :: (a,b,c) -> b
  26124. snd3 (_,x,_)    = x
  26125.  
  26126. thd3           :: (a,b,c) -> c
  26127. thd3 (_,_,x)    = x
  26128.  
  26129. (.)           :: (b -> c) -> (a -> b) -> (a -> c)
  26130. (f . g) x       = f (g x)
  26131.  
  26132. flip           :: (a -> b -> c) -> b -> a -> c
  26133. flip  f x y     = f y x
  26134.  
  26135. ($)            :: (a -> b) -> a -> b     -- pronounced as `apply' elsewhere
  26136. f $ x           = f x
  26137.  
  26138. -- Boolean functions: -------------------------------------------------------
  26139.  
  26140. (&&), (||)     :: Bool -> Bool -> Bool
  26141. False && x      = False
  26142. True  && x      = x
  26143.  
  26144. False || x      = x
  26145. True  || x      = True
  26146.  
  26147. not            :: Bool -> Bool
  26148. not True        = False
  26149. not False       = True
  26150.  
  26151. and, or        :: [Bool] -> Bool
  26152. and             = foldr (&&) True
  26153. or              = foldr (||) False
  26154.  
  26155. any, all       :: (a -> Bool) -> [a] -> Bool
  26156. any p           = or  . map p
  26157. all p           = and . map p
  26158.  
  26159. otherwise      :: Bool
  26160. otherwise       = True
  26161.  
  26162. -- Character functions: -----------------------------------------------------
  26163.  
  26164. primitive ord "primCharToInt" :: Char -> Int
  26165. primitive chr "primIntToChar" :: Int -> Char
  26166.  
  26167. isAscii, isControl, isPrint, isSpace            :: Char -> Bool
  26168. isUpper, isLower, isAlpha, isDigit, isAlphanum  :: Char -> Bool
  26169.  
  26170. isAscii c     =  ord c < 128
  26171.  
  26172. isControl c   =  c < ' '    ||  c == '\DEL'
  26173.  
  26174. isPrint c     =  c >= ' '   &&  c <= '~'
  26175.  
  26176. isSpace c     =  c == ' '   || c == '\t'  || c == '\n'  || c == '\r'  ||
  26177.                                c == '\f'  || c == '\v'
  26178.  
  26179. isUpper c     =  c >= 'A'   &&  c <= 'Z'
  26180. isLower c     =  c >= 'a'   &&  c <= 'z'
  26181.  
  26182. isAlpha c     =  isUpper c  ||  isLower c
  26183. isDigit c     =  c >= '0'   &&  c <= '9'
  26184. isAlphanum c  =  isAlpha c  ||  isDigit c
  26185.  
  26186.  
  26187. toUpper, toLower      :: Char -> Char
  26188.  
  26189. toUpper c | isLower c  = chr (ord c - ord 'a' + ord 'A')
  26190.           | otherwise  = c
  26191.  
  26192. toLower c | isUpper c  = chr (ord c - ord 'A' + ord 'a')
  26193.           | otherwise  = c
  26194.  
  26195. minChar, maxChar      :: Char
  26196. minChar                = chr 0
  26197. maxChar                = chr 255
  26198.  
  26199. -- Standard type classes: ---------------------------------------------------
  26200.  
  26201. class Eq a where
  26202.     (==), (/=) :: a -> a -> Bool
  26203.     x /= y      = not (x == y)
  26204.  
  26205. class Eq a => Ord a where
  26206.     (<), (<=), (>), (>=) :: a -> a -> Bool
  26207.     max, min             :: a -> a -> a
  26208.  
  26209.     x <  y            = x <= y && x /= y
  26210.     x >= y            = y <= x
  26211.     x >  y            = y < x
  26212.  
  26213.     max x y | x >= y  = x
  26214.             | y >= x  = y
  26215.     min x y | x <= y  = x
  26216.             | y <= x  = y
  26217.  
  26218. class Ord a => Ix a where
  26219.     range   :: (a,a) -> [a]
  26220.     index   :: (a,a) -> a -> Int
  26221.     inRange :: (a,a) -> a -> Bool
  26222.  
  26223. class Ord a => Enum a where
  26224.     enumFrom       :: a -> [a]              -- [n..]
  26225.     enumFromThen   :: a -> a -> [a]         -- [n,m..]
  26226.     enumFromTo     :: a -> a -> [a]         -- [n..m]
  26227.     enumFromThenTo :: a -> a -> a -> [a]    -- [n,n'..m]
  26228.  
  26229.     enumFromTo n m        = takeWhile (m>=) (enumFrom n)
  26230.     enumFromThenTo n n' m = takeWhile ((if n'>=n then (>=) else (<=)) m)
  26231.                                       (enumFromThen n n')
  26232.  
  26233. class (Eq a, Text a) => Num a where         -- simplified numeric class
  26234.     (+), (-), (*), (/) :: a -> a -> a
  26235.     negate             :: a -> a
  26236.     fromInteger           :: Int -> a
  26237.  
  26238. -- Type class instances: ----------------------------------------------------
  26239.  
  26240. primitive primEqInt    "primEqInt",
  26241.       primLeInt    "primLeInt"   :: Int -> Int -> Bool
  26242. primitive primPlusInt  "primPlusInt",
  26243.       primMinusInt "primMinusInt",
  26244.       primDivInt   "primDivInt",
  26245.       primMulInt   "primMulInt"  :: Int -> Int -> Int
  26246. primitive primNegInt   "primNegInt"  :: Int -> Int
  26247.  
  26248. instance Eq ()  where () == () = True
  26249. instance Ord () where () <= () = True
  26250.  
  26251. instance Eq Int  where (==) = primEqInt
  26252.  
  26253. instance Ord Int where (<=) = primLeInt
  26254.  
  26255. instance Ix Int where
  26256.     range (m,n)      = [m..n]
  26257.     index (m,n) i    = i - m
  26258.     inRange (m,n) i  = m <= i && i <= n
  26259.  
  26260. instance Enum Int where
  26261.     enumFrom n       = iterate (1+) n
  26262.     enumFromThen n m = iterate ((m-n)+) n
  26263.  
  26264. instance Num Int where
  26265.     (+)           = primPlusInt
  26266.     (-)           = primMinusInt
  26267.     (*)           = primMulInt
  26268.     (/)           = primDivInt
  26269.     negate        = primNegInt
  26270.     fromInteger x = x
  26271.  
  26272. {- PC version off
  26273. primitive primEqFloat    "primEqFloat",
  26274.           primLeFloat    "primLeFloat"    :: Float -> Float -> Bool
  26275. primitive primPlusFloat  "primPlusFloat", 
  26276.           primMinusFloat "primMinusFloat", 
  26277.           primDivFloat   "primDivFloat",
  26278.           primMulFloat   "primMulFloat"   :: Float -> Float -> Float 
  26279. primitive primNegFloat   "primNegFloat"   :: Float -> Float
  26280. primitive primIntToFloat "primIntToFloat" :: Int -> Float
  26281.  
  26282. instance Eq Float where (==) = primEqFloat
  26283.  
  26284. instance Ord Float where (<=) = primLeFloat
  26285.  
  26286. instance Enum Float where
  26287.     enumFrom n       = iterate (1.0+) n
  26288.     enumFromThen n m = iterate ((m-n)+) n
  26289.  
  26290. instance Num Float where
  26291.     (+)         = primPlusFloat
  26292.     (-)         = primMinusFloat
  26293.     (*)         = primMulFloat
  26294.     (/)         = primDivFloat 
  26295.     negate      = primNegFloat
  26296.     fromInteger = primIntToFloat
  26297.  
  26298. primitive sin "primSinFloat",  asin  "primAsinFloat",
  26299.           cos "primCosFloat",  acos  "primAcosFloat",
  26300.       tan "primTanFloat",  atan  "primAtanFloat",
  26301.           log "primLogFloat",  log10 "primLog10Float",
  26302.       exp "primExpFloat",  sqrt  "primSqrtFloat" :: Float -> Float
  26303. primitive atan2    "primAtan2Float" :: Float -> Float -> Float
  26304. primitive truncate "primFloatToInt" :: Float -> Int
  26305.  
  26306. pi :: Float
  26307. pi  = 3.1415926535
  26308.  
  26309. PC version on -}
  26310.  
  26311. primitive primEqChar   "primEqChar",
  26312.       primLeChar   "primLeChar"  :: Char -> Char -> Bool
  26313.  
  26314. instance Eq Char  where (==) = primEqChar   -- c == d  =  ord c == ord d
  26315.  
  26316. instance Ord Char where (<=) = primLeChar   -- c <= d  =  ord c <= ord d
  26317.  
  26318. instance Ix Char where
  26319.     range (c,c')      = [c..c']
  26320.     index (c,c') ci   = ord ci - ord c
  26321.     inRange (c,c') ci = ord c <= i && i <= ord c' where i = ord ci
  26322.  
  26323. instance Enum Char where
  26324.     enumFrom c        = map chr [ord c .. ord maxChar]
  26325.     enumFromThen c c' = map chr [ord c, ord c' .. ord lastChar]
  26326.                         where lastChar = if c' < c then minChar else maxChar
  26327.  
  26328. instance Eq a => Eq [a] where
  26329.     []     == []     =  True
  26330.     []     == (y:ys) =  False
  26331.     (x:xs) == []     =  False
  26332.     (x:xs) == (y:ys) =  x==y && xs==ys
  26333.  
  26334. instance Ord a => Ord [a] where
  26335.     []     <= _      =  True
  26336.     (_:_)  <= []     =  False
  26337.     (x:xs) <= (y:ys) =  x<y || (x==y && xs<=ys)
  26338.  
  26339. instance (Eq a, Eq b) => Eq (a,b) where
  26340.     (x,y) == (u,v)  =  x==u && y==v
  26341.  
  26342. instance (Ord a, Ord b) => Ord (a,b) where
  26343.     (x,y) <= (u,v)  = x<u  ||  (x==u && y<=v)
  26344.  
  26345. instance Eq Bool where
  26346.     True  == True   =  True
  26347.     False == False  =  True
  26348.     _     == _      =  False
  26349.  
  26350. instance Ord Bool where
  26351.     False <= x      = True
  26352.     True  <= x      = x
  26353.  
  26354. -- Standard numerical functions: --------------------------------------------
  26355.  
  26356. primitive div    "primDivInt",
  26357.       quot   "primQuotInt",
  26358.           rem    "primRemInt",
  26359.           mod    "primModInt"    :: Int -> Int -> Int
  26360.  
  26361. subtract  :: Num a => a -> a -> a
  26362. subtract   = flip (-)
  26363.  
  26364. even, odd :: Int -> Bool
  26365. even x     = x `rem` 2 == 0
  26366. odd        = not . even
  26367.  
  26368. gcd       :: Int -> Int -> Int
  26369. gcd x y    = gcd' (abs x) (abs y)
  26370.              where gcd' x 0 = x
  26371.                    gcd' x y = gcd' y (x `rem` y)
  26372.  
  26373. lcm       :: Int -> Int -> Int
  26374. lcm _ 0    = 0
  26375. lcm 0 _    = 0
  26376. lcm x y    = abs ((x `quot` gcd x y) * y)
  26377.  
  26378. (^)       :: Num a => a -> Int -> a
  26379. x ^ 0      = fromInteger 1
  26380. x ^ (n+1)  = f x n x
  26381.              where f _ 0 y = y
  26382.                    f x n y = g x n where
  26383.                              g x n | even n    = g (x*x) (n`quot`2)
  26384.                                    | otherwise = f x (n-1) (x*y)
  26385.  
  26386. abs                     :: (Num a, Ord a) => a -> a
  26387. abs x | x>=fromInteger 0 = x
  26388.       | otherwise        = -x
  26389.  
  26390. signum            :: (Num a, Ord a) => a -> Int
  26391. signum x
  26392.       | x==fromInteger 0 = 0
  26393.       | x> fromInteger 0 = 1
  26394.       | otherwise        = -1
  26395.  
  26396. sum, product    :: Num a => [a] -> a
  26397. sum              = foldl' (+) (fromInteger 0)
  26398. product          = foldl' (*) (fromInteger 1)
  26399.  
  26400. sums, products    :: Num a => [a] -> [a]
  26401. sums             = scanl (+) (fromInteger 0)
  26402. products         = scanl (*) (fromInteger 1)
  26403.  
  26404. -- Standard list processing functions: --------------------------------------
  26405.  
  26406. head             :: [a] -> a
  26407. head (x:_)        = x
  26408.  
  26409. last             :: [a] -> a
  26410. last [x]          = x
  26411. last (_:xs)       = last xs
  26412.  
  26413. tail             :: [a] -> [a]
  26414. tail (_:xs)       = xs
  26415.  
  26416. init             :: [a] -> [a]
  26417. init [x]          = []
  26418. init (x:xs)       = x : init xs
  26419.  
  26420. (++)             :: [a] -> [a] -> [a]    -- append lists.  Associative with
  26421. []     ++ ys      = ys                   -- left and right identity [].
  26422. (x:xs) ++ ys      = x:(xs++ys)
  26423.  
  26424. genericLength    :: Num a => [b] -> a
  26425. genericLength     = foldl' (\n _ -> n + fromInteger 1) (fromInteger 0)
  26426.  
  26427. length         :: [a] -> Int           -- calculate length of list
  26428. length            = foldl' (\n _ -> n+1) 0
  26429.  
  26430. (!!)             :: [a] -> Int -> a      -- xs!!n selects the nth element of
  26431. (x:_)  !! 0       = x                    -- the list xs (first element xs!!0)
  26432. (_:xs) !! (n+1)   = xs !! n              -- for any n < length xs.
  26433.  
  26434. iterate          :: (a -> a) -> a -> [a] -- generate the infinite list
  26435. iterate f x       = x : iterate f (f x)  -- [x, f x, f (f x), ...
  26436.  
  26437. repeat           :: a -> [a]             -- generate the infinite list
  26438. repeat x          = xs where xs = x:xs   -- [x, x, x, x, ...
  26439.  
  26440. cycle            :: [a] -> [a]           -- generate the infinite list
  26441. cycle xs          = xs' where xs'=xs++xs'-- xs ++ xs ++ xs ++ ...
  26442.  
  26443. copy             :: Int -> a -> [a]      -- make list of n copies of x
  26444. copy n x          = take n xs where xs = x:xs
  26445.  
  26446. nub              :: Eq a => [a] -> [a]   -- remove duplicates from list
  26447. nub []            = []
  26448. nub (x:xs)        = x : nub (filter (x/=) xs)
  26449.  
  26450. reverse          :: [a] -> [a]           -- reverse elements of list
  26451. reverse           = foldl (flip (:)) []
  26452.  
  26453. elem, notElem    :: Eq a => a -> [a] -> Bool
  26454. elem              = any . (==)           -- test for membership in list
  26455. notElem           = all . (/=)           -- test for non-membership
  26456.  
  26457. maximum, minimum :: Ord a => [a] -> a
  26458. maximum           = foldl1 max          -- max element in non-empty list
  26459. minimum           = foldl1 min          -- min element in non-empty list
  26460.  
  26461. concat           :: [[a]] -> [a]        -- concatenate list of lists
  26462. concat            = foldr (++) []
  26463.  
  26464. transpose        :: [[a]] -> [[a]]      -- transpose list of lists
  26465. transpose         = foldr
  26466.                       (\xs xss -> zipWith (:) xs (xss ++ repeat []))
  26467.                       []
  26468.  
  26469. -- null provides a simple and efficient way of determining whether a given
  26470. -- list is empty, without using (==) and hence avoiding a constraint of the
  26471. -- form Eq [a].
  26472.  
  26473. null             :: [a] -> Bool
  26474. null []           = True
  26475. null (_:_)        = False
  26476.  
  26477. -- (\\) is used to remove the first occurrence of each element in the second
  26478. -- list from the first list.  It is a kind of inverse of (++) in the sense
  26479. -- that  (xs ++ ys) \\ xs = ys for any finite list xs of proper values xs.
  26480.  
  26481. (\\)             :: Eq a => [a] -> [a] -> [a]
  26482. (\\)              = foldl del
  26483.                     where []     `del` _  = []
  26484.                           (x:xs) `del` y
  26485.                              | x == y     = xs
  26486.                              | otherwise  = x : xs `del` y
  26487.  
  26488.  
  26489. -- map f xs applies the function f to each element of the list xs returning
  26490. -- the corresponding list of results.  filter p xs returns the sublist of xs
  26491. -- containing those elements which satisfy the predicate p.
  26492.  
  26493. map              :: (a -> b) -> [a] -> [b]
  26494. map f []          = []
  26495. map f (x:xs)      = f x : map f xs
  26496.  
  26497. filter           :: (a -> Bool) -> [a] -> [a]
  26498. filter _ []       = []
  26499. filter p (x:xs)
  26500.     | p x         = x : xs'
  26501.     | otherwise   = xs'
  26502.                   where xs' = filter p xs
  26503.  
  26504. -- Fold primitives:  The foldl and scanl functions, variants foldl1 and
  26505. -- scanl1 for non-empty lists, and strict variants foldl' scanl' describe
  26506. -- common patterns of recursion over lists.  Informally:
  26507. --
  26508. --  foldl f a [x1, x2, ..., xn]  = f (...(f (f a x1) x2)...) xn
  26509. --                               = (...((a `f` x1) `f` x2)...) `f` xn
  26510. -- etc...
  26511. --
  26512. -- The functions foldr, scanr and variants foldr1, scanr1 are duals of these
  26513. -- functions:
  26514. -- e.g.  foldr f a xs = foldl (flip f) a (reverse xs)  for finite lists xs.
  26515.  
  26516. foldl            :: (a -> b -> a) -> a -> [b] -> a
  26517. foldl f z []      = z
  26518. foldl f z (x:xs)  = foldl f (f z x) xs
  26519.  
  26520. foldl1           :: (a -> a -> a) -> [a] -> a
  26521. foldl1 f (x:xs)   = foldl f x xs
  26522.  
  26523. foldl'           :: (a -> b -> a) -> a -> [b] -> a
  26524. foldl' f a []     =  a
  26525. foldl' f a (x:xs) =  strict (foldl' f) (f a x) xs
  26526.  
  26527. scanl            :: (a -> b -> a) -> a -> [b] -> [a]
  26528. scanl f q xs      = q : (case xs of
  26529.                          []   -> []
  26530.                          x:xs -> scanl f (f q x) xs)
  26531.  
  26532. scanl1           :: (a -> a -> a) -> [a] -> [a]
  26533. scanl1 f (x:xs)   = scanl f x xs
  26534.  
  26535. scanl'           :: (a -> b -> a) -> a -> [b] -> [a]
  26536. scanl' f q xs     = q : (case xs of
  26537.                          []   -> []
  26538.                          x:xs -> strict (scanl' f) (f q x) xs)
  26539.  
  26540. foldr            :: (a -> b -> b) -> b -> [a] -> b
  26541. foldr f z []      = z
  26542. foldr f z (x:xs)  = f x (foldr f z xs)
  26543.  
  26544. foldr1           :: (a -> a -> a) -> [a] -> a
  26545. foldr1 f [x]      = x
  26546. foldr1 f (x:xs)   = f x (foldr1 f xs)
  26547.  
  26548. scanr            :: (a -> b -> b) -> b -> [a] -> [b]
  26549. scanr f q0 []     = [q0]
  26550. scanr f q0 (x:xs) = f x q : qs
  26551.                     where qs@(q:_) = scanr f q0 xs
  26552.  
  26553. scanr1           :: (a -> a -> a) -> [a] -> [a]
  26554. scanr1 f [x]      = [x]
  26555. scanr1 f (x:xs)   = f x q : qs
  26556.                     where qs@(q:_) = scanr1 f xs
  26557.  
  26558. -- List breaking functions:
  26559. --
  26560. --   take n xs       returns the first n elements of xs
  26561. --   drop n xs       returns the remaining elements of xs
  26562. --   splitAt n xs    = (take n xs, drop n xs)
  26563. --
  26564. --   takeWhile p xs  returns the longest initial segment of xs whose
  26565. --                   elements satisfy p
  26566. --   dropWhile p xs  returns the remaining portion of the list
  26567. --   span p xs       = (takeWhile p xs, dropWhile p xs)
  26568. --
  26569. --   takeUntil p xs  returns the list of elements upto and including the
  26570. --                   first element of xs which satisfies p
  26571.  
  26572. take                :: Int -> [a] -> [a]
  26573. take 0     _         = []
  26574. take _     []        = []
  26575. take (n+1) (x:xs)    = x : take n xs
  26576.  
  26577. drop                :: Int -> [a] -> [a]
  26578. drop 0     xs        = xs
  26579. drop _     []        = []
  26580. drop (n+1) (_:xs)    = drop n xs
  26581.  
  26582. splitAt             :: Int -> [a] -> ([a], [a])
  26583. splitAt 0     xs     = ([],xs)
  26584. splitAt _     []     = ([],[])
  26585. splitAt (n+1) (x:xs) = (x:xs',xs'') where (xs',xs'') = splitAt n xs
  26586.  
  26587. takeWhile           :: (a -> Bool) -> [a] -> [a]
  26588. takeWhile p []       = []
  26589. takeWhile p (x:xs)
  26590.          | p x       = x : takeWhile p xs
  26591.          | otherwise = []
  26592.  
  26593. takeUntil           :: (a -> Bool) -> [a] -> [a]
  26594. takeUntil p []       = []
  26595. takeUntil p (x:xs)
  26596.        | p x         = [x]
  26597.        | otherwise   = x : takeUntil p xs
  26598.  
  26599. dropWhile           :: (a -> Bool) -> [a] -> [a]
  26600. dropWhile p []       = []
  26601. dropWhile p xs@(x:xs')
  26602.          | p x       = dropWhile p xs'
  26603.          | otherwise = xs
  26604.  
  26605. span, break         :: (a -> Bool) -> [a] -> ([a],[a])
  26606. span p []            = ([],[])
  26607. span p xs@(x:xs')
  26608.          | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  26609.          | otherwise = ([],xs)
  26610. break p              = span (not . p)
  26611.  
  26612. -- Text processing:
  26613. --   lines s     returns the list of lines in the string s.
  26614. --   words s     returns the list of words in the string s.
  26615. --   unlines ls  joins the list of lines ls into a single string
  26616. --               with lines separated by newline characters.
  26617. --   unwords ws  joins the list of words ws into a single string
  26618. --               with words separated by spaces.
  26619.  
  26620. lines     :: String -> [String]
  26621. lines ""   = []
  26622. lines s    = l : (if null s' then [] else lines (tail s'))
  26623.              where (l, s') = break ('\n'==) s
  26624.  
  26625. words     :: String -> [String]
  26626. words s    = case dropWhile isSpace s of
  26627.                   "" -> []
  26628.                   s' -> w : words s''
  26629.                         where (w,s'') = break isSpace s'
  26630.  
  26631. unlines   :: [String] -> String
  26632. unlines    = concat . map (\l -> l ++ "\n")
  26633.  
  26634. unwords   :: [String] -> String
  26635. unwords [] = []
  26636. unwords ws = foldr1 (\w s -> w ++ ' ':s) ws
  26637.  
  26638. -- Merging and sorting lists:
  26639.  
  26640. merge               :: Ord a => [a] -> [a] -> [a] 
  26641. merge []     ys      = ys
  26642. merge xs     []      = xs
  26643. merge (x:xs) (y:ys)
  26644.         | x <= y     = x : merge xs (y:ys)
  26645.         | otherwise  = y : merge (x:xs) ys
  26646.  
  26647. sort                :: Ord a => [a] -> [a]
  26648. sort                 = foldr insert []
  26649.  
  26650. insert              :: Ord a => a -> [a] -> [a]
  26651. insert x []          = [x]
  26652. insert x (y:ys)
  26653.         | x <= y     = x:y:ys
  26654.         | otherwise  = y:insert x ys
  26655.  
  26656. qsort               :: Ord a => [a] -> [a]
  26657. qsort []             = []
  26658. qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
  26659.                              [ x ] ++
  26660.                        qsort [ u | u<-xs, u>=x ]
  26661.  
  26662. -- zip and zipWith families of functions:
  26663.  
  26664. zip  :: [a] -> [b] -> [(a,b)]
  26665. zip   = zipWith  (\a b -> (a,b))
  26666.  
  26667. zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
  26668. zip3  = zipWith3 (\a b c -> (a,b,c))
  26669.  
  26670. zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
  26671. zip4  = zipWith4 (\a b c d -> (a,b,c,d))
  26672.  
  26673. zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
  26674. zip5  = zipWith5 (\a b c d e -> (a,b,c,d,e))
  26675.  
  26676. zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
  26677. zip6  = zipWith6 (\a b c d e f -> (a,b,c,d,e,f))
  26678.  
  26679. zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
  26680. zip7  = zipWith7 (\a b c d e f g -> (a,b,c,d,e,f,g))
  26681.  
  26682.  
  26683. zipWith                  :: (a->b->c) -> [a]->[b]->[c]
  26684. zipWith z (a:as) (b:bs)   = z a b : zipWith z as bs
  26685. zipWith _ _      _        = []
  26686.  
  26687. zipWith3                 :: (a->b->c->d) -> [a]->[b]->[c]->[d]
  26688. zipWith3 z (a:as) (b:bs) (c:cs)
  26689.                           = z a b c : zipWith3 z as bs cs
  26690. zipWith3 _ _ _ _          = []
  26691.  
  26692. zipWith4                 :: (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e]
  26693. zipWith4 z (a:as) (b:bs) (c:cs) (d:ds)
  26694.                           = z a b c d : zipWith4 z as bs cs ds
  26695. zipWith4 _ _ _ _ _        = []
  26696.  
  26697. zipWith5                 :: (a->b->c->d->e->f) -> [a]->[b]->[c]->[d]->[e]->[f]
  26698. zipWith5 z (a:as) (b:bs) (c:cs) (d:ds) (e:es)
  26699.                           = z a b c d e : zipWith5 z as bs cs ds es
  26700. zipWith5 _ _ _ _ _ _      = []
  26701.  
  26702. zipWith6                 :: (a->b->c->d->e->f->g)
  26703.                             -> [a]->[b]->[c]->[d]->[e]->[f]->[g]
  26704. zipWith6 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs)
  26705.                           = z a b c d e f : zipWith6 z as bs cs ds es fs
  26706. zipWith6 _ _ _ _ _ _ _    = []
  26707.  
  26708. zipWith7                 :: (a->b->c->d->e->f->g->h)
  26709.                              -> [a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]
  26710. zipWith7 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs)
  26711.                           = z a b c d e f g : zipWith7 z as bs cs ds es fs gs
  26712. zipWith7 _ _ _ _ _ _ _ _  = []
  26713.  
  26714. unzip                    :: [(a,b)] -> ([a],[b])
  26715. unzip                     = foldr (\(a,b) ~(as,bs) -> (a:as, b:bs)) ([], [])
  26716.  
  26717. -- Formatted output: --------------------------------------------------------
  26718.  
  26719. primitive primPrint "primPrint"  :: Int -> a -> String -> String
  26720.  
  26721. show'       :: a -> String
  26722. show' x      = primPrint 0 x []
  26723.  
  26724. cjustify, ljustify, rjustify :: Int -> String -> String
  26725.  
  26726. cjustify n s = space halfm ++ s ++ space (m - halfm)
  26727.                where m     = n - length s
  26728.                      halfm = m `div` 2
  26729. ljustify n s = s ++ space (n - length s)
  26730. rjustify n s = space (n - length s) ++ s
  26731.  
  26732. space       :: Int -> String
  26733. space n      = copy n ' '
  26734.  
  26735. layn        :: [String] -> String
  26736. layn         = lay 1 where lay _ []     = []
  26737.                            lay n (x:xs) = rjustify 4 (show n) ++ ") "
  26738.                                            ++ x ++ "\n" ++ lay (n+1) xs
  26739.  
  26740. -- Miscellaneous: -----------------------------------------------------------
  26741.  
  26742. until                  :: (a -> Bool) -> (a -> a) -> a -> a
  26743. until p f x | p x       = x
  26744.             | otherwise = until p f (f x)
  26745.  
  26746. until'                 :: (a -> Bool) -> (a -> a) -> a -> [a]
  26747. until' p f              = takeUntil p . iterate f
  26748.  
  26749. primitive error "primError" :: String -> a
  26750.  
  26751. undefined              :: a
  26752. undefined | False       = undefined
  26753.  
  26754. asTypeOf               :: a -> a -> a
  26755. x `asTypeOf` _          = x
  26756.  
  26757. -- A trimmed down version of the Haskell Text class: ------------------------
  26758.  
  26759. type  ShowS   = String -> String
  26760.  
  26761. class Text a where 
  26762.     showsPrec      :: Int -> a -> ShowS
  26763.     showList       :: [a] -> ShowS
  26764.  
  26765.     showsPrec       = primPrint
  26766.     showList []     = showString "[]"
  26767.     showList (x:xs) = showChar '[' . shows x . showl xs
  26768.                       where showl []     = showChar ']'
  26769.                             showl (x:xs) = showChar ',' . shows x . showl xs
  26770.  
  26771. shows      :: Text a => a -> ShowS
  26772. shows       = showsPrec 0
  26773.  
  26774. show       :: Text a => a -> String
  26775. show x      = shows x ""
  26776.  
  26777. showChar   :: Char -> ShowS
  26778. showChar    = (:)
  26779.  
  26780. showString :: String -> ShowS
  26781. showString  = (++)
  26782.  
  26783. instance Text () where
  26784.     showsPrec d ()    = showString "()"
  26785.  
  26786. instance Text Bool where
  26787.     showsPrec d True  = showString "True"
  26788.     showsPrec d False = showString "False"
  26789.  
  26790. primitive primShowsInt "primShowsInt" :: Int -> Int -> String -> String
  26791. instance Text Int where showsPrec = primShowsInt
  26792.  
  26793. {- PC version off
  26794. primitive primShowsFloat "primShowsFloat" :: Int -> Float -> String -> String
  26795. instance Text Float where showsPrec = primShowsFloat
  26796. PC version on -}
  26797.  
  26798. instance Text Char where
  26799.     showsPrec p c = showString [q, c, q] where q = '\''
  26800.     showList cs   = showChar '"' . showl cs
  26801.                     where showl ""       = showChar '"'
  26802.                           showl ('"':cs) = showString "\\\"" . showl cs
  26803.                           showl (c:cs)   = showChar c . showl cs
  26804.               -- Haskell has   showLitChar c . showl cs
  26805.  
  26806. instance Text a => Text [a]  where
  26807.     showsPrec p = showList
  26808.  
  26809. instance (Text a, Text b) => Text (a,b) where
  26810.     showsPrec p (x,y) = showChar '(' . shows x . showChar ',' .
  26811.                                        shows y . showChar ')'
  26812.  
  26813. -- I/O functions and definitions: -------------------------------------------
  26814.  
  26815. stdin         =  "stdin"
  26816. stdout        =  "stdout"
  26817. stderr        =  "stderr"
  26818. stdecho       =  "stdecho"
  26819.  
  26820. {- The Dialogue, Request, Response and IOError datatypes are now builtin:
  26821. data Request  =  -- file system requests:
  26822.                 ReadFile      String         
  26823.               | WriteFile     String String
  26824.               | AppendFile    String String
  26825.                  -- channel system requests:
  26826.               | ReadChan      String 
  26827.               | AppendChan    String String
  26828.                  -- environment requests:
  26829.               | Echo          Bool
  26830.           | GetArgs
  26831.           | GetProgName
  26832.           | GetEnv        String
  26833.  
  26834. data Response = Success
  26835.               | Str     String 
  26836.               | Failure IOError
  26837.           | StrList [String]
  26838.  
  26839. data IOError  = WriteError   String
  26840.               | ReadError    String
  26841.               | SearchError  String
  26842.               | FormatError  String
  26843.               | OtherError   String
  26844.  
  26845. type Dialogue    =  [Response] -> [Request]
  26846. -}
  26847.  
  26848. type SuccCont    =                Dialogue
  26849. type StrCont     =  String     -> Dialogue
  26850. type StrListCont =  [String]   -> Dialogue
  26851. type FailCont    =  IOError    -> Dialogue
  26852.  
  26853. done            ::                                                Dialogue
  26854. readFile        :: String ->           FailCont -> StrCont     -> Dialogue
  26855. writeFile       :: String -> String -> FailCont -> SuccCont    -> Dialogue
  26856. appendFile      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  26857. readChan        :: String ->           FailCont -> StrCont     -> Dialogue
  26858. appendChan      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  26859. echo            :: Bool ->             FailCont -> SuccCont    -> Dialogue
  26860. getArgs         ::                     FailCont -> StrListCont -> Dialogue
  26861. getProgName     ::               FailCont -> StrCont     -> Dialogue
  26862. getEnv        :: String ->           FailCont -> StrCont     -> Dialogue
  26863.  
  26864. done resps    =  []
  26865. readFile name fail succ resps =
  26866.      (ReadFile name) : strDispatch fail succ resps
  26867. writeFile name contents fail succ resps =
  26868.     (WriteFile name contents) : succDispatch fail succ resps
  26869. appendFile name contents fail succ resps =
  26870.     (AppendFile name contents) : succDispatch fail succ resps
  26871. readChan name fail succ resps =
  26872.     (ReadChan name) : strDispatch fail succ resps
  26873. appendChan name contents fail succ resps =
  26874.     (AppendChan name contents) : succDispatch fail succ resps
  26875. echo bool fail succ resps =
  26876.     (Echo bool) : succDispatch fail succ resps
  26877. getArgs fail succ resps =
  26878.     GetArgs : strListDispatch fail succ resps
  26879. getProgName fail succ resps =
  26880.     GetProgName : strDispatch fail succ resps
  26881. getEnv name fail succ resps =
  26882.     (GetEnv name) : strDispatch fail succ resps
  26883.  
  26884. strDispatch fail succ (resp:resps) = 
  26885.             case resp of Str val     -> succ val resps
  26886.                          Failure msg -> fail msg resps
  26887.  
  26888. succDispatch fail succ (resp:resps) = 
  26889.             case resp of Success     -> succ resps
  26890.                          Failure msg -> fail msg resps
  26891.  
  26892. strListDispatch fail succ (resp:resps) =
  26893.         case resp of StrList val -> succ val resps
  26894.              Failure msg -> fail msg resps
  26895.  
  26896. abort           :: FailCont
  26897. abort err        = done
  26898.  
  26899. exit            :: FailCont
  26900. exit err         = appendChan stderr msg abort done
  26901.                    where msg = case err of ReadError s   -> s
  26902.                                            WriteError s  -> s
  26903.                                            SearchError s -> s
  26904.                                            FormatError s -> s
  26905.                                            OtherError s  -> s
  26906.  
  26907. print           :: Text a => a -> Dialogue
  26908. print x          = appendChan stdout (show x) exit done
  26909.  
  26910. prints          :: Text a => a -> String -> Dialogue
  26911. prints x s       = appendChan stdout (shows x s) exit done
  26912.  
  26913. interact    :: (String -> String) -> Dialogue
  26914. interact f     = readChan stdin exit
  26915.                 (\x -> appendChan stdout (f x) exit done)
  26916.  
  26917. run        :: (String -> String) -> Dialogue
  26918. run f         = echo False exit (interact f)
  26919.  
  26920. primitive primFopen "primFopen" :: String -> a -> (String -> a) -> a
  26921.  
  26922. openfile        :: String -> String
  26923. openfile f       = primFopen f (error ("can't open file "++f)) id
  26924.  
  26925. -- End of Gofer standard prelude: --------------------------------------------
  26926.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --         __________   __________   __________   __________   ________
  26927. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  26928. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  26929. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  26930. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  26931. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  26932. --
  26933. --    Functional programming environment, Version 2.28
  26934. --    Copyright Mark P Jones 1991-1993.
  26935. --
  26936. --    Simplified prelude, without any type classes and overloaded values
  26937. --    Based on the Haskell standard prelude version 1.2.
  26938. --
  26939. --    This prelude file shows one approach to using Gofer without the
  26940. --    use of overloaded implementations of show, <=, == etc.
  26941. --
  26942. --    Needless to say, some (most) of the Gofer demonstration programs
  26943. --    cannot be used inconnection with this prelude ... but a wide
  26944. --    family of programs can be used without needing to worry about
  26945. --    type classes at all.
  26946. --
  26947.  
  26948. help = "press :? for a list of commands"
  26949. quit = help ++ ", :q to quit"
  26950.  
  26951. -- Operator precedence table: -----------------------------------------------
  26952.  
  26953. infixl 9 !!
  26954. infixr 9 .
  26955. infixr 8 ^
  26956. infixl 7 *
  26957. infix  7 /, `div`, `quot`, `rem`, `mod`
  26958. infixl 6 +, -
  26959. infix  5 \\
  26960. infixr 5 ++, :
  26961. infix  4 ==, /=, <, <=, >=, >
  26962. infix  4 `elem`, `notElem`
  26963. infixr 3 &&
  26964. infixr 2 ||
  26965. infixr 0 $
  26966.  
  26967. -- Standard combinators: ----------------------------------------------------
  26968.  
  26969. primitive strict "primStrict" :: (a -> b) -> a -> b
  26970.  
  26971. const          :: a -> b -> a
  26972. const k x       = k
  26973.  
  26974. id             :: a -> a
  26975. id    x         = x
  26976.  
  26977. curry          :: ((a,b) -> c) -> a -> b -> c
  26978. curry f a b     =  f (a,b)
  26979.  
  26980. uncurry        :: (a -> b -> c) -> (a,b) -> c
  26981. uncurry f (a,b) = f a b
  26982.  
  26983. fst            :: (a,b) -> a
  26984. fst (x,_)       = x
  26985.  
  26986. snd            :: (a,b) -> b
  26987. snd (_,y)       = y
  26988.  
  26989. fst3           :: (a,b,c) -> a
  26990. fst3 (x,_,_)    = x
  26991.  
  26992. snd3           :: (a,b,c) -> b
  26993. snd3 (_,x,_)    = x
  26994.  
  26995. thd3           :: (a,b,c) -> c
  26996. thd3 (_,_,x)    = x
  26997.  
  26998. (.)           :: (b -> c) -> (a -> b) -> (a -> c)
  26999. (f . g) x       = f (g x)
  27000.  
  27001. flip           :: (a -> b -> c) -> b -> a -> c
  27002. flip  f x y     = f y x
  27003.  
  27004. ($)            :: (a -> b) -> a -> b     -- pronounced as `apply' elsewhere
  27005. f $ x           = f x
  27006.  
  27007. -- Boolean functions: -------------------------------------------------------
  27008.  
  27009. (&&), (||)     :: Bool -> Bool -> Bool
  27010. False && x      = False
  27011. True  && x      = x
  27012.  
  27013. False || x      = x
  27014. True  || x      = True
  27015.  
  27016. not            :: Bool -> Bool
  27017. not True        = False
  27018. not False       = True
  27019.  
  27020. and, or        :: [Bool] -> Bool
  27021. and             = foldr (&&) True
  27022. or              = foldr (||) False
  27023.  
  27024. any, all       :: (a -> Bool) -> [a] -> Bool
  27025. any p           = or  . map p
  27026. all p           = and . map p
  27027.  
  27028. otherwise      :: Bool
  27029. otherwise       = True
  27030.  
  27031. -- Essentials and builtin primitives: --------------------------------------
  27032.  
  27033. primitive (==) "primGenericEq",
  27034.           (/=) "primGenericNe",
  27035.           (<=) "primGenericLe",
  27036.           (<)  "primGenericLt",
  27037.           (>=) "primGenericGe",
  27038.           (>)  "primGenericGt"   :: a -> a -> Bool
  27039.  
  27040. max x y | x >= y    = x
  27041.         | otherwise = y
  27042. min x y | x <= y    = x
  27043.         | otherwise = y
  27044.  
  27045. enumFrom n           = iterate (1+) n                   -- [n..]
  27046. enumFromThen n m     = iterate ((m-n)+) n               -- [n,m..]
  27047. enumFromTo n m       = takeWhile (m>=) (enumFrom n)           -- [n..m]
  27048. enumFromThenTo n o m = takeWhile ((if o>=n then (>=) else (<=)) m) -- [n,o..m]
  27049.                                  (enumFromThen n o)
  27050.  
  27051. primitive (+)    "primPlusInt",
  27052.       (-)    "primMinusInt",
  27053.           (/)    "primDivInt",
  27054.       div    "primDivInt",
  27055.       quot     "primQuotInt",
  27056.           rem    "primRemInt",
  27057.           mod    "primModInt",
  27058.       (*)    "primMulInt"    :: Int -> Int -> Int
  27059. primitive negate "primNegInt"    :: Int -> Int
  27060.  
  27061. primitive primPrint "primPrint"  :: Int -> a -> String -> String
  27062.  
  27063. show                ::  a -> String
  27064. show x               =  primPrint 0 x []
  27065.  
  27066. -- Character functions: -----------------------------------------------------
  27067.  
  27068. primitive ord "primCharToInt" :: Char -> Int
  27069. primitive chr "primIntToChar" :: Int -> Char
  27070.  
  27071. isAscii, isControl, isPrint, isSpace            :: Char -> Bool
  27072. isUpper, isLower, isAlpha, isDigit, isAlphanum  :: Char -> Bool
  27073.  
  27074. isAscii c     =  ord c < 128
  27075.  
  27076. isControl c   =  c < ' '    ||  c == '\DEL'
  27077.  
  27078. isPrint c     =  c >= ' '   &&  c <= '~'
  27079.  
  27080. isSpace c     =  c == ' '   || c == '\t'  || c == '\n'  || c == '\r'  ||
  27081.                                c == '\f'  || c == '\v'
  27082.  
  27083. isUpper c     =  c >= 'A'   &&  c <= 'Z'
  27084. isLower c     =  c >= 'a'   &&  c <= 'z'
  27085.  
  27086. isAlpha c     =  isUpper c  ||  isLower c
  27087. isDigit c     =  c >= '0'   &&  c <= '9'
  27088. isAlphanum c  =  isAlpha c  ||  isDigit c
  27089.  
  27090.  
  27091. toUpper, toLower      :: Char -> Char
  27092.  
  27093. toUpper c | isLower c  = chr (ord c - ord 'a' + ord 'A')
  27094.           | otherwise  = c
  27095.  
  27096. toLower c | isUpper c  = chr (ord c - ord 'A' + ord 'a')
  27097.           | otherwise  = c
  27098.  
  27099. minChar, maxChar      :: Char
  27100. minChar                = chr 0
  27101. maxChar                = chr 255
  27102.  
  27103. -- Standard numerical functions: --------------------------------------------
  27104.  
  27105. subtract  :: Int -> Int -> Int
  27106. subtract   = flip (-)
  27107.  
  27108. even, odd :: Int -> Bool
  27109. even x     = x `rem` 2 == 0
  27110. odd        = not . even
  27111.  
  27112. gcd       :: Int -> Int -> Int
  27113. gcd x y    = gcd' (abs x) (abs y)
  27114.              where gcd' x 0 = x
  27115.                    gcd' x y = gcd' y (x `rem` y)
  27116.  
  27117. lcm       :: Int -> Int -> Int
  27118. lcm _ 0    = 0
  27119. lcm 0 _    = 0
  27120. lcm x y    = abs ((x `quot` gcd x y) * y)
  27121.  
  27122. (^)       :: Int -> Int -> Int
  27123. x ^ 0      = 1
  27124. x ^ (n+1)  = f x n x
  27125.              where f _ 0 y = y
  27126.                    f x n y = g x n where
  27127.                              g x n | even n    = g (x*x) (n`quot`2)
  27128.                                    | otherwise = f x (n-1) (x*y)
  27129.  
  27130. abs :: Int -> Int
  27131. abs x    | x >= 0  = x
  27132.          | x <  0  = - x
  27133.  
  27134. signum :: Int -> Int
  27135. signum x | x == 0  = 0
  27136.          | x > 0   = 1
  27137.          | x < 0   = -1
  27138.  
  27139. sum, product    :: [Int] -> Int
  27140. sum              = foldl' (+) 0
  27141. product          = foldl' (*) 1
  27142.  
  27143. sums, products    :: [Int] -> [Int]
  27144. sums             = scanl (+) 0
  27145. products         = scanl (*) 1
  27146.  
  27147. -- Standard list processing functions: --------------------------------------
  27148.  
  27149. head             :: [a] -> a
  27150. head (x:_)        = x
  27151.  
  27152. last             :: [a] -> a
  27153. last [x]          = x
  27154. last (_:xs)       = last xs
  27155.  
  27156. tail             :: [a] -> [a]
  27157. tail (_:xs)       = xs
  27158.  
  27159. init             :: [a] -> [a]
  27160. init [x]          = []
  27161. init (x:xs)       = x : init xs
  27162.  
  27163. (++)             :: [a] -> [a] -> [a]    -- append lists.  Associative with
  27164. []     ++ ys      = ys                   -- left and right identity [].
  27165. (x:xs) ++ ys      = x:(xs++ys)
  27166.  
  27167. length         :: [a] -> Int           -- calculate length of list
  27168. length            = foldl' (\n _ -> n+1) 0
  27169.  
  27170. (!!)             :: [a] -> Int -> a      -- xs!!n selects the nth element of
  27171. (x:_)  !! 0       = x                    -- the list xs (first element xs!!0)
  27172. (_:xs) !! (n+1)   = xs !! n              -- for any n < length xs.
  27173.  
  27174. iterate          :: (a -> a) -> a -> [a] -- generate the infinite list
  27175. iterate f x       = x : iterate f (f x)  -- [x, f x, f (f x), ...
  27176.  
  27177. repeat           :: a -> [a]             -- generate the infinite list
  27178. repeat x          = xs where xs = x:xs   -- [x, x, x, x, ...
  27179.  
  27180. cycle            :: [a] -> [a]           -- generate the infinite list
  27181. cycle xs          = xs' where xs'=xs++xs'-- xs ++ xs ++ xs ++ ...
  27182.  
  27183. copy             :: Int -> a -> [a]      -- make list of n copies of x
  27184. copy n x          = take n xs where xs = x:xs
  27185.  
  27186. nub              :: [a] -> [a]           -- remove duplicates from list
  27187. nub []            = []
  27188. nub (x:xs)        = x : nub (filter (x/=) xs)
  27189.  
  27190. reverse          :: [a] -> [a]           -- reverse elements of list
  27191. reverse           = foldl (flip (:)) []
  27192.  
  27193. elem, notElem    :: a -> [a] -> Bool
  27194. elem              = any . (==)           -- test for membership in list
  27195. notElem           = all . (/=)           -- test for non-membership
  27196.  
  27197. maximum, minimum :: [a] -> a
  27198. maximum           = foldl1 max          -- max element in non-empty list
  27199. minimum           = foldl1 min          -- min element in non-empty list
  27200.  
  27201. concat           :: [[a]] -> [a]        -- concatenate list of lists
  27202. concat            = foldr (++) []
  27203.  
  27204. transpose        :: [[a]] -> [[a]]      -- transpose list of lists
  27205. transpose         = foldr
  27206.                       (\xs xss -> zipWith (:) xs (xss ++ repeat []))
  27207.                       []
  27208.  
  27209. -- null provides a simple and efficient way of determining whether a given
  27210. -- list is empty, without using (==) and hence avoiding a constraint of the
  27211. -- form Eq [a] in the full standard prelude.
  27212.  
  27213. null             :: [a] -> Bool
  27214. null []           = True
  27215. null (_:_)        = False
  27216.  
  27217. -- (\\) is used to remove the first occurrence of each element in the second
  27218. -- list from the first list.  It is a kind of inverse of (++) in the sense
  27219. -- that  (xs ++ ys) \\ xs = ys for any finite list xs of proper values xs.
  27220.  
  27221. (\\)             :: [a] -> [a] -> [a]
  27222. (\\)              = foldl del
  27223.                     where []     `del` _  = []
  27224.                           (x:xs) `del` y
  27225.                              | x == y     = xs
  27226.                              | otherwise  = x : xs `del` y
  27227.  
  27228.  
  27229. -- map f xs applies the function f to each element of the list xs returning
  27230. -- the corresponding list of results.  filter p xs returns the sublist of xs
  27231. -- containing those elements which satisfy the predicate p.
  27232.  
  27233. map              :: (a -> b) -> [a] -> [b]
  27234. map f []          = []
  27235. map f (x:xs)      = f x : map f xs
  27236.  
  27237. filter           :: (a -> Bool) -> [a] -> [a]
  27238. filter _ []       = []
  27239. filter p (x:xs)
  27240.     | p x         = x : xs'
  27241.     | otherwise   = xs'
  27242.                   where xs' = filter p xs
  27243.  
  27244. -- Fold primitives:  The foldl and scanl functions, variants foldl1 and
  27245. -- scanl1 for non-empty lists, and strict variants foldl' scanl' describe
  27246. -- common patterns of recursion over lists.  Informally:
  27247. --
  27248. --  foldl f a [x1, x2, ..., xn]  = f (...(f (f a x1) x2)...) xn
  27249. --                               = (...((a `f` x1) `f` x2)...) `f` xn
  27250. -- etc...
  27251. --
  27252. -- The functions foldr, scanr and variants foldr1, scanr1 are duals of these
  27253. -- functions:
  27254. -- e.g.  foldr f a xs = foldl (flip f) a (reverse xs)  for finite lists xs.
  27255.  
  27256. foldl            :: (a -> b -> a) -> a -> [b] -> a
  27257. foldl f z []      = z
  27258. foldl f z (x:xs)  = foldl f (f z x) xs
  27259.  
  27260. foldl1           :: (a -> a -> a) -> [a] -> a
  27261. foldl1 f (x:xs)   = foldl f x xs
  27262.  
  27263. foldl'           :: (a -> b -> a) -> a -> [b] -> a
  27264. foldl' f a []     =  a
  27265. foldl' f a (x:xs) =  strict (foldl' f) (f a x) xs
  27266.  
  27267. scanl            :: (a -> b -> a) -> a -> [b] -> [a]
  27268. scanl f q xs      = q : (case xs of
  27269.                          []   -> []
  27270.                          x:xs -> scanl f (f q x) xs)
  27271.  
  27272. scanl1           :: (a -> a -> a) -> [a] -> [a]
  27273. scanl1 f (x:xs)   = scanl f x xs
  27274.  
  27275. scanl'           :: (a -> b -> a) -> a -> [b] -> [a]
  27276. scanl' f q xs     = q : (case xs of
  27277.                          []   -> []
  27278.                          x:xs -> strict (scanl' f) (f q x) xs)
  27279.  
  27280. foldr            :: (a -> b -> b) -> b -> [a] -> b
  27281. foldr f z []      = z
  27282. foldr f z (x:xs)  = f x (foldr f z xs)
  27283.  
  27284. foldr1           :: (a -> a -> a) -> [a] -> a
  27285. foldr1 f [x]      = x
  27286. foldr1 f (x:xs)   = f x (foldr1 f xs)
  27287.  
  27288. scanr            :: (a -> b -> b) -> b -> [a] -> [b]
  27289. scanr f q0 []     = [q0]
  27290. scanr f q0 (x:xs) = f x q : qs
  27291.                     where qs@(q:_) = scanr f q0 xs
  27292.  
  27293. scanr1           :: (a -> a -> a) -> [a] -> [a]
  27294. scanr1 f [x]      = [x]
  27295. scanr1 f (x:xs)   = f x q : qs
  27296.                     where qs@(q:_) = scanr1 f xs
  27297.  
  27298. -- List breaking functions:
  27299. --
  27300. --   take n xs       returns the first n elements of xs
  27301. --   drop n xs       returns the remaining elements of xs
  27302. --   splitAt n xs    = (take n xs, drop n xs)
  27303. --
  27304. --   takeWhile p xs  returns the longest initial segment of xs whose
  27305. --                   elements satisfy p
  27306. --   dropWhile p xs  returns the remaining portion of the list
  27307. --   span p xs       = (takeWhile p xs, dropWhile p xs)
  27308. --
  27309. --   takeUntil p xs  returns the list of elements upto and including the
  27310. --                   first element of xs which satisfies p
  27311.  
  27312. take                :: Int -> [a] -> [a]
  27313. take 0     _         = []
  27314. take _     []        = []
  27315. take (n+1) (x:xs)    = x : take n xs
  27316.  
  27317. drop                :: Int -> [a] -> [a]
  27318. drop 0     xs        = xs
  27319. drop _     []        = []
  27320. drop (n+1) (_:xs)    = drop n xs
  27321.  
  27322. splitAt             :: Int -> [a] -> ([a], [a])
  27323. splitAt 0     xs     = ([],xs)
  27324. splitAt _     []     = ([],[])
  27325. splitAt (n+1) (x:xs) = (x:xs',xs'') where (xs',xs'') = splitAt n xs
  27326.  
  27327. takeWhile           :: (a -> Bool) -> [a] -> [a]
  27328. takeWhile p []       = []
  27329. takeWhile p (x:xs)
  27330.          | p x       = x : takeWhile p xs
  27331.          | otherwise = []
  27332.  
  27333. takeUntil           :: (a -> Bool) -> [a] -> [a]
  27334. takeUntil p []       = []
  27335. takeUntil p (x:xs)
  27336.        | p x         = [x]
  27337.        | otherwise   = x : takeUntil p xs
  27338.  
  27339. dropWhile           :: (a -> Bool) -> [a] -> [a]
  27340. dropWhile p []       = []
  27341. dropWhile p xs@(x:xs')
  27342.          | p x       = dropWhile p xs'
  27343.          | otherwise = xs
  27344.  
  27345. span, break         :: (a -> Bool) -> [a] -> ([a],[a])
  27346. span p []            = ([],[])
  27347. span p xs@(x:xs')
  27348.          | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  27349.          | otherwise = ([],xs)
  27350. break p              = span (not . p)
  27351.  
  27352. -- Text processing:
  27353. --   lines s     returns the list of lines in the string s.
  27354. --   words s     returns the list of words in the string s.
  27355. --   unlines ls  joins the list of lines ls into a single string
  27356. --               with lines separated by newline characters.
  27357. --   unwords ws  joins the list of words ws into a single string
  27358. --               with words separated by spaces.
  27359.  
  27360. lines     :: String -> [String]
  27361. lines ""   = []
  27362. lines s    = l : (if null s' then [] else lines (tail s'))
  27363.              where (l, s') = break ('\n'==) s
  27364.  
  27365. words     :: String -> [String]
  27366. words s    = case dropWhile isSpace s of
  27367.                   "" -> []
  27368.                   s' -> w : words s''
  27369.                         where (w,s'') = break isSpace s'
  27370.  
  27371. unlines   :: [String] -> String
  27372. unlines    = concat . map (\l -> l ++ "\n")
  27373.  
  27374. unwords   :: [String] -> String
  27375. unwords [] = []
  27376. unwords ws = foldr1 (\w s -> w ++ ' ':s) ws
  27377.  
  27378. -- Merging and sorting lists:
  27379.  
  27380. merge               :: [a] -> [a] -> [a] 
  27381. merge []     ys      = ys
  27382. merge xs     []      = xs
  27383. merge (x:xs) (y:ys)
  27384.         | x <= y     = x : merge xs (y:ys)
  27385.         | otherwise  = y : merge (x:xs) ys
  27386.  
  27387. sort                :: [a] -> [a]
  27388. sort                 = foldr insert []
  27389.  
  27390. insert              :: a -> [a] -> [a]
  27391. insert x []          = [x]
  27392. insert x (y:ys)
  27393.         | x <= y     = x:y:ys
  27394.         | otherwise  = y:insert x ys
  27395.  
  27396. qsort               :: [a] -> [a]
  27397. qsort []             = []
  27398. qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
  27399.                              [ x ] ++
  27400.                        qsort [ u | u<-xs, u>=x ]
  27401.  
  27402. -- zip and zipWith families of functions:
  27403.  
  27404. zip  :: [a] -> [b] -> [(a,b)]
  27405. zip   = zipWith  (\a b -> (a,b))
  27406.  
  27407. zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
  27408. zip3  = zipWith3 (\a b c -> (a,b,c))
  27409.  
  27410. zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
  27411. zip4  = zipWith4 (\a b c d -> (a,b,c,d))
  27412.  
  27413. zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
  27414. zip5  = zipWith5 (\a b c d e -> (a,b,c,d,e))
  27415.  
  27416. zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
  27417. zip6  = zipWith6 (\a b c d e f -> (a,b,c,d,e,f))
  27418.  
  27419. zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
  27420. zip7  = zipWith7 (\a b c d e f g -> (a,b,c,d,e,f,g))
  27421.  
  27422.  
  27423. zipWith                  :: (a->b->c) -> [a]->[b]->[c]
  27424. zipWith z (a:as) (b:bs)   = z a b : zipWith z as bs
  27425. zipWith _ _      _        = []
  27426.  
  27427. zipWith3                 :: (a->b->c->d) -> [a]->[b]->[c]->[d]
  27428. zipWith3 z (a:as) (b:bs) (c:cs)
  27429.                           = z a b c : zipWith3 z as bs cs
  27430. zipWith3 _ _ _ _          = []
  27431.  
  27432. zipWith4                 :: (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e]
  27433. zipWith4 z (a:as) (b:bs) (c:cs) (d:ds)
  27434.                           = z a b c d : zipWith4 z as bs cs ds
  27435. zipWith4 _ _ _ _ _        = []
  27436.  
  27437. zipWith5                 :: (a->b->c->d->e->f) -> [a]->[b]->[c]->[d]->[e]->[f]
  27438. zipWith5 z (a:as) (b:bs) (c:cs) (d:ds) (e:es)
  27439.                           = z a b c d e : zipWith5 z as bs cs ds es
  27440. zipWith5 _ _ _ _ _ _      = []
  27441.  
  27442. zipWith6                 :: (a->b->c->d->e->f->g)
  27443.                             -> [a]->[b]->[c]->[d]->[e]->[f]->[g]
  27444. zipWith6 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs)
  27445.                           = z a b c d e f : zipWith6 z as bs cs ds es fs
  27446. zipWith6 _ _ _ _ _ _ _    = []
  27447.  
  27448. zipWith7                 :: (a->b->c->d->e->f->g->h)
  27449.                              -> [a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]
  27450. zipWith7 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs)
  27451.                           = z a b c d e f g : zipWith7 z as bs cs ds es fs gs
  27452. zipWith7 _ _ _ _ _ _ _ _  = []
  27453.  
  27454. unzip                    :: [(a,b)] -> ([a],[b])
  27455. unzip                     = foldr (\(a,b) ~(as,bs) -> (a:as, b:bs)) ([], [])
  27456.  
  27457. -- Formatted output: --------------------------------------------------------
  27458.  
  27459. cjustify, ljustify, rjustify :: Int -> String -> String
  27460.  
  27461. cjustify n s = space halfm ++ s ++ space (m - halfm)
  27462.                where m     = n - length s
  27463.                      halfm = m `div` 2
  27464. ljustify n s = s ++ space (n - length s)
  27465. rjustify n s = space (n - length s) ++ s
  27466.  
  27467. space       :: Int -> String
  27468. space n      = copy n ' '
  27469.  
  27470. layn        :: [String] -> String
  27471. layn         = lay 1 where lay _ []     = []
  27472.                            lay n (x:xs) = rjustify 4 (show n) ++ ") "
  27473.                                            ++ x ++ "\n" ++ lay (n+1) xs
  27474.  
  27475. -- Miscellaneous: -----------------------------------------------------------
  27476.  
  27477. until                  :: (a -> Bool) -> (a -> a) -> a -> a
  27478. until p f x | p x       = x
  27479.             | otherwise = until p f (f x)
  27480.  
  27481. until'                 :: (a -> Bool) -> (a -> a) -> a -> [a]
  27482. until' p f              = takeUntil p . iterate f
  27483.  
  27484. primitive error "primError" :: String -> a
  27485.  
  27486. undefined              :: a
  27487. undefined | False       = undefined
  27488.  
  27489. asTypeOf               :: a -> a -> a
  27490. x `asTypeOf` _          = x
  27491.  
  27492. -- I/O functions and definitions: -------------------------------------------
  27493. -- This is the minimum required for bootstrapping and execution of
  27494. -- interactive programs.
  27495.  
  27496. {- The Dialogue, Request, Response and IOError datatypes are now builtin:
  27497. data Request  =  -- file system requests:
  27498.                 ReadFile      String         
  27499.               | WriteFile     String String
  27500.               | AppendFile    String String
  27501.                  -- channel system requests:
  27502.               | ReadChan      String 
  27503.               | AppendChan    String String
  27504.                  -- environment requests:
  27505.               | Echo          Bool
  27506.           | GetArgs
  27507.           | GetProgName
  27508.           | GetEnv        String
  27509.  
  27510. data Response = Success
  27511.               | Str String 
  27512.               | Failure IOError
  27513.  
  27514. data IOError  = WriteError   String
  27515.               | ReadError    String
  27516.               | SearchError  String
  27517.               | FormatError  String
  27518.               | OtherError   String
  27519.  
  27520. -- Continuation-based I/O:
  27521.  
  27522. type Dialogue    =  [Response] -> [Request]
  27523. -}
  27524.  
  27525. run        :: (String -> String) -> Dialogue
  27526. run f ~(Success : ~(Str kbd : _))
  27527.                  = [Echo False, ReadChan "stdin", AppendChan "stdout" (f kbd)]
  27528.  
  27529. primitive primFopen "primFopen" :: String -> a -> (String -> a) -> a
  27530.  
  27531. openfile        :: String -> String
  27532. openfile f       = primFopen f (error ("can't open file "++f)) id
  27533.  
  27534. -- End of Gofer simplified prelude: ------------------------------------------
  27535. s     WonderWorks     WonderWorks     WonderWorks      Tëû 뜖ëïdX.†⇧€ÿ³Îã°⇧âœèSãð°Ñ°Kâ°⇧à°⇧à ã ã  ã@ ã«è0SâüÿÿÊð°áïSêê–}CåDs'£Û/%ö—â™áë—+é’º$sÇ"•ñë–è/›è½@áê— yHQåç¨s—“+ûÏLDÏ»—áæ    ¼D~ë<_qÌDÇ.ctøRöƆ7⇦ËCÀ¼ißTßw’hß÷Oß⇧‘dß÷[\−_øÈ,òɆôʆCË<ï_D¸gI™9ìåÀ‰À9î_I&™èï»&\IØóZI¸ïXI¸*ýâTúÇ!cîYhøÏ,p€cuñ „! 6Ŵ]ÈQþåTî ¹¦wJÔ;¾ïG«æèö÷îsïî®à*óІÜÞ†`\flÚä†Øå†Ôç†Ôè†⇩⇧…åf¯s—“Ç9î…澉÷Gî櫾Uà*À9îUtøÖæûRæûâ9îTZïxæɯ^îä9îG­À9î à*À9îê^îGàïï÷î*sþmà÷`澉9ûëÔÇîDÖ~  çfiÁq*çfi ñ9þàç^Àî*êþÔCO⇦ïÛ$ÜHÈÇ9îXáþÃTî9gèäÞ9Iê^Àî:æê‰êï»ÈHÈÇ9îêƾ&ÂHØóÀH¸ï¾H¸*ýåºù§!iaPs’+ûÏL8Ï+\á[}    lÀ9îGæè4}¬nÀ9îGæèO¬þirTsåûpfiò<+üáL¼    \ÅTt™ææÀ‰¬^î9‘}æTÇîü徉ðGî·fîÇ9îô徉÷GîP«þtlAsåûð8+üáL¼    ò[Å9~æ]À‰¬GîåO¯saCs’+ûÏL8Ïá[á[@~    lÀ9îaH&™¬Gî9`~æÒÀþ¬GîåO¯dsA$+ûÏLDÏÉ[á[8    Ü¬®¤fifk~ï¾Çîºë;KÁkÏéwÀîXÿÂkîv¾æèàÞkIêòÀ¾f4HøÇkîÆvkïëvÏî¦ÎîÏkî¼Twþ¿¾TÈÛvîРý<RçûshRsåûð@+üáL¼    ⇩[ÅäIæ⇧ɨÆØÇÉ
  27536. £ÿþtðÀ9îdÌflöÇ9îê¾þ÷Gî櫾☓)ÿúoî³Q~G²îºêÎ9GêXßþÂkî91æèàÞæIºoCkmQDiLsn’+ûÏL8ÏS[á[h,º®−ô™ÝòæÀ‰‰ÜÇôíô⇨ÞòÊG¸ê8Ç'Ŷ‘4¢t¡eLdn1üðI+üáL¼    6[Åwåŷðáëþoü æþÞ¾†−ZüÂkîoßïv®îàÞGÊocïÂøîö²¾‡G™ïÛwŒGè«ùîwÎvÿîðÈÎo>êÂøîæ²¾åS¯s-“+ûÏLKÏûZá[ Ì⇩øð,ôä;Ö ÍÎ!øgæå- Õ¿ÎÖmøÂ×]øÂ:zÓïaB¸iG™\B(…ïÛ$dGÈôP<ÖXLÃnê   ÈõϹWGë⇧Ì5©miômõRG¸&PGØKNGØóLG¸JGÈëõ»ûFG¸ç◰¾»æÈôœÝàLÃnîîô86Öõ8G¸&6GØò4G¸ó2G¸0GÈô–Ý+G&™)Gñ⇧'Gó⇧D=lÊôí‘侉ëï»    GÈëó»&GØñG¸ïG¸G™ýS¿ç◰¾ïæ¸ô¨=Ö    GÉïÛCæG⇦ýS¿ç◰¾ñy渠   þFÈôè=ÖhäÉ÷Fñ⇧ïÛSôFøò⇦¼ô`7ÖñîF¸ëø+oCMsåûmòL+üáL¼\ZÅ
  27537. Ìøû,d>æ$§Çx^æê¸çõÕ†òÖ†q×<<NÜïÁA¸ÉF™¼>òmÄôíÄNænê‰Íº†Ëý†Øsñ{¹Fø™&©ÝµFiŷ³FK™±Fô⇧Ìñÿ»Ãæç⇧4”    lÄTî<Oæ&êÞñ¢F¸ô F¸fiFÈËTî侉ò    ¼÷Ds×ñ“F¸◰‹Fè    ‘FÈŴôë&…FØñ⇩F¸ï⇦F¸ŶF™RSflÿ¼çñ»ï„æ¸ôè?ÖyFĉïÛ+vFøñ²¸øL4ÖpFÈÿ¼çñ»ôŵ渠   hFÈô@@ÖÒãĉaFñ⇧ïÛ]ø+¨4òkYFö™+óû9Vø·t“+ûÏL5ÏÇYá[æ    ¼ H*I⇦ÌΆ½◰˾ÇÉ¿ÅÉWúÀÒ†á¬Nýôø@Ö¾Çîà&•Nýt~9;û#ùD+üáL¼    ¢YÅüGæ⇧H§Hfâ̆7⇨ËCżi⇨ÿghÿBß÷klÿijÿŶŷÿâfÏŷϹÎΆÂÒ†ÈÞ†/á<RiöÂå†Üç†'è<RæûÇ9î*¾þ9Èè:ÛÞ^X°öÀkîïå¿ëEv‰éEó⇧9ìýÛÎ8ADjè¾7ù*À9î®æÈÀkîòªæ¸Õ÷*Æ⇨……Rýt~9;x#©ú@ùK+üáL¼    @YÅÌô~ÝZøº,jææ⇧Vøº,ï¯@¸·E™ª@$…ïÛ²EÈŴææ⇧éï»ï¬E¸©Eŷ§E&™¥Eô⇧£E&™êï»( EÈtGç⇧"جòÛ&—EØï„E¸›Eé⇧’Eó⇧Ìï◰@¸⇧E™æ¼Î_GÈÄCjÇôíÌcæÚç‹qáêò»|EÈ&ëÛòxE¸ïvE¸sE™ïÛ&pEØïnE¸kEé⇧iEó⇧ôû»+æûÿ[¿æò»V+ÿ1tax+úÏLKÏ»›Ñá
  27538. Ìè¼$2HÈH€'Gx›øÌ,7cÅCż†pÿ‹ßœklÿÖß×ßwkß…efÿ\¡flÎøá,Î◰ËÒÎÉÞ#øÂYÇøòøâ,Ŷøå,Àøè,⇨⇧…x½ß§ñ1ta±#E™!E&™kïë`}Â~8þòE¸ûE¸¢k~©1~+fl÷泸ºGÈÞZgJ»JÙßµ%OË[dflï÷?¸ÿD™ñ$¼ûD™ùD&™êï»òöD¸ôDÈÂkîõþ»!+•ôd4Ö'ÂÎêwîGÈ,tñ{áDô™ßDô⇧ïÛ&ÜDØïÚD¸ÂvîòÖD¸Óö+ôqÝ'ÂÎêwîGÈÈsñ{ÇDô™ÅDô⇧ïÛ&ÂDØïÀD¸Âvîò¼D¸¹ö+Âkîþ×ã¸+ñûñU¸¯D™­D&™èï»òªD¸§ö+ŒGè⇧ê.†¦Fæ⇧º¬JÞµÙßh[PJ»e»õ‘6…6"ï⇨?¸’D™ñ(¼™D™⇧D&™ëï»ò⇦D¸ŷDÈ⇧õëŴDô™Dö⇧7$Ü⇦6c/°Fæ⇧êï»ïvD¸ôD6Öþ¾æÈk{ìàÞçî ³pvS?úe©òK+üáL¼ÚXÅ Ì2Fæ⇧Ê…­ÆcCøRëƽŶ˾êÉ¿6øÂÂéÉoçùåƆãȆ'ɬÏvîèò»vÂø!øä,Ø◰ËÞÎÉâÛÉYÙùÖå†%øç,Òè†ëŴ ⇧pvd?ve©âxºâny\ïòÒ¾è⇧¯zîävîE­SæûÇvî+çûv…ïòϾÏèûïÛ ö+òý»+èûPcmpVúa°òB+üáL¼xXÅ Ìô⇦ÝòϾ•æè⇧ŶÜÏôíèò»ôã¿ëõ)r#pvCûùF+üáL¼\XÅ Ìv|¯æÍÇîèò»ræÈÀvîwÄ®æòõ¾àèûÍCô⇧vìòϾaæè⇧*ôûpyÄõ7ú9ùA+üáL¼
  27539. 6XÅ‘,flfs^î}ÿ´|¡û^ì-êU\uÆpG»JT¼2ZëŶÄ»F'º¬ÁTî‡C'TÔíQÁþ    F'º¬ÁTî’C'TÕíoÁîQêþºêÎæ4ººJ@Èæºó)erteLcmpûùK+üáL¼òWÅ
  27540. Ü$ÌôL:Öácí`:☓oÊôíP[ènþ¾ÆEÈ‘:jÊôíô|;Öõ¾¾$ZCÈ-ö~\hküÈJ⇧Ehóî´[æMC•@>©™ïÛKHCØóFC¸DCÈô‘Ýëɾñ>C¸    <CÈô–ÝäÞêÇ ³⇧E&™è$¼E&™ïË+Cê⇧lKæ«fí^#üv☓°æñÒ¾Ïçû¯wîô☓<ÖäÞ"DÊÀ;\oÒôíçñ»¸<ÓoäôíE­kÌ¢æÍcíçñ»ofiåè«fíxók”E)‰SÕýeDrapyûùF+üáL¼lWÅ Ìô−ÝH±ÇnávîºÀÎéÒ¹ºaÈvÎéòϾåæè⇧    Ìèò»ñrå¸ïÖB¸*ýÒôÇèò»g*•u³Fcmp1ûùK+üáL¼>WÅO ÌCvwT“æ0=Çn¾ôíóåDØÇTîò¾Þ^üô\=Ö`ÉÞpMãh®îô‡ÝàÞ-õDZ—−_låÝçæÝŵöå“Ÿ.™çû»Ñ◰þ9ï{ï‰B¸⇧BX‰ÌNæ«÷îeB÷ô>ÖÌÀ¾õŷ»ºðDÈ(>jÀôíwBõ⇧ ?$lÛôí>ý¬
  27541. ŷ~Rdflôd>ÖôÀ¾ºÚDÈ€>jÀôíaBô⇧x?lÛôí@ý¬å€pT4ÊÉf“S¯úhòK+üáL¼ÈVÅá°P
  27542. !ßÉØÁô²fvYïÁÊîyÏïäÞæHºŶȺØÏ»ÈɼÌÉ#Êñþ»+èû§Ïñþ»+èû²Ïñþ»+èûñßà·+èûtÆjáG#aPdH’+ûÏLEÏ•Vá[
  27543. Ìv̳æÞÇî輦¶ÂãCÈÌèÉÎäÉÒÖÉø<H◰ïÛBÈÂkî.òÛo.ãèï÷îïöA¸óA™÷oî«Îk2ßçwÂîòê¾oèAèxðîãA•ðoî·xîÉkîÌÞ‰Âkînùàø¤k~<ÍÚ_Ï约<g…ڢ΢xþ⇨ÇAó⇧缆<g…º¢Î…@êè¾DÈÇvîR©þ@Q`iêîêêî‹‘ö§rB“+ûÏL3Ï!Vá[Å}CÈ⇦ʹÁ7ÌkCûabÿg`ÿcfÿ¾ßâMÏŵɹÆÞ†á¬MýÀå†è¬Mýxŷ……MýrB‹J‹©tr$+ûÏL5ÏñUá[æ    ¼ÅKCÈÔ¹Á7ÌtCûbcÿqaÿepÿ\dÿÎâ†È☓ËÞÉÉáÇÉ"ÚåNϹ¡−è¬Ný:uÌ›ªëö±ÛpNfl<ŷ……Nýr‹J“t¢ht+ûÏLLϵUá[
  27544. ÌÌ@C@mæôíÍi„çɾÜ~.AxªG~lSæ'AG~☓cæ‘C·nËôíQ ~ç‘êö»(AÈÛ9îÄý†Zææ⇧bæ…÷¼†&ëÛïbC¸ôHs×éѾ$°åÈãý,ÿ¾¹éñ»ï¨å¸ù@ê⇧ïÛõó+“\©hJ+ûÏLLÏeUá[
  27545. Ì>Üôôs×ÇÎ)ÆÎÔC¾‰`Dæ&Cô‰Äwç¯Îèô»$0Èô‘4ÖýÛÎæĹæȺæÈêà³C&™qïÛÐôíÔaýPsï{Áôíïº@¸·@ŷý̾œ−ñþ»[åa™éï»ï¬@¸+ý[¨ó–aTnoaXûbfiòB+üáL¼UÅ¿¥&ãÛï—@¸”@ç⇧)&ý`Œ‹ógÏkî¤⇧¿nÈ«&ãÛï⇦@¸ÀkîfþoÍBèfðîY·þÏTîççû¬^îQæû¼¬ªû"ùK+üáL¼æTÅ:
  27546. ÜpâŶ€ñô 5Ö¾Çîäå(…õà€p±éf½û¸ô<5Ö|6ÇnÆôíÿäé⇧ëï»óP@¸N@Èô¨6ÖýÛÎè7º“S¯h¢+ûÏLLÏ·Tá[ Ì&:ÍBæ⇧ì0=dßÊð5`oÉôíÍÀ¾<7.jÉôíÍÀ¾+Êô$6ÖÈÎ)ÆÎC¾‰xGæ`Bô‰TFæ¯Îæô»$jæÈô¨7ÖÝÞçĹ    ÝÏ»WåÈêȳWB&™◰ïÛgôÝaÎÞïŷæ¸ôÌ6Ö¿gíïò?¸ï?ŷܾœ−òg½›äa™éï»ïä?¸+ýOddaàòtesff!+ûÏL:ÏQTá[
  27547. ÌXðû_-ïÅïÐ?¸Ø{¼ãøÒ´wSkmOhcti+ûÏL6Ï;Tá[ÜH
  27548. lðîï¼?¸ô¼7Ö&Àþnioj¶òúwSñE+üáL¼(TÅø­
  27549. lßvîk8flæðÇÎÉÕé̾þк†Çkîêçûk    ìÍÉîÆvî-âç⇧’?ñ⇧ïÛ™ò*ÉkîvÍîçƾ
  27550. *•a¨cb#+úÏL5Ï÷Sá[æ    ¼ÉQAÈØÂÉ©© :NoÇôí&¾þ'ë¸úðK+üáL¼àSÅ Ì8Aæ⇧(¼X fCøÐ,ÃcÅŶó¹Qø½,Oø¾,ò¿†IøÂ,ÆtÏÈðÉÉïÉÊHøÂk(êòϾgè⇧ä:ßÇŶê¹ øÑ,Ð؆1øÞ,æâ†å[ÏæäÉçâÉèÝÉ⇧ÞÉv☓ø' ækîyZïòÓ¾(è⇧çkîG    ­khïbÏþÇkîZåþÓyîèò»k]è    çÞWGúòý»ÆèûSæûçñ»fß+òý»+èû'—¿P~+ûÏLBÏmSá[Ìè  lÏkîèò»oâï<¢¬nÏkîèò»ovæèQ¬þTg'Kû/ùF+üáL¼PSÅ Ìv\°æòϾaæè⇧¬wîk°¢æwÀîòõ¾ßèûðoî·xîÇkîò;Mæè⇧÷oîR«þA¸'++úÏL>Ï'Sá[Ì„ ÜÀôíy)äX^H›æò÷¾^4æèP¬þV®'++úÏL=ÏSá[ã    ¼^‘›æhŵõnT9þýýÎ×ÃéûÖîH¡¥¥ý†9 {uá^ÀîPêþV®'+rteL'ûceñK+üáL¼ìRÅ Ì$>Ol    þôü<Ö¾Æîóý¤@ûŷŴ€åo•xNxÏ4=滪Wôx>ÖÖÕîï¯çÞ:¾‰ZòýlMæK>©°Næ    ¯×‘±Gj    ªw~äï»ò@>¸>>ÈwJíô>±näôí5­\o÷ôÜ=ÖòÒ¾Ðèûô(?ÖäÞŵE꺬ôH?ÖÍÇîèò»S²åø^o÷v<²æòÒ¾©åè⇧¯wîô‘?ÖäÞŵDêo¨¥æ€^ðn·îÇkîò;”åè⇧÷oî櫾'S¿e F²#+ûÏLKÏmRá[̦ lÇkîyôÀæ@¾‰k$ìÆÇîÍÆî„Åsåò⇧,ükìÆÇîÍyîõÀ¾S‘øs¾“+úÏLIÏERá[    Ì⇦?⇩oøîôÈ@ÖÎÎî@¯×¿þ¸?}oÂôí)@ñ⇧ź†ôÔ?Öö¾(°=È nßùîô0AÖ¿Îîcÿô@Öõþº@È0@jÃôí−=õ⇧|A$läôí@­ô¥ÝàÞåÌp4øî°kæ¿ÎîµîøîÎÎîÝî² =@ÍÈ@ŷoøîôBÖÎÎçuÿô@æø§çØÅœDBûkÎôí¿þ(AdoÃôíÍ?õ⇧º¬HAAmÃôíS=õ⇧“B$läôí?­ô¨BÖàÞ
  27551. Ú Ó¥ÆÙøîôÐBÖ¿ÎîäBµnÝôíÀ =» 
  27552. =qS¯ú‘ù@+üáL¼    ¨QÅ?æ⇧¨0⇨f3øØ,ÉcÅŶì¹køÂ,iøÃ,gøÆ,eøÈ,ÊtÏÐGøÂÑLøÂ9*êaÀ‰ïÛê.)ôå†Þ◰ËâóÉäPøÂ^Nøò£æ†¶ −ç›ø¶−−èJøÂ⇧BøÂ?ßéŴx‘qŒß9îkZïÑÂþ®oîà9îG­90ßçkÇîZÞþÂkîoªæè9®îàÞ9Gê¾ÇîG æè«÷î9nï6À‰ïÛÉñ)À9îêoîG‘æèsðî9·îÞÇîkXïA‰à9îI­QæûPpmoqûa°ò8+üáL¼    $QÅô‰ÞqæÀ‰⇧ìÀôíòl渇ñ'[\−Tpmoqr#“+üÏL<Ï Qá[<⇩    lÇTîß¾þTìX⇩Çn¾TîòPæ¸ŵ<ÈÀTîòJæ¸{ñ(Cpmoqûa¢ò8+üáL¼    ìPÅ9¸zæ9æÀ‰¬Gî/Oÿ,fH☓wàCà(g$8wwXâ»(({w,à@ÀqÆà… ±Ò€ Òŵ-€-Àŵ"€ ñ gRy4Uàŵa8UgUþ?ÒÇÃû†â‰àÓºâ×µ-ëGZ"_üEeliþû8ù;+üáL¼²PÕ`x¢ÙT‰6ûÛñÛûÈÞ¸&Ýâ¾ãØ â¸zf(â$âfïå,âŷ&ûÛK™íÛmWPflDeliþsnfe+üÏLHÏ⇧Pá[v0ŵç    O>Èy$◰ç’K>X•8Í`†.xhkh…ö\0T)niliýoé¦Úê‰X    üÀkîT$èýÛÎçIºQxg…v^îöênºvÎ]<úêoîçÖ¿Cxg…y^îñêÞºyÎ+Dúþêok¡l€ig3ùlN¤ð⇨I+üáL¼    FPÅkL‡æ\ºÇn¾yî$⇦8ÈÀyîoìêêîý=Ȥ    ‡ x«Ñ„Èþa¯l€ig3ùlN¤kéÇÞoãâèy¬îýÛÎçFº'.ÝûÃâ¸çó»ûHà¸&çÛ,ãÈ,Ïêò»Ô.ýþS¯¥Meli¡ùrN¤ð⇨I+üáL¼    þOÅ:uÌ‘­ë¦ë⇦®lÆvî¸=¾‰ÜÕÏY°»övpéïÙ‰àyîI­[üÉvî†â™®wîàyîF­.çÛ|â'™ôû»àç⇧çû»åâ&™,üò¼.æÛSÀÿl€Gwen1ùlN¤ýù.+üMCÏ·Oá[
  27553. Ì}ì|fiäkv= ðŷ,ò$ðf¿(ô¶A3öÅE¸kÐ⇧ÕÛêû'û{Qŷç⇧RÔýiyþJûð5+üáL¼ï“Oµñø8ÆòÂÉËi&Ú´³Ýî-VÈ Æf(Æ$ÆfN,Æö$    |Ô-;Ø*;)‰ $Õ} ×';hNN•oi +üÏL3ÏkOá[4w/} ÜÍfðÍôÍfèÍHmäÍ.m‰ïË⇦t™èê⇨­% s%SÓk©#;œ+ûÏL5ÏOOá[æ    ¼fi™ª…øËHDfʺ†ÜËmðË môËmèËmäËm!NflV€™ý⇦4¶L™fl…€&•!⇩ºedokDcÜr¾3gi0£® #;œ+ûÏL=Ï!Oá[    Ì Ùæ[⇧o™hºøæÆÒÙ ÜæÖðæÖôæÖèæÖàæäæfççfÉæûòüæ¶(’üêm²Ñd5€h™¡…J(•™P‘“!⇩ºeÚok4†5ifib2 Çsf+úÏL4ÏëNá[.Èmæ¹ ‡Ä¬W,Îä×Ö+×íàñ¼,bÄóìÇ-^_ð\h’[âa’U°ûW-Îô$×}à)ð×vàÚpl ­×ݼ+Î&ÙóÜ'£ßw%ñ¬àĹ☓ô’ç‰^DÎ÷ÃÍ    gë®oÜU⇩÷™j⇨Nô×ö/î¯?Ügð¼    /îÈäÒaUãûþ…/‰Nô×öLÅt‰4ûIò8+üáL¼    ‰NÅ$0@}vꆦ¼1ÇÃi1z½¬ŒD‰ x7ÆÆ’…⇦OåŶAñXɪ ÃlÅCât_¤. Senilwenûpikñ4+üáL¼¨fNÕ¼+Îü$4s1øº,.mæè> ¦Åæ™%gæxØWlbæN•Ó.ÎÃûÉÄúÉ ÀÙÚ\´æø±æ™RæT•Ä.Î ÀÙ.JêÛ  =º%Ç$$z¹º†P,‰¢ 8ÆF…>ŷzÿ&:&•y¥0;p - r¨y spahreogrof uoeMht t1?s'cynAesolc#;œ+üÏL4ÏNá[+ oæÀ¼†½¬^…/‰»ZÏTú.ÞïL ­Ü×m1Nÿ,{wåflà(({ <Ürj{àLP µàL—È2X/Zt−spWp¸~å‰s$ãûrExa/û‹ù5+üáL¼    àMÅüø9ÖËù~ø:lflýË&í⇧øtnyS!ÿ e xa±( s%Yp‡uÃDseI#ŵ" s%’drowyekk!saH(Arowyek )uÃI-p‡“+ûÏL4ϹMá[ô4æd}‰}HCݵŵcùøRæ|&Bc¹Yæ=&!c¹Yæ,&c¹Y æð,(¹i¹§− æ)&xà¹y'|`T1á'=`¡ dne5i fo±'(`ó')`Á¹¤−æ;&fà¹y';`'-`æ\&c¹Y    æ@&[¹i¹¦−bYàGl( hs⇨adbma!'[`'@`¤]„`¹i¹æ‹`f´/q§bDãQB¹æ‹AÝ%cUYøG+~ce¹æ‹IâQ̱¹§−6ãQA1eüâ•?ææ­⇧¸'..`Ndlit'::`Í AÝxRðHœIAݵ¹æ‹'>-`®÷ìP@l¬Dû’_ß÷“nß÷eü¹æËæ⇧⇧¸eÐN?ñìP@lªDû–xß÷−£ÿ¤‰ß÷èߣ¨§ÿÕßûßwÔß÷tôß÷⇨ßŵŒß’ßwfi¢ß÷»ß³ßw î¹æËæe⇧¸tN/eü¹æËæ]⇧¸ÍN¯exÂæ¿T⇧¹…Næû%ÍŒeü¹æËæK⇧¸2N¿§
  27554. eü¹æËæA⇧¸N¿e"Éæ¿8⇧¹…Næû>àºeÉæ¿.⇧¹…Næû½
  27555. eü¹æËæ%⇧¸o N/eü¹æËæ⇧¸i N/eü¹æËæ⇧¸t=NOeÀæ¿ ⇧¹…Næûwx“eü¹æËæ⇧¸¹N¯eÀæ¿ú⇩¹…Næûŷ
  27556. eü¹æËæñ⇩¸l·N/eü¹æËæé⇩¸iN/ î¹æËæá⇩¸N¯u¸âæ ¾Ø⇩¹…Næûvêd4àæ ¾Î⇩¹…Næû2hü› î¹æËæÅ⇩¸i\NOrâæ ¾¼⇩¹…NæûcafrÂéæ ¾²⇩¹…Næû/8œ î¹æËæ©⇩¸r⇩N?mêN⇩ü'-<`–îêçû¡2¸ æËæV⇩¸\Nfl" lobmys⇩ŵÉnÄN?lÓ cir1⇩r§ÂN¿rÀJt•›N⇩ünÑJ3i{“N⇩ü⇩>=`Át¿N?‘©kË›+ûÏL5Ï»ŷáæ    ¼º¹9ÈæƹºÃ9Èæe»Ã¿9ÈTA−k"}ü™¢XAÆ.    ÖL}⇩⇦Næûe<P¡Ceulac½¤ “¤Â 9£t ni^aºr eh1d%..d%[ Dxif]únfeñG+üáL¼    æLŸ\„9ã⇧ç¼á€@›9ŵ|[…œöv[éñоÂèûÝkîG­StesR%y’›+ûÏL:ÏÅLá[ ±ÅìEæ®ð^|⇦3hæ 2·Ü@7Ø1Oÿï4½åÂ(åà—ç“!qÅiwhç☓Qqüç☓!±ÂqwðqÌâ◰ÉD$œ÷kJ‘J6 +üÏL@Ï−Lá[e    l¼¨−ù9æ⇧åï8È8Ó4⇧¼†fs]ïç€!‹k~
  27557. ÌÁTîýÉÏTRëñÇÎôïâÄç_»æQ¿&Àßê'ù)ŵ‘ªûsò8+üáL¼    jLÅÍ9æ⇧ÿ8…º¬{ä⇧…h¿p⇧sÂDsKô@s×W»¼ü‘Þ¨7q|hÁôíû¯1¸£⇧Η|ëŶcŴOæûS]−k¹m "sihØe:sael ta esno tACgÄ›ifnItÆû%ùI+üáL¼    2LÅÍ$Ìsßp·v­ÌFl²~&ÚÞ¦³ç'Ìfß×üFj÷î¾ïî/D2È{ p        ­ô(7Ö¾ÉîÄHæ72ꉠ€    0ãÇ⇦⇧ÍãÈ ±â+1Òâ;±ãR 85.j|ü™ôŴݾÉî$IæP1ꉬ7lÇôíHI¾nêîûG1¸ ëËë☓ú{/|øuougAúeãsu s1r` ÈCsÀhJgi5£Í°Í⇩±â   ¦ô08ÖÈ9Ïn§~„Ç'    Ì_<ýô`8ÖåÅøѧ~”«w„~>Üô:ÖðÇΤ8ŷ cÛôíŷ\ßÑôíL:æçŴA§ÌE­Sæûr¢apyy!+úÏLHÏ
  27558. ¦âMÏaQâMßK»☓−$Í(xH}t(å+xa¬­ÝŴâM`qúâ™flKQaÛ[åÆ€ðbåÆH« 7vèså§q⇦£ÇãtúÈs8ouºTÍ…S⇧x(´wgܺLxݵfl¤AT†s׳’Uý̺à&áT#ÑIK☓¬€wwÌítwçúù»(Í«HsF}ÀWx'fåŵ å p%îí»Äpº\å p„í5¼­îÛ¬@«Õi»—ëèh<òØæ⇦£DswÌ1­TmÝSº¼HDMhºx(ƵXÜŷxÝäõÐVXÄ1Âù¾úÛJzúù»EЫ DXlVå+xñÄÎœXìúù»÷ÒðL
  27559. ÇýÌbÛ´>ý<å prîí»Éº†Ë»†É¼†2½¬TuÝ0º¬0EyoWå tÁt(få@pwå@o&PEnoíT¾ç’€î³_\ý̺ào[WI»☓fi€5vîí»€¨…Evúù»ãQ ¡N$…ÑÐUÙì»áÒÔFSßx'Ü5fåfl|Mí☓fi·àF`€îàGqJlnæ ̶☓¬åflTqÌíåflHáŷf^ùi¼ºÝú[VI»Ŵ·@VvHººU⇦¨LFvúù»Îâd ±ôzÆyùí¾|VúkºŴ·W5HºÅCÓ ¶ôßxª÷ß÷à àwà«Ùá¬à¬®à÷!ààw)௩,à÷ààw.à/àwýßþßwà°(à°÷ßàwõß%àw&ààwñß!àw­®ÿ§îß÷­®ÿ¬à÷¨èß÷àæßw,à®°âß÷3à±ëߪáw¤±ÿçߦáw±ìà÷¥>à÷FàDàw¡Þß÷Ý߆áwÍßCàwËßGàwJàHàwÇßàwÅßÆßwµ´ÿµMà÷µ/á÷·¶ÿáQàwPà3áwXàTàw_à]àwÁ߀áw±ß²ßw ^à÷­ß³]ಷßváwðß`àwiàdàw¸œÿàuàwà¬ßwiáfisàfi¸ãß÷cá¥và¤ßw|à†à¤◰à©á†ßw¹◰à÷–ßVáw⇩à⇦ßw«ŷß÷à—Ŵß¹„…à÷‰à‹àw“à‘àw¯à£àwººà÷“Ìà÷Ŵßhàw›»ß÷Ðà‹Úà»òßlßwißjßw’hß÷Ôàñßw»ïß÷»Öà÷Øà,áwkß*áwÙà¥ßwGà‰Ùà¡ßw‘Jà÷áàÜàwèàåàwõàíàwáýàwá áwá™*ááw–ß/áwCß⇦øIm¬­ÝºrÈj.úŵô’ÞKS¼&«$.Ñ9D~çÚWÜœ8}wÂÇuP>œgp6è?GÎ"ç☓Ŵï€ñ,Zîà’9té¿☓NÖ9fïĺ†'4Z™ïÛT$4ø¸NVmPD¿m6Î9¢ïºÔNÖlDæ¡5üöà⇩|#iº“jàZ}ìà9~Km¬­Ýì?vò ⇦^à[}Ŵà&}&9Þ⇩ÓàÇifedßà6n “9Zí·A6øZm⇩ÐàÇ8Óà·ël§£úŒ$Eæ£ßÅuÈà⇩|r¨i\4itare⇦&6Ù&¯à×&²ßW·à×R6è\]ÝV\ß)6&™W    Ü\ý5Øýŵ¶¨EûhÅ^GŵßçàV}¤à⇩|Źª"hl n’àG~³◰ö&WÝG¶3è9~ßçÅ5‹6⇦fl º<Aá⇧…ŷ†¨<ñº ¹⇩üŷºf¨Jó
  27560. &9ÞZõß×Gwàç–3W™ ïÛ9càçgàmãx%[Ý⇩†Ï¹oà§ÿº,•Ùh¥oZUà×ZSà׶$ý¢göbVÍË´oR·ï[]Ý\ö]RÞ[mRWï[]Ý÷âŷ9tï;àÅâxŒ5™¥ïû¸'¼wvà}⇩5X™[QÞk\"⇦8à⇩|>àº5¨Œ~5W™ZQÞX⇧øx5W™ZQÞ¸Gì h7Î. ¸™Iã9‰WïÛ9 àçïD㸠à}WGÞï43¸13V™xïk9ýßçº<)3Z™ïÛ⇩„ÏØ৕aœ“&9Þïv5¸ðß'v9Zí\›ß39‰YïÛ[yß39‰XïÛyçßg¦ß¸'wWGÞï3¸Òßväß⇩|Ò«96é¡>ãøV[ÝGø2èYÅß×ó2&™XïÛ[ð2Øïî2¸ë2V™é2G‰ïÛ9Äßçº5È9ÃéV5È7ß5xÐyGn—¼$÷VGÞ    Ö2È&WÝñ*5¸ïÐ2¸‡öºXÍGÃéïÈ2¸gýGÞG ßç¿2W™YïÛï¼2¸[ý&VÝï5¸³2Y™ïkï°2¸Géè«2W™ïkG”ï¥2ŷïÛi–oV”ßmß_âxk[ý}[}9ßÀ$wWSÙ›2&™Nßï{º9Î{b ◰nß⇩|ÿ½ª•œWGÞï☓2¸\ßV}î•ý9`éy2&™9VïÍ4&™ïk9GßçÇ4&™WïÛïl2¸8ßvÄl[me2È$c2G‰ïÛ\mßÌ$èlvZ\2ØïZ2¸dý mZmS2Ä$ïÛå]Ð$(mv[L2ØGJ2èïH2¸¼ß™0 Øŷ9[íGcï=2W™&ïkG]ï72V™WïÛ&42Øï22¸/2%ŷïÛG^ï)2$ŷïÛZXß#2%ŷïÛäE–ßh
  27561. Ìŷ¯ßŷ‰×D nekoTdneûð4+üáL¼y⇩KeïUÍ46oe wü™¥™Î„⇦úŷ&ËwØå+l•NçÀñixaMkt¿ mum1htgnel n) ©C-deec’—Ä=¢aOzDüð;+üáL¼dKÕM†yÖDzÈ…fïUÍeQëNdÜUÔ÷MWÜecÞèk€¦{⇦”…@º¬: ¥nç E!d)¢içä¿áí(+*&%$#!:\@?>=</.—-|^¡#I<“+ûÏL?Ï5Ká[,}}(€M}{⇦™fïUÍeSëNdÜWÔ÷mi−MWÜð91Þxjë¬8Â×WÜ?ÊØêÃæè◰¥þçÁ%¢9h)€ a)çû—ªí§:bmuN’+ûÏLHÏKá[ͤllãà’MðX8vàIâHp0û™³ `ÈàP€àŶïUÍbQË Fl*fUçÁ€ñMWܬ8÷ÝhëýÍEkj Â_l†â c. ¦ôØ8vkë¬<Eö%3¬DæØ·Œ−
  27562. $™Ñ…6Äií8kø+!ÿ,9æþgâvü™     ékwÙ⇦ïUÍTIZkbðÇÜFl*f]Ó÷^Áªr6lÓ3r fooCaºMWÜU»ÝØSï¼ð¨IvNdÜ0WöWUÏ®ÝM™ýÐ9Ökë¬4Fö= Â¥ÀÞ†JE 6ïUÍ,RÛNdÜ‘WöWUÏ„ÝM™ý0:ÖÙ¬ïUÍ-Rkl*blÓÐGvWXÏUMý+ 6|:◰ÝhëýÍàFkj3φ: jŷvü™flé˲v}⇦M‹oOigidVnÂt÷CCpÆ›ïUÍäJSkdðÇlXNmUÿMWÜ‘_ÝØëýÍpGkj3Ï·å=⇩±j¨8ŷ!íÿ_þ+—ºûð;+üáL¼FÝ»8Ŵ.pqæØÆÄÂÉ ÀÙ,êçIv¸@¦…uvØxÈØ.Î0Ý⇩¯`¯WºrTÀJCatsn’4v,‰ çË`v+⇦Pèû    Iŵ´Ïl„¤dð¿:_‰ªt£K— 2ÐŒ+ûÏL4ÏýJá[ŷ&ÝÝl'ŷYhröG™€sº!@ 1Ô.ÎÄÂÉ ÀÙÔDÊöÜ⇩,Yï\:vhøŷ¥…Ý-vø{+…™ïÛê!_&    iŵ´Ïl„¤dª¿JrêdI/oº⇦ZÆÚÈÉå;lÆ¢◰ú²◰À¥ l·ÂµËlåël"úâ‰Àa\¨ý€açÂ0åËl…ÚÂ0  l0±iå;lâ…0"ç ñAŷ—:û!ù5+üáL¼¬]¨Je¬ðWÂ0ÿûÒ0ÿkâ◰@™k\|lsø³)Õ4:v>Á¥²uä¡—;ÆÞu©ŷ⇦æflܸN:N?tîJ‰eð£i—_:a¹3+b)−#!−−v)HOSLUNE•S•"QNETOEB⇨KCA!HB"VFL!CFF!ISOS1CDELD3CD2CDKAN4CDBTENYSMENACCSEBUSGF"UR"D⇨PS!–yzal¡h³›*+üÏLIÏOJá[>    Üt’lfiå    øáL3Z/çÔ ×Ϋ~Ê{×»ZPÁöå)øãåøoFÜçÇŴçÔ~Áº†ÄðX·ºøÉ©ÿ−—S¯píEŴ3ü9ùI+üáL¼$"JÅ<ÍÔŶ-Üh|sEná׆ÃcÅÄÂÉÓÀÉ    Ói!£Dêæ)u¸t    öW¯ªg foSnði pa1_‰ªt£K^ `Ŷø·)·ã†x ®øbøø·)ÌLö 3¬]Lóÿôü    ªuD‰¡æË2uýŶ⇦å    yø¿¯j¯SWª&@\ foAr†€J3e−³ŵæa¹ŵǺ†ºQÇ‘»‘‰»a[ÌŵSÏŷ☓TsWºvÎç@ºå9øð |â◰ aoÔÇçÅpå    øØtü™þæ»ÎŶ¡…uØà2S/W¯ªÀ«µ«u£qes 1ŵ\" e’paGsf+úÏL4Ï¡Iá[®ÛÈwŷÓ.ÎÃûÉÄúÉÚùÉ,Äé†?±th¨Ŷ …&ÝtøM‹êÿô‡A '\`Vi−t0DÑVªi{nDag la!GFEDCBA@ONMLKJIHWVUTSRQP_^]\[ZYX— lrtC±üð;+üáL¼~ÛpIŶ7‘xæè/ð☓f.„ŶÈ,êT@◰th¨ð)Ç®tyŶ⇦è/oÛhºàFÁ‘»‘‰»a[̺P¯œc?¤ epa ¦ecnes»%g^\` !CtcO—û’ùC+üáL¼6DIÕ6QÛ⇦L©lºð„ÆnRëèWt¸NŶ²…ÿ!◰thºvÅÀ©lURÇ»Jtn‰°èËvtAŶ⇦6ÛàŶA☓ŴÈ_º¼€ý¼•‹»v‹ËRaüco y0t6³Àºµ
  27563. lðatcO1_‰ªpReŴCar fo tu…n‡â0 ým7 dk™0jµ2CÍ—S©’CxeH’+ûÏLCÏ÷Há[Û6™9È$—@ŒfRº¼
  27564. tn‰²èË6tŶ⇦vÿ!Vlº\Ç@ªµnRëèýs¸ô☓±…àŶB)tÌéÚøºÌý_Ë‹€»‹•»avÌ0R¿edaxeh ylðamic1_‰ªp
  27565. eŴ#dûaxeH1m6³Àº ±µJréU:vÙ0 ým9 dk™0jµdA ¶7jF Va ™kf dk™Wjµ2CÍCceD—û’ùC+üáL¼6fiHÕ|−ÿ!f8¨ {f0ÅE^àHÑÇ—☓¸DRëè­s¸¤☓®…EÙsè‹0ÅU„Úà€@ŴŴëEÎjú:3¬€ý¼•‹»v‹ËRaüm6Dû3À«µ«U ±¤ré›xŷ°:û!ù6+üáL¼ºfHÅ.ÙÔë0}Çå? Nâ0>çÓ0Äɹ\jåÄql⇦÷\3rh⇦÷åÅ—ð#]Ó«flæËæ`☓¸\²N/à…1Ŵi÷"ÇûCºflæËæT☓¸\—N/C,—JûaœòF+üáL¼    0HÅÌTX‡öðE9ÚxûÓ†úÆçÄ, ½Ù½ ç‹,É;½ª−È«flôHW$%3½ª−,ŵ&}(ålq'È«ïå lÁðHS{å+ldWçÆñÄ=i)å lWðEÚxÄÓ†ÂÆÀĆ< ­efâø☓ó⇧ɺ†È™·#êåÖåÐÄ«º™Ç$êóR_º#Î=Ú—R¯ní:üð;+üáL¼¼~ÔGe½Ü0Ç⇨⇩ÜÙY•ÓEÎÃûÉEúéÀĆ ­Pýmm ⇧MmU[ßËïLÚ¥ lA·ÆlÞð2ÃÙxÆ „Ä    „Â
  27566. „À„?­è⸗P¯LÅ+ûÏL;χGá[T—•öð9©ÙxûÓ†úÆÌmmÐ{MmU[ßËïLÚ¥ lA·ÅlÞe–ÙèÀ
  27567. „D­çòá¸fOogPdisf’+ûÏL8ÏwGá[D|    lÝØ/Æ⇧hÛ…rü™¥™Î¸r◰◰⇦WØ/Æ—Ø+æO³þ]k©vel @p foe=n mar}2itse’|ÀÑ?åØÁ2åØÁå    Ø}fº¼ê0Dæ ­Úsf2LapsetihWüc
  27568. òC+üáL¼?@GÕq ⇩fJÙT•Ó.ÎÃûÉÇúÉÆùÉÄõÃéîÉô'1s.ó<ä/|f7Ùøé¬óô'Ç0Ù⇩Y~üÙ¬êô$ÇEP ÿò)Ä.ΩÙ⇩"ÙT•„½ .Þ9ÚéÐpµè'r¸◰fl…ÉSr⇦rEUÔCsen †át.£. -{e?Ù..Áô$zÙ¬.ÙèÀĆJ ­³ Ä<±ŵÙ⇦%elyy’+úÏLHÏ»zåáÔ/⇦~f☓r<mʺ†Ø+CmOÔ,Ö+È,æ(ñ»,    Ä tSÐ/ö?Ì/Ö>"fº‡ÎOÑÙ-å⇨ÈáTKæè«3Ì€.,‰^ØííiÜ· {çS{ötZ−-ræèTì×æ«!Ìn.,‰^ØííiÜ·<TæðØ1ÆÈ/qkÀº†cÈ,ö¾è6æÊ ‡Åè)·}aËÿÿAQÅðbµ.ê⇨È ;£; .n;çfl#dº¾i( ce(ç−#c¾Y¨ ‡Ô¾ÉØAøÂAâF◰øDØm«fî_Æ) So)çŶ#, ¾i,çŴ#☓¾ù|` 6¾`ç‹[ ⇦k[çw#Û¾É]çs#ܾÉ_ço#v¾ùÔé†+ê¬Rð¼rq,‰¦ëËfiqiŵ⇦Ø108f ¾Þðå[◰S}öecalMn}` d’ÆåC™{QØh<âS•øEØm«fîSã Fñkë¬|w÷>Á¥Nq,‰è)ë{Dŵ±…Pwyqx.þ£øÂ%,'ëàx    çÄ+¾¢−Ä0'·×å#⇩é.ÎOÚ_ÍmSflc?ºJ€œªeör†4lIôJ3 —â Ä'¾yçÄ+¾¢−Ä<'·¢ ç‹4¾éCèÄ+D'¾yªÄœ¾¢−ÄH'·«å⇩é.ÎOÚ_ÍL'SÄ«. åèé¬OmS_üÄP'·¢ç‹T'¾yçÄ+¾¢−ÄX'·¾Aè‹Ä\'·¢ç‹`'¾yçÄ+¾¢−Ä…'·¾Gè‹Ä“'·¢狆'¾y!çÄ+¾¢−Ä—'·¾ ’Ä '·¢"狨'¾y#çÄ+¾¢−Ĥ'·¾Iè‹Ä¬'·¢%ç‹°'¾y'çÄ+¾¢−Ä´'·¢&ç‹Ä1¾iÄ«ñÜ'Ç€ø·)FÝåhQ  Iï  ±+ä⇧ÐHØm«fîSh0ö0tï{º¬ŴÈ7ê§ŴHŷðº†ïà¸Íd$·¢ç‹h$¾y=çÍ+l$¾yBèÍ+p$¾y@çÍ+*¾é\çÍ+x$¾y|çÍ+€$¾yçÍ+¾¢−Í|$·¾«−Í☓$·¢ç‹⇦$¾y~çÍ+‘$¾yçÍ+¾¢−ÍÄ/¶+ê·»†d0æiHâPÏF±ç#ØÀ*Øf Jæd0«nàS—7~bÕ7~Æ3†Ø#àØfDJæ«nS_ü@p,‰è)ë{6Ŵ …kpغS¯œc?¤eõkot 1lIôJ· —¢DaLta’+ûÏL4Ï»y áäy,,hºØÍ,ê…=!ph¡()ÇLpŴ⇦_ÆðN¯sJu to1uohtsy€na tAu÷oive15 Stlu%y’›+üÏL3ÏçFá[ïE%¸ë¢ÎØXkjâ çÒ ÜÊãŹŴ£…    º<€ 1Mý,¹Eej“+ûÏL5ÏÉFá[üP/må    Ðå)ÔäqCm"ÛΙź†ü‘Þ¬>ÙohëxЧ#pèÎ5ܹ ‡&öSêg)’o reP‘wolfrevejKE¹tpircSe+ûÏL9ÏflFá[    Ì™æò»qÖØ'_üŸeo+ûÏL2Ï⇧Fá[_ͨ4¹æh%÷iºcìGú#ù5+üáL¼Øl|FeÊ»†Ó¼†î½†¿¬»+ÎCÚNð×öÎÝÐÏÝÒÑÝÔÓÝ&Õý#êÿðGáÎ*Ø *$‰%ÏíР   *Ø*&‰'ÑíÒ*Ø*(‰$Ó}Ôý)Øú))‰¼$Õ}¼×÷)hô)À$¸$À×v¸×ñ)hî)Ä$È$Ä×vÈ×ë)hè)Ì$Ð$Ì×vÐ×å)hNß—°æh,×Î$hË$–ŷ”0×f4×È$hÅ$“ŷ›8×f<×Â$h¿$’ŷ‘@×fD×¼$h¹$•ŷ‰H×fL׶$h³$…ŷ⇩P×fT×°$h­$fi…⇦X×f\ת$h§$u‡`×Ædפ$h¡$◰ŷŴh×fl×fi$hœ$ŷ}p×fÖ—$Ø”${ŷyx×f|׋$h•$wŷu€×f☓×…$h⇨$†…q⇦×f…×ŷ$h◰$pŷp“×f‘×€$h}$nŷlÔ×fØ×z$hw$jŷi—×f†×t$hq$iŷ t ×v¤×n$hk$fŷe¨×f¬×h$he$dŷb°×f´×b$h_$FŷïÛ¸×D)hY$\ŷïÛ¼×>)hS$XŷïÛÀ×8)hM$TŷïÛÄ×2)hG$QŷïÛÈ×,)hA$NŷïÛÌ×&)h;$LŷïÛÐ× )h½N¯o  ŷ
  27569. ¹
  27570. t=i BeÐ0wx@l·)Íi¢Í%©Íx¢Å¨x=::!@..!|)-<-~-""œ§2«= *)u¸*vêd4hü0Ç—2ri\$/8œr⇩t2mêt
  27571. agen!pilfãäªä Tã*ãäªT=ãäªTT=$ocytêÿß%nÞ›+ûÏLLÏ»wCáÌè ¼$¤+Èôps×%ĉ`◰/|Ts-zÄôíº'Èçɹ‘KnèÄôíû⇨#¸¦ëËrn=€⇦ô⇨ÞÊ$ĉ ß|k\−¾gªtob sa dch¤¹Qª<ñº :☓ÌÄw‡{±{Éê†$nç⇧ôh4Öb#ĉëû»€¶…çKn¸AÓýÅt{ {¹àŵQQ—sÛ}Þômèd½Þv(h|~âvéG¾Úp(ؾŵ„¾◰„éñ»P}h(xe(1‰☓ÎmSöö¶o©Å†ªZ*«Rt fo¡”«gaª]‘H0S)Iepyswû>ùI+üáL¼    ÂEÅmífi☓"æ[yflÉkî$¾Î¨Uæ]¶Ç‡:¼±°D¶gÊöÁkîØEæñ꾺 È◰ÆiAÓÆôT k¼ºÛ6XoÝôí<­ô(6ÖàÞS5ú☓$1o<mpmPFæ Uæ°\â…PÓ °àeÁŶâE\ù ›eÌ    ßºÎ$ó ó„‘ª5o³›+üÏLIÏqEá[]_Ífi:¼¯y½P52n¾ôíèVæ-ç‹aqÝ*È­(l~nßÌôí…Uæ¿    ³çº?*Èç̹°5omhÌôíô€Ýª"¾‰êû»^¶…l7›mhéôíâ 
  27572. = s&}'®íäì†Àí†3☓ ¦ôÿ»Cç⇧hs|_Þº&*Èçå¹#Gmèû"¸ªêËpm;⇦¶v¯†º⇨⇦ª%,f: tfeodis h¯X−visruceReÉ´yFyL4&ŵÉ}\ßÓôíçô»l8†hçôíE    ­‘UÏÝwmhl4æ& ÙÖS®ý„‘ª5o³›y\|:û8ùK+üáL¼êDÅ ÌB)æ⇧pøß,üfil­f¼☓kؽ†ìÀ†føÞ,à‘ÏåcøÂçaøÂv]ãòϾèèû¬wîÏkîèò»oÖæè⇧¬þð7>m☓9nUôýŷÝÎÇ«Ï~ÒÖ¾GÚèºkÍlè "À‰ëû»À~¡…-ÿõlXS_ü´©ªp½BKb0Ŵ:g
  27573. Àkî-z#Èèºk³lèò!À‰ëû»¦~­…9Ûlh羺ŵ)ÈåB@Èç1¾º|)È1ê'ç⇧çν©S¯B´º3c ep±oG%;…ŵÉæël¸|S¯8y\›3rºû!ùF+üáL¼dDÅ Ìx¯¡fk\ïòϾàèû¬oîÛvî©[©ðýÀvîw»¼îÒÞL‘R¯rGno„üpuoñ<+üáL¼    BDÅ3æ⇧…’üf9XïÂÀþÛTîIý¬aXP??3œ+ûÏLIÏ+Dá[x    Ìfi:¼à€’•ìVÇ!Ê[×$Ì-ùY_ék¼fi&ÈVŵ|…É»å—<¬‘T^ïõؾâŴ€ÁÄæû­^îÝyîD­nYS?!3œ+ûÏLLÏùCá[Ì Ì\@ýh¹eó§¾s&æ⇧²\ýÌ›SÛÇôíïâñL_ô¼:☓Ìü;fikQ☓uoº\ó Q·ï\&¸Y&#™<=lÀôí/#ÈT=jÀôíÛ"È◰dϪ:¼⇧lwWê(ÎQÇy#Ùkèû!¸«†=ÆlÍ}⇦◰RǪ:¼¹${· å¯]8`ØÇyÊfé²½pSfl†¶ª*ź`Zª”«’aªóº‘©o2kPDü"ù@+üáL¼    ‰CÅD£mÐŵX“fGbïÓíð^¢E¼à!áÂŵ„ãû»&ð⇧ý^îî ý<GXïûî¾ÀýIº¬isivQtP+ûÏLKÏeCá[Ìó ¼W(ç⇧Óöø±V A¼ºà⇦qÁl!øâ =skhÂôí:]ÌÇ»¬ ô™kìû© ¸ \?Æ\}…z’kønys ¸io2¤" dna "sa3%,3yllautumisru ¡å–€ v
  27574. j@ýô,>Öñľº&(È
  27575. ËÙóº­%ç⇧`>(lËôíëý»    µæÈô@Ö    çÞE9zðÂoçñ»_é+apxEÝû.ù@+üáL¼    
  27576. CÅd„lZܤöÁTî^òæèk­îÝÞkRë»ÁÎÞòâÄRáðÒToJ»JâUͱÓõW[fi:¼¦À?¶öÎzÁñûæ    ¼2Q¿Setaa üyò=+üáL¼    ØBÅæ¼æ1'È £−µfi−ç
  27577. eÁü©ôXAÖòÀ¾èæÈôflÝòÀ¾óâæ¸êC(PpxEÝû⇨ù@+üáL¼    ´Bż–lZ4¦öÁTî^†æèk­îÝÞkRë»ÁÎÞòâÄæðÒ´¹Q¯4V‘“+ûÏLEÏ”Bá[
  27578. Ìî&ç⇧н†Î¾†T¨Ä´fÎÓ†üç†vêñÁ¾ïê¿Ákîâ*•çñ»l*ÿÈkîÞvîvZïñ¾    çÏàkîG­Èkîñ¾¾Ê*•ppAebyam9Vdne’+üÏL=Ï[Bá[−
  27579. l¹f~ñ8½!¤kæÀZ §ºW»−−üGð¬Ã‡Ë$&™­^î&Vß    Æ$ÈPæûyTtesffo4v‘“+üÏL9Ï3Bá[    Ì…&æ⇧ÓÈSÆæ×ÉçËÉý©Àîêæò⇧pBïkÀôíä'•æò»º'È−fi−
  27580. œ´OýùÀî'òûmAsiÕsuob¶+ûÏL@ÏBá[l€    |ýì—ÆTRëÙÀÎõó"æö²ÓU&ȪÇkî¾Tîä&ýkì¾Çî°æ&™V    ük\éÝÞTÄéñÁ¾ºÖ&ÈçFºaúQ?;g☓“+ûÏLÿÞÇÑAá[Ìêi …PsǬÿËéß{¸Ü{°…ñé»éúy¸Ö{°…òé»éíy¸Ð{°…þ)Aúk9sÉuougAangiYerut¡l<©ougibma Rt su¡l*©engissa Md_¤*−kç‘:¸
  27581. +üÏLLÏ–Aá[Ìæ ¼öå&™V&(…æ$¼Óé%Èx/ÚÇôíôÞ]áþk[ÙÒôíçö»´5OhäôíE­kÈœæÍÇîçö»o€ãè«÷î`ææ⇧ɺ†gÜçó»X™æøöý»oãç⇧        Üoeçh»☓5uih    ÿk ik{⇦`‡ÿÅÕ#ñ⇧#ïÛ    Ò#Èçñ»æý1¸]S¯@»⇨⇦ªiKb:(¹sÞ›+ûÏLKÏ5Aá[
  27582. ÌTØ…æ”&À‰ê^î−ìø!å’‘ŴD¬.lé$ºº Èçǹé=i¸û}¸wê{fi1{⇦¸!é⇧fü¨];ŴÌœ¥ëø²ÛÇê†&iç⇧fé⇧êû»{±…ŴOiÈ¥;¼²Dw·´G造aðî4F±mðîc²Ý<}´}è1¾Ît#ØsSfl†¶ª*źt foZRº+iŒ‘U©eDssŵü5ùI+üáL¼    Ö@ÅÍw$̬;¼Ŵ|4V´ºCg|8{oÁôíºQ%È9zëßh¸Öz+    ŷ¬8 ihÈôíô¾¾º¡%È9ÊyÔ8ÑhhÈôí¾‰ëû»Âz³…ü8÷hhÁôí+#ô⇧ŷÌôŴÝÝÞ†7SkÁôíÎâ»LÌÒÞLÒCW¸q¯×«riuqeÊnÊJh«c:¶:©†º⇨⇦ª%,f:i—³d¯aeh !î-èU°Iæ,H“gÿîº5Ì-⇧kÜ9kl‘ô}ôX8Ö’×Cã}pè¸ö|®9gøwîÐôûÁvî$Ä%ÈÌÇœêz¾ºP%È_ÇéK%ê⇧º¬ê_¾ãÔ"Øôp:ÖÝÞW7êæ%Ø9Çç‹Ø­ç⇧Cè}$9\oÐôíæô»Ì:dhÝôíE­duS?8Eder’+ûÏLKÏ'@á[¹\: Ük¡æõϾ-âç⇧¬oî¬9ŵlëîSº¼ñîÎôcË    cËoëèڠꉼ½0lçºü9#hhÀôíêoîû_¸¯ëËHhz⇦ô(:Öœÿ›W¬;¼~◰]É%¾ç¾¹# hèûK¸¥ëË+ÿyø©ê_3¡d´JgcªWM@mwun gAa·UJö.«cr¤g
  27583. k+‘Jû"ùK+üáL¼Ì?Å
  27584. ÌTð‘æz$Á‰“<$lìî¸f~êΠäñ⇧ÿ    ¼êñ»ÆáÈ;œüÅð8¬kE◰u3"&™1"ó⇧ ïÛ."Èl$æ⇧`‡åÅ'"ó⇧#ïÛ$"Ⱥ’äȬ;Åi    ¡ô}꼼䥅ôX=Ö©ÈîñE·Äè+sµ;ø«‘©rGssŵüpuoñ<+üáL¼    |?ÅG/æ⇧Ä›0ŵf9XïÂÀþÛTîIý¬MddaP?¥Œ+ûÏLIÏe?á[:=Ý\_ͬ;¼«<:¶
  27585. ©}¬<|oÇôí
  27586. $¾‰Œ$ÜÇôí`^æ¾ï)$&™ì<lÀôí⇦Næêþ =aoÐôínôËê¼óÍ¿¾!ÈôÈ>ÖÝÞÜ>AjÛôíÒ ý<&èÛ◰$èî#¿™ Ë◰n$Ŵ~™cÍKìØSÀý"œ¥Mwen¡û!ùL+üáL¼?Å ÌlÁlÀyî0TÈyêÀ‰d$ü:ŶÌhwª{(⇧åÇê†gç⇧V#‰ ?ûk
  27587. y    ŷŶ?gȪ:¼±–¾'¶Ýå€`°zå€p aê²½pSfl†¶ª*ź`ZªeÛ…:Zufl¤g
  27588. é2«ûð>+üáL¼Î>Å
  27589. Ìÿç°X¡B¼Xwçå◰P¾!å;á¿çÖ¾k!å<°á¿ç Ö¾k´¾}Ïv7!1‰PÎýVY−snIk‘tÞ›+üÏLIÏ£>á[ÿï    \€w;\yH·æ¨{&÷Ý$ýâȨy¾õ ·dåé⇧¨y¾\þôà?ÖõѾZåé⇧ô⇦AÖàÞyEê÷¨Ûzä#踵Û@#ê⇧æï»yé.è÷¨Ûz¸â軵ۨy¾ý¾{2é⇧¨y¾,#ø™µz¾y½íù¨Ûº®ÈéĹ|Awfhnxª…y£fèù¨ÛûÀ¸¨y¾nzè¾µÛ¸S¯=Ǻslcer§ z ¦DÊm¯¤çn@¤lcec§§2«°ÈsA¤ü"ùK+üáL¼ .>Å4¶:m\`Í¥;¼²O¶Mß©}yå‡⇦ጤ1ÈÁy"ÈDCjÈôí¾Æî.f¶D⇦hêÛ$x<    ŷäAYfhÈôíô€CÖ`ÆÞ1ÓφC)jÈôíbÆnþ‡D¾‰ŴfèTô™DB©mÁôíàSæLê‰êû»ä‡0´4fÿw⇦ô†s×¾ÈîA3ýÅXŴe½ºÛÿâI±:ô⇧`s|Ûôí¯ ý<Sèû[ttaP¡VflªWiÁ£sµiK3ø«m oNh¥ªnsóCgcª\‘\0Ï€};\{Ô@V<cgÄÄæ4Tæ¿]âDLâ…@3 fi☓›UÖh·²† ’ºÏó ÓImun##resn’+ûÏLFÏ−=á[Ìü¿”¨ ’$ ÁÀŒ    lk^ïºÀÎ&Ú ™¬oîÛkîÉç[⇩º¼ô⇦Þêç€a±[RfléàªûðF+üáL¼p=Å
  27590. Ìv<ªæÍÇîè¼Èâ …pœlàj¯¨>«óf¤vàkÇî¾Æîûµ¸ÇvîkÆîÆÎÂèûÛkî?ý¬NddaRmirPwe+ûÏLGÏ?=á[
  27591. Ì Ì◰æ⇧0¬Hæ⇧d$ü:ŶÌ•­Û¦{Çê†Feç⇧ŷæ⇧™ûë:w¥…oeÈõ¼*çûkê’R¶³nãø:m      DŵvE›k–‘JûðE+üáL¼
  27592. =Åæ
  27593. ¼è†c!hÎÜ«Æc:øRèÁ†½◰˾ãÉÀáÉ|)úò†ñÆ%̬ßkîâ⇦Ï◰ܹçÒ†íÞ†ìá†çZÏŒ‡−í    ið’5øè,ødç⇧fl 5Æ$eïv⇦¯€¯4Wº/[ºñxa±(ç⇧ýw¿&çÛ¢*ÿÀkîîwîç⇧Çkîçƾo¬æè«÷îkdïçǾo¤æè]¬þÉvî‡æç⇧®wîàkîF­RæûyaMk‘k–nCebAýðJ+üáL¼»mŒÁæ
  27594. ¼ü!Èôäs×−¼<!è⇧”øº,vÌ®æ¼{É~X†nÎÔ™¶^Bãèðî&!À‰º¬—dç⇧     ékÄd•v⇦Àvîº)!Èçŵ»é™d¸☓v"    ŷ¹dØ÷^îv«î!À‰ð^î·xîçö»wNæè款]SflSU1Bmugrn{( nie? Œ)k+nA “nretA 9¤:g¯Â*^Áª+n( k@Äkc¤er(¤ bQ#À{çEÎ;ð^îà ¾‰º¬Rdç⇧µéË~dIv⇦ÇTî¾vî»á Èçŵ»éEd¸<vµ…qdØ÷^îT«îwÀîРê‰÷^î«wîÇvîæç⇧¬wîSæûF’1BgÄts4nœi tn14 )n*±m®[Jaõ eb 1:getn’^Áª*c( c@Änc¤er(¤1 bQçý»+&ý‘W¯@PpAk’+ûÏLFÏé<á[Ìæ ¼âA Èx¡àiÀŷËÁÀÉk0êçǾ    vÈåsÏçÏÉåŷ¨,Ïvîçùµwèïk¬îçǾo¶åèk¬þÉÉ̵[8b-f?[4«t&“çñ»ÿz¸çñ»YŒøÌcç⇧“¼9æøcÃu⇦Ræûw)Ä¡!a›+ûÏLJÏfl<á[
  27595. Ìô…<Ö<æÞ ~i½ö ;XiÉôíô¼<Ö˾¾çºê§c¸û縪ëËÐcœu⇦ø<"làôí;­ ­&æÛ|DþhS¹ý†¶ª×«sóeL3
  27596. n™³æ¹ï&™\MæS¯þëDnoc¡û-ù=+üáL¼\<Åæ
  27597. ¼.¢Èçºæqc¸û±¸£’ÍŒceu⇦çó»èÆ¿©P¯dT´JuaKn
  27598. rµDŵ" no’CsIk‘ûf­ò6+üáL¼3ì6<U¸A¼⇧ÌRVõ2ÎJc¹⇨⇩#‰Ð;ûk>ufl…rý& <g:aTn@CuaKn
  27599. rµD‘6©grAnufCkü"ù:+üáL¼3ì<UŴ⇩A\…\SVÎI¾&cº⇨79~ûe¸ d<Æu…Lý'”«’aªóº sdeen " sgr%{Äid¤flr¢útaPñ=+üáL¼
  27600. ê;ż|&mñච   ÔäÈ^d“æî0ç»:‰4^~櫾flP¯staP+ûÏLEÏÏ;á[    Üð(‡fÈ“l[ܳöÈTî³äæ⇧­^îÝvîF­pTîlÆî^„è«JçR¿edgiStcaüslcñ<+üáL¼    ª;ÅP”m_dŷö÷^îxïnGêïö¾!ä⇧ýGîCý¬P¿ÌBtca¡ün´òI+üáL¼    …;Å(Íå-Áó‡Ýà? oëîêì¥øx &ô AÖA‰@lÂôí$ÚÈÌÏÈŶι彆㾆ÇÀ†⇨Á<ÎYÏÞÂÉåÀÉŵÓä®(l€@öfÉôíGäé⇧“PæQ®~º¬lbé⇧¡ŵΗbct⇦09vv oN]ßb⇩ŴJdeniÅl;Y:e¬4+ôô@Ö¶‰Ræ½ò‰
  27601. Ü0BæiËôíÍž¸<)c◰ôíÉÄœDbé⇧ôdBÖŵĉŵûë6t    ŷxµkbhÈvîk“¨æÆÆîœè⇧ñwîsþ7ß·~óauqE¡v§sÿ3r¤effiAseit  »»Yôd=ÖòÍéò»èÕ¿&™ïÛï|¸dêûô$BÖòÓ¾ÒéûôLCÖ    çÞóEºk™Ì:ïkgõ™eò⇧Yüøaé⇧¥ŵÎ$bïs⇦ô¤CÖýÛÎçM ³IŵSOfel     s dntŶsnqe⇧nCiBoTAügò@+üáL¼    À:Å+ææ⇧æ¼    
  27602. æÈ ©v\ZflÇkîWç⇧ÛTîHý¬QçûëDton¡û-ù>+üáL¼¢:Å`⇩ lÀTîºÊÏ绹TµaèôÀ‰(Bûk¨sfl…Üü(lum gyµt#4´Œfi ªû™ùA+üáL¼€:Åø−
  27603. lmìŒöÇTǺ†ÇTîs¾îÈ¿¼—−T\ïÆÇîPç⇧„º
  27604. ªÛkîã ý<QýeDgiyûcòJ+üáL¼    T:Å@◰|ÁyîÈk¬œæ{Øî²Ç³Ö~ èË$¥ÞÈ[afl fi¹:ól‰£yàýؾèõ»kÁïÝÞSFú…sw›+úÏLLÏ':á[
  27605. ÌôL6Ö$flÇ−æð⇧d◰/|çºê7a¸ûw¸¬ëË`a+s⇦ôpÝŒÉպ†ô¬6ÖàDÃnõîŴA÷2ß¾y¸k©l‰ fi3 óº×«sÀeLCb oni505ydoaç‘aôGæ¾ó²è⇧ñ&™<GæpUón·îTGæ☓Uæ­UêÞ´Ây¡û^HÚ²ÂyŵAðç¾¹êëWë±û+¸flëË+ßrø¶ü§†º¨ºnVøJ+hŒn<dÇC3nAyc’+üÏL@ϳ9á[    Ì ‰D†fkXïÖÁþÝTîI­XüÁkîT©èÝÞæIº    îÈXüÁkîTWèÝÞæIºDpotQanAde>üùD+üáL¼    ŷ9Åæ<½ïI¸-Y‰…­l]ì‰ön<DÇCylana ycvsisáÍÁþÝTîI­[üÁvîéq¸OYâ€pŴÝTîF­³æ⇧    ÌvXïËÁþÝTîI­æoY¸DddaReŒiFpe!+ûÏL8ÏK9á[¸    lÇ9îË™¬GîDmerOeŒiFpe!+ûÏL<Ï99á[(‰    lX€öÀTî9¿ïýÛÎPIú,Jæöõî2²ÎÄA&m Æ°m2±ÍcSniwñûepoñ8+üáL¼    9ÅI⇦æ−™ 2Þv”æ⇧JÜí’™OÞö¼:æ
  27606. @BæÈönö ç Èv±ïÞBped22ÌŒ+ûÏLDÏó8á[’    lÇTîÜÆîXfl&m´¶kn¦å— áÀkîºoÈXÇùÁkîTIèÝÞVIúÁTîk^èÆRçfþR¦þ;\Ì¬ë$«{scfl;^Ì“‡ë±¾ZùýrY©fi«i…+ýÏLDϳ8á[ŵ    | ‹D fpgflÀkî˺†:YÌê»X ÷ÁkîTÅïÝÞTIêýÛÎR=úBAped’+úÏLDÏ•8á[Ѐ    l<€G~¯EwT¼‹æ)>À‰ðGîT­ãèÁÀþp9îR›÷RpedXúhò<+üáL¼    r8ÅÌæ⇧P’$◰fÈɆ-جÛ9î»ý†ÀTî÷*⇦À9îê^îG„äèfðî9æ·‰Ç9î¾TîG−åè^÷î^«îÀTæ9«î¾Çî(ÎæøT:èöÀ‰ðGîGèP¬þdrauGpedûð5+üáL¼    28ÅôD<ÖâÀ‰,Næ&ðþEped¦úx±òE+üáL¼ 8Åæ
  27607. ¼p“yh•øÍ,cå⇦¤QÉ7̸ßC{Eß⇨Gßµßw´ß⇨°ß³ßwfl ÿfl­ß÷fi«ß÷‡©ß÷…§ß÷›ÿâTî$¢⇩o—øá,Ð#cÅcrøRŷøÎ,„Ï<ÀTîîwîÅæç⇧ð^î·xî÷^îû«·¡çË^CÜè«÷î◰ß·6ÒŒpøÒ,|øÞ,âyßÇåyøÂçwøÂèÊÉ‹søòçñ»¶*ÿÇTî*çûñ`
  27608. ¸◰ç⇧TeßççǾ`ß—xÊvî•æç⇧¯wîäTîF­TUßçwÀîããê‰ð^î·xîTŷåèwÀîæäê‰÷^î«wî…Wwn«îÇTîçƾ^læè«÷î◰☓åøÀTî0ßõåxÇTîç;|×ÿÇTîÆvîßçûð^î·xîÇTîYáþÊvîÝç⇧äTîH­çg¿é`¸~p«…ç³`¸éŴ`¸xp¬…ç­`¸é{`¸rp­…§`hæÑ`¸¯R¯ '@`W»£ª÷ŒW¯ª£ '~`¡÷»ª¯© '_`W»£ª÷ŒxEped nidup2úa°ò=+üáL¼67Å8„
  27609. lÇTî    æç⇧¬^îT,—æçǾ^æèP¬þr#|JûùA+üáL¼7Å ¦
  27610. lÇkîïåç⇧¬oîT“—æoÀîçî¾^æåèsðîT·îÆÇîÝåç⇧÷^îQ«þ‘rŒ+úÏLKÏ÷6á[    Ì÷4µÆvêæȾwÈåèS­þ¿vî@Âl®z~ÕAÈÖíÉ×àÉ¥Ú☓Jômåîô|CÖÆÉî­åæ⇧“Sæ«ùîô¤CÖØQÂnîî×áæ⇧ÄSæøaòn·îò¼åæûôBÖKæS›÷Âyîzîâè›ä®‰Âyîzõãèw®î§í«Îæò»+§æøy— èæɾzxåè®Îæò»Œ+•aSr:ûBùA+üáL¼
  27611. ‰6ÅGÔ⇦æJÈ¡vð­çG„áè⇧¬îÀôí9åè©pî\Qfl9Vped’+úÏLJÏs6á[,<
  27612. l ~@4gâôí`C}oÌôíNé⇧ý-†€CjËôí×âé⇧Ö-†ô†CÖçɾºNȸ©jÉkîÕç⇧®oîôÔCÖÔÁ‰−º†    ì¡S‘ñôrÝçéî    àÞé4º-☓È`ÚéS_¸û›¸ HCÆ|_Go⇦Sçû´©ª⇨d‹£ŵfŒ™Ä»flð†2ãËltÁDûðI+üáL¼    6Å—Mv(ÌEÓñÅD|¢{ Nà◰qqÍdl ðÇhô,s×KS¼w«rqWΓ¸íl³þZo−Østyãôíô6Ö☓Ý·:¼™8DV“ Qœº† Ì    3ï‡"³½æè⇧ÜÛ:º8*ÚŒ™⇦Œ€ªfÍo~EÓíŤd¢k нkòã»VÈ>oÎÌï}<Ç«2ÐtæKç⇧èÓ½[Sflt‡+úÏLDϹ5á[F    Ü®uÝ$”måÝ<«æm@‡Tzf9aï]À·:¼÷ÃÛºKÈ°¯−kŵ    ãýÛÎWAê*&ýcÁvåGl+ûÏLIÏ•5á[¼O    lÇœñ(\ŵ‰ËUà◰r kd NÇ>Íŷø5 ðfSôÍ«éK Fæ¸WܳFæ@5ioãôíô☓ÝœüÝ^¥;¼àŴŵ|Q Qœº† Ï    3ï"³7æè⇧ÜÛ:º8*Ú™ †—¬fÍo~ËœíUèkŵ‰e Ðà◰"aòã»ÐÈ>oÎÌï}<Ç«2èvæÅç⇧èÓ½c‡S?úðD+üáL¼    45Å07Fm®Ýå8–ÖæÝh||¶faTflöÀ9î;\Ìà⇦¥Æ÷™¯º†ŷ    °9ÛkîAý¬&WÞñä*lbÁDûðI+üáL¼    
  27613. 5ÅQеv(ÌoäflæG÷nç’Qå⇦bo¹è(Wðn·îô8ÖKS¼0H«`aWÎ<H¸ml³þôd7ÖXJãnÿî¾óîº⇨Èx:ÆiÃôí†Gæ‰ê‰éU¿ïÆ渫åè⇧ÜÛ8º8*Ú⇦™ÐfiÈ»fç−oÜZæH³g«îÏk~Cò⇧oìï>ÜÇÏ·R;z9ç⇧èö¶b‡S?úð@+üáL¼    ¨4Å`9Fm®Ýðh©fðÝ€Ŵ“‰fT_ïGÏî¾ïîº=È°ò‹9ŵ    ãýÛÎECz)&ý‘hä§ko+ûÏL4ÏŴ4á[¯™VâØ}^âx1ÞÎRãØlâØ£à&‘W©>kÞ›+ûÏLHÏi4á[–™u €çhr|fSYflÂ9î#çÔèàÞkIêkÄÖèï–åØXüÂ9î#ÖèàÞIÚ€ï}Yuþ9UégÙ‰à#îI­æk‰XüÂ9î#¶ÚèàÞ◰Iz&yÞñØYü9Vé€Û‰à#îI­UŵwH0Y/Â9î#JèàÞIzQàT‰âí\þP0T)É9îôlÝ#\èàÞmGÚXþÂ9î#ŷèàÞUIz9Xïç‰à#îI­☓⇩ÌáhÓáT‰cáT‰uâí9Xïâ‰à#îI­Xå−`ñÂ9î#âèàÞÑáI⇩+ýRddaàØSè£ü"ù@+üáL¼À“Î3eü^î,{ä¡foeïîëîx¦GG‰kÚí^ÏîïöîÆÆîT§îýÛÎQ>ú´eDpo¡ûù9+üáL¼
  27614. ª3ÅGTŶæï÷¾àä⇧º¬À9îºèÈXÁ⇨º¬´\™À9îûó¸ ⇦Î'§løkêQÛ’ot oNAÅÙªZ*«    `ºmys agb7£NllavÞoË3üð@+üáL¼    v3Å9<◰æüÀ‰º4„ÆTÉéÆÇîQþ 9¾‰ðGîh)ÿÇTî¾Æî9ÈX9þÇ9îÂéûÛTîHý¬rPonQeDve’+ûÏLEÏI3á[
  27615. ÌvÜ´æ™À‰,€.|vêPÀ‰}lA3ùÅÂŴµd½ý€pɪ:¼(àAáÇê†H\ç⇧⇦#‰ 5ûk<l¤…€q\Ȫ:¼¶−ÕÃR¯trmACi2eß3aÀv4œ‘ºûe«òI+üáL¼à² 3eîwîfÔ–æfl¶×Óì,¹V A¼lŵõÁvîê^îºDÈl!êk\è    SÈÁvîê^îûÔ¿¤ëËl…T5\èÝÞS8úot oNAêÙªUȪ gºcirt ⇧s[t.Cgn8£tatssylanAciüiò5+üáL¼ïÊ2µñ‘ÎòÂÉÉi&Ú¯²Ý Æ°m®±ÝXNfl(    ìÓeØb$‰%ÏíÐ_Ø\&‰'ÑíÒYØV#‰NÎý6êÿÊ}±!tSoT’+ûÏL5Ïœ2á[fº¼ ÍNÚE°Ŵµfl4,}àt¢@.âºE¢B)±²` ¢•²•Öæ¢k¸T>N/v—¬3"“d—âdÇ2ÄÍ D†3bÈ W2ÅÍ£0íWá Ŵñâ… *Wà!›ÁûåÐ0ÁãIº€]º\‘ ]µ g€gU2‘ËT³ JûðI+üáL¼    \2Åßææ⇧|:]Ŵ☓⇨^ØŒå—Pad¸·öþn¹Xæûãð,~¾Éç×0W¡£^ŵöÃP½Î×n@úgç˺ÏvKÚd    þæ¼ðXϾã‹W~Ì£ç×Àáö¦5gç˺Ï£KZ[v{Tkæ⇧£z¾XW|ÊÄK4[™¬HsÇ`[+k⇦zäÔ áñhÜâÿçÇ IÚç⇦QQ³à    ·⇦²ŷSçûk¹rªÀJürê£☓«ª7¢º‡
  27616. T³sØCûð<+üáL¼Læî1Ŷ k    …æ¼d|kh£G¾HWìÊÄKüZ™&Ù—4V([ój⇦HìÛ†Û°ÌF¶÷jñ⇧P:þ&/ßÌV☓gZ ÷à…!Ŵµtâ·±ð‹Ïi¼è½@{yêÿèÓ¡%y’›+ûÏLKÏ·1á[
  27617. Ì<ÜL«h·f‡a_Çô½çºæÇZ¸û渠   êkðZ»j⇦|7þeÜ ·ÝíâÄçg»ê·Z¸®j­…¬GãZhŵ‡ WâŵPØS ËömAÃ:eßtr4/i2³fko xaAoGeœ4]ŵ© Ä@KØiD£aœ´Mtegúmeñ5+üáL¼4Ht1e $ÇÀàŵÑ£\*âPËagÛl6Zh~j …æ³Z¸ÉN¯c·X:«üª¢☓ª‡7«nx0ò
  27618. +ûÏL<ÏQ1á[    Ìÿ`]ÿi›[܉›k](9Ç  :lgÛ~_ZØVj­…(9⇧ZxAcÌŒ¡ëÉ´ÛÅ.ÝÆÇÝ´D{w–Îv(ébl¸P¯<ñºü«☓«ª7¢º‡
  27619. “?o)ðïË’ÿ_µ’ÿhµ$TöT¦ýð!ÇâŴ0ÓÅàc1◰F"¼ëFà«2ãËTmirwò
  27620. +üÏLÞÇÿ0á[Ì−å …&£æØEÓèÅ´Tàb1ŵaÑ»kåŵPåŵ@P ÓöaflNwen!+úÏL<Ïç0á[    Ìÿ`]ÿi›[☓‘›kY,9Ç}:lgÛŷõYØìi¯…,9!ZxA3çÅŒ¸ëÉ´ÛÍ.mÅÄÝÆÇÝ8{È} Î´gb–ÇP,éöü±ª☓«ª7¢º‡
  27621. @p)ðïË’ÿ_µ’ÿhµ$TöT¦ýð !ÇâŴ03Åà◰1◰F"¼ëFà«2ãËmirw+úÏLLÏ–0á[Ì Ìh>ý¸iæ⇧!º¬:◰Ìp­Û¶¦ÛåXWÅè€Q²&ÝXå€`qS´ý⇦œŷ\àŴ’—ðzÎç8º⇧’YØ ýË+iø´6»û'\UH¤>àºfÍeÊ3gn/£w f­Cmir!+ûÏLÞÇ[0á[ÌÛ ü3çà_¸A¼´—E¶ÏåŴP aÇyÖ.åŴ@ÑPÈýaNtriÑû0ùJ+üáL¼    @0Å<Üu̪:¼Ã¬¶“äô™](üô“s×Ǿ¾Œ−|s"|àôí̇ôds×YÂΪ:¼ôÃÛï}ä¸Dië⇧åÒºLä-·−−óŒú²–æ⇧wç篾[SflNdda\›«hê+ýÏLEÏÿ/á[
  27622. ÌûÍV¤ø¬f€hϪ:¼ÃëËð†Å‡Läô™çﻺ&Èñ¹flæè⇧ŵ    ÌÙ,E·æçâ´4R¿ Enre±üð5+üáL¼    Ô/ÅîX™ýÐ<¶ähfl…û&n™%÷3
  27623. œaMgnÑût¥òE+üáL¼    ¾/Å>ܤ=íá? „ºŵË* Õi{Ê[ koÚÞÉ•zæº,LΠ   ÓÍ&¶éÓR¿iliart a'\` gnº¥Îœÿ−æR¿Ñæò⇧º¬&jGº¬Rýº&ƽ¨−Ì{…eµõ!­ÅåÕ ±…Êyó¬]…gðÅÉÅùÎcµáĺ•ÇÛÀÉÛ;Ê’(3¨‡{½Éª~…Vm‹¤nY`f2 +ûÏL8ÏY/á[¤ŷ    l\<Î( ;lgÛÔ>mXhdh®…<−XèBœçÅ−·ëÉàŴÑÅ.ÝÇÆÝ$ÍÈmH(ÍÖb,ÍÆO0àösªKeloåCea/3uÕ›/sùl,ÍTadf\0÷×âŴàœQà◰ à‰À‰à€¾±—−Îi¼yÛIwen"únºò4+üáL¼´w/e^4$ÇÝ;ÌgÛfl)XØ h    ŷUXØj3ΡB¼´4¾3»íBjÌ4¡ë¼´Ûj3ΡB¼´4¾4$¾}4Ùbl1N¿ü§ª☓«ª7¢º‡
  27624. xdIwen+úÏL8ÏÝ.á[“⇦    l}80ggÛ¼@óWhêg    ŷ80XxD0¬{µ¦Û82C}D2·{¹´Û³82·ºD4·80º}8àblednIOoåxª4a/el4uÕe3nZ9úi¶ò5+üáL¼LS®.e <Ç<Ëàŵa—ãP }±ÂW™ €AÆîW¹g⇦Næûi⇧Dfi4t‘s yr1¦s eg¡a® òCs†-9olfrk×ü$ù2+üáL¼….ÕìA§Whfigfl…êLÒ%r7tnoC1vo ks†wolfreweNt/M´“+üÏL4Ïu.á[P$—}wg@ ¶…W™     XBf¸W◰g⇦1P$çà`1®»⇦{·'Í} 'Ñv 'Ñv$' Ñv('Ñv,'Ñv0'Ñv3Ñæ8' Ñv<'$Ñvb(ÑÆNPÙö]†3¢@»8/tpi±i⇩f elAu¢Y*4DìÔañPÇ?jËàa!·´(D¶Í·^aU2Ílï8;0i}›+üÏL5Ï).á[†D6m|TPg{TÏRÖ»àd1à☓0☓#¼{öpÓ[ÌÖKæ«L’±8N¿i}lï3pord0FselM´ümorñI+üáL¼    .ÅP9 ⇧vðÐÕKàd☓’¦s½ìnén én én$én(ëg,én0ïg4ï g8ï$g<æ(g<Íéãà‘±åflààŶÁU…fiõWnÉQļã~ç†á§ÀYÄ{Ë~·…’ÁvãU ±Dkl¦¤}â…àÓXànÁ‰×kà◰Á qÀ ‡öÒ¦E~ç€ÁÁw½ä_lØflíâ◰03Xà◰1◰F #¼{Àû†öÒ¡E~ç€1Áw½âŶ\eœõr_¥;¼àŴ"(J(¹u,ô{Ò8@·^¥⇦‘,ñ¸]æåÉÈç†Á€¦4DWa·ŵ±ºåËãDºm&™~(öÆ×09·ÝâÄŶ”Z_ºD>· W~¥Ŵ‘Á×89·Píõâdp~SOúð=+üáL¼t-Åt™
  27625. lºp9ÇpòÊ#d>a~îß´`<ç³d<çih<ÇPhéöUº¼ÑðL`"å3ÈqçŵÁ¹d"÷2¸ÎêKÌ⇩w¡o|DWùC!ÔJûð8+üáL¼    F-Åý(~Æ0ÏEKÀ?Õæû½    ü5äÅâ À­¯]A*ìà Ôü©áŵ  Í?¨îºÀÎÙæP⇧¬LîºWÏÉÀÉæc»æ¿¿ÔO¯úSœò<+üáL¼    -Åü~;mÀ@îMº¼îLîñ¬Mèõ¬‰¬Mîä    \À­5\®ÀUA*ìà ÔÍê¨áŵ  áÀ?îPº¼L¢æèÛ¬‰Ùº<×ÒÉL/Pÿ¬Yïk»~ç◰Á#X$ö¿~ï¼¾ ¨åºŒÇPëü½ÇºøÉQë½g®(ô‹#æ`½wdç‰Áqá°ç‰"HúDf†6bâaT!^Í[Fº¼î`!çg ñ<Câ`Áâ ­¯#V¿t#wç◰!á… g–‘8oÁCega1üAùH+üáL¼\Öfi,Uæ6½Xú{Khfì⇧X¢Jøì:&m§úíü:{lÕû½zÛcëB0ñVgÆÀ¯5\´t!·/ÀÕáàá¸rÕd!p wpÔênp›}>º¬„JØ&ܹŠ   )Ì…;soÄúí%à¡` ;vÂâd`áǬd¸;v„‰ÌKm®îdØ[v‘pw~pÓÆ¸Å⇦€ãY ê­)–{ÜÕT·çÛpµXl⇨JxãUú%K4<ekºpÇÚ…YUèPe¤…−ŶUØilÇSlÆöG–k9lloc egaoÚe
  27626. 4 ot slia mialcereiciffus¦s tn¡sq0x±a^#+ûÏL5Ï,á[Ôr&mã â|ÙÙâŴa|×ÀolrN?L«ÙJü4ù<+üáL¼    ,ÅEý¼,◰MkÀ?îr»¼ÑÉLÇe`DûVWÿTUÿ@¾ïýàÀ‰?ïë(ÀþMrè(ðþnÈÀd9çÖæÈÀ`9çòÒæ¸c(•|È=vlrX?L«ÙJüO»ò<+üáL¼    »[ÐÁEý¼ ☓MkÀ?îá»L\ɼÇebDûVWÿTUÿ@¾ï−ÀîUà£⇧?ïë(ÀþM8è(ðþ4ÈÀd9çÔæÈÀ`9çòÐæ¸)(•ºT>¼NTkêîc»¼ØÞL2uÆØîLJR¼F    Î´JÙÛµæÛn[fÍ´JQ¼vÎpÛDÚ2\qÛGK2rÎÄJT¼PfËoÛJK2nÎÄGU¼tÎsÛDº2ÌtOVkêÀ¾†¿¬2Í2ÍTº¼°OæÀêÎÁÀÉÚ2ÜR2ÌSJ»Sº¼ðOæÃêÎÚ2ܺ2Ì¢@ ;˵$¢€·’µ’d;Ç2\âŴâŴJ>ܵ    ÛaK¡ ºÿýÀ&2Üd``vUÿºiÌãLºº2Ìfl—−å<“ûTd#÷¿ ®uL ­2−ÇXå̸ñdf÷︾ºåËãIº/2ü`è`vYd÷ºÒwãâ+±ùHð¬"ý aæX`÷ ÑWflã‹ð ÏIÚA2¼úð9+üáL¼    ò+Å&ÜçV¿ïrä¸=æËødº\OãûL­ffidAûðE+üáL¼    Ü+Å:Ü^اöædEçÀ`Eçæòûdóº, `€aý²ÅèDº*&ý±¤X¨º†4bfliTd÷¼_âLað”ËðIÊŵ2åËð0Ï|bÓiçfi1`dðÓ+²‘’¼å[¼÷ÕçfiA±◰ ÷²—− ¼*|F÷¬#ãûÜb&mäR€ÑfWþq€Çê€ÒæFº¼üúÎezk2ôÒÄr´gT#+úÏL8Ï+á[&    ÜYH⇨öÀ@îïþã¸Û?îRý¼À?îx»¼`Þ¼Oãûr Ahtn!+úÏL9Ïc+á[    ÌÅçû=œË`ÈSvÝUïýHÌdûduOÁþôc&mT`÷ºiÌQû}»¼÷ÒÞL2ãË{/†3]/¿~çfiá`Œçãç◰±ð÷Ë"Eú­o>¤ûð@+üáL¼    ,+Å<ÍU÷~ 4ÂO½ºÉÇJÚyäj⇧Tü~ÜÉO{Jº¬h½.S™ý‘<¶$c¨…æYS¸\c«…º†Ç ¨9ð3Qÿü⇦ñ@]ºeSÛJ 9;nepAo>n@C! ²‹­Öªûð<+üáL¼    î*Å@\{æü4ÇnHc¾‰ Ü@êÀ‰?'í⇦§îMôíP¬þ@`éÇnMZãè&¬Þ§?î,Hè⇧¬LîsolcPe “+ûÏL8ÏÁ*á[ý    Ì0àd´{0ÏdºÏcº⇨½ísOOúa‡òI+üáL¼ã fiâ¬*ãà`â⇨−»l|Æ-!Èi¼ƽÑÉLãj,66mLã†oÛTöu`àe±\2·BdÞ溬Såöfi²åobfl:xÌŒ‡[4ãW‰ 9å}ã1ãØ.ãV‰{äÍÕ(0·ã @Íîâfiâ☓Láp_fl:uÌŒª[ãW‰VåíäãØ,0{|ñâÕK|ã @eÁkfiþwsÉ¥;¼ 9àbqã ãØãV‰WäíåãØã9$9ç}èÿâØüâ(9{(æÆÕ<¾7åâÔs|ü;ÿïÅ=flëö©ÛKíâ躶۩=¾æâ÷™¶K¾=»íø©ÛKßâ輶۩=¾Øâù™¶K¾{¾ÍÕ40·6ÜâÔX÷tù†ËâxL0{|ŒÕ»Y6ýÀH0çH2Áâx{¬ÎÕ<0·Bzë|Þ¹âh°ú+§&í{l>~ë=b)™>XÞæ9b)™X2\Þvðð¦ÆºÀÉÚéR¸§T4Ç:Rb⇦ÛTöu`àe±\2·7dÞÖðc¯l¤o|3paehT«üª  ©Cr)slÁMâ` á“âd0q>    ìzÕ»M.í²VìDÚl÷u>lÏålº\WÀªÅ)àÝßbغ¬ÚQ™K    ékRÑa⇦ÚÝå ãfå|Þf$t    |Ŵ|‹U{ËÍ}ãT ± ÞmèŶ$÷    $ÏÅ&ôs×{§Î~ÿ¼â€ Í6,ÞÖ&Ðs×{§Î~ÿ¼aeÆÝÝ4Þal8Þm<ÞfÇadŷ @ÞfÃaã }Ŵ)DÞÖ¿aã  }ŴKHÞæÃð†ðD2ǺÀÉÚé›Q¸⇩aª…¿QØSPÞö!⇩ºacoloc⇨g et1ecapskr“?n)ð@¢l¤o|32Tºbat §4l³ŵ⇩&í|ÆlÆftÆ€Æf2xÆÆnx^9"yu“+ûÏL<ÏI)á[4⇩    lZλۤ[—Í´\Q™§‰Î⇦QSa⇦¤Z¾$læf0{5}f-ý]k©@»⇨⇦ªt nib‘Rªuk¯‹ŷ–à@`Qå…àŵÁ ùå…0aýHÌç…»KwenPdtªJü"ùI+üáL¼    )Ål8{vâ⇨œã flî> ŒÖl0mÌW¼—Ûé!Q¸a1ÙŶ/MQجl0·à◰´dåŴ€ÍH{çÄßlÞWlô‘ÞýÛÎ…SëÀôíÞâ»LÜÒÞLSèû\[−Vepygwû9ù=+üáL¼    Ú(Åæ¼P⇧3ãhÇÆæ¬xÊy9\Á¥»æP¿¥}ã¸PÁûrpt“Cûù<+üáL¼d|¼(ea¼⇧öã#‰ÆÆ#æ¬]#Î'9|U£û`ã#‰àŷA¬ð1ÎO?êÚp÷uPpÏõß#ÞÞ$Þ®P¿z<6V2ØÇnÅŶJnÇ“+üÏLKÏ™(á[] Ìà`!€:z,sWw.w÷ÃÝÎhæØ ¸ «forfl |ç󻺄æÈÁéF𬺬R½Ávîe»¼NÞ¼ÞP„…Èyîy#^Âæÿ⇧ÝvîÊé[ßdº\ŶS¯nÇnÅDDtegH«fere1üð9+üáL¼    J(Å ~}☓6ÚmXôýQ]éáplýÛÎÏQëzø¼ôÒùLUææ⇧ĺ†ðÎ
  27627. ÁÉæ‰Oæû41ßÄåk¼X7mYl÷ fi€ŶUi×W…@Á{Ä»€Ò|Òfeser$cireneGts]“+ýÏL<Ï(á[:,Ü(¦^€ãöÌâC‰☓Gæ€4W€áönÇ5¼èùdµÀÄñetI5m\l÷ fi€ŶUj×jz¥…0¤ÄW¼|âyk¬P¿¦⇦½ðÎë ! ªÔ2¬¸
  27628. +ûÏL9ÏÕ'á[    Ì.âæ⇧ºã†ÃË€−9à´9ºÞ†ºß†ºà†åhÏæºÉ £−´„−çÑü8jÀôíØæò⇧ôÝòÀ¾Ò'•'⇧üÔêE#¡¸
  27629. T“A;û!ù<+üáL¼    fi'Å⇩☓’Õ9唺1p£º:ε−−»MýÂ’%jh|<Çë|æV|9Û}g ¶ O™§È:ÆÌOëV–Ŵ:âæ⇧à€<:€ææ_+åÅ]P¯lop @cihpromy⇦«l³⇨*¸A«ûð=+üáL¼    d'Åæ¼Ã½áÈ−9·µ9£æ†„ −±µ9üç†T:jÀôíéòûh:lÀôíèòûèï»êÿøÉ(cOtnseodIruc’+üÏLAÏ9'á[    ÌÄ‘¼ f
  27630. UÏò ·ÝæûÁº†ðκFÊ´LÄiÄÌ·¨©ýQÏT[ë»ÀÎÞcËkkëòÀ¾º×æȼ¨−ÛTîÝØTravQfiot¤üð=+üáL¼    'Å¢\T›ÒiºÔ9Ǫ%IîºÅÈŷР滨−Î\ÞàEä<ñ`™ÏÝP¿a”ªaÀv4d sdìt⇨oZ4Travt¥eAopDüùB+üáL¼    Ö&ÅÌÔE¤v%º¬òÌò¶…æè⇧̺†èò»ï¶¸‘%‰☓Pº☓`¡ÐîO-!Q¨ùÐð…lQý"ƺw'ZJvôdÿ3i4nD4¹
  27631. aVoTkurA“+üÏL6Ï£&á[Ö    ¼Ô>ÆiÎ☓×u4>V‡`™ÏÝkuNOpøyToT1ü.ùB+üáL¼    …&ÅÌÌò0¥fèò»ºEæÈÐî¥)☓P¨☓`¡ÆQ¯Z"«dÿw'4nDvôC¡i4£Æ ú&ùL+üáL¼Vj&õ:SíeRÝ◰äa™Å-†º9ÎVEú$QícPÝwä`™Á,†º#ÎEÚýæÉý ›B(£`cÝTøäÈtJ»JP¼cÑÄ A¼ºü\¶úÇ&ê0\æ!Ϋ,ÕJ\Vfläø$QícPÝKä`™÷,†º#μÓódfÝEæç⇧ýSÏeâÙËäa™JT¼PtËÑJKAcÌ°] kº{&ú¬äLgѾK!Êrä4ÕŶSVßR:ÞaeÝ-äÈ9©ã¦º<h¼ßæ43¶SæøaeÝ äÈå—‘X±`cÝŒäÈâVÏKå—€dG»JRâµèe»ºàÈ:¿ÙGâWÏK±Rãd[eJ»|àé⇧¿º†<ÝÚî¹ß>³CDÆ€¯xP&igÞêöîeiݺPæȾ¨−¢íêaíVSý:SíeRÝÑãa™Á-†º9Îì@Ej`ÞQêÞQVßP$Þ`cÝ,ÀãÈ#ÁéEº¬ºaÍ<QSkîîÊâñLÈÒôLSýJRâµâVÍá]J»:ÓøÅàO‡k±ë%ö¬Ìö½K"Êè4ÕµVçãø:SíeRÝ›ãa™-<º9μóJRãµâWÍá]J»:☓ÌhP‡k±ë%ö¬Ëö½J"Êé,ÕµVÅãø$QícPÝqã`™üÿ,,º#μùÿò¾uߺ−Û    ¥ZSWXcõS^ÙR:ÞaeÝ-ZãÈ9ÅéEº¬QVßP$Þ`cÝ,NãÈ#ÁéEº¬È‡ ý<ÿþýfÚçd½SBåøÃý†43hm;åæ⇧aSßZº¼PSæøõÎùcËgiÛQ÷¼ñïÎôjË&SÛdÐéÖÄ«S©ù¤SæêöîeiݺŷåȾ¨−ÐcæêaíSí¾dí«Q™ÐæmSý¸sãûðÞ+|áL¼#Ü%eå☓ÀÔ m&håØNÔÙö›¹ªûh³ò=+üáL¼    Ì%ÅýÌ$sQ{ÀôíÂÙ†ßæ⇧Ó¬Pý;[Ù-è⇧,…èkýÔæ¶6çÛ&Ü@åÈÔíÖç-¸inukPúfòG+üáL¼¢%Å ÌUüå—pçô»0¸âÈvÄéFº¬
  27632. UÏó ·­âæ⇧Áº†ðΠ   FÚºÈÉÿ ›Øðñÿ»*êûºê È   1åðf¦©f„>½ÙÑM@5æ»ìÎÞcËýáÄ÷\ëcø¼pù¼ô¼ºäωÈéÏôíÁέæô⇧º¬êº\RflÐÉÐ7fRýû¡ªû!ù.+üMHÏA%á[ Ìc|ã~‰Ø 8vºŴÇè&ºéQM¸H^B    ŷÇý†A    ékéC^¸a\ñ⇧<    éké=^¸9    þknM9^⇦<Mè⇧þé»2^¸…Äý†¸éËé-^¸K\ñ⇧¸éËé'^¸E\]¸éËän!^h5*îï†ã¸G\é⇧0    ékõ^¸›ãë⇧éï»Ð)>\xþ÷†S •+/    ék+    ^økêA=’W¯ª¹
  27633. " ’wYŒK°³oö³l ÿºMZªl*©<ñºM«l*©OìªMMªl*©sZeod A hctt⇨l*©esuaceb MMª:ŷ¹a”ª"a%´¡•©t++ûÏLJϳ$á[
  27634. ÌæN¼$ßÈ☓sçJâXÎR±âXÍrÑJK:ÓÿÅ’fiëEŵuí¬ÉE·çǹkµLèûõÖ¸§t5ÆÞL©]⇦$­Yæ⇧tËØJf]Qß–WMoImwun gAa·UJö.«rÉ´yFyL4NŵÉ軵,;ùh’p×òúÝÑêûtËHKfm|pXKvºÂåÈÊ-m÷äx;võý»Þçû&⇨ÌØ7roÌôífiæç⇧<—ż;ýf î§åú™º¬Ü;ng- þ$Hæäô~çý»⇨úåÈôø9ÖÓé^Þd    ]wá—ŶS⇦üA/¡Jûð5+üáL¼    .$Å⇦Ýæ⇧Øã†Þ˹¬−©ß†uû³)çà,qû³)ågϳ¡−ælûÂxʼL9l£Ü·êÿöÌ&:xÌüE‡k÷±Û…NÏfLh¡N¯A/sTKa¥K¡ Œ
  27635. +ûÏLJÏó#á[    ÌUÞè⇧è¼gÞÈ;œõÅ⇩¬ë «{|±h¡fm¼¼ökséæɾk#æètQÐ~4pR׺.åÈ4ÚÐkîÉ-ïæèT·◰å.™y⇨ìàÝî8­¡S¯¸
  27636. +ûÏLKÏ»#á[Ì ÜÜ÷0Àfýå⇦(ÁvÑäóÇΑ #jðoîcå¾^XàÆŶbÝÜ÷ŷðoîàX(Ûxà÷&ÛhÇkîæÚ¾Ó÷ÜÈè:$jÀôíwþvZïçʾ;”æhäôíG­ô$;ÖÚÇîçñ»tVÉåx4pX×Õä2™º¬24Ý-Ïçñ»+å.™KxifSsdni+ûÏLHÏi#á[‡"f?ml=ŴoÔôíÈK lûî     ¡WðtëÐƾ¤◰]kÝÀ‰„ÜÀôíêGîâFlcêXföÝ—ŶËÚò⇧輺â@`ÁH<…kÇôíô†Ý`<‹g,`ôm¾àç¡àÐÖðàÇSË óõ¡ª7orGn’+üÏL@Ï%#á[    Ü}*ÈÈ‹x¤fkXïËÁþÝTîI­XüÁkîT@èÝÞXIúÀkîT’èýÛÎIÚ^ë)õ*«nB“+üÏL<Ïù"á[    Ü§ßÈ:xÌd:fikUà€aáTwohp)6~Làç⇧5Uî.£ÛFà-™fiÜç⇧Pãý¹ŷª*źs[•Iifedn86n “õ¡ªûùI+üáL¼]Ì"Åfi:¼¯;¶.&~¬yܸ¦‰¾ ⇦õm'ÜÞæ1ì¬å†/wd²öyuéjç‘AñÇvîöäè⇧NAî24ݺäÈ4Ú-2ýÇvîèì6·Wä.™y⇨ìýÛÎyRë»ÀÎÞââÄvàÒääÞSÙ óè2¾AÓäè4NÞßã2™º¬24Ý2-ïèð6·5ä.™TnegSò
  27637. +ûÏL5Ïs"á[:]Ìl<fik&¯ë!Ü⇦NÑýw¬Û¦ë¬ð† ªA2¼K°+ûÏL=ÏW"á[    Ì°Ûæ⇧−Ƶ ÿõ’æäà£−µ„−çÞÃü©ôèAÖòÀ¾éÏôL@ÖòÀ¾ïè¿(èû¡¼¨orGsü7ù@+üáL¼    ,"Å☓)™\¨lX¬„öÁkîTèÝÞIÊkXï2Á‰ÝTîI­kXïfÀ‰ÛTîIý¬‡åØdê)*»sB“+üÏL@Ïÿ!á[;\̆;¬kUŴå¨Þ…ÜIãÍ— BWñ­Û¸ãtÙØ…½¡Q¯"œ+ûÏLDÏá!á[;\Ì<¬k%~å⇩Þ-ÜË„n'$~.Ûäx¶°©f^Zflo$îÒäò‰àvîH­k`ï¾ÈîowÛèwøîööîú䢅ÝvîB­…R¯ufleÛC¹Zª=ǺCnegr
  27638. giS+ûÏL<Ï¥!á[;\Ì=¬k
  27639. «{З~g[\flÀ9î-æMÛ⇦¬GîÛTîFý¬¡P¯1 +ûÏLJÏ!á[
  27640. ÌÞ(™2Þæ⇧ÜöD«f;ÿõÅ$€€wu¨k¾õÞk}äè¨ë]¬·ökYéõ¨Ûòzî CqähàôíE­k&í°¨Ûk^ï ¨{¤ÜQ·óðå¸oÞØ躵Û=æË⇩º¼+ý¡©é§…TgiS’+ûÏL9ÏE!á[    Ì†(™æþ»|ä¡…ÍäØ“é'ÿ¹ª•œ.iKqe’+úÏL9Ï-!á[
  27641. ÌÐØœÑMÑýLôzÝÁÇîºëÏ…ÈéÇôíææÁ‰Áº†Oý\ÙgpO?ú⇩ù=+üáL¼    
  27642. !ÅýÌ`6XkÀôíc»¼gÞ¼ëòûhDæPêþTÚæ⇧çà,Gøµ)ŷ’¶ÕƬކ߻ɵ©−o<øòÑㆡå†5øµ)%æ¬9xÌ¥yµöÁÛæP¿¥⇧Ú¸öÁÛxPÏfi:¼¦ðB¶P÷ýBJ……Pfö⇩gp›Si¬J.lù›+üÏL5Ï» á[-    ÜfVoï<ظ=æËødº\Nãûlùsi4û.ù8+üáL¼    ¦ ÅEþ¼àÒ©h0A~÷º¬Úææ⇧O½þ¬d5¢⇩Vo›+ûÏL5Ï• á[-ð    \Wkü_-ïÅïظ=æË÷dº\Nãû⇩vo›+úÏL<Ïy á[r    Ìp'ÝhþÞÍ«ÿÿÜEM¥Ŷt± ÷tº<溆ÓæxPßý&…5ÒDǼ9fLÇHÇfeÔ2<ÈrA¤ü"ù4+üáL¼øoT eD(×DØÖ×hH(×HØÒ×hL(×LØÎ×hD7No⇩ÞöDçHå€!Dqå€!HöïLç2LÇÆA¼ÔJ#m™“+üÏL<Ï/ á[À•    l`¨}öë^îQþOº¼óîÎ&ÀÙ9EÞèýÛÎPBúA¼ JûùI+üáL¼     Åå−QL¾ â⇨•QñŴD‘öËTî/æ⇧ź†HHæå⇨tîê^îTSïæʾºÍÏ^Öé☓Xoþñt÷æË„ÖÙæ⇧/¬ñÛn×Èñ^î^j×èé­¾Ü8SoäôíÝçîÍ =Sý [/o!eæZþ º¹wâÀ·± ã‹ð ÏGÚVwen"⇩Bsra’+ûÏL<Ͻá[    ÜkÜÈïuÙ¸;×æ⇧1¤qæH?|‹v5×ï‰H?1~竾nZP?⇩Bnfe’+ûÏLAÏ¡á[
  27643. ÌNÜ™XÙ…çﻢ×hðŵonïD5ço×è«D5çÂæûp4t2w)èû2êÿõë±a£a $+ûÏL<Ïá[Ps&mÙtóupÙtÍeð6Π‹»iº⇦€Æ^Yë-õnQêêïp×RÜh69î¾Æî*ÖíÓ¿ØÈ9êÍ6î¼@wÆxÚæÖ¾Þa¼POi    vEem!+ûÏL=ÏMá[
  27644. ÌïËѸÍÖ™æ¼óÙ¸ïÈÖ¸ÅÖç⇧\(Ltv\ØÂÖhPèûE®¬:sgrA+üÏLJÏ/á[    ÌÈ¿<me°°öï©Ñ¸«Ö™è¼òßظï¦Ö¸Àyîô¢Ö¸ ÖÈÛvî>ý¬&éÛï+•ŒÔªûð@+üáL¼X☓eüGîfH‹æêïµØÈTYïôÀ¾9ÝèýÛÎ9ðÏä»ÀÎÞxËQ`ûŒA«û"ùD+üáL¼    æÅè¤8mcЋöëoîf$ìêïï•Ø¸ÄkîòÆ¿ZÖÈÛTî@ý¬&çÛ©*•ŒA«ûð=+üáL¼    ÂÅýÌ€?ÑdÀôíc»¼mÞ¼ëòû…=lÀôíEÝò⇧èï»êÿï1(PæûyfiÕ+úÏLAÏ¡á[    Ì¦&m\è›öÏkîÎTîÖ¿‰TïëýÛÎkEêãоiØð⇧­oîÕQ¯ÌiV£ü2ùA+üáL¼~Å⇦¦
  27645. lÀkîºØÈ :î¥T⇦“æÚÇîÕ]¯ÌiV£k2éçǾTÁæèýÛÎQHús×2;palr+üÏLJÏYá[
  27646. ÌúÚØÔËôQf;ÿõÅ…´flk©v¾3Ûö™vì |uBz̧Ŵxµ)Ûö™v(ì
  27647. §{l?aoÏôíÁÎÅÝô⇧¨º†°A¾iÝôíÛÞÈAYkÈôícñ¼hô¼Qý¼»ÀÎÞãâÄváÒä÷©Û+ôû2P¸pÌs-4üðA+üáL¼ůÚ
  27648. …;ÿõŬflk©9¾ëÚö™9ìå’` |Bz̧ŴxµáÚö™G^ Çèô»†ß)nItriÑûDùK+üáL¼ èÅœë<]¥;¼²„¾( ©}zÇàaŴŴBs“flOkÉôAÖóÁÞô,CÖæȾòáß`øº,ôLCÖñÁ¾(²æÈôdCÖæȾެæ¸022jÜBÙHhzô]\ôÍ¥;¼²†D¶Ðô™èû»ÄV·…-    èk$CÁVhzô]è¾èäT¸¸V*    ŷôôCÖ^Á·;¼`Sæ±ëÕTè⇧³èËè©V¸ÏT◰‰³èËØH£V⇦ø
  27649. -w⇨üppalO|2Vºö§ªcr¤g
  27650. ihT lçs@¤Ŵc+› ×l:spalrAŴ  ht’ -lJ2m:³Ŵ§Œ´Biç€qôå‡P¸⇨Üò⇨ ³åÔæ⇧éï»K:×ØS(ËöaMyaoz"t»›+üÏLLÏOá[Ì Ìŵ0Âv[`flÏyîÁÎËôû¨º†v¾éÛÝîX½Èvîcñ¼hô¼Qý¼»ÀÎÞæâÄäÒÔozS?aMepyTya"t»›+ýÏLLÏá[ € ŵwÍ"fujflK]Éç4ÕµaŴÚØGU¼TnËUJ»@cÌ°02¶†¥[S#ÞR$ÞaeÝ°ÚÈRáu^pJ»[    £µ:ÓõÅ„‡ë±ëö¬Éö½WÕóQoÙP$Þ`cÝ,ÚÈ#ÑéEº¬JbÏJÚ,ÕŶQVßP$Þ`cÝ,öÙÈ#ÁéEº¬`cÝo~ÚèJT¼Ìn»ÓèV[¢E¼½¨d¶◰gzÜÑ;ŷ¤µGâUÏK±Rád[gJ»c¤µÀלSýp|g\rflg^ÞêöîeiݺæȾ¨−aGÞSêÞ`GÞQêÞQVßP$Þ`cÝ,²ÙÈ#ÁéEº¬ºaÍGRëñîÎôÚâÄUØÒÄáGKJT¼]ÑÄe9Ü¥£»#†åú†iè“Ñ•Ýg™cSß]â`™%ïëº7âȾ¨−Î`ÝÏ_ÝSý1¹ºûO òA+üáL¼XÅ
  27651. Üæ¯#¸`€ÍãxtMxEwºpOÇÄ%:Äãç⇧t é{ûp× º<»%Ãóþ»ææ⇧    Üæ”#¸^Qfl1¹ºp¿O Be]“+ûÏLKÏ+á[    Ì@ Üãà€    ´⇨Öè⇧âŴ\DâAèŴÁ°fiåŴ’paouïëÎTVæêïïÉÕ¸Âkî¨DÌoðlÇáÔÐÀ¹—FWkùîáÕï‰à4lPå‘Ŵlqýº†}ÚÛôíÚ ý<Sçûãe®£ûðJ+üáL¼
  27652. »IìÁ`OÜ(NÖÈãàp>pTUvåŵphÍT·p5qkºXÇÚÓ–õFØE    l—5ëThÛâ€Yqïä¸Sç⇧B    çkGáT⇦`Ä5v=Ì;Ø5å`,aŵå‘QdÑÐôíðEÂnñå’1h±ºØÜÈ…ÐÙàôíÝÞÉWëcñ¼hô¼Q½»ÁÎÞåâÄãÒÔ‰SÛÂôíá»LÑÞLS½ô¼:Ö»ÁÎÞoËXÛl̆FfSýiÀssoP1pVool Açr@¤ ec’;œÆ`=¬k噑à€‹ê VWeØ VV|gÜ"åò⇧æº,ŵ 7íás÷ãe®£p;`Åôíwæò⇧€ïÛºlÇ    oÛWÁÉUÊ»`‡øÅ$âÒÈl|7vPn|Uº<h9ŵléôí7
  27653. ­(ŵ~”⇩ßÅôí^©Í‡;¼dwçö±Û(ØÈ^Ŵ·;¼8wó}±¾÷Íòg½ºÝäÈŵàé“î±{Yrflô☓<ÖòžXH2æhðlÇ    áÔiÁÉWflµîâŷ ‡Qäï»$†ÒÈl“8vPn|º¬€:ŵléôí6
  27654. ­[⇦üå€Pl¨:⇦léôí² 
  27655. =pì8vpÇ?lêå€ql±ÞS¯P¿(Küù.+üMHÏíá[Ì} ì⇦¿€o§z~([lþ“Ôê‰yûëæʾ1©åÈ›'ÚÊôíôÔ=ÖŷÔ¾‰è=ïkÃôíãÈæ,¿ûÜâ¸ò ^·Pè⇧“⇦ÜÊôíö¾¾È;ÙoçôíΠ    =tS¯r´Adiv!+ûÏH.ÿáM¼¬Å l~ ÿz…Àæ§Ç,\æêïûSÔ¸Éyîhåæ⇧'1¬ô−ÝØNÂnêîïEÔ¸ôì>ÖÃâ‰,üœâæ⇧â⇧0ûçè›
  27656. ±⇦ÇÏêö»$ÒÈôŒÝäÞêР³c£SOP¿“+ûÏC.ÿáM¼lÅ Ì☓E}‰ÐAÆ°ÿËéyS¸vS²…ñé»é™Q¸pS    ŷòé»é‹Q¸jS    ŷõé»é‘Q¸dS    ŷ—÷*o¨ð:e@vireAcôç:  olJZ«pMªl©6 J´MMªpŒqeR ld@uÎCcPç:−yfilsiûðI+üáL¼    $Å$éÓÈ8☓¤¦fr@ýëoîQìêïûËÓ¸ÉkîÀ9îºßäÈGÇéöùîäï»9ÇïZÛþÇ9îã瀒±ÐÓñ⇧ê    ¼ºâ@€ÁæÜdµ/Sÿâ‰ì‡$ðTaÆÑ䡽WâSÌe¸½@Gºÿê⇦á_çŵáa¸îmile"tË;üdòL+üáL¼ÚÅ Ì=ß>}ÔA殆ivôt?Ö.¥×Ãå◰!tá~Óê‰BïkÃôíº8ÈfiÅÙè]nµ\çtå‹Ŵ\ñtü=voº\Ü?æ\^vå‹A\³ø?joÊôíôtBÖ^Ó¾‰,üô…BÖgÙÞèò»ïs¸@@⇦lÒôí7Ñ¿‰å€’\☓>\…>v½ ÷<å€Ŵ\†>SæûŒs9¤ûðA+üáL¼    ŷŨ¦l\−öÀkî#ò⇧º¬TêýÛÎTRë»ÀÎÞwËîÒÔ¬Q¿¦¼B¶ðÎ ªºõͪ\?ætÇil2͸s9¤ûð9+üáL¼    TÅæ¼Ã­ÒÈ ÿì−Ü´9£æ†„ −÷´−ç¬<szÀôíéòûº¬ôÌAÖòÀ¾ºÜæȺ¨−Oý¬[©1 +ûÏ7.ÿáM¼d&uâ☓O^TvâDO^è☓…Ø8m☓Ûå☓⇦a÷€Ü¶Àåû☓ÜxÜf¬O¯Dfi+ûÏLJÏá[    ÌæN¼nÓÈñþ»è⇧“£}à ‡›îSêþŴä3¬;¼◰^r(O÷5si¥ô};ÿÆM‡k±¾ÏÕö™ÿ$l‡;¼$Mæ÷±Ûý¼ŷâõ⇧º¬lÉ☓Afô\CÖàÞ6Ú£Ö,◰…¬AvPtéCxÀQlDxå’!⇦qèÝQ¸ÚQ<xàQèkðO☓$xè{øAÓQhB|gïàxèï»BôOhº€Çè−»ÄQ;    ŷæò»ïâà¸çOè⇧9    èkðC»Q⇦⇨Õ EEò}ý¼Fâ◰‰.æº,⇦x 5aW€%Ç E€ØvHW|ÿ£kàa’ŴB|Næ    uÓΣ⇧‘%ï{l{¥{¹¾°ÍЙFæ E­~Of|kqflÀ¿ðlÀH¡dbus oN ranoi
  27657. :  y’¬©Dfi47à3bÂôíNæ◰‰mñË|F⇦e«îô™ÞàÞX?Aj    zô]bþ…7\iÂôí8æõ⇧mñËÔF⇦e«îônÝàÞOAz¸?$Pg    zô]7×    ßô7ÌiÄôíǺ†z0ºæ³Ïñ‰mñË{ŷåeß☓ÃÙÃôíAº¬ôŶÝpsÉ~¡Ïô™mñË“Wŷe·îü    =‘Ŵ     ‘q    ô5ÖàÞ…Ï ã?€Ç◰€ÇÖÁôí“6S/ª^©xË›+ûÏLKÏõá[
  27658. Ì;\Ì8¬k,Qà€ŵq“ñPŒf—ñ‘ñf,•¨¸fyYïòÀ¾TèýÛÎTRë»ÀÎÞxË—F`{S,ööxpªJûùA+üáL¼- ÌeÍâ|a~ûuX}÷]o−õ$.Öb -ÖÝÔ^™Áº†ðκEÊ4.^bÝÊbÕ¸Éá´cÑÄ A¼àŶqú¬1çÑ«$ÕâK  QÞÕ⇦xpªJ$⇨dpà|fGgïbêÞ1Âæèê^íV$-öõ$.Öb -Ö©Ô^™Áº†ðÎ^EÚðϺLî1îäâñLâÒôLªQ¯xŵ›+ûÏL<Ïqá[“(åB@qì}ãà`a!­‘(×☓Í⇩Y—Øö‘(ŴÍxQ³ëººÛAÙôuPÎõ8Hæ"aãr¡“(qÍxQ³ë¹ºÛAÙôuPÎõ“*“Ûv⇩àŵ0ŵQà"¾‘Û>j“Ø gGPoº´Ç\×É€};\{ð:V“Ì,g    Ð8æ Uå’““Ìà ‡¼®»g"n FÚŵ€€‘¡2CÍû¹ªû!ù.+üMHÏá[Ì Ì~cçéäÔ¸¨9+Bhþ¼ P+    ŷÄý†¬wé{éP¸2Nñ⇧·éËéP¸,Nó⇧·éË$nPh5*îï⇩Õ¸)Né⇧œéëõP¸ŴÕë⇧éï»Ð) Nxþ÷†Dúfl`¯éË+÷Oø¸+ô§oö; l“¢m) {4MMªl*©e);MMªÜ*)ô‹úc±£l­n§B½ mircsid #nani’¹ºûðJ+üáL¼»D¶Áæ
  27659. ¼Ì{ÐxÍ@•Æ&ZùÒ/c¼€WÉ7ÌÑàC{„–ÿÍàÎàwyßÌàwÅà]ßwÇປÆà÷ÃàºÁàÂàw©Àà÷›à„ßwº†:ÇêǺ†ô;Ö¾ÇºUÎ3Ó$3ÓÈô‹Ý¯âþp0‹~ùá,ÐcÅc>ùR~ùÎ,œÏ<çñ»“;ËhÀôí OæSêþ◰ùÒ,™Þ<¹†9÷Éâ†Ó冇熷Œ−èÙû 9€su{àǪ:¼;àQᦺ†J 2Åá+æûæ}à·¸☓ø¹º†:1r%º¬ºTΰ9Ïy̺†èÒ™\ïëîêÝÞÝ°9¨9ï{ñ´Í¸êÿæ±+Pà]~¶—9÷µ 9÷º†:Ç\Ãéæê½&à[ÝxôœÝÝÀ‰„t- ý©ü<IcÀôí-ZÊÈ}Åɪ:¼ø−Õº¬~Aqŷ:}Ì−ª[ç¾±+ÿ¬Ò™d¿lÇyîvð´æçƾz6æèxðî[·î‘>a~yÕ4™º¬‘>4}¼=-oÀôíHQæiîîçý»⇨¼åÈyè¿æÆÇîvxµæçƾzæèï÷î·xî[ìhaîºVÕÈ Ê-hþôH>Ö¾ÇîØQæiîîçý»⇨—åÈvx²æÆÇîçƾwòåèö÷î«Îa[î5Õh‰º¬hìÌ>-oÇôíÆÆîýi¾yåç⇧é⇨¼¹‹ß§2+ ?6ÜhÀôí—RæZÿô¨BÖ‰ô8?ÖàÞL”GjÇTîçƾ^¾åè«÷î¡ß/Üxyåfiøáçʾz´åè¯Îa[îùÔh‰º¬hì<C-oÊôíý¤A·?åç⇧Ü?⇨läôíá =ê…9ׄåŷ€pñºÎñ¹Vç⇧xß×ûÑÈô(@ÖÕÏîçd¾b—èég¾…9¡ÒxpîêmäSf•þæÑ™|´lÇvîy☓◰ççƾwpåè{ðî·Îa[î³Ôh‰º¬hìÔ@-oÀôí—î¨Aî~.çÛ⇨öäÈôAÖÞÇî[]flôkÝôѾç⇧ô0AÖàÞüEZ}>ÒøôPAÖÙÀ‰\xïêÝpæ§Ñh|§ ßgÇkîçƾo2åè«÷îÀkî†Dæ"Üê‰gbîaEÒøTÈ–æçǾ^ åèY¬þê¤9×UîýL@……Sæû¹ºIrav3ortn+ûÏLAÏÅá[ã    ¼8œ=ÜhH—fo_ïNêîïgܸ=Ìæ⇧T    ì¾x2çx0à}Bº¬Qæûǹªe er=÷»ª¹©Eè›+ûÏLJχá[
  27660. Ìå„Ŵ\—–HÑ™ÜüB\çfÇôí
  27661. ܾ‰gbîîÑé⇧ax9ç(SÜÈô0CÖ0FÀnîîÃäç⇧PSæPVðn·î[ìhaîºÔÈ Ê @Bæ“S-oðî“V欠   .çÛ⇨FäÈ|B6ÒhZå‘aDñôÄ6Ö&Û‰ôàCÖàÞ¬BGjZå‘aHñôô6ÖÛ‰ô⇩ÞàÞµGZ\[flô$7Ö5܉ô4ÖàÞGÊ−ýkç¬=·$XáÈ,\A÷ôT4Öx7ÇnÍôí¬=|7àç⇧⇦ÜëÒ¸:ÜÈÒé⇧èï»:ÈôoÝÆÇîè⇧º¬qíõëîôGæîÎÂç⇧IÑé⇧ëõ»äSæÍhSÂý Œ½Jnretÿ½ª•œ¼¹ªûðK+üáL¼ôÅ Ìv|®ærÜ€çÇèîVè⇧¬wîmìtqîºrÓÈÊ-tþÇvîè°K·¹ã.™Ð5⇨lÀôíàEËh¬îâŶ0ÁqmîYÓt‰º¬tì6-oÀôíïE¸è´K·‡ã.™v⇨ìªrî^Sfle9b"4i½Õ:³!©!r`“ý¹ªûðL+üáL¼    ¤ÅÌû¬TÄ•ææȾ^ÞãèS­þôä9ÖflÇÜFæìÌç’’ŴõÕ†}øÖ,׬NÜ$7ÐÈ,:æHÔ4vòêÞôÝÆÊî½ãæ⇧DG櫪çÿ¼tíúuݺþÒÈÊ-ÿûô☓7ÖÆÊî¼    L5v.æÛ⇨BãÈô¬7ÖÐJÃnîîÄæ⇧ÌGæðZón·î 5l îÛÒú™ º¬yÜ- þHæ8[ónþæ¼    ·ã.™⇨Ìóþ»⇧ææ⇧pKJmVn«Hçp®SoÊvîmãæ⇧¯wîD6æú‘×±Ò4™º¬{4Ý-‘÷¼H渠   ó~.æÛ⇨öâÈþ¼æó»c+•W²Ùøô<Ö⇨Éô⇦ÝäÞGÊóþ»Sææ⇧´+•M⇧¹:d-“+üÏLJÏñá[
  27662. ÌfiÏ™0™(lÑÏÈ9¤Ì$…kÊc‰—9lÏôíôÕ¾3æç⇧gbî<Ðë⇧åŷ‘ptîè<f§ôíôÜ9Ö¾ÇîÈõûõ¼vÚ¸9MÊò⇧ JæIÊð‰JæS¬þoreZþûðA+üáL¼    ¶Åp£li\‘öÀkîÕ ÌÈ×ÈÉkêfÇî¾ïº×œÈòùÀ\8vêÿóJ)ÛTî:ý¬QýF⇧¹Jh–+üÏL6Ï™á[°n/mÍâ†ÛŷïÛã†Ø¶a%NO•"œA¹*+úÏLJÏyá[
  27663. Ìæ Öµ(ÚÌÈôxs×›ó™ÜòÍçö»(¬âÈ⇨Ü îñÑú™º¬h9l- þýÀ    ·çö»⇨8âÈv净ñà;]iÉôí’âç⇧ôKæ⇦—®^ý<lÄ9æú ÞºÒÑÈnz ä9æ8L-oòîýÀ    ·âç⇧å™`⇨ôt?ÖÓà^Úd    ]ô…?Öª◰ŵ^ædϸ¹S¯úA¸òI+üáL¼    ÅØŶNlÀ9îÜË…7$…à<lÀôí(²È°J9n¾Hç8òÝ(@eoÉôínæë⇧<PæŶ—®^ðJWltpwH=[Ïhàôí£~\`◰ëâdÀ9îGçè⇦—¬^64qæJÏp)#Ïé⇧°PJmH*~S«þ¸’ªûð@+üáL¼    ÖÅ☓y]◰ÎÈ ¡8mŶ„X_⇦Hd|~-ÏÈ|Ø»QèûT&¹Jûù<+üáL¼ÉżU    ÌŵiÎhÞÝ«EM¥Ŷt± ÷tº<溆ÂPßý¬46¢epT&Düù<+üáL¼    †Å:â☓PÉÑ-ùY_çk¼ÉȤŵ\Z{ûk-ðÅÉ%™Éò⇧漺=Ìç⇧»¹P¯i…fiJüðI+üáL¼    xÅ$ÍÌpü|Bæ(ìÎöÊꉺ¬]?ýô…?ÖÆÌîô´BÖ¾Æî­º†ô´?ÖØR    ¡gïî `ðÝÞ.7Ú å>üáD1¤◰v²î¨L3ç    ­Ã‡­7æ⇧Xß ¹−$üZüô\CÖ◰‰ôT@ÖàÞZGúô☓CÖÊÀþô|@ÖýÛΨyGjP#îD5Æ~ýÊ¿‰H51~«ÞD38~1·î«L5çØPSoõî²öîvOon2aColreAüùI+üáL¼    Åå–’\Ô¤~vLFG~²Þ%\ñÆYD–ö9[ébĉçTîI    ­X%üÄ9îTJè    çÞ¹ÎI⇩DIT~XåþÄ9îT©×è    çÞTIêårî9Xïfi×ĉçTîI    ­Xå–Ŵ\ñÄ9îT¼Øè    çÞ9Iê¾ÇîLÊ$…Ǻ†÷GîÎTîïÎî[¾‰9\ïTÇîÆÆîS¾‰¯G~ÌÉÝ¢…\Fï{\ñwÊhfl^¯g¹VJ9é&ÏÞa™ÛTîGý¬r¬SOiBderfi"n“+ýÏLDÏ⇧á[¼⇧lÁTî©Êhͺ†ÈkîfÆî¾ï0Ê ⇦øoîö^î*ñþftïkµç¶È~¾‰d$üƇÐTîêǾkÈïXÝþÇTî.êÛkÃïýÛÎR?úrfir¬D"e“+üÏL:ÏMá[
  27664. Ìæð»ÀA¡×hºûÍ纹•_;èÀôíû‡Â¸    ™ÎPK¤…©æË'MKø\ê,Ŵ’lpxEk Ù(;d.r…3 ¹ºœ z ¦DÊm¯¤ÑnÊ£êc­£È
  27665. Vflªg¹“(Þº2T“+üÏLIÏá[ ROlóå’\ÑÍ$ÌjÂÝÌ7jo±    ~ÌDæîþVוúìBÖź†üBæÀ×û™yÇó⇧sÜÛôí9ý¬&èÛÈÉÈ_jýŶíHUënþðïÎ`5>cÛôíCý¬qjý⇦8æ⇦Uënþðïά»Ðiõ,¸F´⇨æ$NÇÈL1z~ôê¾HÇÈ\ßmL5z~è5«nÛôí6ý¬&êÛ$‹ÉÈ&éÛ‰ÉÈ 6ŵÍh›ôíÚî^[flô⇨ÝnÖÀ‰ôL6ÖýÛÎ`6GjnÞüHç☓9ZoÀôí⇦6_ÖhÛôíGý¬Zå‡@ñô°9Ö{×À‰ô|ÝýÛÎ_GÚ    »È噀´O‰Ï{ð¼æûoôô6ÖÆÆî¾ïòØŶyîðªÆn☓å⇦\á nÍ~ŴìSç úŷÜh,å—1\ñØyîÍŶîŵìSç⇦hÛÈç‘ŴyNxÏô™Ý(ÄÎ…Gæÿê¾—c™ºòÍŵÓÙÌôíËÆ™m|Ü:-oØôíÍå‡áì´5vŷÛ l⇨ïËÓÆë⇧8⇦lçôí5    ­v®æÀÝî    cÈŶvîûÆn⇨ä΢ =j´Õl;koëî€åÄláöÑçÆ÷†ïø¾™×ä⇧ô“8ÖWÝþïù¾Ŷ×ä⇧ôŷÝýÛÎå ÓÜ;ïÌhÂôí×È||}ajýô„ÝIÏnïΜfi− 9´cÛôíAý¬ _™L<    lÏôíéò»X9boàôíÈÌ™kx¢æëÖ‰P7lo|çò÷¾—9„hÀôí,Èŵ<êÂ☓GÖÀYSoÐLæTþºÏúfléû´çùû†Þ2¬"ŒŒ+ûÏL:ϯá[,i½e€$Ãæc!þç›Q¾×ç†Q±Ðzº    Ï÷›!ç†AOý¾Ç熆á@ð¬:……OýŒÞªi$"Il„(Kêdepy¡org Èi$7IT(Kü2ùI+üáL¼    ~Å^ð›æð€÷nÎ9îïÎàH(lå’q\Ñ%ÂÍTZï¾ËîÀÕ&™ç9îG    ­X%üÄTî9¾è    çÞ-ÌI⇩⇨GÞ¯DwTXïÕĉç9îI    ­xI9nåHçTXïÕĉç9îI    ­X'üÄTî9.Öè    çÞTIêÍÇîدlëðS·PÛÈÛå—\Ŵºå⇦\Á^×éL:vZ¯÷ËTî\:v9Ïï    çÞ%GÊTZï…ËÞ’Ö\ç9îG    ­üË™å−\l½$ ÖÈZå−‘|ñÏTîëõ»9ÊèýÛΨ:GjSå€q\ñPdivt"a*“+üÏLAÏóá[,Ìç¼¹ºyÇÈ *d¦T,›æÈÞL¦lÅht^¯a*PdivAs"éöïaÅï‰ý^î÷^îE÷¬­oîÀkîê^î­êî¹Q¯é1«üð3+üáL¼^ÂÅfi;¼ô<sצ{,ô ×;\Ì”¥ë²{)™…YMfl2s¹mem §fl reb¡¹™©sÞ;üù3+üáL¼\†Ŭ;¼«X4¶, ÷$w⇧ÇMÄÿ tlub re…2ÌŒ⇧¹ªûsreñ.+üMHÏá[Ì ÌÍ"}nföôBÖ     Ï^âRÎÙkSJ»,üÈÎÅéû8?⇦lÛôíýÝÎS=ú⇧¹ªû:ù.+üMHÏWá[O
  27666. ÌY \Ǫ:¼±\x·óí9°⇦æfiÆÞ¾ôíêÈ.èÉØ =Gn²DçGæL´]v«ÞÂÄMÖæÉ™\|òÊØ:uÌÐwª{ø±Û>¥Ôh†p×çt·>ÊhºûÍdSÈi0Nnnp圠qºÃÖÈjX¤™8hÎÆpE”ÄôI¬CïkxJô}•Ä¿‰™Ä&™$ÜêñʸÕÈ[Ëç⇧éï»(Èŵ~p`fl⇧¹ªÌs1reqÒôíçñ» AÙoäôíE­ý¼Ê¸è|¾Ú4™"º<(?)Ya,\    ÷ý¼è|¾⇦äØÈÂÊ™çÔê⇧ç¼ï,˸çé⇧ïËÂë⇧º¬    ®\èñ»ŵwè_
  27667. ÷¹[©2re⇧ôlÝêǾBÕhÛôíFý¬1}ç3Ä \SÎýl;\02e¬4+tŶhgir1⇧s dn’fi¹ªûðI+üáL¼ŒÅk Œæ ÆÁ‰⇦xT„fݺ†D=k~ÐÆî¿#î.²ÓÈ#Ãé,Ɖº¬ú7’…Â#î$3ÆÈÈ#î]Þþfi¹ªkàÈÑîÓêûà#îG­Sß$ÉÈÈ#îÆξ‰k(ìëȾo¢Üè­Îa[îçËh‰º¬hìk-ïøAÈ~.ëÛ⇨.ÜÈÁ#î1Aè­Îa[îÑËh‰º¬hì#-ï¾Á‰üAï{.ëÛSÜøó’ªÈꪹ BAfeD’+ûÏLBÏ%á[ÌXs |ÀôíÂÈùàæ⇧@xl5*î¥Ë☓)º¬☓)|å“2-éó»íÛ.™\QflshR¹+úÏLDÏá[æ    ¼8z[ÅhɇÆØÑÉ/Ú$§ÈÈß9îkYïêɾ91èàÞêHºq&Éø9…ÒèkÇîXÞþÂkî9`áèàÞ9Iê¾ÇîGÏæè«÷î[⇧ÒøÀkîG◰ÅèÜð‰¬GîRæûd.;Ò«6¹¹…Tded’+ûÏLJÏ·á[
  27668. Ìy0»æfÅÀ‰p«lÛvîÇyîíÛè⇧¬zîm†€ç‘Jq~1Ë4™º¬‘J4}y-ïLÇ~.èÛ⇨xÛÈÇvîÕÛè⇧¬wîmìtqîºËÈÊ-tþÇvîèL·aÛ.™^Sflx±Eshr!+úÏL5Ïuá[æ    ¼hFÏÄhÊɆØ<
  27669. ªÇî`YæÆïN¾þÇî&¾þLshrãúi ò5+üáL¼    VÅ°Äæ⇧ÉäVÆÄIËiØ<
  27670. :ÿÝÿáÀîêêîêÿÝø&Çî&¾þ³â¨søÎ:ü.ùF+üáL¼4Å
  27671. Ìk@ æ¸Ä‰ĺ†Ñkîçñ»f*ÿàkîZ¤­öÑkîçñ»vÃïàÞRGúγª"s⇦“+üÏLBÏá[
  27672. Ìô•ÝÜEæfiÆn¿kî.*ÒÈkÃé¤Ä‰º¬r6”…äÈç⇧ÂkîOÉ©Ä⇦æï»oÄïQ®þγª"s⇦“γªûs
  27673. òJ+üáL¼
  27674. àÅĺ†aÂñ⇧ ïÛ    ^ÂÈ€¤6vÙº†fÆŵÀ¾v_ôfiöyué~ÄÁ‰Ã¥»óö½JÂÈÝkîD­èñ»ïB¸?Â#™æ    ¼‘S¯dçkA4ü"ùD+üáL¼    ¬Åk☓flæd‹ÇnÆTî½ð†,ÄÀ‰Ìº†ÇkîfÆî¾ïo<æè^÷îðöîo*ÿ¶f~Çkî¾µç$.æÈT\ï÷ÏÎÿ‘’k !ãÛÝDý¬‘R¯eç;üðF+üáL¼pÅ ÌôP=ÖTHæ‘ ÆnÁkî0…ÑÈÚæ2½ý†ËkîÕæûº¬¢k~òý»*èû‘[¯eç;Goot3rene’+ûÏLÿÞÇEá[Ì^5 …dsÇTG±…²éËéQG¸hEó⇧²éËéKG¸iEò⇧²éËéEG¸cEñ⇧²éË)?Gøkê&s’a¬lceD1e_Kn•eg o1l© o´pZªl©lÌceD 1pPB;l©eÏ á3pPB;−hcSlseme+üÏLJÏá[
  27675. Ì>AÝS½ô?ÖÙÁΠ   ¸Z#TÏSý¼ô@?ÖÙÀΠ   µZµT_­Ó‡è‡ç‡ô¬<Ö…_ÇnþÁþº¥ÏÈœ%øÒÈôíÇÜîçÚ¾Ó+ÃÈ p    &Ãæ⇧ `Ó `    ÑÔÙ(=ÒiÇôí`æÁïÐÿǺ†ôT=ÖÜÈîÚÇîvßSßÊÙ⇦=jìîh`æ÷ÏþêgßÚÀ=Èiëî `æ÷ÏüêYßÚÀÙñS¿+çû?ߧlauQl!+ûÏLJÏá[
  27676. Ì@Àµfvuïßãîy]ïÃÉîº)Ⱦ¨−ävîàÞvXëñÊÎôcËhÛÂQëèâ»LæÒÞLÝ«yêÛÝîÀ‡Ø ý<­©ý†¾ÙS¯=lp“+ûÏLJÏCá[    Ì;<Ý涶(−ÂÈ„Âç⇧Þ«æºã’ÂÈŷÛ¹øÃ,ÂÞ†À߆,à¬SýÎå†Ìæ†ç<ÈvîÔæÀ‰¨º†È?¾iÛôíÖ݉þ¢”SãòÄÂæ⇧ç    ¼ÕÁ¸
  27677. œ9…SÏ4ØS¯=lp“•¹ªko+üÏL;Ï÷á[P™Ð}ŒÏx1ÞÎ4ÙØH“ÂÆha[î€ÇÈ)    8n4ݺÖÈ%Z'µÕ\:ñÐ\çŷÛòû\:|Óº†2Â#‰Éˆ‰Â™UÁ1‰ïÛïRÁ¸OÁŷAÎm1ôí\:Æ~ÑØç¸WPflÒ«¹6©ko•J¹ kÞ•:ü>ùH+üáL¼T}¬upÂ#‰H◰|lÂy‰<ŵàŶPqhÂv‰8àŶ`Ñø™óBϸG*‘… €,wcÔ–öVT−¸U©nikc »[−Àkîç(¸o*g…ÛTîFý¬Zð©xk[ïµáÀ‰gçËTb*èýÛÎå—@Fk[ïÏáÀ‰gçËTV*èýÛÎFÚ+Ùÿ¹ë§G¹éJüùI+üáL¼\Å@þÄØ1ÜlæD1¤ŷvåŶ’\¶⇨©è⇧ÑÝè⇧ºFÎ1EøâÕ­#\ßæëÿÚÐÂƺ†ç‘q#,Sæ¿ùîZêþÉ#îPCánÉôí×㾉#ìÆPîôtCÖSÏÉè$¼„E3Ø"    l C;EhÃôíû¼¸´èË    3EØèƹ.E·…ôÔCÖè˾èJC¸&E¶…!ÐF‰èï»èFC¸Eµ…#S3èÞPîºIߧt des¾Ùl-po¡r… Ù3È
  27678.  AlJMȪMMª" H› ál:BeϳMp+£lŴ©ç °¤ñȪŴ6œ1é$§Ç¨sî~¾ôí/$¾È $P&æº:΀sÐyÄôíºÅ«È◰Êɪ:¼±pw·Pwõ}«~¯Ì8së«xËôíEâ 3Á4|ŵ•uѽkàÞ#Ó ãªPî\Sfl鹪G¹“efnipr¬³¹©k¯•*+ûÏLIÏ»5flá⇦⇨:mõ»†åfl’$$Ŵ¼åflŴ$Á½cøÂÀ»øÂCj^¿.¼⇦@¬ÞfÕ½*¼⇦ï¨Þ¶º¬0ÇðÂÉÿØ    ”☓7°cN¿¼⇦5´ÞfJ¿¼⇦3¼ÞfÁ½¼⇦ïÈ€×¼Œ…À}¼½x/Îm·½ ¼⇦¸¸w×÷´4Ǽ61ùr.ùû,ûå–0Á++ùr(ùû,&ùº,äO¾¸ÞàÀhO¼0çÀÞÜÀh&Ä0×ÈÞØÀh46S/…5d5"f.muNAg¯Á*M⇧›dM⇧#Buser’fl0¢ 0 orez†ä$0bdäÔãf☓äxäfÙÃàãŷ\äÏÍhSÏÞÀË{çÁ}þ¼Ï|‡×ÀxÔÀÌ{ç⇦Ázþ¼¼¨l☓‘Y_TŒåâÉÀØl0{|zÕ»ÂÀA‰x0ß}à¿ÀؼÀD1H1DßvHß¹Àh¶ÀL1FLßæ\ß³Àh°Àô1d1ôßvdß­ÀhªÀx1☓1xßv☓ߧÀh¤Àà0CàÞæ€Þ¡ÀhfiÀ⇦0…0⇦Þv…ÞœÀh—À¤0°0¤Þv°Þ”Àh‹À¸0À0¸ÞvÀÞ•Àh…ÀÄ0È0ÄÞvÈÞ⇨ÀhSß1æÈ{çaÁûâþLç⇨a{ç⇦aÁ~þ¼ïK»¸MÀ™ôçlk-Æ%☓éÖ.FÀhCÀk…ëÝÄæÍh$cÞï<À¸Ä9…évï8À¸5À#™flý6½H½&™dçí+À%™)Àd‰cì%À%™#Àò⇧Ä9ï{ï À¸À#™Ol(/Ý æ1½h†æef4IÖ-3ÝŶ¼ÈD‘ìf&.Ýæ#½Ø@‘@g&/Ýå½ØÀ&™Xïë‘<þ¿xAÓìÅÐ{ {½ºÛ42Ö-3Ýìg¼Ø4-Ö-3Ý—æa¼h4)Ö-3Ýï[¼¸$ éÖâ¿È◰!fR¼-™“<ã}Ù¿%™×¿“<Τæö¬í¨íf´í°íf¼í¸ífÈíÀíf,SflB":BF•@eurTo‘◰“©#¹Ð ô2iËÝÖ¸ã´ãfÀã¼ãfSÈãöytOI*ûp³òH+üáL¼ú»4$a34ݼ-™öl34ݼ-™ó    l34ݼ-™¼v$|%Þõ“¿¸‹¿È v癿%™⇧¿ò⇧☓v|%Þôŷ¿¸(☓¿ÈÚl'.ÝTz–¼xÀÍ/ÖÖ‘¼(™(Ë8zgÒl(Öz⇨¼x,ËÆ0ÎÖŵ¼'™0ËzgÊl(Öäy{¼xÜu4Ëv%‘×ò\¿¸Z¿ÈÀfn¼'™8Ë°yg»l&Ö“yg¼x<Ëƶf`¼&™Áxyײl'Ö\yY¼x&DËÖï<¿¸@Huwï8¿¸<8uwï4¿¸8(uwï0¿¸4uwï,¿¸0uwï(¿¸,øtwï$¿¸(ètwï ¿¸$ØtwÓö¿X A¼Â´†¶½Í.‡Ü*¼&™HË xg—tç ¿%™    ¿ñ⇧zl'/Ýlx¼xõL˶ÿ¾%™ý¾ñ⇧ol'Ö<x¼x4tPËv$Þïò¾¸ï¾%™í¾ñ⇧al'0Ýüw¼x&TËÖï侸PèswïྸLØswïܾ¸HÈswÓðؾX A¼½ÂÛIl'.Ý“wç»xXËÆ/EÖà»'™\ËxwgAl'֌ٻè`ËÆ0œÜÒ»'™dË@wg9l'Ö–Ë»è&hËÖR»☓ORmeºBoÑ‹rEOI’–^©­
  27679. e W¡DAÉ9/iFdn’C:–JAÉ0anì#EWr´GT#rtPteG1G]afl2ccuSvnrtSeµu¡Ú*iºLrtS!e☓W¡D–;©!ûŒrEhcraeSF1‹I‹rEta’r☓O¼Cw¾;⇨qïÛs¾dÜ4ïko¾`rïÛk¾\ü4ïkg¾XAÓÆ »ò½½_¾$™ñ¼[¾$™%ïÛòX¾¸V¾È◰•lƺ-™¼`EÖDSOoÖàêÿŒ‡¡9™ŒÚàªà f+©Jà ofiGë#ûàªà!©à‰©à1©a¡ý*;àºà#©#íŒN    àJàC©CL    “NŴàJà”©CS    “N◰àJà”©“ œ:àº- Mjà:àC©CDn›Q§àJà“©CMh›Rkà:àC©CIgeN’ àº#◰Œ:àº@sY“Maà:# Dfà:# N_à:# Scà:# Ceà:# Tbà:# AGàJ#◰ŒsocAà#◰Œæàª#◰Œæàª@2Y“Edà:# L`à:# LOà:@0Y“S©àJ#◰Œ◰àªCtl›}àª!oŷ›àº#T7“}àª@oY“E8àJà#©#L6“Eîà:à9©9Lí›EàJà›©›L“²àª r[›²àªrs›²àª#uŒ²àªvŒ²àªuŒ²àª#vŒíàªà#©-?»à sY?Kà@©AÐŒFÈà:à©9™Œ+ûÏL@Ïë á[s    ÌP~÷yÌ18Æ8{á°0q‘'í0☓ÖyÔk·ÄzçŵaôßQ¦þ\t−a[−Èç¹þ¦ôí)æûÄ)ðwçŵqôßQ¦þà!ð§ú‰ùD+üáL¼    ¶ Å☓ztlsç”qÁrÇÇb¿•ê¼¨s‘5xÊô½†w1zJP¼ÙÛm[TJ»E3èÅx{àŵ1ŵq»{Ò¾îÇÉUsË\G»ÉÅå$Ä«<wâFq†¾ÿ4Uæ¸ÞDUo·îhRflpg−æZ¹ê(Ú*1àŒ+úÏL8Ïo á[t    Ì {öX4P5h8s~¸Ug¼5'mÔ«ÄòuÈç¹þ¦ôí_OflÄòuÈç¹þ¦ôíàO¯AÐŒ+ûÏL<ÏE á[â☓`    ÃH|vç”&5XVo¸îsülVo·îàP¯“ œ+ûÏL@Ï+ á[s    Ì°|ö@ 5xrjÎ5•—T^Û¾øÜVæ·ÞìVo·îÌ:Q/:àº- +üÏL@Ï     á[s    Ì8}öH⇩ê4hrjÎå4•àGT¹¾ødWæ·ÞtWo·îàQ¯CMj›+ûÏL@Ïé á[s    Ì¸}öÈ⇩Ê4hrjÎÅ4•–rT^−¾øäWæ·ÞôWo·îàQ¯“Q§“+ûÏL@ÏÉ á[s    Ì8‰öH{ª4hrSÎ¥4•º9Î (−9ôët¾¼?⇦xXo·îý⇦XæQ·þDnà:ûCùD+üáL¼    ¤ ÅÌfislŶ4•CÜ⇧vrüT€4è−º†òù³$TΔ?…ÜðNË    cÕð„ËIÑÄB¾ç⇧@Yo·îýPYæR·þMhà:ûCùI+üáL¼    r Å“•slS4•S¤|ærü9N4è−º†ôdz9Îмd?hÔfl?mNð¼c]
  27680. oð\T½¾àŴŴ{ï·þµoîãS¿¾ø·{îoïSµþRkà:ûCù@+üáL¼    : Åt‘sl•S☓}ærü94è−º†ô•³-?9‰ä½ã⇧¸Zo·îýÈZæQ·þIgeNàûCù8+üáL¼     Å Ŵrlõ3•ô8ÖȽV…([o·îý8[æO·þàº#T7“+üÏL8Ï÷
  27681. á[r    Ì€Ŵö⇩Ø3ØZôͪ½;… [o·îý°[æO·þ}àª!oŷ›+üÏL<ÏÙ
  27682. á[r    ÌøŴö•º3hºTÎÿ ckæ”»T/6躼‰‘»[‘ËaüD\æ·ÞTLo«îàP¯oY}Jü@ù8+üáL¼    °
  27683. ņŵrl’3•ô¬9Öíîñà!•À\o·îýÐ\æO·þ àº#◰Œ+üÏï<ÿáL¼    ‘
  27684. Å◰slq3•òL÷rüñl3øíîñfl !•P]o·îý`]æî·þÐ:P/:àº@sY“+üÏï<ÿáL¼    j
  27685. Å´◰slK3•òL⇩örüñF3øíî$ñy !•è]o·îýø]æî·þàP¯#Ma³üð<+üLïÏE
  27686. á[s    ÌH☓öà⇩&3hròÏ!3•îñ!íÿT ø|^æ·Þ…^o·îPîÿDfà:# +üÏï<ÿáL¼     
  27687. ÅÜ☓sl3•òt⇧örüñü2ø−î‘ñ’ñuóíîDñ+ !• _o·îý0_æî·þàP¯#N_³üð8+üáL¼    ø    Å|ŶrlÙ2•ð6öíîŴñ  !• _o·îý°_æO·þScà:# +üÏL8ÏÙ    á[r    ÌøŶö‘6º2hî€Ŵ€ð!íÿìø`æ·Þ,`o·îàO¯#Ce³üð8+üáL¼    º    Åtŷrlœ2•ð~ýíî‘Ŵ€ñÍ!•—`o·îý¨`æO·þTbà:# +üÏL8Ïœ    á[r    ÌðŷöŴ|2Øíðÿ>!•!íÿ¬øaæ·Þ,ao·îàO¯◰AG¤ü#ù8+üáL¼    z    Åtrl[2•ð 8ö!íÿíñ=ø⇧!• ao·îý°aæO·þsocAà#◰Œ+üÏL8ÏY    á[r    Ìøö‘8:2híðÿÏ=!•!íÿjø$bæ·Þ4bo·îàO¯◰æªü#ù8+üáL¼    8    Å|⇦rl2•ð9öíîÐŴ€ñK!• bo·îý°bæO·þæàª@2Y“+üÏï<ÿáL¼        Åü⇦slù1•ò“•örüñô1øí-Áí…=Ü!íÿ$ø<cæ·ÞLco·îPîÿEdà:# +üÏL8Ïñá[r    Ì—⇨ö0:Ò1híðÿq=!•!íÿøÄcæ·ÞÔco·îàO¯#L`³üð<+üáL¼    ÐÅ\~r|±1•ñ´‘öfô_ñ)qõ!íÿíO=øÝ!• {·îý{çP·þ\t−à[©0YLOCü@ù<+üáL¼    ¨ÅDzrl⇨1•ñT’öfô_ñqõ!íÿí(=øµ!•€To·îý‘TæP·þS©àJ#◰Œ+üÏL<Ï◰á[r    ÌØzöè’d1hôñÿÜÖTíñÿ=!•!íÿ‘øUæ·Þ$Uo·îàP¯tl◰:üCù8+üáL¼    ^Ål{rl?1•ð|<ö»îpŴ⇦Uo·îý—UæO·þE8àJû#ù@+üáL¼    BÅÜ{sl#1•jd−ærüT1èfl,Üô,ôÒVo·îý VæQ·þ_⇦4‹L6àJû#ù@+üáL¼    Ål|slÿ0•jô−ærüTú0èÅdÜôÕdÑ Vo·îý°VæQ·þEîà:û9ù@+üáL¼    üÅô|slÝ0•j‡îrüTØ0èìÜ;ôìÑ(Wo·îý8WæQ·þàh©9Lí›+ûÏL@ÏÙá[s    Ì€}öD⇩º0hrjε0•ÜT¾ÕxÅxôý´Wæ·ÞÄWo·îàQ¯›E“+ûÏï<ÿáL¼    ¶Å ~sl–0•ò”örüñ‹0øî“ñôÑ@Xo·îýPXæî·þàP¯›L“+ûÏï<ÿáL¼    ‹ņ~sls0•ò¬”örüñn0øÅ“îÔñôÕ“ÑÐXo·îýàXæî·þàP¯úpmCñI+üáL¼    pÅ$IrlþÞÚ<I%ºh@e÷n»!îðíPYæS·þ`9æìþx9ïkåôíëݾ¼s80xT6gôÍé¹ÈÈáÉèiøÂ…sÆsºôÍê:³“6&0hQôͺ3JJR¼−ª0áðÎsù,SZBÌÍ;¼›oÕ,Jé¹h0f÷n»!îðí@ZæS·þkgÙºôÍê³0ؾ¹ô™ùº,ônÝ    º<Ĺè⇧o<€çoÄ[ƹ™÷¸Jæ!¼fæ»ÞÌZðn·îÌ:S/°¹è⇧Äo¾9XÛ²¹ç⇧÷Kæ! gæë»îKæS´þÇ0;æ4[攺îÀî§íS¸þtaÙºôÍêÒ³☓¾/غôÍ☓KÌÑdêîÇÈ<ôP5Öú<ðè⇧鼨ŷ oêX€¹™÷ÐKæ!Ôgæ»Þä[ðn·îèS¿éÝ⇦Xê¸ç9½Lm¹h h÷n»!î,Lën´îD<SoH\ÇnºîEæ\\Àn¸îÍS¿9XÛR¹ç⇧÷⇦Læ!…hæë»î—LæS´þÇ°<æ´\ælEºnÀîÈ\æS¸þc/ê⇧ô 9Öâ◰<Íî‡VÙdw·å¼3áW €Þ2ÊîÎÉUdËlG»)áÆK'ÑÅK×â€à3QàŴÁ ‰fiykg,zpbflTZé|ite4W o‰^    sõòÖ¶¸Ô¶ÈÊé[îdº\Ǹ=æ¼]ætFºnÀîÐ]æS¸þ3á¤E1ѤE×âŷà3QàŴá ‰fiyrgÆ0ºÅ(á´Y&ÑĪ:¼±ë+õ¬÷åfi Ñ oÍ[Þ¸™÷XNæ!\jæ»Þl^ðn·îÍS¿9XÛθç⇧÷—Næ!†jæë»î¨NæS´þÀ☓öÄNæöµ¾þ€7Ö☓¶øà^ææ·¾ê"Z+²àª r[›+üÏL8Ïíá[r    Ì0Ŷösü&l¶Øïj¶¸þø7ÖÅ.f¶⇦ô☓8Ö    <¼ô    <Ñx_o·îý⇦_æO·þ²àªvŒ+üÏL8ÏÅá[r    ÌÐŶösü&D¶ØïB¶¸þ—8Ö‡.>¶⇦ô$9ÖÅ    Ü¼ôÕ    ÜÑ`o·îý(`æO·þ²àª#vŒ+üÏL8χá[r    Ìpŷösü&¶Øﶸþ89Öu.¶⇦ôÄ9Ö¥
  27688. |¼ôµ
  27689. |Ѹ`o·îýÈ`æO·þ²àªuŒ+üÏL8Ïuá[r    Ìösü&ôµØïòµ¸þØ9ÖM.îµ⇦ôd:Öµ ¼ô¥ ÑXao·îýhaæO·þ²àª#uŒ+üÏL8ÏMá[r    Ì°ösü&̵Øïʵ¸þx:Ö%.Ƶ⇦ô;ÖÕ ¼¼ôÅ ¼Ñøao·îýbæO·þ²àªrs›+üÏL8Ï%á[r    ÌP⇦ösü&¤µØ¸þ;Öý-fiµ⇦ô¤;Ö \¼ô \Ñ—bo·îý¨bæO·þíàªû#ù@+üáL¼    þÅì¨tl®·•sÌyÏA0ç–QŴʺ†9ò⇧ co·îý0cæQ·þÿ¼0”})æûàq¯CN“+ûÏL<ÏÕá[t    Ì‘⇨öŶ·ÈsüÅy|`.Èd<ÿkæ4·V(ÿt¯î*+úÏLLÏ»á[
  27690. ÌÜ$ÌôÀ@ÖÞ·È⇨ù²ÒøÃ,CùÆ,FùÇ,MÈ<ð⇩þ!íÿôÖ¸Ð:?à'Õâ†üøå,?è<$¿ôkµ@W¤    ÜZôÍ'lñ"‡¸ï¿¸µ@W4Z|å‡|.àYyΪ:¼±tK¶«°ô™3íz^ŵ•E\½“g¶ygz!Àj攦µå›@4Èi!è|ç Ï«èNæò¬0ð=v(Õ ý©(··Œ−$OIùbñκ/Ê?ÝÙW8ÀvÕ´&™Üï    ·¸Ï´æ⇧PLæT{÷ôÊ´¸ïÈ´¸Å´W†BïkYôͪ:¼¹“\¶Eô™$Wï{T߸´xt‘4‹MáòLñº†Åâ+a!ãÀœacò\–Û»ü>ôk¥´Ŵì 6Ö¶†⇨æï»M†´hxTn–´•”´ô⇧L¥ïk’´GlCïkYôͪ:¼¹d]¶ô™Gï{☓´È Ŵn†›ïµ¶¸{´æ⇧ MæU?lu´•s´ô⇧£ܼôÍÛcµô–»$ }h´È−⇦ü&ÞÁÈÀsŵßw…¶ô™Sº¼f½¡ôÛU´$Èvl1ÞðÎ7È0ë²aQô%¸J´È1ÞÎÄ7ØAº¬ôLs׺o¶ÈôW»<¢}:´Èf½Ä@ôk3´é¼¶&™hHß–&èvv)´&™0ïë&´È04◰oÉÈô]AÅf,RgѾµ‡€¡ €&Íg)ü´ô⇧ÜïG¶¸´æ⇧XOæ¸V    ue´•´ô⇧…AlÿÍéâßKôY¿ü³Èÿ°AÖ◰ìzáY±Ìwôkñ³0‰⇦Ìc4,÷⇩ôË{¢W?ôt²‹‰… BlW4
  27691. ÷elif{!Ð%0ŷô0CÖ¥À◰Wô0Ñ´@BvԳȶ™æï»TPγhu^´Wöôȳ¸ƳȓCŷl¥ô]çâÔcrÛ0¨xæﺳ¸¶é⇧øHæ»Yçñ&ç{çS·þr@ûJhparg [\−éc½PHüµhYø~»Þ¦ñÞ·îS¿#t™“+ûÏLJÏ»( á    ÌPAæɬ‰v?$ÌO.Ê☓C1lôѹHG|ò€³¸ï~³¸?ë⇧ÄTo·î0G÷ÔTæS·þzü¹æJ:ܵ>Üu[^J»pwç)ð¬ôËa³PG_³ò⇧yì;ZÌgœ+™&™­µò⇧\Uo·îDG÷lUæS·þôg¹HG|òF³¸D³Èxµ™0Eï{õ>³¸ò<³¸:³øÈUæ0G·~ØUo·îS¿DiLNt’+ûÏLJÏ¡á[    ÌøBæÉT‘v?$Ì-,ÊzL»æ:Ü…sWuJ»J>ܵäD^kðÎô)ºTG|ò ³¸
  27692. ³ÈZyÎ+;Ü&œØò¯¸Xµø°VæDG·~ÀVo·îaSflôËñ²LGï²ò⇧Üï#µ¸é²4Eç²õ⇧å²ò⇧Wo·î0G÷,WæS·þLàJûCùI+üáL¼    LÅ ’sl(Ïç„Qy?‹-غ⇦‡Æòй⇦È&“Üòm¸µø·sîÀGoµî++ ]Sð9i—    Þ 5nÒxF¶/ê#6w☓ŵç?üHL5vò¢²¸ ²ÈÔ´™p5ïk−²0wþò„²¸ï“²¸“5v‘²ø·sîÿ¬5Ö€Xo·îZSfl!8|çÒ«ðÎúºsî4÷ÄXæS·þò`¹5ë⇧HØ\&™Ã´ò⇧sï·þ IæSµþrPLNàû”ùI+üáL¼    ÔÅ€±sl(ÌÇÎy|x;b+h¤=n¨†    n8x•f0Ϋ    n5'c5ôÍîÔMæLÜ6vò>²¸<²Èp´™7ïk5²4LEæ^öò0²¸ï.²¸}8N*²hfðÞPNÿm Zðn·îdUSoξôÚº¬^Ìç4G´~`Zo·îSßïC´¸    ²4E²ö⇧²ò⇧´Ø\®&™W´ò⇧fï·ÞÀZo·îàS¯CS“+ûÏLIÏgá[s    Ì4Ŷöy$Ì­,ÆÓ/†éó»¤È&„Üó⇨¸2´ø§í·ÞX[o·îmS¯⇦=i´OômľJgcòÎ7ccÃ~?(ÌŶ,ÇÙ/†ø8õk·±Hµ±ó⇧éï»vÈ&„Üó[¸´ø\æ·Þ\o·îmS¯@>[ aQôÍuJ»JR¼Ô:^kºôÍõ)ºP“9v󑱸‰±Èô…>Ö;ZÌ”−+™2&™Û³ó⇧¤\o·îý´\æS·þ:õku±Hs±ó⇧ëï»4È&5ØÕó¸³ø]æ·Þ]o·î\HSoľÄ; jºôÍúPMæ‘:„gD÷d]æS·þêó»È&⇨ØÕó󸆳ø ]æ·Þ°]o·îàS¯”rPSN’+ûÏLIÏ«á[s    Ì$⇦öy$Ì9*Æk¦æHRæOÄ;¨LæKò<¤9æ(ÃÇÇ?|k(*èJQ¼R áÄÑJKôð<Ö(º¬“õÛ    ±T±ó⇧kì;ZÌ−+™¬&™U³ó⇧¼^o·îýÌ^æS·þ¢õkï°LGí°ó⇧Üï!³¸ç°4Eå°ö⇧ã°ó⇧ÂØ\…&™5³ó⇧<_o·îýL_æS·þ‘Jæ Ä«ôø=Öº¬☓Oo„~DŒ}—_o·îSßïõ²¸4ì<võº°¸ó¸°¸¶°È&„Üó_¸³øð_æ·Þ`o·îmS¯6¹!aVsA’+ûÏL9Ïá[r«
  27693. …¢ìkë¬`w÷Â¥Ã܆¬ç˺/4Èñº'çûñŵ¿&Ìsvïŵ°¸,ç⇧0ïë{'•,m−pOsA6ûð9+üáL¼
  27694. êÅG«Èë¢ÎLDNcÁ_ñɹ8&Ltvïb°¸ ç⇧8&ï{['•çñ»X'ÿuOgnÑt²+üÏL9ÏÇá[
  27695. Ì~XÏñ!¸    F°Èº¥ÎæHºîO¯R¶daBt1ü%ù=+üáL¼°Å,; ”v    2°Èf²™49ï{ò,°¸ñ*°¸ï(°¸((;÷naba$únodñ9+üáL¼    „ÅtMãk2‰−Ìå&ýi²ò⇧漺æ&™c²ò⇧”    Ì´æ&™]²ñ⇧…ïë◰/™åç' :ro‘Ök©±
  27696. +ûÏLIÏká[>    Üh“l◰j~‘4y/ô¨s×Äz¾¤Q)còÎT.ê€|ÇuC    Ï¾ëvº *È’.êQôÍ áJKJR¼üQÑdðÎ(ÚsçÑTçB¼{g|濺⇦*È`Ôóth−ôN☓taľ\BjºôÍÀ€(î¾iSýmAÃ:e-tr4oÑrm4o3feb 1eBr»4etelþd@oÖ+ûÏLIÏá[⇦§    l«ªhGïÛ‘¯È>æÛ⇧¯õ⇧    Ì`õ\õfãà€8◰Eó{zŵ¯è­ÎÉ$@fC*æ⇧Áº†ñØ•v\ÙàEômľtSqcòÎp@mcPEôm/*ê‰z!º<ô CÖ—`blàB¾å1|q⇦Eæ!†îÏ«»¬⇨Ŷø†“4âÏ!¾¼ʵ⇩—4=ß'!†îÏ«¼¬◰êø††4âÏ!¾»Ê,⇩ 4}/!†îÏ«¼¬u_ø†¤4âÏ!¾»Ê»⇩¨4m/!†îÏ«º¬dø†¬4âÏ!¾ºÊ⇩°4[/!4|çÏ«»¬ï ¸ô☓7Ö“¯è­î´4~(àB[êôFæäQ☓hľ⇧êºôÍ
  27697. >·æ ……gl—¸ºuFd roAgolaiD gïu
  27698. ²Å⇩…oÖD4ºÀ…TYkþcø¼hù¼#†~☓Ò’ï–fl⇨—a©­
  27699. +ûÏL?ÏCá[9ü⇦æ ¨ý.ÍåÈ9ê 5üèÓ渠&™ºp€Ç9Çé`s³®ô™kïë¯)•õ±è⇧º¬9þô•Þ瑩¸)kþô⇩Þ‡)•Ð4À4"¼4Ì4"e w¡DûùH+üáL¼à⇨
  27700. eÀn9n“å •.¬69ÎŒæ •µèË.O2È|ª⇦◰g9êyïïz®¸+vþ|œvh9åcdá5ü6èÛïý⇧è¼åCd52(ô-¾®−yòëïb®¸+vþ$^—¸4È4"iFdnaÉû/ùH+üáL¼ø~Ìÿt¸o9nVå •.¬69Î\æ •&èÛlœ©hǺ†9þôxÝï<®¸+kþè8¸2µ…¬·.l9êyïï.®¸+kþ¬¬*h9å⇦cdá5ü6èÛ£ý⇧è¼å⇦Cdé1¾®−yòë﮸+kþZ——©C:+ûÏL;ÏŴÿáK94zæ äpö. åÈ9ê 5üè渆1´…º—…Æ9Çé¨6oñ­ô™Tïëí(•` 7vÇð†9þôØ6Öïä­¸(Tþ'àØXå€`qÛ­,™7ïk(ôýsýÖ8aÉ9anì#+ûÏL;ÏEÿáK9${æ Ôqö.ÏäÈ9ê 6üèÕå¸☓™!hº¬9þô“7Öﶭ¸(TþG²èÂ?|/.™Ⱥ»®−Ü6ïk¥­ô™Tïë¡(•d°vDlenC:+üÏL<ÏÿáKæ    ¼61¬…âŷP(‡Œº†æ»¹.1©…ŷPº滹(1¦…º¬PŒùEodts’s¸j9s¸r2sýohc1—n¤¾y@¤· hcE †seuqoÊeW#Iúð?+üáL¼¸…àþdh◰Tn)(•8º<`Ø9v flì}gÊð†o©lïÛïT­¸Q­#‰kïëM)•ð\ÇpÊyï`©¸E­™#ïëïB­¸)kþN>hlw~'×ðZ“nfÔ« ×{\ì2¼ñ‹€<☓çÔ«÷Îñ\ì"T¼é5ü7åØØ4Q/_⇦4‹⇦îôÞ`—PtegÄ4aflrt#+ûÏL2ÏþáKmíô\4Öï­¸ô`:Ö%•vng]+úÏL;ÏuþáK9d~æ uö.ÿãÈ9ê 5üè帺­0È&ÈÙÀD–ãh?¯‰•ïÛ(ôý9âèø:oݬô™‘ïÛ(ôýàب#;œ+ûÏLDÏIþáK    …È”l좸²f ‡c½m½°0ø6ŷôd5Öxï·ÞsïR·þXx<v³¬,™xïç·¾×ÿ·sîàR¯FÈ›+ûÏLIÏþáKr    Ìç”’|ŷÇs|tü☓¥¡ãhº¸›ÆÛ¯È⇨ź†sï·þ¶^îSÿµoîý·fîptuoSrêtStu1üðK+üáL¼òýÄ
  27701. Ìàµãà‘aå‘☓ 7'æ⇧ƺ†¸·ï‹ÈF◰þbiþôhAÖÄw¾PN/jòÎo"ã±…avµ?|º'ÈÆÙ·‡−ñkþ²    ãÈÌAÙhQôÍrJ»JR¼ÀNÑdðÎZ!Êó;¼è0¸Æ0⇦☓GæÄ«ôü>Ö¨º†™¾Éŵ!ØSôýi1tnur1¹ºº;ÉwÙt2êÎÜŶx¡út«ò@+üáL¼6‹ýÔ»ø“Æ<zÅiȼ†½¬`t©öºd;ÇÔ/¼⇨QåŷCdñ.¬•{½Î}ÿ¼æQ¿º¼‰‘»™ç‘[klì½ö«èÿ{Ì 0ñâtCèæ°0èv¤0 èvì1$èvô1(èvl1,èvt10èv€14èv´08èv†0<èv⇦0@èvµDèfd©ð§⇦íïÛ4²
  27702. Ö®©™ç§±ŷï[©¸®
  27703. éf4Ý­¥©hR©Þ§⇦éïk4©
  27704. Ö†©™Õ§§ŷïI©¸¤
  27705. éf4Ý¢›©h@©Ì§⇦éïk4fl
  27706. Ö⇩©™Ã§flŷï7©¸†
  27707. éf4ÝœŴ©h.©º§⇦êïk4−
  27708. Öx©™±§—ŷï%©¸”
  27709. 0éf4Ý“o©h©¨§⇦4éïk4’
  27710. Öf©™fl§‘ŷ喝™
  27711. Hêf4Ý…]©h
  27712. ©„§⇦Lêïk4⇩
  27713. ÖT©™™§fi…喝ŷ
  27714. Pêf4݇K©Èø¨☓§⇦Têïk4◰
  27715. ÖB©™{§ŵŷï器
  27716. Xêf4Ý~9©hæ¨r§⇦éïk4~
  27717. Ö0©™i§~ŷïݨ¸}
  27718.  éf4Ý|'©hÔ¨`§⇦}èm:YÌåflAÔª·ÀÛU§†…(æɨh:YÌÀª»k·mÀ¨L§⇦Y,æƪ:¼·ÀÛC§eŷç·¨Ø:YÌÀª»Q·ýRABTAF_™àªIAF_9àL¢Ú
  27719. àFI_¡LES_1à _E‰Iàu¢-:»vid_à⇧©CDn›pÌmoc_1à a¡ý*C_    “íàªrpn_#à”©CN    “”_Ŵ“L    àJpln_Cr¥NŴàJ_◰”Ià”©CS    “r¥psn_Aà ”N◰“Epni_’;àº_²#9m_deë!¥Œ©àªf+lB cGAloH ’Gëà:&&ofi||psiwro¼orreêÿ!iiFteg1ûofnñ:+üáL¼
  27720. 4üÄló«ÝøÛŴ{,è»&Ílz° °Uãr¡ÎÿÀÕÏ l×ÙUoŴÙ퇻Oáýsecca!+úÏL6ÏüáK(Ö    \Âð†–¨Ì«.rŷè™øÛŴQ,註†Núedhcam.cmmud == y!etratScgûù2+üáL¼…îûäºô͉¸É⇨þ-è7ï%cG{{ek‘innacScgû2ù4+üáL¼<4ØûdºôÍ—¹é5ÎPl¸mhº¼1:æÎhÜW þñl¹,.:ŷ&æûeRcgï⇨cÙ›+ûÏL3Ï·ûáKÀDæ¸ð†™ïËÐ4Æ-hÿî%}}d%MRAcg!+úÏL<Ï£ûáK#    ìãÀÿ8ôÍÁâDPQÚ&:Ã¥Ã×&SÔ&:Ã¥ÃÑ&SÎ&: Ã¥@ÃË&SÈ&:€Ã¥ÄÅ&SÂ&:Ä5å ¿&»º†8ôÍ:ãÀ#ÿÑ'ÍâC5wã :ÝãÀæ±ãÎàÿãÎ짥â âÀÿ¨á ÀQlº\€@©U~lîâÄÁV~flªÈúp£USCcgPt+ûÏL4ÏQûáKâ™@NæV¿å@ £æKý¬gwN?WlanÏhtdi+ýÏL2Ï=ûáK±O\â™ a4Ý×F/Ýî+5ŷWå½ Á2Mω2ìçåÃDܺ…÷o    Î⇩®}j2†nOkb☓+úÏL5ÏûáKå’@ 8Gº»ÍÈyº†ºÝ»™U‹þ“œØá◰-™NæûongiikaerBer+ûÏL3ÏûúáK0DÖt-غÀGÖ9îM!idhc’+úÏL5ÏëúáK6ûÛ"ñÛJ+æŶ−º†NúçÝ⇦óïèè_™”8âîî®lÝ2ðÏf…\9ïSoTt¡üùA+üáL¼ÝÆútçØ    Ìí¡èË- Ü\flþ% 8"ç$8²Ög|fæËÖÂð†×,ŷøº†. çÖa.ÆifæË0ofæËç¿Ög|fæËâÿéHº.EeQ»ÈíǼÄɾflÉ¿ÀÉX⇩eSeltæû#ù6+üáL¼    €úÄ{}9Y/›¦¹ë‹®W¼⇧¼{F ­…™ýÔ9¶ŵ,fl…ê ¶&\UH¤` eltætæ%g2Isel’+ûÏLIÏ[úáK    Ü(Ì(é47Vy0êõôQ×"Ç;#­5TκâÍýiË+«9oQÎŷá}òX¿«ý†¤,+◰5TκâÍåØ ghGΠÚí‰V„,ò⇧þÅPEà⇨⇨a‰™u4º¬“½5TκâÍ Û×Dº☓¹kð9 æábÜSåÀ ñws5-%’wc5-%’nInooûfò;+üáL¼‰úÄ6,Øè⇧⇦ŴfGGOTgorg :SELigeb spu+ htnut o/”pXo nrAfo/nnS
  27721. .psfÊpF,C‰☓‘{\£ÁëGð¬ý+ŷ%
  27722. Bn:,0    ŷ/
  27723. Bn6,5    ŷ4
  27724. Bn2,>    ŷï+>ŷvæ™tæ™ôsçìst4w:nãì(O REHTO
  27725.  :SNOITPÈ(◰£ - ro + sZ¬JfÍfid 1)ecn’paehdeœzis 1¤onna¡degn€ nih+rG¹#munhp.dJïs tp¡ Ŷg_DpŶ@d a·JaB³s noÒg_ïJ ŶrŶr¤ruC
  27726. Atêtes 1l0 :s!d%h-ð3r- s%p- corpwpXOsseAüùI+üáL¼_ŷùÔ+ ¢n­Œ◰—svdz“›fâ⇦⇧ã •Sô3/ßà†Îâ†×p „3r ¦º⇨Ǩl¾iº#Î_©$Ó5W…SÎýº⇨Çx$¾yfi$º<W_Íx×*h⇨S¾º†º*Î_›$ÓW…SÖýºyÎÄÙèg¸^+¤…(Ô›XÚÉßµŶ€Ëð[¯héoŒ3s paeh eôezi±_²åØ(.blº⇨ÇS¸ ó‹.ímZflå€0qâC00åÓ0à◰ ŵ•⇧~j€¦âÀ çÑÀ äDº−2¬e¶jorP!+ûÏL<ÏùáKΠ   üT”ækëÿ‹º\æé\9×ç9½U×ÿ+æ⇧,,›ÈX9Kzŵ»¼™¢“?ÆH+⇦éÝPåŷP`ñy€0Ktþofl3c◰/9$orPr±üð4+üáL¼üuèødº\$Ç#$Ó`×\×fyN¯maNtcgüù5+üáL¼£ÖøäÀó†+¦C&•X'`vvi@¶æ™§l@ÆÜ*@ŷå&X)‘xXÙol«4wç]N¯@»®iA£mixam( sd% fo mudewolla xC)"cgyJû#ùA+üáL¼    ¦øÄ §lñdò¶µ*ŷ8æÛ5ò⇧æó»(¥ëÿ¢óŴºTEÇ 9çëÿ’àËQdóöV–ªpÜs4gi0£grof:r¨cSteAs]“+ýÏL@Ï}øáK    Ì´–ÜŒfËW´#º<X9~||×»a§G…YXíæðnº\QTíöa^sq3ûtidñ=+üáL¼`øÄ$—
  27727. lºZÎç−#³lú&XlÐèŷQGtesPúo§òA+üáL¼    LøÄðÍï³ë€—Öh9☓évº☓⇦Ææɹ…æs*h5ÚÏñ‘æ¶M*⇧…<lflìÝdX¨ö5kκïÍLgÛâŵQåÂÚòV¿…*äÔŴW]Τìí>º¬)çûaFoslëú!ùD+üáL¼T⇨ødðh2Ç‘7½yà‘!*☓0ʼ…0Á `qÙ|y¶.!oek ©æï5Üfº¼h1ÎŶÎ}ñV¿\*.ŷW…0ÇÉ…Þ¶æíâ´æ>*¸;ë*dÆ+úÏLCÏá÷áKh9wâŴ@(QºâŴP0Á. Þieafl59κÚÍ1fëÎhÜV¡þ.ñkd3*è…æhlÍ‘9·9vëÚ5Ügº¼11íÎhÜV þñÛ*ØŴëý  !f9{ïÚ5Üfº¼h1ΡÎíñV¿ *™59κÚÍ1fëÎhÜVŶ÷ ñÛ9ÿ)èÚ5Üfº¼h1ΡÎíñV¿ò)™5]Î]ìíÒdº\*æûliafÒêú-ù4+üáL¼⇦5x÷dð⇦Ç&¹Ù—⇦Ææ5Π}¸}iº¼11íÎhÜX þkl−ñÛæÉ)¸¯ê&dobye|û&ù5+üáL¼    T÷ľãæ⇧ëÿÀ‡æË“æ⇧{¥æ⇧¤Ëæ⇧ëÿ‘­æã æ⇧&æûf.ªHúvnEñ6+üáL¼
  27728. :÷ĺ})ÈæºCrtsNúypoñ8+üáL¼,,÷ĺ−−\)æ⇧e)W…-¬>™¥tÍj5)⇦LçÛð%ÆçLºÐO¯t‘s gn1¦s eg¡a® òC0-ù$ük±`_qTÏ çÐÀÑçÒ@Áø¦5€ -p²ÉûåÒ0ÁCAÚniam#úðÞ+|áL¼ÔðöT¹¬GÖ)„…;)ì5ŷ23f−†Èú(Øãß$)ØG¹M?oisreV r  82.2 nhgirypoCaM )tœnoJ P kr-1991 se
  27729. 3991!vê[ŵ3
  27730. ]re ä*°s
  27731. i$+ûÏLJÏÁöáK
  27732. Ì":Í&Ý€»Tåhdøløf;TøÖ©XøÆqæ–…Lâo“¸Ít÷zæhwæ‹…¸¼OÖzü¬öedupEFOG’$$?    ÁgºÅ(È)ÊÑÈKч°™ êËܧ(⇦dfliÂ,;$ ^´e)ÛJôeS¤dm;Dn
  27733. ÂUç“qñ¡äÁ¤ŵ\ÚâÔæØXVÇy„»¼¤…Îé(¸Rä<æ⇦+ýx;{á'p gnisU
  27734. cÜr¾3ngi ,elida goFod De)ÛJ?:eJ:q“:…›:•“o−:$$:^´Ë :D#I:)I&=¹iuq:dc:#:â!:1    unem+úÏL2Ï9öáKM('ŷK(5ŷI(?ŷG(KŷE(VŷC(aŷA(kŷ?(†…=(yŷ;(€ŷ9(fi…7(›ŷ5(fiŷ3(¨ŷ1(³ŷ/(¾ŷ-(Çŷ+(Õŷ)(Üŷ%äöTSIL&éMMOC FO A  :SDNAammoc ynb yam dnverbe”d_iÒCwx c: Asi c'rif  ¼h‰sŒ3Yc{¤Ý eht¡
  27735.  
  27736. .eß:…0èdÝ£N«−ºorf i›eàml4®i.£:…(9MOªMMªrc◰Cblþ£peecxeAdIr¸$oÝ:•4躗Nªúdda ¡sn6Ci⇩pÜC:IMo-£MMªa·J−aB£m¯â::^Iif< $ >eml⇩ÓSª® tce¡Ë©ètÝ£MaR£Û)«Ë'©Mt)£MMª ⇨)KlItþ#r*pxe<1MMªÖMªÿuÒ£
  27737. noi:q@>rpxe< eMMªtÉîJfÂpRDsKp⇧D  ?:MMªMMª yaldnsil t‰âtã£(m¯›po< &s*ó:s>M:Qáªtpo lÅœM&«MMªhhMJá :£lÅQ:tpo ±:)I]tap[ seMMªßl­¤uÏc se1Yyltn¡'pocs’o5:âCN«d¦M:ßr´£bfleQ4:DtJBaRd54MMªÛ)«iatneTÅnê£Z*«
  27738. eman fooc!:Om;¤MMªse llehsµŒ rid dc:MMªc:MJi¡g§3yrot’t)iuq:1MMªtixeMeö ä3terpn{diug
  27739. re§
  27740. +ûÏL2Ï»á-'……Z%ÿQC,¤rUn@C .desing⇩ɸê"¡` ?: ¡hh“tZíJtcud.Ê/Kf{a slA ››tÉíJf{a epAtaul ›?•¹ó ¢£ulav yrauo ne÷ÿt²¤T0?Ive ei−óaula¡f’ :C‹tv“tZíJl=ec .1vÍrU4_fa d¡T¬cgAf1ñJyVa D
  27741. r™³nCib nALÓg2rÒ³ sa i›u¸*oba nraW e tu±  s@De¥eœ4"r¨“rf yA%egetnImo ¥r_D  regeA"lare’esimOU¾ª ¯)&&(1)||( !ma hctaClsuob¶p.yÉ4evel-pot?l‹›od tíhs ot str}p woAawlAeµ wohs syhþcihw1−bªO|-I G−JotelgAatoniBó
  27742. ì?«srordvÝYªs· +ùÏL4Ï}õáKº¢’Èkü³)£´uæÀ+„ó¬Yæáø…™¢æ˸◰&⇦º‘’ÈNAús noOum gïnigeb ts+` h+'-` ro 'c:@!iDeg’+ûÏL4ÏSõáK,x’Èæ¹¹º]àȹÙp@ghflýË&]&ø⇩ê’¡oð!; ot aºdγ+yL›−
  27743. +úÏL2Ï3õáKUâT•ºV’ÈLÚŷ%ÿe¶Ó*+úÏL7Ï#õáK,H’ÈèBf\zÔð†ý¬b\÷º<’ÈÉÙç/¸a    ö@]º$ ^´=ÛŒÕãæ⇧Y    ü ™£çËL&⇦âáæ⇧'ýp oN_cÜr¾3a1è:i½s 3—©stpS+ûÏL@ÏéôáK     ÖÅfl~%ßÔ⇨vxC⇩x!®_£ÞŷÕ>¾☓−W[☓    îÑ«ŶõíÁÄœëÿ¸ÁG>TâænÕ»☓−☓^Ŷ®íý¯ÍËÿ¸Iñâ◰‰W>Î{TÞÆÕX0·¤0Øât    !º<»>ÎmÓ QQÛÿûLñ­tahw¡û"ù;+üáL¼‹¨ôÄ0~¼%xº?Π   ”\16¶Ña⇧ös re
  27744. äoÚÒ:e:ro’oflrp( 1stH#—Ï{¦%ÈÕ>¾lC|k?ÎxC®mað¼pß
  27745. ÛD
  27746. ºëao    ÎåÂ0®
  27747. ²P/;)œ+úÏL2ÏsôáKº—‘È&ÉÙ›‘â⇦ĺ†ŷ™¢ôCƲ}%⇦aØr%•iÂ,;e)ÛJoee4Dt­Ï:  úð;+üáL¼u‘Pô☓¸}.|Úæg¸^%*    ŷ‹ã(ºj‘ÈÅÙæ]¸T%¶…⇦ã(è¿¥¸Ŵ£Ö¢⇦-¬P™ÿæ»F%    ŷ}{Ȫ:¼±œ¾ç
  27748. ·øF÷¥hñê¾Ì¼áø(ýk/—a1N34i½s 3,¹ßi£oee4Dt­Ï:c oNn¨uÏ3úëªan rnVŵmE›Enurp!db“+ûÏLHÏýóáK%¶lºâÈ&µl    ¶âÈZ“…渪‘~gݺ†"øý,ºp9ÇñܹØâŷº(Ìñs»Òâŷqº¼¢ŷ0lÞµ„ p¨› ñµ„0l±0%ç⇧ivuO{*%I+ iv1{"©ENIL%    Ø9"<Ùl@ÍyÅû†ç¼Ù$    ŷ% s%`"ÉÙç[YÒ$øÔ™¨êËË$⇦¼Þç⇧¾º†Ê™ªêË+Á$øe oNõârldbDi.eà3rivn£v tnemnob0Ŵ:O{*t rotidE¿Ïªn1d”Cyllau`ÖJû!ù?+üáL¼6⇩óÔdòDfifô‹ ¥⇦ŷÅý ⇦ºÌ™WëÂôíÙ¬ô⇨Þ¾Éî[Vflè\¹¸|Ϧh'Ó¬⇩™·çËçŴ$¸~$)    ŷóç»ç†"¸x$(    ŷ¨wç{‰"‰'    çk¦q$⇦‘sëÿ⇩ q…sµ}⇦sµ}µÝ|s—ðv辺zªÈÒÚ⇨çï»MÛ/™º8ߧeQs¾Didaolrevl2©e);ŴMŒart lóalsn¡WŴ−4)4Ô:"…|4â辺XªÈ°Â⇨mØø¬€4ŵ    Üïݦ¸ôPs×ñ¢¥¸@w ¥x‡¥‰çï»Û/™º†EÇ‘ÃÉç$$¸C"ó⇧\)ÿ`¬6‹P
  27749. PynApots™r¥“+üÏL7ÏûòáK—0|€vºº†—Þm—î¸5ܺ¼nÆ1hÛh1ΠÎílWflñÛ 0M$x׺†H5æãñ<−+åÂh5ð#hñÎ2åê#é#ŷxí–ð¼óñ<„;åÂà#hæÞ#¸è' ¬ul%(1s%nou
  27750.  ul%)<c!“rag u% ,loc egab%noil‡)")¹wohs¡ûð;+üáL¼0¤¬ò☓" ‹⇦«ÄÈ(õ`~WHF    lÒ!‰µ#hØŶóæ»0õÔ!X?Îð®Í
  27751. Û×Dºüpß11íÎhÜP þofnijúð4+üáL¼6☓òÔV¤øÅ¡øëÿ—£{Jº¬ý¬É &•r´d¦3ûðI+üáL¼OnòÄK¢_™_$Üó7£Ø¯¢_™oòÝ0éâ€@(Q⇧ø    -@#Ü:ÓÿÅw‡{ZàŴañ-oiék¼ؤÈUì…Ì»a#—…ô’Þú†[#—…æ_¾9ŷ!èÚ5Üoº¼11íÎhÜ_ þR-”¤”«H5rot!ik h+ñ dn±“#™ìVÎíøÂ☓ ÎiNcæ8#¸W!ô⇧3#™…¹⇨¯< = rfir¬DØ>deQæ*#¸I!ô⇧%#‰…æ<·☓D!øå„` = #‘…ôæ»<!Øŷz¯--
  27752.  
  27753. <ñº:sκÚÍ1gÛh1ΠÎíñV¿T#™k4 ææɾ,!hkú"èYÂΪ:¼±¨L¶æ¾t:!hàôíÛ =é"ŷºŵÎŵ½øâ;\ÌTs¬{«Ë÷( ×ѺLÌJæfînÜJ!jêÏ"•…Pf¯
  27754.  -”sIRºœ"É6Ä"hºôÍœÃÉ H¾"xí æ⇧¹"<ŷðHÇæ¹7Ú hH²"xÙ æ⇧P׌ØÉŒª"È—¾¨"hÊyî¾ æ⇧¡"-ØŶÃyî:YÌ Nªk±ë¹ æ⇧ôØ;ÖäÞ9:êÚ5ÜáºL11íÎhÜh þ3c --±o−%; hs+KiD ss
  27755. ⇦ >= r
  27756. ehw !
  27757. )›ñÛÅ"Øo◰€÷2 --
  27758. ±
  27759. :s§%Yi <f"hÂôí;^Ìo‡ë±ëÂð† æ⇧W"$ØŶôÜ<Ö^·;¼±o¾æ¾9v èÚ5Üjº¼11íÎhÜY þ§2«ñ¹‰"™ôH=ÖàÞ9Í ãÚ5Ügº¼8íÙoÜVŷ÷ñÛŴ{"èຆ◰æë®Ø= XŴ "è:YÌ PªkJ…å    æð,ü ’06qËy „z ¦]‰ünO<De+-nJ…cª—:É0"xº<ÐØþQ    ü!Øŵ꺬ºŴÎ_Úï; ¸ï!“…nS¯c atad -%3»n;©timi-€UHeviAefer\eMr£3l­
  27760. 'sA"±Œ+ûÏLHÏ¿ñáKã•O…:ÜvÛ…ò5Ü&Üñƹ¬¡ç⇧Õ•    …I-¬ñW¿¤¡™à    lý¬À™¡çËì·!⇦0£:mN3BßGles etce’⇦?NlÀôí:YÌäQªkô±ÛòëflØ(¿!Èúl☓    yåoÄ[5kκïÍ1gÛhGΠÚíòV¿Þ!™d:ýo]5kκïÍ gkhGΠÚíòV¿Ì! ™◰å‡`áu!”…ŷàŷ`    Ál@⇦lÛôí¿ ý<…õËSj!ø
  27761. ©<9l seß
  27762. )diÕerprÂût¯òA+üáL¼Dñĸs
  27763. |¾!ÈÛ™Y¨çº¬&=ñÊ!³lßç⇧—}#áxÕÞ™5YÎ[ëÿ´áæëÿ⇦¹±:!f ëÿ”ðañC⇧mlÿpnÿsvÿwvÿwyÿzyÿzQÿ}|ÿ<:à(⇩e©ol o!r¸p daA—8d
  27764. "Õ•â⇦Ó°â⇦ÝØÝU•|ÝY‰ËÅá⇦ â™ÐáÈ⇦gãÆ⇦CäÄ⇦.æÂ⇦²ßÀ⇦Ðà¾⇦já¼⇦H•º⇦·õÚ⇦µ•á⇦³\ä⇦e−Hrre!+úÏL<ÏÝðáK]Þ    …hsÙãx    lô⇩í h÷d>Çç̹栮…d9ñ{ýfÝÈ繩ýËÝ Øçé½Ø      ŷ(çûkç–ORRE’œnJil( 1*d‹a¨Frre!+úÏL4Ï­ðáKôPæ¸5ܺ\lÆ1gÛh1ΠÎíñV¿!™í æ⇧'zÝç&trobArreûð2+üáL¼Þ‰ð☓%⇧ãøÂרr+ûÏL8ÏŴðáKÞ    …5}ãhý¼‘ £…É ç⇧'t6Öòæ'LANRETNI :RORRE atafwúù5+üáL¼    fðĵ l5ŷ•ñËv ØÞØflæ&E LATAF
  27765. :ŷRORRAb☓9dynaHkAüð3+üáL¼LðÔ›+ÚÈ^ ØÇÝìÝ⇦ð5Cãh€“ Ø%'ý{¢½æGp­urre1êÿy
  27766. }!noNr2ûù5+üáL¼    0ðijfl™¼w×±¾Nµý2f¹r¢+ûÏL9ÏðáK
  27767. Ìflfl™D4ïk
  27768. ±íʺÛiΦö½OµýrY2Kû@ùÞ+|LïÏðáKÝ    |ì½ÁÑï☓fl¸±°4Öº
  27769. ¾îŴÉiΦö½îèø2N¿r“+ûÏL9ÏçïáK
  27770. Ìifl™uïÛ
  27771. ±íʺÛiΦö½OµýxeTr2û#ù9+üáL¼ÎïÄ
  27772. ÜïPfl¸±€5Öº
  27773. ¾Êíöiܵ¦Û2O¿r„+ûÏL9ϵïáK
  27774. Ì7fl™zïÛ
  27775. ±íʺÛiΦö½ýµÍ⇧0ÏÄ'•ebaLb-2¹baLr¢+ûÏL>Ï”ïáKÌ Üïfl¸±{ݺ
  27776. ¾Ëí
  27777. iìʺÛì^¦ö½ýµÍ%ØM[ô(•r2Kl„+üÏL>ÏqïáKÌ Üïòfi¸±ø6Öº
  27778. ¾Ëí
  27779. iìʺÛì^¦ö½ýµÍIØM[Ð(•TRATSsa+úÏL7ÏOïáK2h}v®•ÞÞmæ6½ÜÌfiØÞ5lâæOµýxD†x!lebaLwenûð5+üáL¼4ïd¨ÚÝ)ÎgÛ⇧Iåè@£…)uåèÙblkNfldeliýe_doc AmÂoT4NEsa%úDò;+üáL¼T~ïd¼⇩ 7g0~|åD¶nwÿlmÿjkÿhiÿfgÿ]^ÿdeÿbcÿ^Zÿ\]ÿZ[ÿc{ü¦y¼þó®]ð\_¦ë®ßUóõ\剅Õ;¾PÏpõsrddAxifºÀïfl¹´™EDILSsa+úÏL8ÏÏîáKl    lI;î⇨妱W¼ŷ^V®ýñk0œåxÞœkKMsaOúPAñ8+üáL¼    ²îÄ;àæ⇨I^nWʱë®ŷÕñV¿~噜0·OÞöETADPUsaûð5+üáL¼Tp“îd+)wà◰q#¦½p¼üÎâC–ïͽ]ýÃÖi'Ǻ)·V¸ýïk$UåxÔ5ÜOGsaNúOTñ3+üáL¼lîdÈiÄi︹%ö§ØÆæØ'%•ÜŒ+úÏLEÏUîáK    Ì®¢æ⇧Ø\€Çl’~øbÈ1cÅc•øR„øÂ,€øÃ,¤Æ<Àkî wçîÞXÝïæWÜ\Rfl¨ŵä3r6øÉ,ïʆ‘Ñ<Çkîò¾¾kÏæèwÀîòê¾dsæÞXÜïæWÜ*ýæbÈcöYÂÞ†Àâ†rå<ñÛX!åèæWÜ[RflçaÉè;øÂsðeSBÜXÝäèæWÜRÏÀTîêwî‘ò⇧”\ÏTî“濉*éûkèÆÇîò¾¾k⇧æè¾Çîêwî☓æò⇧Àkîêwîâòûpsçèä™WXÎæÝ*•Àkî*òûò◰¿4æÛ*Hýæâ·ïw¢¸†ä™WXÎRæýæ☓6²íß×øÜ}XªäèæWÜkRïÇÞXØäèæWÜÓðR_h:@lÆÞXäèæWÜ⇧RÏ *•ÜŒauGdÜûsdrñE+üáL¼,‘íÄl¤l⇧êÞEœäxðWÜ€6R/vܬæòÀ¾8…èæhÀTîêwîæò⇧ÇTîò¾¾,5ÞoÞEŴäxðWÜ*ýÜ°¨coLd+ûÏLJÏ_íáK    Ì"¢æ⇧AÜD³    µeXQ÷àŶ à€−´gvÚŵ¼ôŒ»(äŷyQW    µöV`àŶ€ñ 7õkÀôí“ååXêLæø7¢åhÛôíÚŵ¼éðpµ¬S¯úðL+üáL¼,íÄÌé ¼Ñ◰¡È4cnøR[ùÈ,ÂcÅÃeùÂÆJù€8zcÃôí⇦HæîÞ\@%ähiÎæ³½−+•>øÉ,}øÊ,eÐ<vÔ®æ(8Ên¾ôíIòÛæHýÃã™ÀPv¾5ܹäæ⇧v(ìáÊîåŒÏ⇨ŹfløØ,ÀÞ†Eâ<ôÛAõãhiÎæ³½i+•,ùæ,Äøç,5è<BsýÅ®ã™`Aæ³iÜ+æûÀ¯XhÃvîIæòê¾(]æÈv    ”å¿ÒîIÿÛëã¿æãä¸C+•DNÜ(xäÈuäæ⇧ìA$lòùÝô<:Ö‘IÃnêî    ®\áòû%†™±⇦Næ4B◰n³m™uãØÊôí¾Îòÿ»^æØÚÔN†hS°þÿ¼Ð:-o§~ªú~0f¬e !þ    ÏSãøDNÜ$<äÈùÐBÖòÍp:,oÃôíÿ¼6ò⇧⇦ÜlOìœhJ°Þ¾SÖôd;Öp;änÃôí6º¬,üôÔ:ÖÃÎòÿ»ØÚÔOÒœhS±þäæ⇧Ð;$läôíNnÏäD™¬C(lòùÝ,üôL;ÖÃÎòÿ»⇦Öȵœ™±HPæôSJm@<¾mäôíôL<ÖºÃÎ6Ê“,ßÃôíÿ¼½ò⇧­œœ™°°PælsSºôÍéé¹Xwr¡x−î'Å«n$Ê-ÿûôä<Ö8\Ên³~¿Î{çS_ø 6f)⇦4])P{ç%Å«¼Î"Ê-ÿûôL=Ö LÒnóî¾Î“îSÒÿ_¤6‹òÿ»5éÛæ*¸_ +•ëÿ±☓éïÛo©âØiÎæ³½S +•êÕé⇧íßµâÜà4æ³iÜ+æû†F ØÊôíßâ™sí³iÜ+æûÓý: XXB@lÆÞw◰âØiÎæ³½- +•+⇧ü¬
  27780. ¨¬ C±+ûÏH.ÿáM¼(‘ìÄ lD ßPãÈMãê⇧Ìëñ»ÝIýIâ™ùà5Öì5â@‘aÿʶ…5æþâ™Ì\ñ{6>åhÊÖTÂòŒh‡Çñ¼Ü \÷ãx¡çŒ™S‡÷rauGt¬ûù.+üMCÏUìáK
  27781. Ì Ìð>}nÁôíIñÛåH™â™À6æ³?Ü{ÿÛÞ ÇâØÁôíÌ*ñût¬H¼
  27782. +ûÏH.ÿáM¼    ,ìÄ Ì~ìô“?Öëÿ|,À¨?$lÀôíÃ{ ÈÄËÉÅÑÉÐ?)jÇôíô“@Öþƾcöôô?ÖÀ À‰þï»[ýô@ÖØ@ÇnÆôíþÛYcâøô¡ÝþǾ€â™XmZ‹þxDrÒql ”–uËW¼àŷ÷pô¤ÝÀÎ+üa° HyS›+ûÏL8ÏÙëáK|~    l ÑýLô£Ý»ÀÎÞcËìsûð 2Ç$0$zo»\ÌaæâRÏKkG»JâRÎR±âŵ ÓS<ËÅ@Òº$í‹ Þhl(0OÕ«”,$$í€!ÜO¯úpAdñL+üáL¼    ¤ëÄÌ\¼>mæå⇨€ ±â⇨‘ ½æ\è−€ñô☓BÖòÀ¾àA9ãhÛôí¥ŷ\‡ykÕ`¼âTÌjRG»ÆcïU“º¼¤
  27783. +•JÞµÕo»uXË­:¼¦…¾zn÷ÚÑ”âXpnfl o
  27784. ],(:v☓Þ»âIa⇧CáØiÎ_³ýº_ÍÿĹæò»'äI™òV¿úâæ⇧“½+éûc·—
  27785. 8úneGñB+üáL¼HëÄ
  27786. Ì,òÈ fìá(óŷЇÜFmJXå pW²ÎŒÇ»Óà0ýJÃà0qèñ»Xüãø&èÛÏâØâòà⇦Ň3ö]¸A¼´DE¶ E½}ÖQ¯úðI+üáL¼    ëÄå„€Dæ@½ÇkflÈ…ø²Û»†☓øÂ,|Ã<¸flæ⇧8ËÐKfZ”flöȆÑâ†pç<STÎcÕKKWTΛâíŷ³îtVflŷ[éŵôýu\ɪ:¼±4F¶ìõ ÇTôé à@ QQáÔS$oÅCÕKKWTÎxDâm    ¶Îôp4Ö‘TâDaÆïHçŵÁIÜH…{óð,¿‡9 ü9ìLcW@ÇGÁÍè4âm¢Û‰(ð¬KS¼TÕäíbÜ’t}÷JÇ¥ó2 
  27787. 3TMcW@Ç^ÁíPU>låâ5ÜTMçŵpË[êtEæxEæ|³‰²Óæ⇧´=óo¼=èh^å€@4áå€P0àAPæf¿nU⇦⇨ æ⇧œkX
  27788. å1ÔñØUæ
  27789. —÷ÜU
  27790. lþI¼Î⇩½iwnuSú.ùI+üáL¼    dêÄT☓m"ÝmH¬>f—…H†f¶fiæ⇧øÃ,»◰ËÂÖÉæ!³¼Îÿ×Ȇ)ç¬ÌT¾…6¶ÔdÇôíWTÎç⇦âW<ÎkÝí¼6UoÛôíæܸ8ÞëfihæW¿óYÓø4âíŶaÖS¯2ÐŒ+ûÏL@Ï%êáK™    lÀTî~–…D‡¢nº¬oí⇦¬î^ôíQ¬þÚ`ÉõZl–…Ú¢ÎhÐ⇩¬oîöÕ^⇩†èQ¬þùr­òJ+üáL¼
  27791. »    úÁ<ø”vA…Õçã ™ú±ôéÕCʼj/à÷{vÿCßŷ™Lß÷|ßlßwSŒÿ¤ß”ßw¾ß‡ÆßÃßw«Êß÷Üߦ+æû°8³oSôÍ?ÔKK¿9¾
  27792. å4☓ñÔXæÌWÜè8×ßgSôÍ1ÔKK`Gþô9ÖKS¼9*Ô亼‰‘»™ç‘[8YllWÎYÌm¦¸þôT9ÖKS¼9Ôäecfiøôt9ÖKS¼í”Ô!íÿ[ºÒøô†9ÖKS¼GÔ䆙¼YæÍiÜÐ9fo‘IômSêîèYZo?ΰYÍm†•âApô⇧ð¼JæbÔYö¿9¾    äeöìYïkçŵ’fDÃvå…âBüY»g·î9§ßç(ÿkxfÐgC ÎÑÕv@Jæ ²îÕClLJÑg²î¸Zœo>΀:Ìmܾþ`WèÍ9¾è:jkSôͱÓKK9`îj†ûHUî`vïÍ9¾nIúð`Î9yëð6È‹BÚSôÍ−ÓKK9`îä‡,⇦l[æÍiÜ·4[æ4<WÍ9¾÷Ü SU%èG^9!è¸K¿k⇧¸ývS^ÌKæÛÿªyÄ&\ß™œ™ì[æÍiÜ·´[æÊé[òdº\ÐgŶoô—ÝÌ[
  27793. o³~àŵG {ç¼ïä3/â–í<Qn—ÞTôýÙ®çûü†äYï®TüÙαûYûâC Á°<õdeSôÍ?ÓKKÄLæ¸WÜçŴq…LåÈ—]ähæGÑçç…!tsG^÷ÔV⇧ÉÈÆ5Þ⇦WiÁ£%2»Ö•©rEoNWñü‹ù<+üáL¼    ¬éÄ,~XÖuìH8·ìHÞ¶º"È−D›¨ ÿýŷ’PHãöPMfi4înLMDÆfdMnUþDÆ oðDǹO{ù„÷ÇÿãëºHÇ
  27794. ÿöü¤     marÉthguacnulv ›Cparg‹pxEroFh+ûÏL4ÏqéáKHtFm…Ùíkåô™>1Π>ÎmN¾þhcam0úi ò5+üáL¼½\éÄÚ)öæ؆   ã j,m‹hºÐÍ ÿöã¥Þ™Ó'ÞðN¯l¤o|3gorpTomemXêÿprhs*+úÏL5Ï9éáK1,}çDÇ÷ÄÍ1hëäÁ®#Þà:V/‹1‰W$ÎNÏýtz*+úÏL8ÏéáKHz    l9gï?Îð°Í…h{ô9ÞG%æV¸ý¤Gî:sèÛWܤ{ì;º¬pmO?úCù5+üáL¼ûúè´æ}·¡…&æûì:Ï(ª%    ¢úCù<+üáL¼    èèÄâ{fb ö9î°?Ügð¼ô9ÞGäÀ`áV¸ý GÞæ=¸º=ÌPìdõùp»òJ+üáL¼ÈèÄ ¸
  27795. lÄVÇÉkð•+W‡dÅæ÷¶“ŵ†xÍ“Ç#c☓øRË5Ì°Cû+à%àw‰•ÿ™Yß÷−Wß÷¯}ß÷Vß"àw{ß àwà­ààw„à÷²ßŒ\æ[ŷâTîé‡...z\[−ïÞ†Å[CÀ¼WߪEß…êßÕßw~àgåøßÇê¹ëᆠøâ,õä<Væ™…ÆcïU#¨/Ñç†ëè<;sïÅëßcxÊvîœæE™äTîÁ‡$æ,ŷ]½oñ¿ß·zç⇧u£Ï­:¼¦¾VôýTpéÀ‰⇩ÎßÇ{¢ºß7⇩tÂ(¶ß'ñÉ̵Ãß³x¢ß_vÀTîîwîáEýüå@ŷÇTîflÆþÇTîUÍþÏTîv ç²¿‰æfi¿¦ßßœxNÐæ⇧!íÿŒXÐøÀTî‡ß)xŴ¶’ÝeÅT÷åèÆÇîGæD™’oVl>‹?}@oJiÌeŴ[æåŷÀTîîwî5æC™ÞåŷÇTîw¾îCîÞ”,æÈTÕåèÆÇîCÆÞ$æhMßnou ¼ fi1sle nTeâwÀîV#º¬TUïäÞvÃé¶ÉGº¬­ÇTîÆÆîIßç{Ŵ¶\•ee™åØvÉéÊÞTøåèäÞ ÁÙ½ŴåøŒå‹…ÇTîÆÆîéåE™3oV >- fÐpeŴ[ÀTîîwîÛåC™☓å‹…ÇTîö¾‰o]`å"™Pp¯‹ÀTwåèwÀîEîÞ™ÆåÈcoåø½ŒoUª^}bTKåèÇÞW¸åøDå$ŷŴåæ⇧5VÇS÷ö‘sŒ+úÏL=ÏuçáK
  27796. ÌNå„…EòÛý åÈ‘ÑÉ´~GåhÀ9îÀ‰h[Z/› | Á9=åèÅÀþÛTîGý¬(…ü)3—Qtup] úu§ò8+üáL¼    LçĦŒæ⇧Õ4ÆÖÓÉ´æ‹×ÿÂ9êdIÀnîîkå™å–…Ç9îEÆÞc'•Ç9î'Eýl>^8}o*iDsi-<c›+ûÏL5ÏçáKæ    ¼¿yŒÈÆÏÉçÍɪô:ÖÙÛÀ^eJ»GÚµàÛDNýNýDpikSyamûi¶ò<+üáL¼    þæÄöŒÝ#º¬x‘x€f9UïýÛÎ9Vë»ÀÎÞcËTfëÄæÀ‰Bº¬PæûpU›+úÏLJÏÝæáK
  27797. Ì(Í!Ì;boÃôíº­æÈAÃÙö|=Ö¿º†’ŵÜäôíS½ô‹Ý»ÃÎÞéâÄçÒÔŒä‹ëþ·)Œé⇧ÇÁ†½˾ÄÉ¿ÂÉÀÀɨ;YcÃôíÄQßÇÅÔÉâåÉåEøÂÉÑMSOÝ»L½é«ÿý[±ñ⇧ðÐÝKb½+"ýQ Ø ª,<icÀôí^4‹æBŒê‰,ük(€çû®”¸×Tîço¾S‡øAPDDA!1Ò ª‘<Oc×ôí¤L,oðî&Œ¾‰$    |›”T‰^ûëçËS◰øAPLUM!◰1­:¼¦”½$ôÍŵ”È<TßKææ⇧€?    lºöÍ
  27798. ÀÙÚÚ«ÿýLØæûb½+"ýý Ø!Úx=ÚoÇôíeä™òã ™ê⇧+"ýí h°› j×TîÄ=,oÀôí^æèúÎçõ»S?øL½«ÿüÙÁõ¼Ãèûb½+"ýOtupÏ nÄIrevAüðG+üáL¼æÄ̇ ÜãW\²ôoÕõåÀ‰âGóþ» êæØv³ãèÇÞ *•«w~ô,ßãåÀ‰úwîóþ»¿ýpmR?nÄ+ûÏH.ÿáM¼    ÖåÄÌâ⇧~ã ÁŴÕ»Ëÿü™aœ’Úòûŷã ™œè⇧ŵã ™öœ¹¢îãX"“Ûx +•i$zJûpAeñ5+üáL¼    ®åÄÑýLôfiÝ»ÀÎÞcËflåk⇧ ìßØ?aãhÇôí&ýñÌ ¸&ý~È ¨uÂ+ûÏL9Ï™åáK
  27799. ÌJã!™çñ»    ÇÏ0nº\,UoHAãÈúdý\'"ýsunu; puTde!+ûÏL=ÏqåáK
  27800. Ì]ý¼ô¢ÝñÇÎôcËçq»Éë_Ì„ÖTjëEÇÞ‰ãØ,a)mUYãøã ™ÇTî◰ã™Pçûxt°Jûð5+üáL¼¤“Få☓¢    ìkë¬Lw÷Â¥Ã܆©æ˺aÈæº &•òâ!™ ãæ⇧&"ýmí
  27801. —°,©úpOxñ5+üáL¼€“"å☓¢    ì
  27802. Në<DDöÅÁ”Øâ`ŷòâæ⇧&`öæÓ
  27803. ¸ì
  27804. &•xŷ°:DrJ“+üÏL5ÏåáK'    læÃ⸛‰'ŷ'Ûâh¼
  27805. &•rtSx°#œ+üÏLIÏñäáKO“È(Í$̪â"ŷ+1ß×    z‰È
  27806.  Ö¤ÁéÉH „ɇǠ   ‡ë¤ÎXENc3Ï“Àɤ¯âèÚ¬åÕ­ ⇩~ ‘ÍWêòà:&\!äÔ`Ŷ⺤΀KjyNÓ3ÕÇ?ÀÙ>Tߥ~ìÊ º<+"özq
  27807. ¨p
  27808. yTgi!+ûÏL<ϧäáKÄ−    lýÄ⇨ÆTRëÙÀÎõ¯)æö²Ó÷–È9ê^ÀîÆêþnâ‘…Ç9îæÚ¾(Gý >= jßs xoÔ#+ûÏL@ÏäáK§,†Xý¶)@—æ⇧»Ìÿû6(9~çÊÀþ[flþ[(‹”\É9Gâè À‰ÛkîGý¬¼‡)"ý)
  27809. —⇨Ptup’+úÏL8ÏUäáKlz    lZý¼ô|4Ö»ÀÎÞcËìiûâ ™À9î'*ýæßu_mÍ´J:ÞµwTˬ;¼«<s·“›ô™
  27810. '•Ë–æ⇧¦º†
  27811. ý´)À9î'⇨›øs
  27812. —nO<D"Œº~e¢ú…ùJ+üáL¼    äÄæ¼ãs–ÈcßYëÆOaÞêü·)æß,æü·)æà,âü·),“fl)>-(Ú冣憷 −ç~øÂæi³$\—ÈTçܺ†áMp=ýx]Éfi:¼¦…¾D›ô™À    +•!ÉÍÕoUflfiá,ŷýHÌ"údÕ—    +•„á_ŷ⇦–æ⇧Ñ    +•ê<½☓¹+–hÍ߆×à†.å<^ÉÒå0Ä«ŵá!™Yæ⇧+"ýT}    è,»¬xá[ŷÀyî›æG™+]öTq    è&¼¬L    ¶7«ÿúkaÀôíêzî◰æ    ŷ~áŷÀyî}æG™b    ¶+"ýY    ØV'(3Ôæû¾‡+"ý™O    Èh    +• >- (ª³dcbaelkjihgfetsrqponmzyxwvuyt~Jûð5+üáL¼ïvã´wŷX9    lÕ$w¾/áX&¹ù~j    ¨¸u£üð5+üáL¼    `ãÄÑýLôL8Ö»ÀÎÞcËïæl⇧,º<t8'cÀôí-æG™NýNýpppUCûù5+üáL¼    @ãÄ[ý¼ôÝ»ÀÎÞcËïæj⇧ôà ™ôð8Ö*ÀÞ&•*æÛ    &•⇩Ktup’+úÏL8Ï!ãáKæ    ¼Ã{„Èf ái´*ç‹æ
  27813. ÿùÙÁ £−–´9ç<ÿùì0G☓æºëÎî[ëcñ¼lô¼Äà!™À9î"ÙæØW¿àøì(ª£ÒædŵÔà“ØŶôà9Ö'Àþ_Ëhæ±à¸'£„øzì¨úi ò<+üáL¼    »äÁ¢à!™T<‘æäÀþXH€ö¶à›…ÀTî9¯æèýÛÎ"GÚ‘(•û)¹Èì;fÈ.mùE™Ì\Öã⇧Ì\Ö:ã⇧Ì$\Ö`ã⇧Ì4\Ö‘ã⇧ÌD\ÖÉã⇧üêÿi⇧±â€Ŷàŵàü{2+ü4LÜ4,ß&.ÝMø2+ü4LÜ4,ßÈ.ý+MÏL2Ï,4ýÃ4ý+MÏL2Ï4¼Õ ±,_Mø2+üdL|é™ «4¬Í(3Ìæø⇧Mý4+ü_L|e dw陫ÿþf4¬»(£ºæø⇧Ný2+ü½L\ä¼µ.4Ý.&ý,4ý¨÷[.4ÝMÎÿ4+ü    LÌ*½Å|åë.4Ý4.ß ®,_欵É4ý+NÏL7Ï
  27814. ̼½U4éœÑ4.ß ±,_ñ®µç⇧+OÏL?Ï`_wb aw«d×4é™ Ár(:r    ä2¨Ù3=ÓŶ ý<Q☓ñ.+üMHÏ4_^w,a0`w$c(bwd圑 q«e×]üvýûf ÿþf4¬äK(#¨K    ›
  27815. =    ⇨Ñ⇦=Ó 3=ýŶÁ☓+SÏL2ϼ½UäË& ®ÕÝç¬fWæ]M›æø2+üªLÜøû¶æŷïM¿™ïÛ︙ïk+ÈL2Ïøª½æ™+MÏL7Ϫ
  27816. Üå™@üå™P 8úm#økºùåÈÄP‡OÄPñüë¸ãà0°xãàP6åfla Zé-F¶Zï
  27817. Ŵ··jQ¡ @£ 0YÌ4^ÑdâA:ä‘RaâQï+B•rahS€‘bil eW ¦rÈDded …rahS€’bil eW <rÈ4d fooC/a£òëÿH/(ãàP6 0
  27818. flPäfl@ð◰0 E0ë™ä… h½€ »äŵ0Qâ… ä†À‰fWt¼|g¬× g¡á°hF¶jÿÿÉï
  27819. ŵ·eâŴ€Åâé…€ `    l/⇦ÿé-çèý€^ ¹DV‡ãàÀáé-ŶúàPP$;‹QP−l<$;"FÿflRQ−fil<R)BBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝBBÝ(B-Þ€F€⇦FP‘//"/‹    ÁøÁðÿÿÂÿþÿÿ™Tÿÿ¦ÿþ,Äÿ›"“ÿÿIÿþtÿþQåÿÿ!ÿÿþl@ÿþM][5¾RR−!hL€Bþ~gR0#!ÕÆ3r"pCâ$<ÌW☓T€*zöcmfqgÐ2ó™V⇩!ß#.dY‘ׄ"ŷXÔ‰mªáô!’’Ñ#…kø!‘Dd&Åj!ÝÊ“Æ,™’Ë"SAE„"#c¨ °ü`¬­OdÈ"µÑ±ÕÇ’´Ð"³Ñ2Û"ð½½Ò"»tTÁ"‹SÀy\ÃNû¦ci—edÏflWf/!ØPÙ{!—ÂÏ!ÛäÉçÞ¢HO…`è!    ,,a™æù!xvÃÚ1C‰„î/²dïÙrS"
  27820. b¥_!⇦Ý
  27821. X+‘!’P  !››”pSqÁÍÌ÷flºé¹;|S8⇧Ãÿ)dÜŴŴx$¡™Ŵ'&ä{]‹Z})+™™"¼™Å“"D:-ÙcO6;!AÜx)BoHaÃUM×SS"S
  27822. bÙ\N•!JW_GS7SOF[!XET]\(Z]^aÈ÷IÈdP|b\‹=[~)nT8×coxúÃ<M6œ“rSptvNw§Ösu!ŵ%–}a*ŵMOK⇦"YbMŵŶ7l! J| ]‹[~)P⇧OÞ"☓ìQ!
  27823. >í◰L⇩KA!õFWa\P"0LIŷ"{bZ‹G})POHQN!ã\HE"YaŴÊ"Så!ê WëL
  27824. P"{Ŵv‹w})Ó|"sHuË!Vjtv!Œ.UeŴ 4XFP"™HÖØ"ªÎCÍ"x@^’kla/QÂÀ("-” LW"{P‹†})w?@?h1O u5W"àKQ `Äý!^‹ò®¿j5!o¦¿x¼"€‘~|−    † ŵ z‘y    €
  27825. −~|−    ‘ŵ z‘9ñE €
  27826. −~|− Z‹Ô}{−M)y    €
  27827. −~|−z−y    €
  27828. −~|−    3ÿ_ïOïÿ'üŴ<zÿúÿú!{ÿý!<ìCüŴøÁüñöøÿ‡üøÿ#üíîÊ5ÿüüøøÿÊ{ï(ÿ6ÊJí<ì9ï⇦œì´ÿñŴ<ÿú¸¹lÂ<a"øwìø$ñÿ$ÿ"Ŵ0sñ(r–5s"ÖìCì⇦÷øÿòìï⇦eüøKü(ŷü–øï–⇨øøÿ¶ö–¾Â’xü£ÿîüøø9üñý4ü⇦øpÿúñþúÿ.ÿŶÿ*ü’'ïì⇦–X‹ŷs®ÿ)!¼üõŒìp¦Ŵ÷!ìøÿrøøÊÿ3ñÿ@üøÿïR☓ìøøÿsÊþé!◰ì”üŴ5\◰À"´ì¶üŴÿêü5ÿëqüøÿèH–ÿ?ü⇧ìøÇòŶøflŶøfl–øflÿÎüW£É^÷/Ǩ¿"ÿüÿ–ÿ!øýø‹Ê÷‡ìqÛŵ„ì®ì⇦øøÿÿæÿ'ríÊüöøøÿŴìÿðŷŴìì⇦õ”GòA–Gí(øŷÛò€¦wìgŴ ì(øøÿiÿÿFüäîþæüŴÿNü`üïø•õrüñøÿ6üñœüüÿðö5Ä\"ø_ìøøÿüñøøÿüÿ ü^2!NM01!Ç☓\/,-.¼A+!(*’ #Ŵ7!⇩úûiüàVfl¼öçIìôõënó¾Yŧ®⇨· dÝ!{⇨⇧|’HG−Bq)vv−KF"    L G" M!RM"NP"TS"OO"W!    ZG"^Z""a!!!$c_" `$`"&&%%'\#b"((\◰◰−◰◰−*n)m"    G+G"--,o/..q0G0/!21113        G4s3r"865t
  27829. u8H":w7w"z;x"=|<|"UY"V>"vL)@@9vŷŷ−B€ŷ)AA’−−−EŴ)G☓CC!IŶHŶ"KŵJŷ"⇦⇦−F⇦⇦)M⇩L⇩"⇧ME"N"b‹dH−KH−rE‹I−Hd−7)JG−JA‹Hd−7A"B)H‹J−JJ−J−Gr−JJ−JH−HI−dc−Ld−db−d−HJ−JH−JA‹dK−qc−7A"cb−Kc−IH−qM−JA‹bb−Jb−JH−rB‹vII−Ib−HK−dH−AA"Jd−HL−II−H−Md−b7‹MJ−H−Üÿÿü!ÇÚÿþ!-‹ÿÀÿÁ!ÿ¿     ~“¼ù(èiÿÂ[ÿûÿü%ÿõøÚÿÒýß-àÿÐÿÑ!ÿ¿ÿÒ`á{þ¾ô⇦ÿ¼@þôk-à"ÿÑÿÁþóþóÿºÿÐŴöÚúû(#åõ ŴôÚÿõÿé!ÿÝ{ØÚÙ÷(hÿ×!ÿÁ[ÿÉÿ¼ÿÁÿ¼
  27830.  ÿö◰◰−ÿÒ,,j]o¼ô(ùy|Þ"ÿô}ÿ²ÿäÿÔÿÔÿäÎÚÿÏÿÔ!ÿÙÿÍéiÿãÿÍÿãÅÚÿÆ,!þÿÄ=!ÿÉói)Ýÿ×!,ÿÕÿÖÿã`ÿÒã›ÿù;`þþ{ÿþñ)þ◰⇨ÿþ´òÿ²ÿöþû(|"ÿò!ÿÒÿÓ}pÿÓÿÓ!ÿÌ-Ëß!ýÿÝù⇦þßÃ~"ÿôÿîðúù÷éâŵ☓ãl‹☓☓−ÿöÿÁ]¹õÿ½Ŵ}p"&hÿñ{!îâÿíÿì!Ü÷ÿáÿãŴÿÎÿãp{o{ö({jþ~"(ö,Þŵÿùÿþãÿÿ¶ÿ·ÿ¸;µ¾!þþòøílÉi"ÿàÿâ,ÿÒ!|åõÿÈÿÊŴþ ÿÉñÿçúúåiæø(ÿµÿýÿ¹ÿéÿëÿùþõèlêù(ÞùÿßÿîŴ(öÜâŵÿÆùyùlùÿ()á☓)',kÿÛ'pÈ÷ÚâŵÿêÿþèiÿÝÿÞéø☓þ”Æ!−–¡Φ¥!­¬ª‰Ã®Ð‘‹’ E‹    f¤d†"ɦ"̨ÍiϤ"– ÅÄ LH"aaaÿþÅR"K⇩þ(QPO!È¢Œ"§€°›’•±² Õ‹ÔYÒØ"4s)` mª v !xÿþ’ŵÀ~!⇦Á"⇧‹’ h‰jÊ·Ñ µÒ´³!ÏÌÆ!Ñ    ÇF)]„3"^“p ‘☓Ŵ}ÃV‹ŷ☓(þ(TSL!VU‘"œW!¹ È!j_"?=A7lkÿþsT /‹W" fl[˽¼ºÁÔ"ÍÖËÊ!€‘21” ½⇧ U0q"À»™Óо"%‹9x t"D<€"|um⇩w!,)b{yE◰Âc-"8w&e"FC"ÿ‹ ‹
  27831. ‹‹ ‹‹ ‹$‹(‹    ,‹04‹8‹<‹@‹D‹H"L‹P‹T‹X‹    \‹
  27832. `‹ d‹ h‹l"p"t"x‹|"€"☓"⇦"…"‘"“‹—"†" "¤"¨"¬"°‹´"ëÿN ŷ     „‡ −‡´−    ÎÍøÖhÎ ÙÙÚ\ÚHß è îÜö€ötúøPú  \)$N)N−4@N)N−L‹T0!L\‹h/H![ät‹€O)9´…‹—CØ!E¸¤‹°Gl!J\¼‹È\!äØ‹äd!xð‹üä!@‹  ! ¸ ‹0"Ä!\)@‹Pð"$☓`‹p("¤)€‹‘ "†) ‹°  "¤ )À‹Ð(!"¤!)à‹ðD""È")‹h#"ü#) ‹0+‘!!¤@‹P!,!"H`‹l$"‘$)x‹☓%"¤%)‘‹†,&"¼&)¨‹¸T'"8tÈ‹ØÔ("ô')è‹ø("6“‹O)O−$‹4O)ô@‹\†P€d)L)"    È* Ð*−¬+‹°+‹¸+‹À+‹È+‹Ð+‹Ü+ä+‹ì+‹    ô+‹
  27833. ü+‹ ,‹ ,‹ ,","-")#‘8‹…8(-"D-)è:‹—:l-"‘-)e−R´-‹Ü-)d0‹h0ø-" .i"^−fH.‹h.u".t4"X8‘."¬.$)1“8"x4Ì."ð.k"H5‘    ×    1 eìq¹^9„èc
  27834. \þ\Ü]%`ó]è'^]é\¶J\ï   h ®€®þÿ vzð®¨^Ü2:r \\&\T]ð^Ŷ\í^¤:\x^è2^\®À[® Wq€⇨í®Rëc€¯d2²s®õ…¯æÿ¯¶®ùÿ¯¯°èÿ¯± :°9´™±·ïû·'³°Ì,ed÷®öh¯ðý²êö°
  27835. ¯þ¯ùój
  27836. ¯ýñhÚ*¹†’üŴéfi kû¾    àô•±Çôê8 ±Òô¹1 óð*C®œoÿ•ï³ûü~mËè*J\€_î<*J\€]^T¤                  gÿÿ&       l®û_¾€Þìð®ÿo‘tü_Ŵ ùÿþÿík⇧î <*J\€]^T¤        œÿÿ   %  (0ȼØA4¯^ü\쮿ú®Iÿ²þò¯ ¯®bI^üa
  27837. ®å÷°öeò®øõiõ®òñj"÷ñ«¶¿RPû®•ßÝØ*öþÿô[¥ññ PRE    ¸ôò² ñîïÿïú·ïþö¾ÕÎÔÕ!²åc'ôïñ ¯¼ý¯A°
  27838. ѱÛ(¯ÚaE±ÿ诮¯Ië`ã¹øö*´Ùûí±âõ*·²þó®é÷*¯±÷áçè*eú²ä]\ø¶Ïô*øû±eï ²¨ñ® ôhñ®²©ð°    ó±ûÿ¯Ù*^ã^,®Ùò¯ù*_ÿ¯ý÷_ï*oâ*¯áô^#®Ëð*o½®Nì]ófè*aØ*¿ïð²U
  27839. «²Dö¯ìò°òÕe/°³    ó¯ó³î*®òþ ÿûýîï\ô®ë¯û°±áê`ÚkB±²ÿ»õð¶P±óü¯½ók&³üì]Í<±ö÷®Ûø°Üü`E`»c0*²Ïî¯Ý\Yaûú¶ó®æX°§±S\î ¶Üý°Û#üø*¸½õ®Kï{µ#ôç*`d\ô\¹¯ý¯Oý`·¬ñhR]ñ¯â*¯»ì°N`÷ í«²þº]²ê#J*±´¨ï·â*±ò®üÿ`°Þùªîýýh¯þõl¯Èý®2ö°ýù\üfd·°-þ¯&Ôwúp¯Òó±*®ó¯þ°õé±õ¯ö¶Û°ü°*¯ûìûõêóùþ°ö±±†Ð¾
  27840. ðó«<ñéÿH¨»’W¤ Ïÿÿ ðœ»T¤      Ëÿÿ ²@)¿œÝÿ_ áÿÿ ð°ýñ²@¿[¯±0¯ð[öT¤ ðÿÿ @®üÿÍ€l¬®°l¯ËÞ\|\Ŵ\z\Ŵj]{lŴ®ÿ¾]]jŴ\Ŵk{]®ßlll®ÿïl®þÎ]°¯®ÿïÿÇ®÷ÿ ®ùÿ ®ýÿ®ôÿ®ÿÿ®üÿ ®÷ÿ¯úÿ°øÿ¯
  27841. ®öÿðcóJcÀ côJc¿køk÷cþJc¼kø kù kø kù…½ólllll®`_sâÝÿçgöòl®Àlh_ò¯h¯®ûƯ³'Яԕ¯ð°ý-\»\Y\ù½µ0Î9J$B6g_ó\Òk.k\l¤l®°l\þgó…® l¯®Ð:\ZBk.\þ⇧h®%´«Î®°<\h®f_®2 \ ®`ÿ®Î¯²@¯ø> &@ky    {ÎþÀÀ     9    P;®ÿ5B®}ÿ\d(®}ÿ®ÿÿg÷®ÿógí®ÿó®õÿ¯¯±Â¯±®ÿÿØÿÿ   Dk— !MkŒ \\&k~kÿkÿkÿkÿkÿkÿ®ÿ_í kýkýlмläýÿÝkû|¯`N³\ŷ³D ±ôÿ®—ôkôkø³ àkìkøkøl±ä¿&\t*.*BN.\☓VN*&J2>Z\l"JF\ðJJ>2\XRJ\h]0\T]T>V\l>\hVn cx“»(¼.lÁGûí‘⇧äl®ì¯&]z¤{äll® l¯ð\X\t*jø®ð.Jk⇦®ðJkl\p®‘ï"¯èÿ²°üÿ\\\l^$hà\X]j…\|\øj☓…®ðfll\X\ä]Ðhìl®Ðllkð\`®†Ïl|®‘†\X\h^,hÜ*:\|k®à*\d\lj¤:*\Äj¸l†®‘F"kl6B\dk\pmŒ`®‘\p\pk\h\Øj¸\☓œ|® ll®àll¯ð®pl®ì®°†kü¯üï2k¤26{‘…0k¸Ïø¯¬¼‘l±ð¯« ký†…®p {÷|l…l®pkÿ| {õ®°kþ¯ð¸ýÿ køkø kù kúkýkü kû kúkù®÷ok\|  k÷ kúkýkükûl|®plkükü®Ðl®ÿïl®ðkül®üßký®üïl¯×üþ³·ðl³ð»´zÒ◰þîý*ËÐç*J\€]^¿“œñ*®Ð– ' C \y \ù ]ñ ÛÌ*J\€]^T¤                       ,   ,!Fþÿ    7@6üÿ\üH&\ÈJ8Ŵ-ÛÀ¿ùÿÐý¿´†@jpÐG\Ì\É®Núìçêÿþ¯   \j\®\k    ,\_  \¡ <]]⇨\t]]]\e\™]^]_]\ÿ]]]]^\ÿ]\ÿ\ÿ]]^]]]]ÿ\]\fi\þ\þ]]]ÿb]]]^]]\ÿ\ÿ\þ`_]]]]]]ÿO\»]a\ÿ`\T\¬]^]ÿ]_]]/F \‹\g]…]c\‡_a]    \‰S3_ì\µJ \ð   `⇧]^ÿa]^`_]c^]ü`]]a]a^`c]]cfa`\ÿmxÿ]`ÿ]bÿab]ÿ®☓®¯œà¯ñ\[0¯€ß`í^f\ð^^]d¯ñ:^À°ÿl®÷ÿ -P®☓ÿ ³ \Ю?®”Ñb¯ñ¯®f]]eð`_a±X~†?®X¤®üÿ &®⇨ÿC²! (1^‡î\þ __í]
  27842. \è`ù\ù `ÿ¯ñ¦°Èÿ4]²Œ²àflµog¶ö¸²¡±jò¯ñ®þ¦ o¯®ì^jõ®òòa]ì^^÷^ú®ï¯ÿ\ýc    \ð]ïa!]ô¯øû^¯_
  27843. ¯úë`°ö±ólø_¯ì¯·öº⇨ÿ]òbgû]]Ù*^®-?_ë\½]E\ý\´^A]ÿ]²O®§ê6m®® c¬”T]ÿ]ñ _òa]_´O®­`´—:` ``ë®ùÕyû]·O]û\ÿ\õ\ò]    ]\ó\ñ\ô]ö]°:\ú \ó\ô\è®ÿ© w¬Ŷ$*_ÿ`æ*\·1®+òaý]ä*`î®ÚÓ]!lôj»mI_ü®½§M}òes\ø]]¬]aK^^]È ]ó ^°¯Aìg®ò± Ŵñv¯S\ó\¿^#*_Ô__
  27844. \ú`ú®ÿª‡_Ûd"]Ô9 ^ñbÿ®§w­iE sò_÷]ÿ]±,# ]û^]Î0aÔ^)]䮧fi­O^»^C]^Ò]Ú\Y]ô]Ù4]°K ®À«O¤÷^ó]\à\×`O`Ü]*¯û¦†±@*_ªL ]ù]òb\¬V]Ò^.®­°xD|`]ü]Þ&^ùb]]\ý®ÀªV†×& ]ïaþ`×"]\ô^\¯K\ô\æ*^õ®
  27845. ì]±]I`ó_\ü\÷^®ò¬¨
  27846. _®°°«J®´õX_ø®þémf_ò]¿Îà⇧¶€k®ñÌ ³¨»®U¤®ÿÿ®«ÿ³T là®Ï¯à¯ ``²=†@®X¤®ÿÿ                               ´tfll嬠`@¯°Œ³«»®U¤®ÿÿ®ÿÿ³ ®a`@„°0xЯ ³¨»®X¤®ÿÿ0²Ûÿ†]bðtQ\ðz¿, IZ:\fl]ß\°I\ð\ÀJ\`\flK\ÀaÀ®?Â]]]]]^`^fi   :*k J«Àl]`ðŶô:*]¼]ÔJ]]]\‘\€^€^À]-]­ \ÿ ^þ\ÿ]]h2x:\ ] ]Ô\²J\°Z\“\`\‘\|\t\…]ä]‘]ð®ÑÀ\ò]]]]]^_õpa*:*¯0pð\ð_\î\paeù aç_ð                                                   1(i<®ðR\`\p):\ *:\ *\ J:\ **9\p :ZJI-\}]\`_€*\‘*^   :J:\pJ\‘**\Ð \‘*\  \‘* \‘):\ *]°*J*J\`J*J\‘J\€J:}À\€^*hà]]ÀZ]ð^x¯…::\ :\ J\Ð\Ð:]ð_bÿJ:J+JJ9:***\€**\ð:**JJ\p\‘]J\°_*€ï_ðfðb]®ð¨`]h⇦®p\Ø®(Ò   ®Iÿ 4                                                    ®þþ                                  ®ŵ½®€Âs¯à9™»\ý°çvÿ®−d]gw\ÿa]bd^\ü_\ÿð’:<b(û ã?Îãå,Oâ?‘è
  27847.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  27848. P á@ ã  á0àã°[â)ºÕä
  27849. QâªQã
  27850. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  27851. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  27852. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿê|€Hâð árcc 4.00
  27853.   ”
  27854. 0éf4Ý“o©h©¨§⇦4éïk4’
  27855. Öf©™fl§‘ŷ喝™
  27856. Hêf4Ý…]©h
  27857. ©„§⇦Lêïk4⇩
  27858. ÖT©™™§fi…喝ŷ
  27859. Pêf4݇K©Èø¨☓§⇦Têïk4◰
  27860. ÖB©™{§ŵŷï器
  27861. Xêf4Ý~9©hæ¨r§⇦éïk4~
  27862. Ö0©™i§~ŷïݨ¸}
  27863.  éf4Ý|'©hÔ¨`§⇦}èm:YÌåflAÔª·ÀÛU§†…(æɨh:YÌÀª»k·mÀ¨L§⇦Y,æƪ:¼·ÀÛC§eŷç·¨Ø:YÌÀª»Q·ýRABTAF_™àªIAF_9àL¢Ú
  27864. àFI_¡LES_1à _E‰Iàu¢-:»vid_à⇧©CDn›pÌmoc_1à a¡ý*C_    “íàªrpn_#à”©CN    “”_Ŵ“L    àJpln_Cr¥NŴàJ_◰”Ià”©CS    “r¥pNickstandardDÿÿÿ fiùj§lqstandardDÿÿÿ fiùj§lq:preludepreludeNick¥WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     --         __________   __________   __________   __________   ________
  27865. --        /  _______/  /  ____   /  /  _______/  /  _______/  /  ____  \
  27866. --       /  / _____   /  /   /  /  /  /______   /  /______   /  /___/  /
  27867. --      /  / /_   /  /  /   /  /  /  _______/  /  _______/  /  __   __/
  27868. --     /  /___/  /  /  /___/  /  /  /         /  /______   /  /  \  \ 
  27869. --    /_________/  /_________/  /__/         /_________/  /__/    \__\
  27870. --
  27871. --    Functional programming environment, Version 2.28
  27872. --    Copyright Mark P Jones 1991-1993.
  27873. --
  27874. --    Standard prelude for use of overloaded values using type classes.
  27875. --    Based on the Haskell standard prelude version 1.2.
  27876.  
  27877. help = "press :? for a list of commands"
  27878.  
  27879. -- Operator precedence table: -----------------------------------------------
  27880.  
  27881. infixl 9 !!
  27882. infixr 9 .
  27883. infixr 8 ^
  27884. infixl 7 *
  27885. infix  7 /, `div`, `quot`, `rem`, `mod`
  27886. infixl 6 +, -
  27887. infix  5 \\
  27888. infixr 5 ++, :
  27889. infix  4 ==, /=, <, <=, >=, >
  27890. infix  4 `elem`, `notElem`
  27891. infixr 3 &&
  27892. infixr 2 ||
  27893. infixr 0 $
  27894.  
  27895. -- Standard combinators: ----------------------------------------------------
  27896.  
  27897. primitive strict "primStrict" :: (a -> b) -> a -> b
  27898.  
  27899. const          :: a -> b -> a
  27900. const k x       = k
  27901.  
  27902. id             :: a -> a
  27903. id    x         = x
  27904.  
  27905. curry          :: ((a,b) -> c) -> a -> b -> c
  27906. curry f a b     =  f (a,b)
  27907.  
  27908. uncurry        :: (a -> b -> c) -> (a,b) -> c
  27909. uncurry f (a,b) = f a b
  27910.  
  27911. fst            :: (a,b) -> a
  27912. fst (x,_)       = x
  27913.  
  27914. snd            :: (a,b) -> b
  27915. snd (_,y)       = y
  27916.  
  27917. fst3           :: (a,b,c) -> a
  27918. fst3 (x,_,_)    = x
  27919.  
  27920. snd3           :: (a,b,c) -> b
  27921. snd3 (_,x,_)    = x
  27922.  
  27923. thd3           :: (a,b,c) -> c
  27924. thd3 (_,_,x)    = x
  27925.  
  27926. (.)           :: (b -> c) -> (a -> b) -> (a -> c)
  27927. (f . g) x       = f (g x)
  27928.  
  27929. flip           :: (a -> b -> c) -> b -> a -> c
  27930. flip  f x y     = f y x
  27931.  
  27932. ($)            :: (a -> b) -> a -> b     -- pronounced as `apply' elsewhere
  27933. f $ x           = f x
  27934.  
  27935. -- Boolean functions: -------------------------------------------------------
  27936.  
  27937. (&&), (||)     :: Bool -> Bool -> Bool
  27938. False && x      = False
  27939. True  && x      = x
  27940.  
  27941. False || x      = x
  27942. True  || x      = True
  27943.  
  27944. not            :: Bool -> Bool
  27945. not True        = False
  27946. not False       = True
  27947.  
  27948. and, or        :: [Bool] -> Bool
  27949. and             = foldr (&&) True
  27950. or              = foldr (||) False
  27951.  
  27952. any, all       :: (a -> Bool) -> [a] -> Bool
  27953. any p           = or  . map p
  27954. all p           = and . map p
  27955.  
  27956. otherwise      :: Bool
  27957. otherwise       = True
  27958.  
  27959. -- Character functions: -----------------------------------------------------
  27960.  
  27961. primitive ord "primCharToInt" :: Char -> Int
  27962. primitive chr "primIntToChar" :: Int -> Char
  27963.  
  27964. isAscii, isControl, isPrint, isSpace            :: Char -> Bool
  27965. isUpper, isLower, isAlpha, isDigit, isAlphanum  :: Char -> Bool
  27966.  
  27967. isAscii c     =  ord c < 128
  27968.  
  27969. isControl c   =  c < ' '    ||  c == '\DEL'
  27970.  
  27971. isPrint c     =  c >= ' '   &&  c <= '~'
  27972.  
  27973. isSpace c     =  c == ' '   || c == '\t'  || c == '\n'  || c == '\r'  ||
  27974.                                c == '\f'  || c == '\v'
  27975.  
  27976. isUpper c     =  c >= 'A'   &&  c <= 'Z'
  27977. isLower c     =  c >= 'a'   &&  c <= 'z'
  27978.  
  27979. isAlpha c     =  isUpper c  ||  isLower c
  27980. isDigit c     =  c >= '0'   &&  c <= '9'
  27981. isAlphanum c  =  isAlpha c  ||  isDigit c
  27982.  
  27983.  
  27984. toUpper, toLower      :: Char -> Char
  27985.  
  27986. toUpper c | isLower c  = chr (ord c - ord 'a' + ord 'A')
  27987.           | otherwise  = c
  27988.  
  27989. toLower c | isUpper c  = chr (ord c - ord 'A' + ord 'a')
  27990.           | otherwise  = c
  27991.  
  27992. minChar, maxChar      :: Char
  27993. minChar                = chr 0
  27994. maxChar                = chr 255
  27995.  
  27996. -- Standard type classes: ---------------------------------------------------
  27997.  
  27998. class Eq a where
  27999.     (==), (/=) :: a -> a -> Bool
  28000.     x /= y      = not (x == y)
  28001.  
  28002. class Eq a => Ord a where
  28003.     (<), (<=), (>), (>=) :: a -> a -> Bool
  28004.     max, min             :: a -> a -> a
  28005.  
  28006.     x <  y            = x <= y && x /= y
  28007.     x >= y            = y <= x
  28008.     x >  y            = y < x
  28009.  
  28010.     max x y | x >= y  = x
  28011.             | y >= x  = y
  28012.     min x y | x <= y  = x
  28013.             | y <= x  = y
  28014.  
  28015. class Ord a => Ix a where
  28016.     range   :: (a,a) -> [a]
  28017.     index   :: (a,a) -> a -> Int
  28018.     inRange :: (a,a) -> a -> Bool
  28019.  
  28020. class Ord a => Enum a where
  28021.     enumFrom       :: a -> [a]              -- [n..]
  28022.     enumFromThen   :: a -> a -> [a]         -- [n,m..]
  28023.     enumFromTo     :: a -> a -> [a]         -- [n..m]
  28024.     enumFromThenTo :: a -> a -> a -> [a]    -- [n,n'..m]
  28025.  
  28026.     enumFromTo n m        = takeWhile (m>=) (enumFrom n)
  28027.     enumFromThenTo n n' m = takeWhile ((if n'>=n then (>=) else (<=)) m)
  28028.                                       (enumFromThen n n')
  28029.  
  28030. class (Eq a, Text a) => Num a where         -- simplified numeric class
  28031.     (+), (-), (*), (/) :: a -> a -> a
  28032.     negate             :: a -> a
  28033.     fromInteger           :: Int -> a
  28034.  
  28035. -- Type class instances: ----------------------------------------------------
  28036.  
  28037. primitive primEqInt    "primEqInt",
  28038.       primLeInt    "primLeInt"   :: Int -> Int -> Bool
  28039. primitive primPlusInt  "primPlusInt",
  28040.       primMinusInt "primMinusInt",
  28041.       primDivInt   "primDivInt",
  28042.       primMulInt   "primMulInt"  :: Int -> Int -> Int
  28043. primitive primNegInt   "primNegInt"  :: Int -> Int
  28044.  
  28045. instance Eq ()  where () == () = True
  28046. instance Ord () where () <= () = True
  28047.  
  28048. instance Eq Int  where (==) = primEqInt
  28049.  
  28050. instance Ord Int where (<=) = primLeInt
  28051.  
  28052. instance Ix Int where
  28053.     range (m,n)      = [m..n]
  28054.     index (m,n) i    = i - m
  28055.     inRange (m,n) i  = m <= i && i <= n
  28056.  
  28057. instance Enum Int where
  28058.     enumFrom n       = iterate (1+) n
  28059.     enumFromThen n m = iterate ((m-n)+) n
  28060.  
  28061. instance Num Int where
  28062.     (+)           = primPlusInt
  28063.     (-)           = primMinusInt
  28064.     (*)           = primMulInt
  28065.     (/)           = primDivInt
  28066.     negate        = primNegInt
  28067.     fromInteger x = x
  28068.  
  28069. {- PC version off -}
  28070. primitive primEqFloat    "primEqFloat",
  28071.           primLeFloat    "primLeFloat"    :: Float -> Float -> Bool
  28072. primitive primPlusFloat  "primPlusFloat", 
  28073.           primMinusFloat "primMinusFloat", 
  28074.           primDivFloat   "primDivFloat",
  28075.           primMulFloat   "primMulFloat"   :: Float -> Float -> Float 
  28076. primitive primNegFloat   "primNegFloat"   :: Float -> Float
  28077. primitive primIntToFloat "primIntToFloat" :: Int -> Float
  28078.  
  28079. instance Eq Float where (==) = primEqFloat
  28080.  
  28081. instance Ord Float where (<=) = primLeFloat
  28082.  
  28083. instance Enum Float where
  28084.     enumFrom n       = iterate (1.0+) n
  28085.     enumFromThen n m = iterate ((m-n)+) n
  28086.  
  28087. instance Num Float where
  28088.     (+)         = primPlusFloat
  28089.     (-)         = primMinusFloat
  28090.     (*)         = primMulFloat
  28091.     (/)         = primDivFloat 
  28092.     negate      = primNegFloat
  28093.     fromInteger = primIntToFloat
  28094.  
  28095. primitive sin "primSinFloat",  asin  "primAsinFloat",
  28096.           cos "primCosFloat",  acos  "primAcosFloat",
  28097.       tan "primTanFloat",  atan  "primAtanFloat",
  28098.           log "primLogFloat",  log10 "primLog10Float",
  28099.       exp "primExpFloat",  sqrt  "primSqrtFloat" :: Float -> Float
  28100. primitive atan2    "primAtan2Float" :: Float -> Float -> Float
  28101. primitive truncate "primFloatToInt" :: Float -> Int
  28102.  
  28103. pi :: Float
  28104. pi  = 3.1415926535
  28105.  
  28106. {- PC version on -}
  28107.  
  28108. primitive primEqChar   "primEqChar",
  28109.       primLeChar   "primLeChar"  :: Char -> Char -> Bool
  28110.  
  28111. instance Eq Char  where (==) = primEqChar   -- c == d  =  ord c == ord d
  28112.  
  28113. instance Ord Char where (<=) = primLeChar   -- c <= d  =  ord c <= ord d
  28114.  
  28115. instance Ix Char where
  28116.     range (c,c')      = [c..c']
  28117.     index (c,c') ci   = ord ci - ord c
  28118.     inRange (c,c') ci = ord c <= i && i <= ord c' where i = ord ci
  28119.  
  28120. instance Enum Char where
  28121.     enumFrom c        = map chr [ord c .. ord maxChar]
  28122.     enumFromThen c c' = map chr [ord c, ord c' .. ord lastChar]
  28123.                         where lastChar = if c' < c then minChar else maxChar
  28124.  
  28125. instance Eq a => Eq [a] where
  28126.     []     == []     =  True
  28127.     []     == (y:ys) =  False
  28128.     (x:xs) == []     =  False
  28129.     (x:xs) == (y:ys) =  x==y && xs==ys
  28130.  
  28131. instance Ord a => Ord [a] where
  28132.     []     <= _      =  True
  28133.     (_:_)  <= []     =  False
  28134.     (x:xs) <= (y:ys) =  x<y || (x==y && xs<=ys)
  28135.  
  28136. instance (Eq a, Eq b) => Eq (a,b) where
  28137.     (x,y) == (u,v)  =  x==u && y==v
  28138.  
  28139. instance (Ord a, Ord b) => Ord (a,b) where
  28140.     (x,y) <= (u,v)  = x<u  ||  (x==u && y<=v)
  28141.  
  28142. instance Eq Bool where
  28143.     True  == True   =  True
  28144.     False == False  =  True
  28145.     _     == _      =  False
  28146.  
  28147. instance Ord Bool where
  28148.     False <= x      = True
  28149.     True  <= x      = x
  28150.  
  28151. -- Standard numerical functions: --------------------------------------------
  28152.  
  28153. primitive div    "primDivInt",
  28154.       quot   "primQuotInt",
  28155.           rem    "primRemInt",
  28156.           mod    "primModInt"    :: Int -> Int -> Int
  28157.  
  28158. subtract  :: Num a => a -> a -> a
  28159. subtract   = flip (-)
  28160.  
  28161. even, odd :: Int -> Bool
  28162. even x     = x `rem` 2 == 0
  28163. odd        = not . even
  28164.  
  28165. gcd       :: Int -> Int -> Int
  28166. gcd x y    = gcd' (abs x) (abs y)
  28167.              where gcd' x 0 = x
  28168.                    gcd' x y = gcd' y (x `rem` y)
  28169.  
  28170. lcm       :: Int -> Int -> Int
  28171. lcm _ 0    = 0
  28172. lcm 0 _    = 0
  28173. lcm x y    = abs ((x `quot` gcd x y) * y)
  28174.  
  28175. (^)       :: Num a => a -> Int -> a
  28176. x ^ 0      = fromInteger 1
  28177. x ^ (n+1)  = f x n x
  28178.              where f _ 0 y = y
  28179.                    f x n y = g x n where
  28180.                              g x n | even n    = g (x*x) (n`quot`2)
  28181.                                    | otherwise = f x (n-1) (x*y)
  28182.  
  28183. abs                     :: (Num a, Ord a) => a -> a
  28184. abs x | x>=fromInteger 0 = x
  28185.       | otherwise        = -x
  28186.  
  28187. signum            :: (Num a, Ord a) => a -> Int
  28188. signum x
  28189.       | x==fromInteger 0 = 0
  28190.       | x> fromInteger 0 = 1
  28191.       | otherwise        = -1
  28192.  
  28193. sum, product    :: Num a => [a] -> a
  28194. sum              = foldl' (+) (fromInteger 0)
  28195. product          = foldl' (*) (fromInteger 1)
  28196.  
  28197. sums, products    :: Num a => [a] -> [a]
  28198. sums             = scanl (+) (fromInteger 0)
  28199. products         = scanl (*) (fromInteger 1)
  28200.  
  28201. -- Standard list processing functions: --------------------------------------
  28202.  
  28203. head             :: [a] -> a
  28204. head (x:_)        = x
  28205.  
  28206. last             :: [a] -> a
  28207. last [x]          = x
  28208. last (_:xs)       = last xs
  28209.  
  28210. tail             :: [a] -> [a]
  28211. tail (_:xs)       = xs
  28212.  
  28213. init             :: [a] -> [a]
  28214. init [x]          = []
  28215. init (x:xs)       = x : init xs
  28216.  
  28217. (++)             :: [a] -> [a] -> [a]    -- append lists.  Associative with
  28218. []     ++ ys      = ys                   -- left and right identity [].
  28219. (x:xs) ++ ys      = x:(xs++ys)
  28220.  
  28221. genericLength    :: Num a => [b] -> a
  28222. genericLength     = foldl' (\n _ -> n + fromInteger 1) (fromInteger 0)
  28223.  
  28224. length         :: [a] -> Int           -- calculate length of list
  28225. length            = foldl' (\n _ -> n+1) 0
  28226.  
  28227. (!!)             :: [a] -> Int -> a      -- xs!!n selects the nth element of
  28228. (x:_)  !! 0       = x                    -- the list xs (first element xs!!0)
  28229. (_:xs) !! (n+1)   = xs !! n              -- for any n < length xs.
  28230.  
  28231. iterate          :: (a -> a) -> a -> [a] -- generate the infinite list
  28232. iterate f x       = x : iterate f (f x)  -- [x, f x, f (f x), ...
  28233.  
  28234. repeat           :: a -> [a]             -- generate the infinite list
  28235. repeat x          = xs where xs = x:xs   -- [x, x, x, x, ...
  28236.  
  28237. cycle            :: [a] -> [a]           -- generate the infinite list
  28238. cycle xs          = xs' where xs'=xs++xs'-- xs ++ xs ++ xs ++ ...
  28239.  
  28240. copy             :: Int -> a -> [a]      -- make list of n copies of x
  28241. copy n x          = take n xs where xs = x:xs
  28242.  
  28243. nub              :: Eq a => [a] -> [a]   -- remove duplicates from list
  28244. nub []            = []
  28245. nub (x:xs)        = x : nub (filter (x/=) xs)
  28246.  
  28247. reverse          :: [a] -> [a]           -- reverse elements of list
  28248. reverse           = foldl (flip (:)) []
  28249.  
  28250. elem, notElem    :: Eq a => a -> [a] -> Bool
  28251. elem              = any . (==)           -- test for membership in list
  28252. notElem           = all . (/=)           -- test for non-membership
  28253.  
  28254. maximum, minimum :: Ord a => [a] -> a
  28255. maximum           = foldl1 max          -- max element in non-empty list
  28256. minimum           = foldl1 min          -- min element in non-empty list
  28257.  
  28258. concat           :: [[a]] -> [a]        -- concatenate list of lists
  28259. concat            = foldr (++) []
  28260.  
  28261. transpose        :: [[a]] -> [[a]]      -- transpose list of lists
  28262. transpose         = foldr
  28263.                       (\xs xss -> zipWith (:) xs (xss ++ repeat []))
  28264.                       []
  28265.  
  28266. -- null provides a simple and efficient way of determining whether a given
  28267. -- list is empty, without using (==) and hence avoiding a constraint of the
  28268. -- form Eq [a].
  28269.  
  28270. null             :: [a] -> Bool
  28271. null []           = True
  28272. null (_:_)        = False
  28273.  
  28274. -- (\\) is used to remove the first occurrence of each element in the second
  28275. -- list from the first list.  It is a kind of inverse of (++) in the sense
  28276. -- that  (xs ++ ys) \\ xs = ys for any finite list xs of proper values xs.
  28277.  
  28278. (\\)             :: Eq a => [a] -> [a] -> [a]
  28279. (\\)              = foldl del
  28280.                     where []     `del` _  = []
  28281.                           (x:xs) `del` y
  28282.                              | x == y     = xs
  28283.                              | otherwise  = x : xs `del` y
  28284.  
  28285.  
  28286. -- map f xs applies the function f to each element of the list xs returning
  28287. -- the corresponding list of results.  filter p xs returns the sublist of xs
  28288. -- containing those elements which satisfy the predicate p.
  28289.  
  28290. map              :: (a -> b) -> [a] -> [b]
  28291. map f []          = []
  28292. map f (x:xs)      = f x : map f xs
  28293.  
  28294. filter           :: (a -> Bool) -> [a] -> [a]
  28295. filter _ []       = []
  28296. filter p (x:xs)
  28297.     | p x         = x : xs'
  28298.     | otherwise   = xs'
  28299.                   where xs' = filter p xs
  28300.  
  28301. -- Fold primitives:  The foldl and scanl functions, variants foldl1 and
  28302. -- scanl1 for non-empty lists, and strict variants foldl' scanl' describe
  28303. -- common patterns of recursion over lists.  Informally:
  28304. --
  28305. --  foldl f a [x1, x2, ..., xn]  = f (...(f (f a x1) x2)...) xn
  28306. --                               = (...((a `f` x1) `f` x2)...) `f` xn
  28307. -- etc...
  28308. --
  28309. -- The functions foldr, scanr and variants foldr1, scanr1 are duals of these
  28310. -- functions:
  28311. -- e.g.  foldr f a xs = foldl (flip f) a (reverse xs)  for finite lists xs.
  28312.  
  28313. foldl            :: (a -> b -> a) -> a -> [b] -> a
  28314. foldl f z []      = z
  28315. foldl f z (x:xs)  = foldl f (f z x) xs
  28316.  
  28317. foldl1           :: (a -> a -> a) -> [a] -> a
  28318. foldl1 f (x:xs)   = foldl f x xs
  28319.  
  28320. foldl'           :: (a -> b -> a) -> a -> [b] -> a
  28321. foldl' f a []     =  a
  28322. foldl' f a (x:xs) =  strict (foldl' f) (f a x) xs
  28323.  
  28324. scanl            :: (a -> b -> a) -> a -> [b] -> [a]
  28325. scanl f q xs      = q : (case xs of
  28326.                          []   -> []
  28327.                          x:xs -> scanl f (f q x) xs)
  28328.  
  28329. scanl1           :: (a -> a -> a) -> [a] -> [a]
  28330. scanl1 f (x:xs)   = scanl f x xs
  28331.  
  28332. scanl'           :: (a -> b -> a) -> a -> [b] -> [a]
  28333. scanl' f q xs     = q : (case xs of
  28334.                          []   -> []
  28335.                          x:xs -> strict (scanl' f) (f q x) xs)
  28336.  
  28337. foldr            :: (a -> b -> b) -> b -> [a] -> b
  28338. foldr f z []      = z
  28339. foldr f z (x:xs)  = f x (foldr f z xs)
  28340.  
  28341. foldr1           :: (a -> a -> a) -> [a] -> a
  28342. foldr1 f [x]      = x
  28343. foldr1 f (x:xs)   = f x (foldr1 f xs)
  28344.  
  28345. scanr            :: (a -> b -> b) -> b -> [a] -> [b]
  28346. scanr f q0 []     = [q0]
  28347. scanr f q0 (x:xs) = f x q : qs
  28348.                     where qs@(q:_) = scanr f q0 xs
  28349.  
  28350. scanr1           :: (a -> a -> a) -> [a] -> [a]
  28351. scanr1 f [x]      = [x]
  28352. scanr1 f (x:xs)   = f x q : qs
  28353.                     where qs@(q:_) = scanr1 f xs
  28354.  
  28355. -- List breaking functions:
  28356. --
  28357. --   take n xs       returns the first n elements of xs
  28358. --   drop n xs       returns the remaining elements of xs
  28359. --   splitAt n xs    = (take n xs, drop n xs)
  28360. --
  28361. --   takeWhile p xs  returns the longest initial segment of xs whose
  28362. --                   elements satisfy p
  28363. --   dropWhile p xs  returns the remaining portion of the list
  28364. --   span p xs       = (takeWhile p xs, dropWhile p xs)
  28365. --
  28366. --   takeUntil p xs  returns the list of elements upto and including the
  28367. --                   first element of xs which satisfies p
  28368.  
  28369. take                :: Int -> [a] -> [a]
  28370. take 0     _         = []
  28371. take _     []        = []
  28372. take (n+1) (x:xs)    = x : take n xs
  28373.  
  28374. drop                :: Int -> [a] -> [a]
  28375. drop 0     xs        = xs
  28376. drop _     []        = []
  28377. drop (n+1) (_:xs)    = drop n xs
  28378.  
  28379. splitAt             :: Int -> [a] -> ([a], [a])
  28380. splitAt 0     xs     = ([],xs)
  28381. splitAt _     []     = ([],[])
  28382. splitAt (n+1) (x:xs) = (x:xs',xs'') where (xs',xs'') = splitAt n xs
  28383.  
  28384. takeWhile           :: (a -> Bool) -> [a] -> [a]
  28385. takeWhile p []       = []
  28386. takeWhile p (x:xs)
  28387.          | p x       = x : takeWhile p xs
  28388.          | otherwise = []
  28389.  
  28390. takeUntil           :: (a -> Bool) -> [a] -> [a]
  28391. takeUntil p []       = []
  28392. takeUntil p (x:xs)
  28393.        | p x         = [x]
  28394.        | otherwise   = x : takeUntil p xs
  28395.  
  28396. dropWhile           :: (a -> Bool) -> [a] -> [a]
  28397. dropWhile p []       = []
  28398. dropWhile p xs@(x:xs')
  28399.          | p x       = dropWhile p xs'
  28400.          | otherwise = xs
  28401.  
  28402. span, break         :: (a -> Bool) -> [a] -> ([a],[a])
  28403. span p []            = ([],[])
  28404. span p xs@(x:xs')
  28405.          | p x       = let (ys,zs) = span p xs' in (x:ys,zs)
  28406.          | otherwise = ([],xs)
  28407. break p              = span (not . p)
  28408.  
  28409. -- Text processing:
  28410. --   lines s     returns the list of lines in the string s.
  28411. --   words s     returns the list of words in the string s.
  28412. --   unlines ls  joins the list of lines ls into a single string
  28413. --               with lines separated by newline characters.
  28414. --   unwords ws  joins the list of words ws into a single string
  28415. --               with words separated by spaces.
  28416.  
  28417. lines     :: String -> [String]
  28418. lines ""   = []
  28419. lines s    = l : (if null s' then [] else lines (tail s'))
  28420.              where (l, s') = break ('\n'==) s
  28421.  
  28422. words     :: String -> [String]
  28423. words s    = case dropWhile isSpace s of
  28424.                   "" -> []
  28425.                   s' -> w : words s''
  28426.                         where (w,s'') = break isSpace s'
  28427.  
  28428. unlines   :: [String] -> String
  28429. unlines    = concat . map (\l -> l ++ "\n")
  28430.  
  28431. unwords   :: [String] -> String
  28432. unwords [] = []
  28433. unwords ws = foldr1 (\w s -> w ++ ' ':s) ws
  28434.  
  28435. -- Merging and sorting lists:
  28436.  
  28437. merge               :: Ord a => [a] -> [a] -> [a] 
  28438. merge []     ys      = ys
  28439. merge xs     []      = xs
  28440. merge (x:xs) (y:ys)
  28441.         | x <= y     = x : merge xs (y:ys)
  28442.         | otherwise  = y : merge (x:xs) ys
  28443.  
  28444. sort                :: Ord a => [a] -> [a]
  28445. sort                 = foldr insert []
  28446.  
  28447. insert              :: Ord a => a -> [a] -> [a]
  28448. insert x []          = [x]
  28449. insert x (y:ys)
  28450.         | x <= y     = x:y:ys
  28451.         | otherwise  = y:insert x ys
  28452.  
  28453. qsort               :: Ord a => [a] -> [a]
  28454. qsort []             = []
  28455. qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
  28456.                              [ x ] ++
  28457.                        qsort [ u | u<-xs, u>=x ]
  28458.  
  28459. -- zip and zipWith families of functions:
  28460.  
  28461. zip  :: [a] -> [b] -> [(a,b)]
  28462. zip   = zipWith  (\a b -> (a,b))
  28463.  
  28464. zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
  28465. zip3  = zipWith3 (\a b c -> (a,b,c))
  28466.  
  28467. zip4 :: [a] -> [b] -> [c] -> [d] -> [(a,b,c,d)]
  28468. zip4  = zipWith4 (\a b c d -> (a,b,c,d))
  28469.  
  28470. zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a,b,c,d,e)]
  28471. zip5  = zipWith5 (\a b c d e -> (a,b,c,d,e))
  28472.  
  28473. zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a,b,c,d,e,f)]
  28474. zip6  = zipWith6 (\a b c d e f -> (a,b,c,d,e,f))
  28475.  
  28476. zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a,b,c,d,e,f,g)]
  28477. zip7  = zipWith7 (\a b c d e f g -> (a,b,c,d,e,f,g))
  28478.  
  28479.  
  28480. zipWith                  :: (a->b->c) -> [a]->[b]->[c]
  28481. zipWith z (a:as) (b:bs)   = z a b : zipWith z as bs
  28482. zipWith _ _      _        = []
  28483.  
  28484. zipWith3                 :: (a->b->c->d) -> [a]->[b]->[c]->[d]
  28485. zipWith3 z (a:as) (b:bs) (c:cs)
  28486.                           = z a b c : zipWith3 z as bs cs
  28487. zipWith3 _ _ _ _          = []
  28488.  
  28489. zipWith4                 :: (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e]
  28490. zipWith4 z (a:as) (b:bs) (c:cs) (d:ds)
  28491.                           = z a b c d : zipWith4 z as bs cs ds
  28492. zipWith4 _ _ _ _ _        = []
  28493.  
  28494. zipWith5                 :: (a->b->c->d->e->f) -> [a]->[b]->[c]->[d]->[e]->[f]
  28495. zipWith5 z (a:as) (b:bs) (c:cs) (d:ds) (e:es)
  28496.                           = z a b c d e : zipWith5 z as bs cs ds es
  28497. zipWith5 _ _ _ _ _ _      = []
  28498.  
  28499. zipWith6                 :: (a->b->c->d->e->f->g)
  28500.                             -> [a]->[b]->[c]->[d]->[e]->[f]->[g]
  28501. zipWith6 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs)
  28502.                           = z a b c d e f : zipWith6 z as bs cs ds es fs
  28503. zipWith6 _ _ _ _ _ _ _    = []
  28504.  
  28505. zipWith7                 :: (a->b->c->d->e->f->g->h)
  28506.                              -> [a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]
  28507. zipWith7 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs)
  28508.                           = z a b c d e f g : zipWith7 z as bs cs ds es fs gs
  28509. zipWith7 _ _ _ _ _ _ _ _  = []
  28510.  
  28511. unzip                    :: [(a,b)] -> ([a],[b])
  28512. unzip                     = foldr (\(a,b) ~(as,bs) -> (a:as, b:bs)) ([], [])
  28513.  
  28514. -- Formatted output: --------------------------------------------------------
  28515.  
  28516. primitive primPrint "primPrint"  :: Int -> a -> String -> String
  28517.  
  28518. show'       :: a -> String
  28519. show' x      = primPrint 0 x []
  28520.  
  28521. cjustify, ljustify, rjustify :: Int -> String -> String
  28522.  
  28523. cjustify n s = space halfm ++ s ++ space (m - halfm)
  28524.                where m     = n - length s
  28525.                      halfm = m `div` 2
  28526. ljustify n s = s ++ space (n - length s)
  28527. rjustify n s = space (n - length s) ++ s
  28528.  
  28529. space       :: Int -> String
  28530. space n      = copy n ' '
  28531.  
  28532. layn        :: [String] -> String
  28533. layn         = lay 1 where lay _ []     = []
  28534.                            lay n (x:xs) = rjustify 4 (show n) ++ ") "
  28535.                                            ++ x ++ "\n" ++ lay (n+1) xs
  28536.  
  28537. -- Miscellaneous: -----------------------------------------------------------
  28538.  
  28539. until                  :: (a -> Bool) -> (a -> a) -> a -> a
  28540. until p f x | p x       = x
  28541.             | otherwise = until p f (f x)
  28542.  
  28543. until'                 :: (a -> Bool) -> (a -> a) -> a -> [a]
  28544. until' p f              = takeUntil p . iterate f
  28545.  
  28546. primitive error "primError" :: String -> a
  28547.  
  28548. undefined              :: a
  28549. undefined | False       = undefined
  28550.  
  28551. asTypeOf               :: a -> a -> a
  28552. x `asTypeOf` _          = x
  28553.  
  28554. -- A trimmed down version of the Haskell Text class: ------------------------
  28555.  
  28556. type  ShowS   = String -> String
  28557.  
  28558. class Text a where 
  28559.     showsPrec      :: Int -> a -> ShowS
  28560.     showList       :: [a] -> ShowS
  28561.  
  28562.     showsPrec       = primPrint
  28563.     showList []     = showString "[]"
  28564.     showList (x:xs) = showChar '[' . shows x . showl xs
  28565.                       where showl []     = showChar ']'
  28566.                             showl (x:xs) = showChar ',' . shows x . showl xs
  28567.  
  28568. shows      :: Text a => a -> ShowS
  28569. shows       = showsPrec 0
  28570.  
  28571. show       :: Text a => a -> String
  28572. show x      = shows x ""
  28573.  
  28574. showChar   :: Char -> ShowS
  28575. showChar    = (:)
  28576.  
  28577. showString :: String -> ShowS
  28578. showString  = (++)
  28579.  
  28580. instance Text () where
  28581.     showsPrec d ()    = showString "()"
  28582.  
  28583. instance Text Bool where
  28584.     showsPrec d True  = showString "True"
  28585.     showsPrec d False = showString "False"
  28586.  
  28587. primitive primShowsInt "primShowsInt" :: Int -> Int -> String -> String
  28588. instance Text Int where showsPrec = primShowsInt
  28589.  
  28590. {- PC version off -}
  28591. primitive primShowsFloat "primShowsFloat" :: Int -> Float -> String -> String
  28592. instance Text Float where showsPrec = primShowsFloat
  28593. {- PC version on -}
  28594.  
  28595. instance Text Char where
  28596.     showsPrec p c = showString [q, c, q] where q = '\''
  28597.     showList cs   = showChar '"' . showl cs
  28598.                     where showl ""       = showChar '"'
  28599.                           showl ('"':cs) = showString "\\\"" . showl cs
  28600.                           showl (c:cs)   = showChar c . showl cs
  28601.               -- Haskell has   showLitChar c . showl cs
  28602.  
  28603. instance Text a => Text [a]  where
  28604.     showsPrec p = showList
  28605.  
  28606. instance (Text a, Text b) => Text (a,b) where
  28607.     showsPrec p (x,y) = showChar '(' . shows x . showChar ',' .
  28608.                                        shows y . showChar ')'
  28609.  
  28610. -- I/O functions and definitions: -------------------------------------------
  28611.  
  28612. stdin         =  "stdin"
  28613. stdout        =  "stdout"
  28614. stderr        =  "stderr"
  28615. stdecho       =  "stdecho"
  28616.  
  28617. {- The Dialogue, Request, Response and IOError datatypes are now builtin:
  28618. data Request  =  -- file system requests:
  28619.                 ReadFile      String         
  28620.               | WriteFile     String String
  28621.               | AppendFile    String String
  28622.                  -- channel system requests:
  28623.               | ReadChan      String 
  28624.               | AppendChan    String String
  28625.                  -- environment requests:
  28626.               | Echo          Bool
  28627.           | GetArgs
  28628.           | GetProgName
  28629.           | GetEnv        String
  28630.  
  28631. data Response = Success
  28632.               | Str     String 
  28633.               | Failure IOError
  28634.           | StrList [String]
  28635.  
  28636. data IOError  = WriteError   String
  28637.               | ReadError    String
  28638.               | SearchError  String
  28639.               | FormatError  String
  28640.               | OtherError   String
  28641.  
  28642. type Dialogue    =  [Response] -> [Request]
  28643. -}
  28644.  
  28645. type SuccCont    =                Dialogue
  28646. type StrCont     =  String     -> Dialogue
  28647. type StrListCont =  [String]   -> Dialogue
  28648. type FailCont    =  IOError    -> Dialogue
  28649.  
  28650. done            ::                                                Dialogue
  28651. readFile        :: String ->           FailCont -> StrCont     -> Dialogue
  28652. writeFile       :: String -> String -> FailCont -> SuccCont    -> Dialogue
  28653. appendFile      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  28654. readChan        :: String ->           FailCont -> StrCont     -> Dialogue
  28655. appendChan      :: String -> String -> FailCont -> SuccCont    -> Dialogue
  28656. echo            :: Bool ->             FailCont -> SuccCont    -> Dialogue
  28657. getArgs         ::                     FailCont -> StrListCont -> Dialogue
  28658. getProgName     ::               FailCont -> StrCont     -> Dialogue
  28659. getEnv        :: String ->           FailCont -> StrCont     -> Dialogue
  28660.  
  28661. done resps    =  []
  28662. readFile name fail succ resps =
  28663.      (ReadFile name) : strDispatch fail succ resps
  28664. writeFile name contents fail succ resps =
  28665.     (WriteFile name contents) : succDispatch fail succ resps
  28666. appendFile name contents fail succ resps =
  28667.     (AppendFile name contents) : succDispatch fail succ resps
  28668. readChan name fail succ resps =
  28669.     (ReadChan name) : strDispatch fail succ resps
  28670. appendChan name contents fail succ resps =
  28671.     (AppendChan name contents) : succDispatch fail succ resps
  28672. echo bool fail succ resps =
  28673.     (Echo bool) : succDispatch fail succ resps
  28674. getArgs fail succ resps =
  28675.     GetArgs : strListDispatch fail succ resps
  28676. getProgName fail succ resps =
  28677.     GetProgName : strDispatch fail succ resps
  28678. getEnv name fail succ resps =
  28679.     (GetEnv name) : strDispatch fail succ resps
  28680.  
  28681. strDispatch fail succ (resp:resps) = 
  28682.             case resp of Str val     -> succ val resps
  28683.                          Failure msg -> fail msg resps
  28684.  
  28685. succDispatch fail succ (resp:resps) = 
  28686.             case resp of Success     -> succ resps
  28687.                          Failure msg -> fail msg resps
  28688.  
  28689. strListDispatch fail succ (resp:resps) =
  28690.         case resp of StrList val -> succ val resps
  28691.              Failure msg -> fail msg resps
  28692.  
  28693. abort           :: FailCont
  28694. abort err        = done
  28695.  
  28696. exit            :: FailCont
  28697. exit err         = appendChan stderr msg abort done
  28698.                    where msg = case err of ReadError s   -> s
  28699.                                            WriteError s  -> s
  28700.                                            SearchError s -> s
  28701.                                            FormatError s -> s
  28702.                                            OtherError s  -> s
  28703.  
  28704. print           :: Text a => a -> Dialogue
  28705. print x          = appendChan stdout (show x) exit done
  28706.  
  28707. prints          :: Text a => a -> String -> Dialogue
  28708. prints x s       = appendChan stdout (shows x s) exit done
  28709.  
  28710. interact    :: (String -> String) -> Dialogue
  28711. interact f     = readChan stdin exit
  28712.                 (\x -> appendChan stdout (f x) exit done)
  28713.  
  28714. run        :: (String -> String) -> Dialogue
  28715. run f         = echo False exit (interact f)
  28716.  
  28717. primitive primFopen "primFopen" :: String -> a -> (String -> a) -> a
  28718.  
  28719. openfile        :: String -> String
  28720. openfile f       = primFopen f (error ("can't open file "++f)) id
  28721.  
  28722. -- End of Gofer standard prelude: --------------------------------------------
  28723. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks       Tø +LTaskWindowTaskWindow    0.29 (24 Jan 1991)ShellCLI_Taskàß°ShellCLI_TaskQuitü'öTaskWindowàÿÄB*ShellCLI_Task runs an application in a windowSyntax: *ShellCLI_Task*ShellCLI_TaskQuit quits the current task windowSyntax: *ShellCLI_TaskQuitThe *TaskWindow command allows a background task to be started, which will obtain a task window if it needs to do any screen I/O.
  28724. Syntax: *TaskWindow [<command>] [[-wimpslot] <n>K] [[-name] <taskname>] [-ctrl] [-display] [-quit]
  28725.   <command> is the command to be executed
  28726.   -wimpslot sets the memory to be allocated
  28727.   -name sets the task name
  28728.   -ctrl allows control characters through
  28729.   -display opens the task window immediately, rather than waiting for a character to be printed
  28730.   -quit makes the task quit after the command even if the task window has been opened
  28731. Note that fields must be in " " if they comprise more than one wordSyntax: *TaskWindow [<command>] [[-wimpslot] <n>K] [[-name] <taskname>] [-ctrl] [-display] [-quit]>@-élP•â áp áà×äÿ^ã
  28732. ^ãúÿÿP áàÕä^ãüÿÿ` á0 ã@ ã àã#ïTãûÿÿ
  28733.  °áëÿÿJ á á  ã0 ã@ ã$ïäÿÿz>€½èAlias$@RunType_FD7TaskWindow "Obey %*0" -name "Task Obey" -quitFile$Type_FD7TaskObeyAlias$@RunType_FD6TaskWindow "Exec %*0" -name "Task Exec" -displayFile$Type_FD6TaskExecÿ@-é²ÿÿ뀽h †äRã ,0  …tÀ qà sà…u…u …u s!•r   qTà•rfixF?•r à…r‰x8 fluà‹t …rŵtà…u4à•rfixO?•rà…r‰x fluà‹t…rŵt(à…u€½è<4ð5ðÀOâð†å$ÀOâ$ð†åð áÀ†ä\ãð°†åPãP•òfi@-é@ flå@à‹å …âQá á‹…QL•_à†u@àŵu(à†u áŵu sO•r   q €½èü3ð€
  28734. A task window is still activeŴ
  28735. Can't restore SWI table properlyÐ-éÞë<ãàflÀ‡à†À‡åð<ãà™åнèü7ð@-é ã ã@ïÌ    †å …â€ýèÐ-éËë<ãàÀ‡(à†À‡åð<ãà™åнè@-é0 ã …âàÑäàÂä0Sâûÿÿ áÌ)†åRã  áàÐä ^ãüÿÿ*0@à ãïÌ)…åàÑä ^ãà 3àÂäúÿÿ*€ýè0ãð°P-éàÑä>ãà†1‘ýfië<ã‘ý •â-éð‡å½è\†å‘åÓÿÿëÐýèÀ†ä<ãð°S1ã
  28736. W1ã
  28737. 1ãð°†å1ã ð°?Pã8OAR  ð°á0ãð°@-éÀ†å<ã€ýtæ†åRáÀ†ùÿÿH•â€ýè@-é0ã
  28738. pë<ã
  28739.  ãx…å€ýèÀ†å<ãûÿÿ
  28740. x†å0ã ãöÿÿ
  28741. À†å÷ÿÿêWimp is currently active@-é  á ãÔOâAâè@-éÀ†äPë<ã  …€ýè@-éÀ†å\〽p†åPãÀ†ùÿÿ\〽èÈ(†å ãßïëÝïïTask Window-éë½è+ï0 á   á`†å\Ɔå P á@†å2áÀ @†ûÿÿ<á`…`ŶÌI‹å ãï  áRãð áÀ áÜå0ã
  28742. x†å0ãA x…åïE ãÌå ã…â’è@ïx†å1ã
  28743. ⇦†å1ã l†å1ã
  28744. Z…âïï
  28745. êY…â ãÈ(†åßï ãÌåx†å0ãB x…åïÀ á ãO…â’è@ïÝ…âkëfë,ëïð£†åë)…â8’è<&†å<-éð?ã ãx…å…âŒß…âþ‡éï++ï,wimpslot,name,display/K/S,quit/K/S,ctrl/K/S,task/K/E,txt/K/EWimpSlot TaskWindow À†äp†å ` áïÅë<ãÀ 9
  28746. à ãxæ…å-…â@Oâ[ë áYëëëð?ã ñÝ…âþ_-é´ëBïüë
  28747. -éë½è,Ìåë-Ìåë(ë ã ãçë
  28748. Ìå ÌåÑë ã0 ãëj⇦ç†å^㨆åPãõÿÿ…âÞï€-é
  28749. Üå ÜåÔëëë-Üåîë@½èð>ãþ_½èÉë ãx…å+oï° áâë c  cj-é4ÿÿël…p&…½è° ã‘ á  á@ áP áð?ã ñ4#flå@à‡> ã0◰à ãïÀ áÜ…âèC…åìS…å\f…ål„…åp¦…å`¶…倠ãÌ⇨…å …å¤…åÐ⇦…åÔ⇦…åÄ⇦…倠ãxŷ…å ãø‘å|…å…â @àŴà‘ ã7〒€€p€‘Yâùÿÿp…å ŷä_ëÿÿjlæ†å^ã„Oâ`†å#-…â< ãIï ÿÿjÀ†å`…å؆åÕël…܆åÒëp…ȆåQãHOâAâÈ…åB ã$flåÈ(†åÀïøþÿjt…ålæ†å^ãÓêþÿj‹OâAâ-…âÇëĆåQã
  28750. Ãë à ãàÂäÀë…âïÜþÿj ã,Ìå-ÌåL…â…å……â$…åë ãH…å‘…å—…å……â …åC…â(…å ãëŷë‘flå@…å…flåD…å}ë  ã•â   á@ïR…â€è ã…OâAâ   á>…â@ï…â€è ãÌåÌå†å0ã) ã´•âŴâ\&†åï ãD…å ãì•âŴâ\&†åï ãH…å ãP•â
  28751. Ŵâ\&†åï ã@…å ãt•â Ŵâ\&†åï ãP…å ãL•âŴâ\&†åï ãL…å ãD•âŴâ\&†åï ãT…å ãX…åx…å⇦…å……å Ìå ë,Ìåå ã ãÌåÿ  ãïÌå ã ãïÌè†å^ãe+o¨êêBad parameters`…åï„êTASK    
  28752. ÿÿÐàð€‘ @-éàÐä ^ãüÿÿ
  28753. @â ã  ã뀽h◰à Râúÿÿ™å
  28754. 뀽h ã  ã뀽h◰à Râúÿÿ™å뀽èÐä 1ã´O @òfiÐä 1ãüÿÿ
  28755. @âòÞã0Ðä0Sã:9Sã00C‹òÞ› 0ÃãASã:FSã70C‹òÞ›•âòfiãŵ
  28756. Bad task or text handle@-éPãРÐ0Ð@ÐŴ€ €€½è@-éàÑäàÂä ^ãûÿÿ* B‽èþA-é0 ã` ãDtflåpŷ†å ã…âøŴèl&†åçïþŴ½è@-él†åPã ë sl0…r<◰r¾{j⇦ç†å^ãü• €_j¨ç†å>ã•_jlæ†å^ãìÿÿ
  28757. Ûÿÿ뀽èŶ
  28758. Can't open task window - is !Edit loaded?þA-é0 ãÔP…â\Ŷâ†@OâLDâ Ôä Åä0◰â2ãúÿÿ0Ãã` ã\sflå ã…âøŴèçïà spæ…uþŴ½èÜ…âà ã`æ…åÜå0ã⇦†0O ã`…å ãx…å  ã<Oâ   á@ï ã€OâAâ   á>…â@ï®OOâ P ãÔäUï@,jPUâùÿÿ>ë
  28759.   áBë,!Ìå,Üå1ã
  28760.  ã    ï  cRã9 ãx…å`†åPã5ÿÿlæ†å^ã$
  28761. Ðè†å^ã ç†^ï*…â ã   ãÿ0 ãïjM…â#ÿÿ:~ ãïï
  28762. Escape
  28763. áÿÿêïError in restoring default handlersþÿÿêéë ãx…åå ãÜå  ãï ã  ãóë1ã °á ë 0 ã` ã‘qflåtŷ†å ã…âøŴèl&†åRãçÜå0ã ã…â’è@ï ã ã  ã@ï|•â €â0á U…’@  ãR…â⇩OOâ’è1áþÿÿ
  28764. @ï\†å‘ä‘å0ã5 ã ãïD†å0ã ãD…\&† • H†å0ã ãH…\&† Á• @†å0ã ã@…\&† d•Ŵ P†å0ã ãP…\&† €•Ŵ L†å0ã ãL…\&† P• T†å0ã ãT…\&† D•Ŵ ÉëýÿëÝïx†å0ãC x…åïÂÅÃ0ãð°†å0ã.
  28765. À á☓†å0ã@☓…†å0ã÷ÿÿ\Ɔå@-é1ë@½è<ã 
  28766. X†å€â
  28767. Pã #X…å ãð°1 ãx…å>-é@ áP☓ãð5ã ñP á ã •âŴâ   á<…â@ï…•â €â0áU…€ïà áð4ã ñ>½è ãx…å ãð°á    @-éë<ã@½èð°à ãxæ…åêï…âÿ?‰èŒï…âÿ‰è    ë'ëìÓ†å áð?ã ñ  áÝ…âþ_-é†"…å â…åëë àÜåà^â àÌ¥ª¨†å
  28768. Pã Pª¤àOâàÞç àÌåÔè†å^ã
  28769. ™þÿëj¨†å ã ë:ëë ã0 ãKëþ_½èРáŴc¨…eïð?á ñíëë ãx…åê…bÿ?‘h€½hÇ ã ãÿ  ãïà°á
  28770. ê…âÿ?‘è-é á ï@½èòÞsòficëê…âÿ?‘è⇦ç†å>ã@½èòÞ+•òfiPã=
  28771. Pãð @-é¨ë<ã@½èð°à ãxæ…åêï…âÿ?‰èŒï…âÿ‰è°ëÎëìÓ†å áð?ã ñ  áÝ…âþ_-é†"…å â…å‹ë¿ë ã¬3†å¤7…åëà ã¤ç…åþ_½èРáŴc¨…eïð?á ñ¦ëÀë ãx…åãëÜå0ãê…âÿ?‘耽h€-é⇦ç†å>ã@½è@½r•òfið?á@½è|•òfi ãòÞãÀ†å<ã òÞ¤†å0ãÀ†øÿÿ
  28772. 0áÀ†õÿÿ•âòfiã☓
  28773. You can't close that file - a task window is waiting for itEscape@-éLë<ã@½èð°®ë*,ïà #àÜ5>ã2êêï…âÿ?‰èŒï…âÿ‰è ãx…åMëkëìÓ†å áð?ã ñ  áÝ…âþ_-é†"…å â…å/ëßýÿëjZë ã0 ã¢ëÜå0ã⇦†0} Ì·ëóÿÿ*¨…åþ_½èРáŴc¨…eïð?á ñ:ëTë ãx…åwëÜå0ãê…âÿ?‘耽h€-é⇦ç†å>ã@½è@½•òfið?á@½è âÎãòÞòfiã◰
  28774. Task dyingŴ0ã€~0å0ð°@-é÷ë<ã½è€ý~0ã\
  28775. å0ãd
  28776. @½èÿâÿ â€á€â  á☓…åNë*,ïà #àÜ5>ã:ê☓ç†å>ãÿ °ãBêêï…âÿ?‰èŒï…âÿ‰è ãx…åèëëìÓ†å áð?ã ñ  áÝ…âþ_-é†"…å â…åÊëzýÿëjõë ã0 ã=ëÜå0ã⇦†0Të:☓†å0ãòÿÿà㨅åþ_½èРáŴc¨…eïð?á ñÓëíë ãx…åëÜå0ãê…âÿ?‘耽h°áÿ  C    J °ã€-é⇦ç†å>ã@½è@½fOòfið?á  ÿ Ŵ ã@½èòÞòfiã-é,ï€ý8æ ã ãÿ  ãï1ãÜ €ýè-é0Üå@à@!à@Ìå ãx…å  ãï ãx…å á@½è@½èòÞã3ã1ð°P-éwë<ãl‘ýè° áã ãx…åïTask module callback handler erroneously entered in non-SVC or interrupt enabled mode
  28777. ïU…â‘è ã@ïWëI ãx…å⇦†å0ãD x…Xë …âŒß…âþ°éþ­é>‘é>™éìÓ†åoë áð?ã ñ  áÝ…âþ_-é6ëcë ã0 ã«ëþ_½èРáïð1ã ñOë⇦†å0ã
  28778. x†å0ãE x…åï`ë áð?ã ñÝ…â    àÜå>ã ïð1ã ãx…å    àÜå>ã
  28779.  ã ã  ã0 ã@ï-é-é-é-éì…âÿÞè@½èÿÎè½è<Ɔå<À‰å‘½èì…âÿÞè<àfiåð°á@-é ã$•â   á;…â@ï-éà ã    àÌåBï½è@ècà ã    àÌåë…âÿÞè<àfiåð°áðӅ堠ᇅâì†åü1éü èQáûÿÿ⇩åÁá<’臅âè†å€à<éð°á
  28780. Рᇅâì†åü°èü!éQáûÿÿ⇩‡…âè#†å€à<é\åÁá<Ŵèð°á@-é,ï 3} #Ìå| #/å ã ã  ãè0 áå ã ã  ãïÜå}PãÌå ãÌåð°á@-éÆ ã ã  ãï1〽è@-é,Üå1ã ,Ì€ýè@-éÇ ã ã  ãï1〽è@-éÇ ã  ãï€ýè@ á    Üå0ã
  28781. ïð°á⇦†å0ãð° ã ãåOâ   á<…â@ïéOâ0áU…€ïð°á@-éÎÿÿë
  28782. -éÒÿÿë½è,ÌåÖÿÿë-Ìå½èîëùëëóëîë-é-ÜåÓÿÿë½è€½è    @-é@-é@½è    ‡èë™d    €½è@-é—†å1ã
  28783. ‘†å1ãÀFflå@☓á ã`OâAâ   á>…â@ïO…â€è½è ã ã–ë
  28784. Ìå Ìå á…â-é).…â²èà‹åÇï½è€-é ãO…â’è@ï@½èð>㨅å€-é
  28785. Üå ÜåŴë@½èð>ã2jPâ0:Pãñ•0-êêêê†å0ã
  28786. $†ål†å1á#0ã?
  28787. †å …å ã…âçï ê ã⇦…倽è†å0ãùÿÿ
  28788. $†ål†å1á0ã-
  28789. †å0ã@
  28790. Ð$flå0á …â,ŵâ4†å3ã
  28791.  ãÒäTë0Sâûÿÿ—†å0ã
  28792. ‘†å0ã ã—…円åê⇦†å0〽…†å0ã⇨ÿÿ€½è\$flå0á⇦…倽èL$flå0á……ÿÿ
  28793. @$flå0à……áÿÿê—†å0ã¼ÿÿ‘†å0ã—…†å†…¶ÿÿ ã-…â< ã @…âL☓â☓è ã…å ã…âl&†åçïËÿÿê†å‘…å…â“…åÆÿÿêÿA-é0 ã …â,ŵâ ã²ëÂ40◰2ûÿÿ:€Sâ
  28794. 0◰â0Ãã` ã‘sflå⇦†å0ã ã…âøŴèl&†åRãçÿA½èð°á@-é1ã0 Ü2}   Ì
  28795.  Üå2ãC/…â!‹çE?…â1›ç Bà1ã?  Rã
  28796. ÃäI/…â!‹ç3áG?…1›E/…â1ŵç°ã€½è@-éàãàãÕë0ã
  28797.  á
  28798. ïk€½h€½8-é ãàãÊë½è ãhÎþÿë
  28799. -éÒþÿë½è,Ìå,Üå1ã
  28800.  
  28801. ïËþÿk€½h:Èþÿë 뀽è@-é ã ã²ë  á°á °á €ýè ã@-éHà†å>㪅àNÐHà…@½òÞEë:‘†åP〽@â‘…å“ç†åÞä“ç…å@½è€ãòÞ@-é@ áp0â@0#â#2 áÝ◰â ãÿ  ãï1ã@½Üÿÿ
  28802. 1ã
  28803. 1ã¨BÌå ãH…å ã@½èòÞãâ€àúÿÿêd…â €âpflå  ã€è  ã@â
  28804. Tã10 #0À' ŵ"
  28805. @D"0@☓â@Àç…â, ã0 ã@ ã#ï    j2ã
  28806. H …媅â0 ã Râ@Ñç@Àç0◰âúÿÿ@½è¯ÿÿêKey$@-éC/…â!‹çE?…â1›çRá
  28807. ÒäI?…â1›ç3áG/…!‹C?…â!◰ç!°ã€½è-éG…â‘çC/…âŵçE/…âŵç½èð°á@-éÀ†å<ã€ýë€ýÀ†åùÿÿê@-é ãø‘å|æ†å0áx†0€½è@-é<flåë8fl ¬…åàà^ •b€½è2ÀÄÆÇÁÌ€,€ŷ
  28808. Kernel does not support OS_ChangeRedirection@-é •âà ã0’ä@‹äSွà^âùÿÿ€½è-é ãÒÑå ï€ýxü_-é¬ç†å^ã^ïüfl½è‘ áã-é‘ ãѪÙåÒºÙå Pã*Ñ
  28809. Éå Qã*ÒÉåQã;ã⇩
  28810. *
  28811. @-é ã¬†å  ã ï™e@½èâ‰c jê@-é ã¬†å  ãï™e@½èâ‰cj
  28812.  á  á@½èâ‰cð>ã ñüfl½è@-é@0…â 뀽è@-é@0…â뀽è@-é80…â뀽è@-é80…â
  28813. 뀽è@-é@ ãÝ☓â ãÿ  ãïÃç@Tâøÿÿ*€ýè@-é@ ãÝ☓âÓç  ãï@Tâùÿÿ*€ýèWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      Nick!BootCëÿÿîuu„s!HelpDëÿÿÞmGs!RunDëÿÿKm™s!RunImageDûÿÿ¹)m?
  28814. s!SpritesCùÿÿ⇩Kd$ sHelpDÜ÷ÿ@mv    sHelpReaderDøÿÿ¢m—
  28815. tInterfaceBúÿÿ×óòÉxtMenusBýÿÿ„S½PsTemplatesCìÿÿiM ⇧s!BootCëÿÿîuu„s!HelpDëÿÿÞmGs!RunDëÿÿKm™s!RunImageDûÿÿ¹)m?
  28816. s!SpritesCùÿÿ⇩Kd$ sHelpDÜ÷ÿ@mv    sHelpReaderDøÿÿ¢m—
  28817. tInterfaceBúÿÿ×óòÉxtMenusBýÿÿ„S½PsTemplatesCìÿÿiM ⇧s!Handles!Handles Nick»Set Handles$Dir <Obey$Dir>
  28818. Set File$Type_7DC HelpFile
  28819. IconSprites <Handles$Dir>.!Sprites
  28820. | This file has been innoculated against the Extend Virus
  28821. ||ÿWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |HelpReader
  28822. WimpSlot 16k 16k
  28823. Run <Obey$Dir>.HelpReader <Obey$Dir>.Help
  28824. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WimpSlot -min 32k -max 32k
  28825. RMEnsure InterfaceManager 2.00 RMLoad <Obey$Dir>.Interface
  28826. Set Handles$Dir <Obey$Dir>
  28827. Run <Handles$Dir>.!RunImage
  28828.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     [ô>Mem:$.!Handles.!RunImage squished by MH's BASIC cruncher v1.30 16/9/89 On 16 Feb 1993îŶòbFæn%=3000:Þa% 4096,h% 208,v% n%:g%=v%:o%=g%+n%:d$="1.04 (16-Feb-1993)":w%=1:x%=2:p%=3:y%=7:È−"Wimp_Initialise",200,&4B534154,"Handles"¸,q%:r%=­("<Handles$Dir>.!Sprites"):s%=¢#(r%):Ù#r%:Þc% s%+16:!c%=s%+16:c%!4=0:c%!8=16:c%!12=166€È−"OS_SpriteOp",266,c%,"<Handles$Dir>.!Sprites":È−"Wimp_OpenTemplate",,"<Handles$Dir>.Templates":îŶÈ−"Wimp_CloseTemplate":òbrÇÈ−"Wimp_LoadTemplate",,a%,g%,o%,-1,"Handles",0¸,,g%:È−"Wimp_CreateWindow",,a%¸b%:È−"Wimp_LoadTemplate",,a%,g%,o%,-1,"Info",0¸,,g%:a%!64=c%:È−"Wimp_CreateWindow",,a%¸t%:È−"Wimp_CloseTemplate":îŶòb¸uòa(t%,y%,d$):ÿ"Load <Handles$Dir>.Menus "+Ã~h%:h%!32=t%:òd(b%):i%=£:j%=-50:k%=-10:õ:È−"Wimp_PollIdle",0,a%¸a:ȉaÊb    É0:òev    É1:òf€É2:È−"Wimp_OpenWindow",,a%⇩    É3:òg“    É6:òhfi    É9:òi¨É17,18:òj²Ë²)ýi%:È−"Wimp_CloseDown",q%,&4B534154:àÐEÝòe:È−"Wimp_GetPointerInfo",,a%:d%=a%!12:e%=a%!16:çd%<>k%☓e%<>j%… Ha%!0=20:a%!12=0:a%!16=0:È−"Wimp_SendMessage",19,a%,d%,e%¸,,u%:çu%=0…>"b$="Wimp Manager":òa(b%,p%,b$)\HÌ:a%!0=24:a%!12=0:a%!16=262342:a%!20=u%:È−"Wimp_SendMessage",18,a%,0—Í—Í¢ çd%<>k%…¬    È‰d%ʶÉ-1:c$="Back Window (-1)"ÔÉ-2:c$="Icon Bar (-2)"è:c$="&"+Ã~(d%)üËüòa(b%,w%,c$):k%=d%Í çe%<>j%…$    È‰e%Ê.É-1:a$="None (-1)"LÉ-2:a$="Back (-2)"`É-3:a$="Close (-3)"tÉ-4:a$="Title Bar (-4)"⇦É-5:a$="Toggle Size (-5)"†É-6:a$="Scroll Up (-6)"°!É-7:a$="Vertical Scroll (-7)"ÄÉ-8:a$="Scroll Down (-8)"ØÉ-9:a$="Adjust Size (-9)"ìÉ-10:a$="Scroll Left (-10)"!É-11:a$="Horiz. Scroll (-11)" É-12:a$="Scroll Right (-12)"(:a$=Ã(e%)<Ë<òa(b%,x%,a$):j%=e%ZÍZád Ýòb:îŶ„ma%!0=fl:$(a%+4)=ö$+" at line "+Ãfi+½0:È−"Wimp_ReportError",a%,2,"Handles":È−"Wimp_CloseDown",q%,&4B534154:àÈoÝòf:êl%:È−"Wimp_RedrawWindow",,a%¸l%:È”l%:È−"Interface_Render3dWindow",,a%:È−"Wimp_GetRectangle",,a%¸l%:Î:á"Ýòj:ȉa%!16ÊT É0:i%=¹h É1282:òkrÉ262343:òl|Ë|áŷÝòh:ȉa%!12ʸÉb%:ȉa%!8ÊÌÉ2:òc(h%)êËêËôáþ<Ýòc(z%):a%!0=a%!0-64:È−"Wimp_CreateMenu",,z%,a%!0,a%!4:á0Ýòi:ȉa%!0Êb É1:i%=¹€Ë€.È−"Wimp_GetPointerInfo",,a%:ça%!8€1…òc(h%)“áfiQÝòd(A%):a%!0=A%:È−"Wimp_GetWindowInfo",,a%:a%!28=-1:È−"Wimp_OpenWindow",,a%:áøBÝòg:È−"Wimp_GetWindowInfo",,a%:È−"Wimp_CloseWindow",,a%:i%=¹:áH€Ýòa(f%,m%,e$):a%!0=f%:a%!4=m%:È−"Wimp_GetIconState",,a%:a%!4=f%:$(a%!28)=e$:È−"Wimp_ForceRedraw",f%,a%!8,a%!12,a%!16,a%!20:á¢&Ýòk:êf%,m%:f%=a%!32:m%=a%!36:ȉf%Êò"Éb%:È−"Interface_SendHelp",,a%    Ë    á    EÝòl:a%?(a%!0)=13:b$=$(a%+28):b$=Àb$,(§b$,½(0)))-1):òa(b%,p%,b$):áÿ WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ¬pyramid,l $ðD$"DD$""DDDD$"""UUUU5333UUUU533UUUU533UU533ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ!handles,€ ~~~wwwwwwwwww$w~~ççç~~~wwwww~D$"~ç~~~çwwwwDD$""wwwwçwwwDDD$"""~wçwwwwwwwUUU5333wç~wwwwwwwwUU533~î~çw·½½½½½½½U53çî~~~wÛÛÛÛÛÛÛÛ{5~~~ççww·½½½½½½½}wççç~~wwçwçççççwww~~~ççww~w~~~~~~îwççwçwwçwççççççççwwççwwwwwwwwwwwwwwwwww"""""""""""""w"wwwwwwwwwwwwwwwwwwww"wwwDwÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€file_7dc,, wwwwwwwwwwwwwwwwwwwwwwww»»°»wwp»p»w»wwp»p»°» p»°»»wwp»»»»w»p»·{· wwp»w»p»»»p»· · wwp»p»p»wp»·»»wwp»p»p·» °» ·{wwppwwww· wwwwwwwwwwwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $fH À´äHow to uÔ
  28829. 4Ì@ÇÔ
  28830. ****Help for Handles version 1.04GeneralCreditsConditions of useMy AddressHelpReadere#5AAA ÿÿÿÀÿÿÿ²Ò`ÿÿÿ€ÿÿÿ"B ûÿÿÀûÿÿRr !"'()*,-.0123469:abcdefghijklmnopqrstuvwxy(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢☓Ù,−ªŷ☓Ö¡“    ÚY„§¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩ ¡b—€@" #¡$…J]zŴ,z6d°JdyÞ™Á*“J]hJ*]ö—¤HŒ‰¢ÄZ6DaÙ(hEŵ Ê⇩–}¦)−⇩JÚ−z›DèÄ¥Ö☓¥«ié*%®·£dEê¦−# B‹ÄZ6Dy±.‹¡(2☓b—€I#h±)u¡,z6d°Kŷ"‹¶☓¦A)ujD‡¦Ú‡¨ØhЗ(2⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢ŵ ¤‡¡$…@j@‡¥−jq
  28831. (¢⇩(0Àq¨Ú‡hC0à 0ÃÕ£f¨êXJ⇩XZYäru¢−¡Ù,–ZÕ£f¨FÄ¥Ö☓±èÙ‹Á™’bHĪ6Z†:]hIdz:Z†ÑêDZ$d²Ŵ)u¡)Z⇦™hŒFÄ¥Ö☓¥j ⇨#¦y!ŶèÜ–V¤G—‹0ä†K™−,4A±Ö£–Z”¨€GV™—Zê8±uhÙŶªeê%Ŷk¨`,z)D%£YƧE¨–Z”¨€HÖ⇨£D
  28832. ]Z’èe䪒¤IÚZn0À‡ªÞ¡é#^¢−'¸3 0à 0à 0à 0ÀÏ4ä!3~¨Ì=E$0'j·¨zHÄuê)‹{☓Y„ZdÐÀ⇨ê)Z☓±Ö£èè¥haz7‹1bHÄ]iÄmëZdÐÃ<Ó’◰Ò0Z`ÃÔPòCæ$…EÖ†G—‹1'j)+i›C óNHBLÀisQDI ™−,Õ£f☓eê%Ŷk☓aÕ£q¦Dny"„—z%¡−u«M     g’ÉÖ⇦G™©Öŷ☓¥æ^i’*“ÐÃ⇨Úeêh à 0Ã
  28833. ]hHŒ‰¡‹quhÙŶª±jbv„¥¦D^á¡hÙy¡)u¡±hgªŴ茉 "Z☓„y‡h™ ©êz1)u¡„X^aj^‹3C
  28834. ]hD@dFœm¦) J¨i’¸@Z6ajŴ‡¡%fiFja¦D^á¡è¤…@ª:^™Æd…zèéjvÖa À⇨hÖq©Ä⇩FjŶ£C
  28835. ]zŴjD¢ê)j! EîÚ…@(ª(Œfi◰M4 Ã $™–©zHèFĪŷ” à 0à 0à 0à 0Ö^ E¥„—Z–¤…H„¸EÚ¹Új☓bI^i’™’z⇩gyz©i›C £¸H¤eæÞaj^‹:¡Ù*Ŷ’"j:^‹6−èÄXJZ¶’z☓Z#pK¥Ñ)u¡#Z&☓Z6CY„gj⇩’±)u¡%jz$…K‘H¤eæÞi’¤E£dE☓bInFÄ¥Ö☓⇩F^mæ−ieŶæ¥é#ŷ£¤Jd&☓¢A)ujDáZ1™⇦je¡)u¡"’–œyŶ©zHÄz1‰áªŒ§hJÚfi¤‰Ŵy°ÀxH^Ŵ¡¤RM 0.‹¡"Zá*¡¡‰á%ZzD’±)uêZYayŶ©zHÄz1‰á%fiG'Z! Hd™Á J]Z‘åfiG'Z! IaYŷ−èÄ¥Ö☓„¥áyŴ‹%fi…E£d@h☓n¨a¸F'i–©i›C œé*ǨtJdªhîU§¤I–^ Ig’ÉÖ⇦G£a%fiG'Z!)‘EÚ⇨!d6$⇩&§aå¡ŷâĺJ☓⇩ª)EéYèÄ⇩á¶YÚ¢Ŵ%jxfi¢¤…EÚnIÚ−™Á(‘ÐÃæÄáz6D¥Õ©hî‹6☓uj^v„aÖ−–Z¡¡‹6^¥é# ±)u«☓±èav☓nIØi’)‘5©¥¨¥¤JdYäru¢hÄhfiqcC ®−fv¨ 3 0à 0à œ¹'hîv„¢HĺJ☓²J¡dH^Ŵ¡)‘F$‰”—¤HŒ⇩dv¥‹zD^§(,J*qƨ¤7¢„y+j&£¦ŵÄqêÚYÖzŷ⇧−#Z„☓⇩HÚ¸±¥◰I,IaijÉÞ¥¡)‘HŒT0À]¨ÄÕ§‡ê A^y,™×¡☓@!Z6⇧ ⇨z§¸°À„¢‹ª]40%8À—0Ã(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(0☓Ö¡“    ÚY„§¶§¡é#N@0☓^á]¨Ä⇩¢⇨©è 1–^ @j@‡¥−jq„X^aj^‹1 Ij^—−"YèÍ ¤¨H„¸J¨hG©èĺJ§K# A%fiG'Z*     @dI'⇨"⇨©ØyhDZŴ!‹7ZŴ.‹¡(j6D⇨¡⇨%¸IêKhÙhî A’⇩¢j:^‹1,uæÉ K¥Ñ¤ÐÃ@)‘H„Ŵ¡jD¢ê)j*ª£p@j@‡¥−jrĺJ☓±èa6ŒdE☓bInFÄ¥Ö◰@j@‡¥−jqz☓q¨Ú‡jd†Ñ¡¨Ù&☓XF^¡Ŵ™’…@(`Ç©tE☓Ŷªijq¢£p1nIÄXF$„álK¤¨GV­¨Ç¤G$¤I#hÐÃ@"¸E−fv¨ G¨T0☓v£
  28836. *⇩&§ ±
  28837. )!j&£¦Ŵuèa,@#‹{aÒÄ0'DD€d◰ ¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩(¢⇩( ÀWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Handlesæp,ÿÿÿÿ!Infock!16 Ê€ÿÿÿÿ!Quite=¹    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿD3InfowwwwwwwwHandlesw̬ÔL☓ ¸üÿÿ =0¸ÿÿÿÿ >ÐÿÿÿŒøÿÿÿ9Name:led>þ†ÿÿÿŒÄÿÿÿ9Purpose:>þhÿÿÿŒ‘ÿÿÿ9Author:d>þ8ÿÿÿŒ`ÿÿÿ9Version:>þ¢Ôÿÿÿfiôÿÿÿ9aËÓ(¢ ÿÿÿfiÀÿÿÿ9aÖö(¢lÿÿÿfi…ÿÿÿ9aù(¢8ÿÿÿfiXÿÿÿ9a ÿÿÿfi$ÿÿÿ9a 0%0dÿÿÿL“ÿÿÿ`Çpyramidd>ôdÿÿÿ“ÿÿÿ`Çpyramidd>About this ProgramHandlesb3Show Window & Icon Handles Etc.b3Ben Harrisb3b3This program is in the Public Domainb3ÀÈ4ÔP üÿÿ=0Handlesd>e °ÿÿÿPôÿÿÿaÇ89h°ÿÿÿhÐÿÿÿ9aFG Xÿÿÿhxÿÿÿ9aŵ◰ ÿÿÿh ÿÿÿ9a¼½`Øÿÿÿhøÿÿÿ`ÇWindowed>€ÿÿÿh ÿÿÿ`ÇIconwed>(ÿÿÿdHÿÿÿ`ÇOwnered>b3;s!handlesb3;iThis shows the handle of the window under the pointer.b3;iThis shows the handle of the icon under the pointer.b3;iThis shows the name of the task which 'owns' the window or icon under the pointer.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ‘°•â
  28838. ¼⇧âÀïï€j⇧åÐAâÐÍã ã⇧â0Mà€0Câ0Ããïvjœå Ñä Rã
  28839. Ŵâúÿÿꀠá ãïlkPã^,A⇧å ã⇧â0 áïdj(!⇧å ã á(!œå0 ãï]k(Áœå$…â…â ’ä  ŵà ŴäŴâQáùÿÿºðë†ål•åpë ã⇧å|⇧åÈ ãøflåø •â,ŵâÀïGk ⇧åô•âŴâÁïBkà•åÜ•âŴâÅï=k,•âŴâÁï9k•åØ•å:ësëÁï ã ⇧âÇï0kPã
  28840. Pã‰
  28841. Pã‘
  28842. Pã—
  28843.     PãP
  28844. PãP~
  28845. œåPãëÿÿ
  28846. Ýïï ⇧âÈïjPãõÿÿ
  28847.  ãæï`œå$pœå0Fà,Pœå Eà4Pœå0Fà bâ0câ¢" á£2 á á  á0 á0◰â BâRã  ³$œåSá0 Á`œå pœåPFà@Ŷâ0aœå" á„çPâ
  28848.  ãñëPUâüÿÿ€à` áÀ á áë  á ã áEïëj  áïÀ á`ŷâ  BâVáôÿÿº ⇧âÊïákPãÅÿÿºÿÿê@-造á€â`âœå$ œåAà€à€½è PœåUãº(Áœå †åPEâ!‘ç
  28849. ëC⇧âÏïÊjœåâPã¢ÿÿœåÔïÃjfiÿÿê@-éÜDflå ⇧â@ŴäËï¼j$@œå]⇧â|aœåVã    «AŶç`ŷâ|a⇧åŵ" á bâ$ ⇧å ⇧âÅï®j€½è ã Eâ”çŵçŴâQãúÿÿº`Fâð á ⇧â’åPã|ÿÿ ã⇧åyÿÿê ⇧âÅïŒkuÿÿê ⇧âÆï„k’ä,$flåPánÿÿ ã⇧åkÿÿê P⇧â ”å flåPáfÿÿ”åPãœå ”å0”å@ BâÔïŴk\ÿÿêPã
  28850. PãXÿÿ(ÁœåœåàãPáSÿÿ
  28851. †å!’ç±ÿÿëOÿÿê|aœåVãKÿÿ
  28852. `Fâ‘flå ⇧å ⇧âËïij]⇧â”ç$⇧å ⇧âÅï|a⇧å>ÿÿê@-é(Áœå ã⇧â@0†å0◰âïZj4!⇧å  á`ŵà‘†å€ ãp†åëPã
  28853. Pã
  28854. Pã
  28855. ÙçÊäZáôÿÿº ã ãÊäPâüÿÿ€½è ëÙç Aâòÿÿêë áïÿÿêë   ã ÊäPâüÿÿêÿÿê×ä ×åPhâü0 ã38 áü@ ãE áà àXã! Xã Xã "€Xã "€Xãp¢€⇦â€âð á×ä ×åPhâÿ0 ã38 áÿ@ ãE áà à á2% á€ápâð á•âêNo room•â    êNot found@-é ÐçŴâRãûÿÿ€½è ãq/•âßïï@-é(Áœå, †åRã
  28856. °flå ⇧å ⇧â<†å ⇧å<flå$⇧å@Ŵâ0†å(‘flåà³è€ á` á    PÇá'x áà☓èÂïäÿÿj Râõÿÿ€½èÿÿb@-é(Áœå ã⇧â00†åïØÿÿj0!⇧å4œå@@†å@☓àp ãŵä ŵ†ã ãÈÿÿë€àpâP᪀Xâ÷ÿÿóÿÿê$q⇧år ápâpgâq•å€½è@-é|°•â¼⇧â(Áœå ã⇧â40†åï¸ÿÿj ⇧å­•â áü±èü èü±èü è†å(à†å œå4 ŵâ  ã^ã
  28857. ¼•å«•âð’èð¢è ã@-é‡ÿÿë@½è
  28858. Qá  ¡€àà^âòÿÿ
  28859. ¢ á Zã   ³@œå ☓å B†ãŵäœåI.jâ = ã(Áœå8@†åTãÔ™ÿÿj€½èTASKHelpReaderdÔÿÿÿÿÿ Ô9P<⇩dñ⇨ñ⇨€☓Xÿÿÿÿ☓ |Ø9Þ⇨ñ⇨¤ŒÔName:pŒ Purpose:<ŒlAuthor:
  28860. Œ:Version:Œ¤Ô=HelpReaderŒp =¬⇨ñ⇨Œ<l=¿⇨ñ⇨Œ
  28861. :=Ò⇨ñ⇨ Reading help files© Ben Summers 19912.01 5/8/92About this programHelpReader ,1Infoÿÿÿÿ1ñ⇨ñ⇨€\\Lb,,    !233C2îîC2îîC2îîC2îîC233CSUUerks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     €äx,@€†üInterfaceManager        Interface Manager    1.30 (25 Nov 1990) © Simon Huntington@-éFQãÀ†  Œ€… ŷ€½èÀ†å[ã ñ•0ê_êê¸êÃêSêŶêŵêâê•âòfiã€Unknown Interface Manager operationWimpBorderIconBorderWindowClaimInterfaceReleaseInterfaceSetWorkareaPointerRemoveWorkareaPointerPollPointerSendInformation    @-é†å0ã€ý ã☓0flåï j …åÀ átflå…ç ã0 ãïj …å@ á0ŵå0 ãïýj ☓å0ŵå€ýè@-é@†å4ã€ýP“å ”å ãï  áï  áï ã…å€ýèENDBÿ_-éê    Qãºÿ_-é à…åŴâ’è…âŴè…âëëa•b
  28862. jSãÿflý †åWPã® …â<‘èRáºRáÚÿflýÈTáÿflý¸SẠ   SáÚÿflýÈUáÿflý¸b  ãáëPãÿflý  ãëë[•bíj° á  ããë   …å! ß    …å  ã@ ãP ã` ã p ã@0…âô◰è@ ã  ãÓëi•bØj ◰@☓Töÿÿº †åWPã
  28863.  …âx’è0Câ@DâPŶâ`ŷâT…â †å|ŴèÉïPã
  28864. Xp†åd…â’è    pGà
  28865. €Hà@…â`’è@ ãà•â ‰àà•âð áÍêÔêÜêìê †åWQãÿflýT…âÊïPãíÿÿ[ã[¥
  28866. ÿflýèŵBad pointer passed to 'Wimp_BorderIcon' in R1.  A Mouse_Click block should be passed.    ◰An invalid border type has been specified using 'B<Border_type>' in the validation string of the icon.  <Border_type> should be 0 - 3.    ☓An invalid colour has been specified in the validation string.  Colours 0 - 15 only are valid.    †åPã]ÿÿÚPã[ÿÿÊ° á~-éuP ãërP ãë~½èSÿÿê@-é  á4ëPã€ý  ã>ët•b Рa?juUã * ã3ë†å` á€…âŴèÍï áõÿÿêP〽ØæÿÿêRã5 £0 ³@ ÃE ÓìÿÿêRã6 £0 ³@ ÃF ÓæÿÿêŶBad parameter in validation string after command.  The valid parameters are, 0 switch off, 1 switch on, 2 toggle state.`†å…â ’èR ãVãL@†H@†N á€…â<ŴèÍïÿflýè†åàPã†å•â;ïRüÿÿVãýÿÿÿflýè` ãð á@-é†åPã P ` !뀽è@-é@ ãë@ ã áP á` á뀽è@-é†åPã P ` ë P ` @ ã ë@ ãP`†åP á뀽è@-é áP á` á@ ã뀽è•G-é ‘…â−è ŵà‘à@à@âpà0◰à ⇦àAàAâ€⇦à áæïd ã     á  áEïe ãŴâ
  28867.   á ŵâEï áæïd ã á  áEïe ãAâ
  28868.   á ŵâEï     á BâEï áæïd ã  áEïe ã á ŵâEï•ýèŷBad pointer passed to 'Wimp_BorderWindow' in R1.  A Redraw block should be passed    You have exceeded the maximum number of indirected icons in a window. Please attempt to reduce the number used, or contact me.³    Qã_ºÿ_-éW ã …å’å° á ’åŴâø’èX …åd…â8Ŵè`Fà`ŷà `FâpGàpà pGâ€Hà€⇦à €⇦â‘Ià‘⇨à ‘⇨â‘…â\ flå< ã0◰âÖïWOb9j  á…å“å†çPáOЙþ_½òfi   á ã ã0ŒäsãÿflýP…âŶèþÿëøÿÿê€@-é@…â ã Ŵå ãçï€ýè    Qã$ºÿ_-é-éÀ’è  áñÿÿë-é†å‘å°‘å °€à€â[á
  28869. >‘èQáRS    T
  28870. U0€õÿÿ½è½èŴâ €â@ŵä0 ãëÿflýèP†å ”å@‹å ã00☓âïÉj Ŷå0ŵå ½è½è ŵà0 ãóëPŵä0 ãðëÿflýèÿ_-éPãt
  28871. PãPPPPÿflý0 á…âÏï †årãÿflý·ÿÿëSáÿflýà á@†å0“å0◰à@☓âSáÿflý“ä^á
  28872. ùÿÿê…â|’èvã`
  28873. Uº`Ŵè¨ëSãQ
  28874. p  ã³ëPãM
  28875. 0 ã …â @ŵâÑäPãÚ,Pã
  28876. ;Pã
  28877. Âä €ã0◰àRáóÿÿºK ãŒ@☓âSá:
  28878. @†åTáÿflý0…å0 ã0Âå,Pã* ã¢ë@ á* ã†ëP P ê@ ãP ã$ ã …â0 ã` ãp ãéïjÿflýè á…âŵ  ã0•â`@ ãCïÿ_½è…âòfiã⇦Sprite '%0' specified in the icons validation string does not exist in the Wimp sprite pool†åK ãŒ@☓âPáÿflýj ã ãï@…åÿflýè Ŵâ á@ áËïà á á@’åŴâà’è Bà ŵà0Cà0◰à†å’å°’å°⇧àŴâ¡ ã …å‘ ãêŴâ[á
  28879. ð±èPáZøÿÿuãvwx †Z ⇩ …‘ îÿÿ
  28880. RáìÿÿºRáêÿÿÊSáèÿÿÊSáæÿÿº †å
  28881. Uá  ¡ …¥‘ ¡àÿÿê †åZã½ÿÿ
  28882.      áÑå Pã¹ÿÿÚjÿÿê•â€½èŴInterface Manager unable to claim workspace@-éÎï@½è0 ãð a’å ãð ãð  ’åqã0 ð áÑä €ãPáð Ñä;Pãøÿÿ
  28883. PãúÿÿÊ ãð áÑä,Pãð @-颠ã!èЙâþfl½è@ŴàTáð ’äŵäúÿÿê•âòfiã‘Bad pointer passed to Wimp in R1Âä    Qãñÿÿºÿ_-é@…åÀ’è†å‘å‘å°€à€â[áÿflý ‘å@à†åRá>‘Q0€öÿÿRS    T
  28884. U0€â ÿflý@-é0Kà0 @â áÍÿÿë ã@†å “å0‹å00Câï ☓å0ŵå€ýèWãXYZÛÿÿëÿÿëÔÿÿêÿ_-éP á †å@‹å0☓â ãï☓ÿÿj …å0ŵåPŵçÿflýèÿ_-é` áp†å€–å°àpâ Wáÿflý–äPáúÿÿ0Kà Gâ á¢ÿÿë ã †å0‹å0Câï …å0ŵåp†å–å‘å°€à€â[áÿflý ‘åRá0€âùÿÿ¼ÿÿëòÿÿê    Qã‹ÿÿºÿ_-é  á Ŵâ ’è…â Ŵèbÿÿ놕bŴÿÿjSãÿflýi  ãkÿÿëÿflý ⇩â@ ã Tã
  28885. ÑäPã    Ú;Pã
  28886. Âä@☓âõÿÿê0Ñä;SãÂ@☓ðÿÿ
  28887.  ãÂå  ã€â⇩åŒå ⇩åâ`@☓@⇩å
  28888.  á ã ’åçï•bÿfl½è⇨Bad pointer passed to 'Wimp_SendHelp' in R1.  A Help_Request block should be passedrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootBëÿÿ…诲ru!RunBëÿÿ…诲ru!RunImageBûÿÿ›±²Äu!SpritesBùÿÿ…ö¬²àu!UtilsLibGýÿÿêëÙàv8!WimpLibGýÿÿ¦íÙàw8!BootBëÿÿ…诲ru!RunBëÿÿ…诲ru!RunImageBûÿÿ›±²Äu!SpritesBùÿÿ…ö¬²àu!UtilsLibGýÿÿêëÙàv8!WimpLibGýÿÿ¦íÙàw8!Libraries!LibrariesNick3|!Libraries.!Boot
  28889.  
  28890. Set Libraries$Dir <Obey$Dir>
  28891. IconSprites <Libraries$Dir>.!Sprites
  28892. Run <Libraries$Dir>.!RunImagenderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |!Libraries.!Boot
  28893.  
  28894. Set Libraries$Dir <Obey$Dir>
  28895. IconSprites <Libraries$Dir>.!Sprites
  28896. Run <Libraries$Dir>.!RunImagenderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  28897.  ô >!Libraries.!RunImage ô  © 1990 M. D. Wooding( Þ names% 502  item%=0<I È− "OS_GBPB",10,"<Libraries$Dir>",names%,1,item%,50,"!*" ¸ ,,,,item%F È” item%<>-1Z   name$=¤s(names%+20)d   ç names%!16=2 …n1     ÿ "Obey <Libraries$Dir>."+name$+".!Boot"ŵ   Í„K   È− "OS_GBPB",10,"<Libraries$Dir>",names%,1,item%,50,"!*" ¸ ,,,,item%  Îª à´¾ Ý ¤s(p%)È     ê s$Ò  È” ?p%Ü   s$+=½(?p%)æ    p%+=1ð Îú =s$ÿerWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!libraries,€ wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww÷ÿÿÿÿwwwwwwwwwwwwÿÿÿÿÿwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿwwwwwwÿÿÿÿww⇦⇦⇦⇦w⇦⇦⇦⇦wwÿÿÿwwwwwwpÿÿÿÿwwÿÿÿqpÿÿÿÿwwÿÿÿqpÿÿÿÿwwÿÿÿqpÿÿÿÿwwÿÿÿqpÿÿÿÿwwÿÿÿwwwwww÷ÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootBëÿÿP⇨ùv¥v!RunBëÿÿμóvŒv!SpritesBùÿÿØ7w`vLibDefineBÿÿÿx¢ôvx
  28898. vLibraryBûÿÿK¨øv³     v!BootBëÿÿP⇨ùv¥v!RunBëÿÿμóvŒv!SpritesBùÿÿØ7w`vLibDefineBÿÿÿx¢ôvx
  28899. vLibraryBûÿÿK¨øv³     vu!UtilsLib!UtilsLibNickŒ| !UtilsLib.!Boot
  28900. | © 1990 M. D. Wooding
  28901.  
  28902. Set File$Type_107 LibDefinition
  28903. Set Alias$@RunType Type %*0
  28904. Set UtilsLib$Dir <Obey$Dir>
  28905. IconSprites <UtilsLib$Dir>.!SpritesrWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | !UtilsLib.!Run
  28906. | © 1990 M. D. Wooding
  28907.  
  28908. Set UtilsLib$Dir <Obey$Dir>
  28909. IconSprites <UtilsLib$Dir>.!Sprites
  28910. Echo This disk now recognised as holding UtilsLibs     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     d€!utilslib,, wwwwwwwwwwwwwwwwww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€ww⇦⇦⇦⇦€ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€ww⇦⇦⇦°€ww⇦⇦⇦⇦⇦⇦⇦⇦°»€ww⇦⇦⇦°»»€ww⇦⇦⇦⇦⇦⇦°»»»€ww⇦°»»»»€ww⇦⇦⇦⇦° »€ww⇦à€ww⇦⇦‘−−−€ww⇦−−−−−−−−−€ww−−−−−−−−−−€ww−−−−−−−−−−−€ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwwwwwwwwwwwwwwwwwLÔfile_107,€ wwwwwwww⇦xwwwwwwwww·»–−⇦xw–yww·wwp·»–−⇦x»–y⇦x·ç~p·»–−⇦x»–y⇦x·ç~p·»–−⇦x»–y⇦x·ç~pwwwwwwwwwwwwwwwww×Ý–−wwwwww⇦wwww×Ý–−ww{{wwwwwww·»×Ý–−÷{··»»»»{·»×Ý–−÷{··{ww·{wwwwwwwww··»»»»{⇦wwÝ}»–y··»ww»{⇦wwÝ}»–y··»»»»{⇦–yÝ}»–y·wwwwww⇦–yÝ}»–y·pwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ; Library definition file for UtilsLib
  28911.  
  28912. Prefix: Util
  28913. Copyright: © 1990 M. D. Wooding
  28914. Purpose: General-purpose proceduresrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  28915. ? ô >$.!UtilsLib.Library (General Purpose Procedure Library)) ô  version 1.00 © 1990 M. D. Wooding ( 2 Ý ¤_Util_version=1.00< F9 Ý ¤_Util_centre_pos(len%,max_len%)=(max_len%-len%)/2P Z# Ý ò_Util_get_mode_scale(mode%)d- È− "OS_ReadModeVariable",mode%,4 ¸ ,,xs%n- È− "OS_ReadModeVariable",mode%,5 ¸ ,,ys%x áŵ …$ Ý ò_Util_graph_to_text(gx%,gy%)„ ò_Util_get_mode_scale(ë)  tx%=gx%/(8<<xs%)ª ty%=(1023-gy%)/(8<<ys%)´ á¾ È$ Ý ò_Util_text_to_graph(tx%,ty%)Ò ò_Util_get_mode_scale(ë)Ü gx%=tx%*(8<<xs%)æ gy%=1023-ty%*(8<<ys%)ð áú  Ý ¤_Util_string(ptr%) ê p%,string$  p%=ptr%" string$="", È” ?p%>316   string$+=½(?p%)@    p%+=1J ÎT =string$^ h' Ý ¤_Util_sprite_exist(name$,area%)r ê error%| È‰ area% Êŷ    É -2‘/     È− "XWimp_SpriteOp",40,,name$ ¸ error%Œ    É -1¤-     È− "XOS_SpriteOp",40,,name$ ¸ error%®   ¸6     È− "XOS_SpriteOp",40+256,area%,name$ ¸ error% ËÌ: ç ¤_Util_string(error%+4)="Sprite doesn't exist" … =£Ö =¹à ê" Ý ¤_Util_parse_to(text$,del$)ô
  28916.  ê in%þ in%=§text$,del$)  ç in% …   =Àtext$,in%-1) Ì&   =text$0 Í: D$ Ý ¤_Util_parse_from(text$,del$)N
  28917.  ê in%X in%=§text$,del$)b  ç in% …l   =Átext$,in%+1)v Ì€
  28918.    =""⇩ Í“fi& Ý ¤_Util_lib_ensure(libname$,ver)¨  ê vers²" ò_Util_get_lib_info(libname$)¼ Èœ sysvar$+".Library"Æ/ vers=¤_Util_lib_call(prefix$,"version","")ÐC ç ver>vers … Ŷ 255,"Library '"+libname$+"' not recent enough!"Ú
  28919.  =versäî$ Ý ò_Util_get_lib_info(libname$)ø( ê file%,line$,naxt%,command$,param$ prefix$=libname$ & copyright$="None - public domain"+ purpose$="To be completely irrelevant" ! sysvar$="<"+libname$+"$Dir>"*" file%=‰(sysvar$+".LibDefine")4 ç file%=0 … á> õH   line$=""R   õ\     next%=Œ #file%f     line$+=½(next%)p   ý next%=10 ☓ Å #file%=¹z6   ç next%=10 … line$=¤_Util_parse_to(line$,½(10))☓*   command$=¤_Util_parse_to(line$," ")‰*   param$=¤_Util_parse_from(line$," ")—   È‰ command$ Ê¢    É ";"¬     ô line is a comment¶    É "Prefix:"À     prefix$=param$Ê    É "Copyright:"Ô     copyright$=param$Þ    É "Purpose:"è     purpose$=param$ò   Ëü ý Å #file% Ù #file% á$, Ý ¤_Util_lib_call(prefix$,func$,param$). ê result,parm$8 ê ŶB î Ŷ ê =£L2 ç param$="" … parm$="" ⇧ parm$="("+param$+")"V, result= ("FN_"+prefix$+"_"+func$+parm$)`  =resultÿderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootBëÿÿ¥Œ+Qpw!RunBëÿÿäJ‰€§w!RunImageBûÿÿjü|±w!Sprites@ùÿÿ8o/¨àwLibDefineBÿÿÿÿóóv◰wLibraryBûÿÿi¦ñ×Fx!BootBëÿÿ¥Œ+Qpw!RunBëÿÿäJ‰€§w!RunImageBûÿÿjü|±w!Sprites@ùÿÿ8o/¨àwLibDefineBÿÿÿÿóóv◰wLibraryBûÿÿi¦ñ×Fxu!WimpLib!WimpLibNick›| !Boot file for WimpLib
  28920. |  © 1990 M. D. Wooding
  28921.  
  28922. Set WimpLib$Dir <Obey$Dir>
  28923. IconSprites <WimpLib$Dir>.!Sprites
  28924. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | !Boot file for WimpLib
  28925. |  © 1990 M. D. Wooding
  28926.  
  28927. WimpSlot -min 48K -max 48K
  28928. Set WimpLib$Dir <Obey$Dir>
  28929. IconSprites <WimpLib$Dir>.!Sprites
  28930. Run <WimpLib$Dir>.!RunImage
  28931. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  28932.  ô >$.!WimpLib.!RunImage< ô  WimpLib Demo / Tutorial v. 1.01 © 1990 M. D. Wooding(
  28933.  òmain2 à<FM ========================================================================P.                              Main routineZd  Ý òmainnJ òinit                         :*|  Initialise WIMP, and set up memoryx; òpoll                         :*|  Main Wimp_Poll loopŵ< òend                          :*|  Close WIMP down etc.… á„ M ========================================================================ª,                              Initialise´  Ý òinit¾4 Èœ "<WimpLib$Dir>.Library"  :*|  Set up WimpLibÈA ò_WL_startup("WimpLib demo")  :*|  Register as multi_taskingÒ òiconbarÜ òwindowsæ  òiconsð òmenu_stringsú òmenu_set á Ý òiconbar") ò_WL_icon_install("!wimplib","","R"), iconbari%=iconbar%6 á@J Ý òwindowsTi wlinfow%=¤_WL_info_window("WimpLib","WIMP procedure library","© 1990 M. D. Wooding",Ã(¤_WL_version))^l demoinfow%=¤_WL_info_window("WimpLib demo","Example WimpLib application","© 1990 M. D. Wooding","1.01")hm targetw%=¤_WL_create_window(block%,512,512,"Redrawing",7,2,7,1,3,1,12,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0)rl rectw%=¤_WL_create_window(block%,512,512,"Rectangles",7,2,7,1,3,1,12,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0)|g iconw%=¤_WL_create_window(block%,512,512,"Icons",7,2,7,1,3,1,12,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0)ŷl rearrw%=¤_WL_create_window(block%,512,512,"Rearrange",7,2,7,1,3,1,12,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0)‘ áŒ¤ Ý òicons®Z dragi%=¤_WL_create_icon(iconw%,4,268,200,468,"Draggable",1,0,1,1,1,1,0,0,0,0,6,0,7,2)¸ Þ optont% 15  $optont%="Toggle switch"Ì  Þ optons% 15Ö  $optons%="Soptoff,opton"àb  optoni%=¤_WL_create_icon(iconw%,4,4,300,52,"optont%,15,optons%",1,1,0,0,1,1,0,1,0,0,7,0,7,1)ê Þ radios% 20ô! $radios%="Sradiooff,radioon"þ Þ radiot% 15 $radiot%="Radio buttons"e  radioi1%=¤_WL_create_icon(iconw%,4,56,300,104,"radiot%,15,radios%",1,1,0,0,1,1,0,1,0,0,7,1,7,1)f  radioi2%=¤_WL_create_icon(iconw%,4,108,300,152,"radiot%,15,radios%",1,1,0,0,1,1,0,1,0,0,7,1,7,1)&f  radioi3%=¤_WL_create_icon(iconw%,4,156,300,210,"radiot%,15,radios%",1,1,0,0,1,1,0,1,0,0,7,1,7,1)0 Þ writet% 20:  $writet%="Writeable icon"D_  writeti%=¤_WL_create_icon(iconw%,4,214,300,264,"writet%,20",1,0,1,1,1,1,0,1,0,0,15,0,7,0)N  Þ t% 10X  $t%="WimpLib"b  Þ s% 10l  $s%="S!WimpLib"v ã i%=0 ¸ 9€Y   void%=¤_WL_create_icon(rearrw%,0,0,210,100,"t%,10,s%",1,1,0,1,0,1,0,1,0,0,5,1,7,1)⇩ í“1 acc%=¤_WL_icon_rearrange(rearrw%,10,20,20,0)fi á¨² Ý òmenu_strings¼ Þ demosm% &100Æ   demosm$="Redraw|"Рޠegm% &100Ú5   egm$="Redraw|(>menusm%)Menus|Icons|Rearrange|"ä Þ infom% &100î:   infom$="(>demoinfow%)This demo|(>wlinfow%)WimpLib|"ø Þ mainm% &100C   mainm$="(>infom%)Info|(>demosm%)Demos|(>egm%)Examples|Quit|"    quitopt%=3 Þ menusm% &200    toggle$="(T)"*   Þ writei% 154   $writei%="Writeable">   menutpre$=""H   opt1$="(T)"R   opt2$=""\ áfp Ý òmenu_setz. ò_WL_menu_define("WimpLib",mainm$,mainm%)☓- ò_WL_menu_define("Demo",demosm$,demosm%)‰+ ò_WL_menu_define("Examples",egm$,egm%)—+ ò_WL_menu_define("Info",infom$,infom%)¢™ ò_WL_menu_define(menutpre$+"Menus",toggle$+"Toggle|(-)Ruled off|(Wwritei%,15)|(-)(S)Shaded|"+opt1$+"Option 1|"+opt2$+"Option2|",menusm%)¬ á¶ÀM ========================================================================Ê-                           Main poll loopÔÞ  Ý òpollè ê Ŷò õü)   î Ŷ ê ò_WL_report_error("WimpLib")   reason%=¤_WL_poll   È‰ reason% Ê     É 0$     É 1.     òredraw8     É 2B%     È− "Wimp_OpenWindow",,block%LM     ç block%!0=rearrw% … acc%=¤_WL_icon_rearrange(rearrw%,10,10,10,acc%)V     É 3`&     È− "Wimp_CloseWindow",,block%j     É 4t     É 5~     É 6⇦     òclick‹     É 7†     òend_drag¦     É 8°     É 9º     òmenuÄ   ËÎ  ý quit%Ø áâìM ========================================================================ö-                               Close down
  28934.  Ý òend È− "Wimp_CloseDown" à(2M ========================================================================<F Ý òredrawP ê window%Z window%=block%!0d+ È− "Wimp_RedrawWindow",,block% ¸ more%n È” more%x   ò_WL_origin(window%)ŵ   È‰ window% Ê…    É targetw%„     òredraw_target     É rectw%ª     òredraw_rect´   Ë¾   È’ 0,0È-   È− "Wimp_GetRectangle",,block% ¸ more%Ò ÎÜ áæð Ý òredraw_targetú ã gcol%=15 ¸ 8 ⇦ -1   æ gcol%    È•È‘ 256,256,(gcol%-7)*30 í" á,6 Ý òredraw_rect@ æ ³(8)+135J ÚT á^hM ========================================================================r| Ý òend_dragŷ ix%=block%!0‘ iy%=block%!4Œ ixx%=block%!8¤ iyy%=block%!12® ç iy%>=iyy% ☓ ix%>=ixx% …¸
  28935.    ï 7   áÌ ÍÖ x%=wx1%-xs%à y%=wy2%-ys%ê0 ò_WL_icon_move(iconw%,dragi%,ix%-x%,iy%-y%)ô/ È− "Wimp_ForceRedraw",iconw%,0,0,1279,1023þ á ò_WL_window_info(iconw%) block%!0=iconw%& block%!4=dragi%0! È− "Wimp_DeleteIcon",,block%: x%=wx1%-xs%D y%=wy2%-ys%N xx%=x%+(wx2%-wx1%)X yy%=y%+(wy2%-wy1%)bj dragi%=¤_WL_create_icon(iconw%,ix%-x%,iy%-y%,ixx%-x%,iyy%-y%,"Draggable",1,0,1,1,1,1,0,0,0,0,6,0,7,2)l/ È− "Wimp_ForceRedraw",iconw%,0,0,1279,1023v á€⇩M ========================================================================“fi Ý òclick¨$ ê window%,icon%,mx%,my%,button%² window%=block%!12¼ icon%=block%!16Æ mx%=block%!0Рmy%=block%!4Ú button%=block%!8ä È‰ window% Êî
  28936.   É -2ø,   òclick_iconbar(icon%,mx%,my%,button%)  É iconw% *   òclick_iconw(icon%,mx%,my%,button%)  É rearrw%  Ë* á4>" Ý òclick_iconbar(i%,x%,y%,b%)H  È‰ i% ÊR  É iconbari%\   È‰ b% Êf     É 2p;     È− "Wimp_CreateMenu",,mainm%,x%-64,140+44*quitopt%z   Ë☓ Ë‰ á—¢  Ý òclick_iconw(i%,x%,y%,b%)¬  È‰ i% Ê¶  É dragi%À    È‰ b% ÊÊ     É 4*16Ô       òstart_drag(5,"Fixed")Þ     É 1*16è!      òstart_drag(6,"Rubber")ò        Ëü Ë     á        M ========================================================================    $    .  Ý òmenu    8 lev1%=block%!0    B È‰ lev1% Ê    L      É 0    V      É 1    `   òmenu_demos(block%!4)    j      É 2    t   òmenu_eg(block%!4)    ~  É quitopt%    ⇦   quit%=¹    ‹ Ë    † òmenu_set    ¦ ò_WL_redo_menu(mainm%)    ° á    º    Ä Ý òmenu_demos(lev2%)    Î È‰ lev2% Ê    Ø      É 0    â4   ò_WL_open_window(rectw%,-5,-5,-5,-5,-5,-5,-1)    ì Ë    ö á
  28937. 
  28938.  
  28939.  Ý òmenu_eg(lev2%)
  28940.  È‰ lev2% Ê
  28941.       É 0
  28942. (6   ò_WL_open_window(targetw%,-5,-5,-5,-5,-5,-5,-1)
  28943. 2      É 1
  28944. <   òmenu_eg_menus(block%!8)
  28945. F      É 2
  28946. P4   ò_WL_open_window(iconw%,-5,-5,-5,-5,-5,-5,-1)
  28947. Z      É 3
  28948. d5   ò_WL_open_window(rearrw%,-5,-5,-5,-5,-5,-5,-1)
  28949. n Ë
  28950. x á
  28951. ŵ
  28952. … Ý òmenu_eg_menus(lev3%)
  28953. „ È‰ lev3% Ê
  28954.        É 0
  28955. ª3   ç toggle$="(T)" … toggle$="" ⇧ toggle$="(T)"
  28956. ´      É 1
  28957. ¾      É 2
  28958. È      É 3
  28959. Ò      É 4
  28960. Ü"   ç opt1$="" … È“ opt1$,opt2$
  28961. æ      É 5
  28962. ð"   ç opt2$="" … È“ opt1$,opt2$
  28963. ú Ë  á  M ======================================================================== " , Ý òstart_drag(type%,type$) 6 ò_WL_window_info(iconw%) @" ò_WL_icon_info(iconw%,dragi%) J wid%=ix2%-ix1% T hgt%=iy2%-iy1% ^ x%=wx1%-xs% h y%=wy2%-ys% r xx%=x%+512 | yy%=y%+512 ŷ block%!0=iconw% ‘ block%!4=5 Œ block%!8=ix1%+x% ¤ block%!12=iy1%+y% ® block%!16=ix2%+x% ¸ block%!20=iy2%+y%  block%!24=x% Ì block%!28=y% Ö block%!32=xx% à block%!36=yy% ê È− "Wimp_DragBox",,block% ô áÿonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!wimplib,€ pwwwwwwwwwwwwwwwpGtpwwDwwwwwwwwwwwwwwwwwwt"'r"""""""r"wwwtwwwwwwwwwwwwwwwtq"wwwtqwwwwtqwwwtqwwwtqwwwtq3wwwtqwwwwtq"wwwtwwwwwwwwwwwwwpwt"7333'r"wpwwwwwwwwwwwwwwðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ; Library definition file for WimpLib
  28964.  
  28965. Prefix: WL
  28966. Copyright: © 1990 M. D. Wooding
  28967. Purpose: To aid writing of multi-tasking programsderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  28968. ô ><WimpLib$Dir>.Library)ô  version 1.22 © 1991 Armen Software2ô  written by M. D. Wooding on 30 January 1991(2<Ý ¤_WL_version=1.22FPL========================================================================Z/                      General WIMP routinesdnInitialise window managerxŵÝ ò_WL_startup(taskname$)… ê task%„&Þ task% 4,block% &400,extra% &1000 $task%="TASK"ªEÈ− "Wimp_Initialise",200,!task%,taskname$ ¸ version%,task_handle%´ò_WL_mode_change¾extra%!0=20Èextra%!12=0Òextra%!16=&427C0Ü%È− "Wimp_SendMessage",17,extra%,0æÈ− "Wimp_Poll",,block%ðWL_registered%=£úáGet input/output"Ý ¤_WL_poll,ê reason%6 quit%=£@$È− "Wimp_Poll",,block% ¸ reason%Jȉ reason% ÊT  É 17,18^    È‰ block%!16 Êh      É 0r        quit%=¹|      É &400C1ŷ        ò_WL_mode_change‘      É &427C1Œ         ç WL_registered%=£ …¤           block%!12=block%!8®          block%!16=&427C0¸6          È− "Wimp_SendMessage",17,block%,block%!4          WL_registered%=¹Ì        ÍÖ      É &427C2à        WL_registered%=£ê      É &427C3ô2        $(block%+20)= (¤_WL_string(block%+20))þ        block%!12=block%!8        block%!16=&427C44        È− "Wimp_SendMessage",17,block%,block%!4        Ë&Ë0 =reason%:DClose down Debug etc.NXÝ ò_WL_close_downbÈ− "Wimp_CloseDown"láv€Send a message to Debug⇩“"Ý ò_WL_debug_message(message$)fiblock%!0=256¨block%!12=0²block%!16=&427C5¼$(block%+20)=message$Æ%È− "Wimp_SendMessage",17,block%,0ÐáÚäReport an errorîø"Ý ò_WL_report_error(taskname$)extra%!0=fl $(extra%+4)=ö$+È− "Wimp_ReportError",extra%,,taskname$ á*4(Set up variables after a mode change>HÝ ò_WL_mode_changeR,ê XEigFactor%,YEigFactor%,width%,height%\1È− "OS_ReadModeVariable",-1,4 ¸ ,,XEigFactor%f1È− "OS_ReadModeVariable",-1,5 ¸ ,,YEigFactor%p-È− "OS_ReadModeVariable",-1,11 ¸ ,,width%z.È− "OS_ReadModeVariable",-1,12 ¸ ,,height%☓,screenWidth%=((width%+1)<<XEigFactor%)-1‰.screenHeight%=((height%+1)<<YEigFactor%)-1—᢬#Get a control-terminated string¶ÀÝ ¤_WL_string(p%)Êê s$ÔÈ” ?p%>31Þ  s$+=½(?p%)è   p%+=1òÎü=s$ 7Store an icon data string, indirecting if necessary$,Ý ò_WL_icon_data(data$,iconData%,flags%).ê data%,sprite%8sprite%=flags%!0 € 1<<1Bç ©(data$)>12 …L  Þ data% ©(data$)+1V  $data%=data$`  iconData%!0=data%j  iconData%!4=-1+sprite%t  iconData%!8=©(data$)+1~  flags%!0=flags%!0+256⇦Ì‹  $iconData%=data$†Í¦á°ºL========================================================================Ä,                         Window routinesÎØCreate a windowâìÜÝ ¤_WL_create_window(b%,sx%,sy%,title$,tifg%,tibg%,wafg%,wabg%,scro%,scri%,caret%,move%,redraw%,pane%,nobounds%,scrlq_auto%,scrlq_debncd%,gcol%,at_back%,back%,close%,title%,toggle%,v_scrl%,h_scrl%,adj%,b_type%,tifl%)ö/ê flags%,handle%,len%,ind%,minwid%,command$È” Àtitle$,1)="{"
  28969. (  command$=Átitle$,2,§title$,"}")-2)$  title$=Átitle$,§title$,"}")+1)  È‰ Àcommand$,1) Ê(    É "1"2    minwid%=1<  ËFÎPflags%=1<<31ZBç tifl%=0 … tifl%=¤_WL_icon_flags(1,0,1,1,0,1,0,0,0,0,0,0,0,0)dç move% … flags%+=1<<1nç redraw% … flags%+=1<<4xç pane% … flags%+=1<<5ŵç nobounds% … flags%+=1<<6… ç scrlq_auto% … flags%+=1<<8„"ç scrlq_debncd% … flags%+=1<<9 ç gcol% … flags%+=1<<10ªç at_back% … flags%+=1<<11´ç back% … flags%+=1<<24¾ç close% … flags%+=1<<25Èç title% … flags%+=1<<26Òç toggle% … flags%+=1<<27Üç v_scrl% … flags%+=1<<28æç adj% … flags%+=1<<29ðç h_scrl% … flags%+=1<<30ú
  28970. b%!0=0
  28971. b%!4=0 b%!8=sx%b%!12=sy%" b%!16=0,b%!20=sy%6 b%!24=-1@b%!28=flags%Jb%?32=tifg%Tb%?33=tibg%^b%?34=wafg%hb%?35=wabg%rb%?36=scro%|b%?37=scri%ŷb%?38=caret%‘ b%?39=0Œ b%!40=0¤ b%!44=0®b%!48=sx%¸b%!52=sy%Âb%!56=tifl%Ìb%!60=b_type%<<12Ö b%!64=1àb%!68=minwid%êç tifl% € 2^8 …ô%  ind%= (Àtitle$,§title$,",")-1))þ%  len%= (Átitle$,§title$,",")+1))  b%!72=ind%  b%!76=-1  b%!80=len%&Ì0,  ò_WL_icon_data(title$,b%+72,block%+56):ÍD b%!84=0N(È− "Wimp_CreateWindow",,b% ¸ handle%X =handle%blLCreate window (pre-RISC OS version - retained for compatibility reasons)v€…Ý ¤_WL_o_create_window(b%,sx%,sy%,title$,tifg%,tibg%,wafg%,wabg%,scro%,scri%,caret%,tbar%,move%,vscrl%,hscrl%,auto%,bound%,clbox%,tifl%)⇩¹=¤_WL_create_window(b%,sx%,sy%,title$,tifg%,tibg%,wafg%,wabg%,scro%,scri%,caret%,move%,auto%,0,bound%,0,0,0,0,clbox%,clbox%,tbar%,vscrl%*hscrl%,vscrl%,hscrl%,vscrl% ☓ hscrl%,3,tifl%“fi(Load a template from a template file¨²=Ý ¤_WL_load_temp(temp$,ø start_own%,end_own%,spritearea%)¼ê handle%,i%,start%Æ$extra%=temp$ÐOÈ− "Wimp_LoadTemplate",,block%,start_own%,end_own%,-1,extra% ¸ ,,start_own%Úblock%!64=spritearea%äç block%!84<>0 …î  ã i%=1 ¸ block%!84ø"    start%=block%+88+32*(i%-1)-    ç (start%!16 € 259)=258 … start%!24=1   íÍ ,È− "Wimp_CreateWindow",,block% ¸ handle%* =handle%4>&Create an info window (a la PAINT)HR7Ý ¤_WL_info_window(name$,purpose$,author$,version$)\ê handle%f<Þ titlei% 20,name% 40,purpose% 40,author% 40,version% 40p!$titlei%="About this program"z$name%=name$☓$purpose%=purpose$‰$author%=author$—$version%=version$¢ohandle%=¤_WL_create_window(block%,700,212,"titlei%,20",7,2,7,1,3,1,12,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,&12D)¬Oò_WL_create_icon(handle%,4,4,180,52,"Version:",1,0,0,0,0,0,0,0,1,0,0,0,7,1)¶Tò_WL_create_icon(handle%,184,4,696,52,"version%,40",1,0,1,1,1,1,0,1,0,0,0,0,7,0)ÀPò_WL_create_icon(handle%,4,56,180,104,"Author:",1,0,0,0,0,0,0,0,1,0,0,0,7,1)ÊUò_WL_create_icon(handle%,184,56,696,104,"author%,40",1,0,1,1,1,1,0,1,0,0,0,0,7,0)ÔRò_WL_create_icon(handle%,4,108,180,156,"Purpose:",1,0,0,0,0,0,0,0,1,0,0,0,7,1)ÞWò_WL_create_icon(handle%,184,108,696,156,"purpose%,40",1,0,1,1,1,1,0,1,0,0,0,0,7,0)èPò_WL_create_icon(handle%,4,160,180,208,"Title:",1,0,0,0,0,0,0,0,1,0,0,0,7,1)òTò_WL_create_icon(handle%,184,160,696,208,"name%,40",1,0,1,1,1,1,0,1,0,0,0,0,7,0)ü =handle%        Open a window        $@Ý ò_WL_open_window(hand%,x1%,y1%,x2%,y2%,hscrl%,vscrl%,pos%)    .block%!0=hand%    8$È− "Wimp_GetWindowState",,block%    Bç x1%<>-5 … block%!4=x1%    Lç y1%<>-5 … block%!8=y1%    Vç x2%<>-5 … block%!12=x2%    `ç y2%<>-5 … block%!16=y2%    j#ç hscrl%<>-5 … block%!20=hscrl%    t#ç vscrl%<>-5 … block%!24=vscrl%    ~ç pos%<>-5 … block%!28=pos%    ⇦ È− "Wimp_OpenWindow",,block%    ‹á    †    ¦Get information on a window    °    ºÝ ò_WL_window_info(hand%)    Äblock%!0=hand%    Î$È− "Wimp_GetWindowState",,block%    Øwx1%=block%!4    âwy1%=block%!8    ìwx2%=block%!12    öwy2%=block%!16
  28972. xs%=block%!20
  28973.  
  28974. ys%=block%!24
  28975. behind%=block%!28
  28976. flags%=block%!32
  28977. (á
  28978. 2
  28979. <'Set origin to bottom left of window
  28980. F
  28981. PÝ ò_WL_origin(hand%)
  28982. Zò_WL_window_info(hand%)
  28983. dÈ’ wx1%-xs%,wy2%-ys%
  28984. ná
  28985. x
  28986. ŵ#Set mouse rectangle to a window
  28987. …
  28988. „Ý ò_WL_rectangle(win%)
  28989.  block%!0=win%
  28990. ª&È− "Wimp_GetWindowOutline",,block%
  28991. ´FÈ– È› block%!4,block%!8,block%!12-block%!4-2,block%!16-block%!8-44
  28992. ¾á
  28993. È
  28994. ÒClose a window
  28995. Ü
  28996. æÝ ò_WL_close(win%)
  28997. ðblock%!0=win%
  28998. ú!È− "Wimp_CloseWindow",,block% á  $Close a pane and its tool window " ,"Ý ò_WL_close_pane(tool%,pane%) 6ò_WL_close(tool%) @ò_WL_close(pane%) Já T ^4Open a pane and its tool window to top of screen h r"Ý ò_WL_front_pane(tool%,pane%) |0ò_WL_open_window(pane%,-5,-5,-5,-5,-5,-5,-1) ŷ3ò_WL_open_window(tool%,-5,-5,-5,-5,-5,-5,pane%) ‘á Œ ¤,Move a pane after an Open_Window_Request ® ¸!Ý ò_WL_move_pane(tool%,pane%) Â@ê wx1%,wy1%,wx2%,wy2%,xs%,ys%,pos%,pw%,ph%,px%,py%,psx%,pys% ÌÈ“ extra%,block% Öò_WL_window_info(pane%) àpw%=wx2%-wx1% êph%=wy2%-wy1% ô px%=wx1% þ py%=wy1% psx%=xs%  psy%=ys% ò_WL_window_info(tool%) &È“ extra%,block% 0extra%!0=pane% : extra%!4=block%!4+(px%-wx1%) D extra%!8=block%!8+(py%-wy1%) Nextra%!12=extra%!4+pw% Xextra%!16=extra!8+ph% bextra%!20=pxs% lextra%!24=pys% vextra%!28=block%!28 € È− "Wimp_OpenWindow",,extra% ⇩block%!28=pane% “ È− "Wimp_OpenWindow",,block% fiá ¨ ²L======================================================================== ¼*                         Icon routines Æ Ð$Create an icon and return handle Ú äŶÝ ¤_WL_create_icon(hand%,x1%,y1%,x2%,y2%,data$,text%,sprite%,bord%,horz%,vert%,fill%,help%,indir%,rtj%,rsel%,btype%,esg%,fg%,bg%) îGê flags%,len%,ind%,data1$,data2$,data3$,ist$,handle%,command$,anti% øÈ” Àdata$,1)="{"&  command$=Ádata$,2,§data$,"}")-2) !  data$=Ádata$,§data$,"}")+1)  È‰ Àcommand$,1) Ê     É "F"*    anti%= (Ácommand$,2))4  Ë>ÎHmflags%=¤_WL_icon_flags(text%,sprite%,bord%,horz%,vert%,fill%,help%,indir%,rtj%,rsel%,btype%,esg%,fg%,bg%)Rç anti% …\7  flags%=flags% € %00000000111111111111111111111111f  flags%+=anti%<<24pÍzblock%!0=hand%☓block%!4=x1%‰block%!8=y1%—block%!12=x2%¢block%!16=y2%¬block%!20=flags%¶ç §data$,",") …À"  data1$=Àdata$,§data$,",")-1)Ê!  data$=Ádata$,§data$,",")+1)Ô  ç §data$,",") …Þ$    data2$=Àdata$,§data$,",")-1)è$    data3$=Ádata$,§data$,",")+1)ò  Ìü    data2$=data$    data3$=""  ÍÌ$  data1$=data$.  data2$=""8  data3$=""BÍL&ist$=Ã(indir%)+Ã(sprite%)+Ã(text%)Vȉ ist$ Ê`  É "000"j  É "001"t2    ò_WL_icon_data(data1$,block%+24,block%+20)~  É "010"⇦2    ò_WL_icon_data(data1$,block%+24,block%+20)‹  É "011"†2    ò_WL_icon_data(data1$,block%+24,block%+20)¦  É "100"°  É "101"º    block%!24= (data1$)Ä    block%!32= (data2$)Î9    ç data3$<>"" … block%!28= (data3$) ⇧ block%!28=-1Ø  É "110"â    block%!24= (data1$)ì    block%!32= (data2$)ö8    ç data3$<>"" … block%!28= (data3$) ⇧ block%!28=1  É "111"
  28999.     block%!24= (data1$)    block%!32= (data2$)    block%!28= (data3$)(Ë2Í<*È− "Wimp_CreateIcon",,block% ¸ handle%F =handle%PZ3Create an icon (for compatibility reasons only)dnŶÝ ò_WL_create_icon(hand%,x1%,y1%,x2%,y2%,data$,text%,sprite%,bord%,horz%,vert%,fill%,help%,indir%,rtj%,rsel%,btype%,esg%,fg%,bg%)x ê void%ŵ⇨void%=¤_WL_create_icon(hand%,x1%,y1%,x2%,y2%,data$,text%,sprite%,bord%,horz%,vert%,fill%,help%,indir%,rtj%,rsel%,btype%,esg%,fg%,bg%)…á„ Get icon flagsª´hÝ ¤_WL_icon_flags(text%,sprite%,bord%,horz%,vert%,fill%,help%,indir%,rtj%,rsel%,btype%,esg%,fg%,bg%)¾ ê flags%È flags%=0Òç text% … flags%+=1Üç sprite% … flags%+=2æç bord% … flags%+=4ðç horz% … flags%+=8úç vert% … flags%+=16ç fill% … flags%+=32ç help% … flags%+=128ç indir% … flags%+=256"ç rtj% … flags%+=512,ç rsel% … flags%+=10246flags%+=btype%<<12@flags%+=esg%<<16Jflags%+=fg%<<24Tflags%+=bg%<<28^ =flags%hr!Update icon flags/redraw icon|ŷ1Ý ò_WL_update_icon(hand%,icon%,mask%,nflags%)‘block%!0=hand%Œblock%!4=icon%¤block%!8=mask%®block%!12=nflags%¸"È− "Wimp_SetIconState",,block%ÂáÌ ÖSelect (invert) iconàê(Ý ò_WL_select_icon(win%,icn%,onoff%)ô0ò_WL_update_icon(win%,icn%,onoff%<<21,1<<21)þá"Shade (make unselectable) icon&'Ý ò_WL_shade_icon(win%,icn%,onoff%)00ò_WL_update_icon(win%,icn%,onoff%<<22,1<<22):áDN!Toggle an icon's shaded stateXb#Ý ò_WL_toggle_shade(win%,icon%)l(ò_WL_update_icon(win%,icon%,1<<22,0)vá€⇩Get icon information“fiÝ ò_WL_icon_info(hand%,in%)¨block%!0=hand%²block%!4=in%¼"È− "Wimp_GetIconState",,block%Æix1%=block%!8Ðiy1%=block%!12Úix2%=block%!16äiy2%=block%!20îflags%=block%!24øá #Find out if an icon is selected Ý ¤_WL_selected(win%,icn%)*block%!0=win%4block%!4=icn%>"È− "Wimp_GetIconState",,block%H=(block%!24>>21) € 1R\Drag an iconfp$Ý ò_WL_get_icon(w%,i%,dragType%)z ê x%,y%☓ò_WL_window_info(w%)‰ò_WL_icon_info(w%,i%)—x%=wx1%-xs%¢y%=wy2%-ys%¬extra%!0=0¶extra%!4=dragType%Àextra%!8=ix1%+x%Êextra%!12=iy1%+y%Ôextra%!16=ix2%+x%Þextra%!20=iy2%+y%èextra%!24=0òextra%!28=0üextra%!32=screenWidth%extra%!36=screenHeight%È− "Wimp_DragBox",,extra%á$.1Find the address of an icon's indirected data8BÝ ¤_WL_indir(win%,icon%)L
  29000. ê ptr%Vblock%!0=win%`block%!4=icon%j"È− "Wimp_GetIconState",,block%tptr%=block%!28~len%=block%!36⇦    =ptr%‹†Install icon on icon bar¦°*Ý ò_WL_icon_install(icon$,text$,side$)ºAê side%,Text%,Sprite%,textf%,x%,y%,m%,sx%,sy%,x0%,x1%,y0%,y1%Ä%ç side$="L" … side%=-2 ⇧ side%=-1Î$ç text$="" … textf%=0 ⇧ textf%=1Ødata$=icon$â/È− "Wimp_SpriteOp",40,,icon$ ¸ ,,,x%,y%,,m%ì)È− "OS_ReadModeVariable",m%,4 ¸ ,,sx%ö)È− "OS_ReadModeVariable",m%,5 ¸ ,,sy%x%=x%<<sx%
  29001. y%=y%<<sy%    x0%=0
  29002. x1%=x%(    y0%=02
  29003. y1%=y%<ç textf% …F  Þ Text% ©(text$)P  Þ Sprite% ©(icon$)+1Z  $Text%=text$d  $Sprite%="S"+icon$n&  data$="Text%,LEN(text$),Sprite%"x  y0%=-16ŵ  y1%=y%+34…)  ç x1%<©(text$)*16 … x1%=©(text$)*16„Í `iconbar%=¤_WL_create_icon(side%,x0%,y0%,x1%,y1%,data$,textf%,1,0,1,0,0,0,textf%,0,0,3,0,7,1)ªá´¾ Move an icon around a windowÈÒ%Ý ò_WL_icon_move(win%,icn%,x%,y%)Üê data1%,data2%,data3%æò_WL_icon_info(win%,icn%)ðextra%!0=win%úextra%!4=icn% È− "Wimp_DeleteIcon",,extra%data1%=block%!28data2%=block%!32"data3%=block%!36,block%!0=win%6block%!4=x%@block%!8=y%Jblock%!12=ix2%-ix1%+x%Tblock%!16=iy2%-iy1%+y%^block%!20=flags%hblock%!24=data1%rblock%!28=data2%|block%!32=data3%ŷ*È− "Wimp_CreateIcon",,block% ¸ handle%‘ጤ.Reorganise icons in a window (as in FILER)®¸6Ý ¤_WL_icon_rearrange(win%,icns%,hgap%,vgap%,iaX%)Â[ê windoww%,windowh%,iconw%,iconh%,across%,maxacc%,exact%,w%,iconx%,icony%,ix%,iy%,open%Ìò_WL_window_info(win%)Öopen%=flags% € 1<<16àç icns%=0 …ê  block%!0=0ô  block%!4=0þ  block%!8=300  block%!12=iconh%+2*vgap%%  È− "Wimp_SetExtent",win%,block%;  ç open% … ò_WL_open_window(win%,-5,-5,-5,-5,-5,-5,-5)&  =00Í:ò_WL_icon_info(win%,0)Dò_WL_window_info(win%)Nwindoww%=wx2%-wx1%Xwindowh%=wy2%-wy1%biconw%=ix2%-ix1%liconh%=iy2%-iy1%v%across%=windoww% Ŵ (hgap%+iconw%)€ç across%=0 … across%=1⇩#maxacc%=(1279 Ŵ (hgap%+iconw%))“#ç maxacc%>icns% … maxacc%=icns%fiç iaX%=across% … =iaX%¨"exact%=-((icns% ◰ across%)<>0)²#w%=maxacc%*(hgap%+iconw%)+hgap%¼ç 1279<w% … w%=1279Æç w%<300 … w%=300Ðblock%!0=0Úblock%!4=0äblock%!8=w%î:windowh%=(icns% Ŵ across%+exact%)*(vgap%+iconh%)+vgap%øblock%!12=windowh%#È− "Wimp_SetExtent",win%,block% ã icon%=0 ¸ icns%  iconx%=icon% ◰ across%   icony%=icon% Ŵ across%*%  ix%=hgap%+iconx%*(iconw%+hgap%)44  iy%=windowh%-(vgap%+(icony%+1)*(iconh%+vgap%))>(  ò_WL_icon_move(win%,icon%,ix%,iy%)HíR4È− "Wimp_ForceRedraw",win%,0,0,windoww%,windowh%\9ç open% … ò_WL_open_window(win%,-5,-5,-5,-5,-5,-5,-5)f =across%pzL========================================================================☓-                            Menu routines‰—Define menu block¢¬*Ý ò_WL_menu_define(title$,text$,menu%)¶wê height%,gap%,tfgcol%,tbgcol%,wafgcol%,wagbgcol%,ptr%,flags%,item$,parm$,sub1%,sub2%,sub3%,w%,maxlen%,sub%,lenset%À'ç ©(title$)>12 … title$=Àtitle$,12)Êheight%=44Ô
  29004. gap%=0Þtfgcol%=7ètbgcol%=2òwafgcol%=7üwabgcol%=0È” §title$,"(")%  parm$=Átitle$,2,§title$,")")-2)$  title$=Átitle$,§title$,")")+1)$  È‰ Àparm$,1) Ê.    É "H"8      height%= (Áparm$,2))B    É "G"L      gap%= (Áparm$,2))V    É "C"`,      tfgcol%= (Áparm$,2,§parm$,",")-2))j*      tbgcol%= (Áparm$,§parm$,",")+1))t    É "c"~-      wafgcol%= (Áparm$,2,§parm$,",")-2))⇦+      wabgcol%= (Áparm$,§parm$,",")+1))‹    É "W"†      maxlen%= (Áparm$,2))¦      lenset%=¹°  ËºÎÄ$menu%=title$Îmenu%?12=tfgcol%Ømenu%?13=tbgcol%âmenu%?14=wafgcol%ìmenu%?15=wabgcol%ömenu%!20=height%menu%!24=gap%
  29005. ptr%=menu%+4õ  ptr%+=24(!  item$=Àtext$,§text$,"|")-1)2!  text$=Átext$,§text$,"|")+1)<  ptr%!0=0F  ptr%!4=-1P  ptr%!8=&07000401Z
  29006.   w%=£d  õn    ç Àitem$,1)="(" …x'      parm$=Áitem$,2,§item$,")")-2)ŵ%      item$=Áitem$,§item$,")")+1)…      È‰ Àparm$,1) Ê„        É "T"           ptr%!0+=1ª        É "-"´          ptr%!0+=2¾        É "W"È.          sub1%= (Áparm$,2,§parm$,",")-2))Ò)          parm$=Áparm$,§parm$,",")+1)Ü          ç §parm$,",") …æ.            sub2%= (Àparm$,§parm$,",")-1))ð.            sub3%= (Áparm$,§parm$,",")+1))ú          Ì            sub2%= (parm$)            sub3%=-1          Í"          ptr%!12=sub1%,          ptr%!16=sub3%6          ptr%!20=sub2%@          ptr%!8+=&100J          ptr%!0+=4T9          ç sub2%>maxlen% € lenset%=£ … maxlen%=sub2%^          w%=¹h        É "I"r.          sub1%= (Áparm$,2,§parm$,",")-2))|)          parm$=Áparm$,§parm$,",")+1)ŷ          ç §parm$,",") …‘.            sub2%= (Àparm$,§parm$,",")-1))Œ.            sub3%= (Áparm$,§parm$,",")+1))¤          Ì®            sub2%= (parm$)¸            sub3%=-1          ÍÌ          ptr%!12=sub1%Ö          ptr%!16=sub3%à          ptr%!20=sub2%ê          ptr%!8+=&100ô9          ç sub2%>maxlen% € lenset%=£ … maxlen%=sub2%þ          w%=¹        É ">"          sub%= (Áparm$,2))          ptr%!4=sub%&        É "!"          sub%= (Áparm$,2)):          ptr%!4=sub%D          ptr%!0+=1<<3N        É "S"X          ptr%!8+=2^22b        É "F"l!          flags%= (Áparm$,2))v          ptr%!8=flags%€       Ë⇩        Ì“      parm$=""fi        Í¨  ý parm$=""²3  ç w%=£ … ò_WL_icon_data(item$,ptr%+12,ptr%+8)¼7  ç lenset%=£ € ©(item$)>maxlen% … maxlen%=©(item$)Æý text$=""Ðmenu%!16=12+16*maxlen%Úptr%!0+=&80äáîø0Keep a menu on-screen if clicked with ADJUST Ý ò_WL_redo_menu(menu%)$È− "Wimp_GetPointerInfo",,extra% .ç extra%!8=1 … È− "Wimp_CreateMenu",,menu%*áÿorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     'Nick!BootEëÿÿl=õ⇧⇩y3!HelpEÿÿÿ⇩¹÷⇧þJz3!RunEëÿÿts‡…Ay3!SpritesEùÿÿŷ³n⇨$y3!Sprites22EùÿÿãÕl⇨ä    y3HelpFilesGýÿÿãíÙà{8ModSourceEûÿÿt⇦әί|3MoreHelpEúÿÿ2…Ó™} y3Vsn100EÿÿÿËýHŴ3!BootEëÿÿl=õ⇧⇩y3!HelpEÿÿÿ⇩¹÷⇧þJz3!RunEëÿÿts‡…Ay3!SpritesEùÿÿŷ³n⇨$y3!Sprites22EùÿÿãÕl⇨ä    y3HelpFilesGýÿÿãíÙà{8ModSourceEûÿÿt⇦әί|3MoreHelpEúÿÿ2…Ó™} y3Vsn100EÿÿÿËýHŴ3!MoreHelp!MoreHelp'Nick½|
  29007. | !Boot file for More Help
  29008. |
  29009. Set MoreHelp$Dir <Obey$Dir>
  29010. Set MoreHelp$Path <MoreHelp$Dir>.HelpFiles.
  29011. IconSprites <MoreHelp$Dir>.!Spritess     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  29012. | !Run file for More Help
  29013. |
  29014. Set MoreHelp$Dir <Obey$Dir>
  29015. Set MoreHelp$Path <MoreHelp$Dir>.HelpFiles.
  29016. IconSprites <MoreHelp$Dir>.!Sprites
  29017. RMEnsure MoreHelp 1.00 Set MoreHelp$Module <MoreHelp$Dir>.MoreHelp
  29018. RMEnsure MoreHelp 1.00 RMLoad <MoreHelp$Dir>.MoreHelp
  29019. Set Alias$MoreHelp_DelayTask Run <MoreHelp$Dir>.DelayTask %%*0onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     (€!morehelp,, ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦pwww⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦x»»»G☓⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦x»»»G☓⇦⇦⇦€⇦⇦⇦⇦pwww»»»www⇦€⇦⇦⇦p»»»»»»»»»G☓€⇦p»»»»»»»»»G☓€⇦⇦⇦x»»»»»»»»»G☓€⇦⇦€xwww»»»wwwG☓€⇦⇦⇦⇦HDt»»»GDDD☓€⇦⇦€x»»»G☓⇦⇦⇦€⇦⇦€xwwwG☓⇦⇦⇦€⇦⇦⇦€⇦⇦HDDD☓⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦@DD—sm!morehelp,, ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦»»⇦⇦⇦⇦⇦⇦⇦»»⇦⇦⇦»»»»»»»»»»»»⇦€⇦»»⇦⇦⇦»»⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     èÔ!morehelp!,,⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwww⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦xwww·»»{www⇦⇦⇦⇦⇦p»»»»»»»»»»G⇦⇦⇦⇦p»»»»»»»»»»G⇦⇦⇦p»»»»»»»»»»G⇦⇦p»»»»»»»»»»G⇦⇦⇦⇦p»»»»»»»»»»G⇦⇦⇦p»»»»»»»»»»G⇦⇦⇦pwww·»»{wwwG⇦⇦⇦DDD·»»{DDDD⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦€⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦€⇦⇦⇦·»»{☓⇦⇦⇦⇦⇦€⇦·»»{☓⇦⇦⇦⇦⇦⇦wwww☓⇦⇦⇦⇦⇦@DDD☓⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦sm!morehelp,,⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦»»⇦⇦⇦⇦⇦⇦»»⇦⇦⇦⇦⇦⇦⇦»»⇦⇦⇦⇦€»»⇦⇦⇦»»»»»»»»»»»»⇦⇦»»»»»»⇦»»»»»»⇦€⇦»»⇦⇦⇦⇦»»⇦⇦⇦⇦»»⇦⇦⇦»»⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦erWorks     WonderWorks     ,Xt…” @-é ã< ãï …å'ë?ë,ŵâ0 ã0ŵå €ýè@-é †å ãï:ëw뀽è\Qð°@-é\Qã
  29020. €ýèMoreHelpMore help    1.00 (27 Aug 1994)  @-é ã á` •âX0flå ïj€ýè@½èâ‰ã ãð°á@-éB•â4•âŴâ²  ã0 ã@ ã#ïRã ŵ •Å•Â
  29021.  Ã BÂÀÇ€ýè3RMEnsure MoreHelp 0 RMLoad System:Modules.MoreHelp
  29022. This is to fill out the buffer a bit in case the path is longer than that (which it should be). It will also intrigue people dissassembling the module ;). ADMoreHelp$ModuleMoreHelp_AddTasko t¼    µjMoreHelp_AddTaskAndHelpÜ    µjMoreHelp_RemoveTaskü    °Ð adds a task(More Help's list of tasks. From then onwards, More Help will provide interactive help for that task.It takes two $s:  oftask, as seen inTask Manager window,the full   ofmessages .task  > <message   > adds a task(More Help's list of tasks,makes it respond(interactive help. From then onwards, More Help will provide interactive help for that task.Use  rather than MoreHelp_AddTask if,only if, MoreHelp_AddTask doesn't work.It takes two $s:  oftask, as seen inTask Manager window,the full   ofmessages .task  > <message   > removes a task(More Help's list of tasks. From then onwards, More Help will no longer provide interactive help for that task. It takes one $,  oftask, as seen inTask Manager window,as handed(MoreHelp_AddTask.task  > addstwo interactive help messages(the last registered task's list of messages (i.e.last one passed(MoreHelp_AddTask).Only use this command iftask)not responding(the interactive help messages, i.e. you placecursor over its icon, windows or menusnothing happens. If you use this command on a task that *does* respond(help messages, you may well find it cannot e.g. load s, open submenus, or respond(desktop saves. You have been warned. waits untilspecified task starts up, then calls MoreHelp_AddTask withsupplied task  message . It will not add interactive help messages.Use this command in an applica    's !Run , beforeapplica     itself)run.task  > <message   > waits untilspecified task starts up, then calls MoreHelp_AddTask withsupplied task  message . It will also add interactive help messages.Use this command in an applica    's !Run , beforeapplica     itself)run.task  > <message   >op@-é  ã<…âÐç QãºÃç ŵâ Rãøÿÿº ãÃç€ýè-é ãLå ãXåTå½èê-é ãlålå ã|å½è ê-é ã‘å ã“å½èê-é ã¬å¬å½è?P-éÀ†å¼ åRãÑÿÿ   ã0 ãÐç"Qã0◰âSã€âøÿÿºêÌç Q㺠ŵòÿÿSã ŵïÿÿ
  29023.  ãÌç€à •å ãP ã›•â  ãŴ&ï    •â@’åŵëUã
  29024. PãõÿÿÊPåPã
  29025. ?P½èâ‰ãs•âð°áŵ•â0’åxåQã
  29026. ê†å€ áA/…âŴà0ŴåFë Ŵå€â…åzë?‘ýè -鬅Ⰼå[ã
  29027. A¯…â⇧±⇩à ŒåRá ½óÿÿ
  29028.  ⇩â Záøÿÿº ½èäÿÿê?P-é -鬅Ⰼå[ã
  29029. A¯…â⇧±⇩à ŒåRá
  29030.  ⇩â Záùÿÿº ½è?P½èâ‰ãü•âð°á ½è?P½èâ‰ãD•âð°á«ë°Kâ
  29031. [á
  29032. 0Œå0⇩å 0Œå0⇩å ⇩â Záøÿÿº¬…â0Œå0Câ0⇩å ½èÅÿÿêThere are no tasks to remove!   @-élflåÑå PãŴûÿÿ
  29033. X•å  ãÑçPã ŵûÿÿ0ŵâ ãï8 •å ŵâ,flå0 ãÑçÂçPã0◰úÿÿflå€â  ãï flå €ýèTask not found @-éP ã  ãÔçÜçPáPãP  ŵ÷ÿÿ€½èMore help_M@-éëA&ï€ýè@-éëC&ï€ýè4OâY•â   á@flåð á¿ÿûÿ@-éëA&ï€ýè@-éëC&ï€ýèlOâ•â0 ã@flåð áÿÿýÿÃÂP-éåPã ã åë0’å0@åSá4@S@@åSáK
  29034. 0’åeÿÿë‘ýè\-éðOâ0•â  ã,0å@&ï0å0å0 å00å  áÏï ãP åçï†ýè@-é“•âöïdådåd åd0åB&ï€ýè\-éÀ†å¬…â°ŒåA¯…â⇧±⇩àë ⇩â Záûÿÿº†ýè@-é0Œå¥ÿÿëŒåï Œå ãï€ýèP-éPã
  29035. Pã0’å@flåSá>
  29036. ‘ýè ’åRã Rõÿÿ  ’å`!•åòÿÿê?@-é4•å0ŴâL…âP ã Ôå"Rã@☓Óç Ôç QãºQáPŶâ÷ÿÿêå0’å|1å …âÀå ÀOâ®þÿë(ÀOâäåPã ãôå?@½è“ÿÿê@-é ãòï  á1†åA…â◰1Ŵà@’åTá
  29037. ŴâQáùÿÿº ã€ýè’å€ýèðå ’åü å÷-ééÿÿë7ë6•â !å ŵâè0 ã@ ãP ã` ãp ãï÷½è0!å0◰â0Ãã0ŵåLåŵå‹å ŵå ã á\!åçï ã@â¡ÿÿêIcon barTra Oâ0 ã0å0àã ’åRá
  29038. 0 ŵâ9Rã ŵÂZRã ŵÂzRãE ŵ ÀåŴâ€âñÿÿêÿ  ã Àå`å ê@-éå ã…âôï’å  ã BâPáßÿÿ ã‘å2å ›å•å$ ›å"•å0àãQáÐ0O€ë⇩/•âŵà6ë:0 ã0ÁåŴâ0 ã@Òç:Tã@ @Áç0◰ùÿÿ å€ýè÷@-é`@…âP ã` ãpÓç,Wã.p (Wã{p )Wã}p :Wã;p ?Wã!p /Wã\p  WãpÄÇ`ŷÂPŶ¢íÿÿª:p ãpÄç`ŷâUp ãpÄç`ŷâKp ãpÄç`ŷâp ãpÄç,å á.•â 0 ã@ ãP ã` ãp ãï÷€ýè@-é0ÒåUSã0ÒKSÀåPã Ðå0àãQá~?O6Äÿÿë,•âŵàM  ã ÁåŴâ%ê ãå¬flå àãPá
  29039. —flå àãPá  ÖW   ÁŴ-éÈ…âtflåŴåhflåŴåÎï’å½è&â\åPã
  29040. RãS   ÁŴê%âRãG   ÁŴ€ýèª?Oâ ÓåÿRããÿÿ
  29041.  ÁåŴâ0◰âøÿÿê@-é…å  áŴãÌïÁã<0’å<âSãL0Ŵâ0›€ýè   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     More Help version 1.00
  29042. © Sam Kington 27th August 1994
  29043. This program is freeware, *not* public domain – i.e., I retain copyright (see
  29044. “Boring legal message”).
  29045. This module will only work with RISC OS 3 or later.
  29046.  
  29047. What this program does
  29048. **********************
  29049.  
  29050.    This program, or more accurately this module, allows you to add
  29051. interactive help to programs that don’t usually give interactive help. The
  29052. actual mechanism is quite intricate, but basically you tell the program to
  29053. catch all the requests for interactive help going to a particular help, and
  29054. to reply with messages contained in a supplied text file. The actual format of
  29055. the text file is available later on in this file.
  29056.  
  29057. Why is this useful?
  29058. *******************
  29059.  
  29060.    First of all, it allows you to quite easily add interactive help to
  29061. programs – which is undeniably a good thing, especially for new users, but
  29062. also for people trying out your work of art in a hurry, and ready to discard
  29063. it if they can't immediately understand how it works, which is the case with
  29064. most people going through their new discs full of freeware.
  29065.  
  29066.    Secondly, as both code and messages are held in the module area it doesn't
  29067. eat up your precious WimpSlot. If you're struggling to keep something just
  29068. inside a 32K WimpSlot, for instance, you don't want the WimpSlot to double to
  29069. 64K just so you can have these nice helpful messages. This doesn’t mean
  29070. you’re not using the memory – you are, there’s no miracle – but it’s slightly
  29071. less wasteful.
  29072.  
  29073.    Thirdly, the help is held in a quite easily-edited text file and can be
  29074. removed by commenting-out a few lines in the !Run file. Other interactive
  29075. help providers like the Interface or WimpExt modules expected the help text
  29076. to be held in the validation strings, which meant the help strings weren't as
  29077. long as they could have been, and also made the Templates file positively
  29078. massive, which means a big buffer in application space - and bang goes the
  29079. WimpSlot again.
  29080.  
  29081.    Fourthly, you can add interactive help to programs without changing a
  29082. single line of code (apart from the !Run file, and they get changed quite a
  29083. bit anyway) - you don’t have to re-compile or re-crunch them, you just have
  29084. to write the file. This also means that people who are fed up with there not
  29085. being interactive help can add it themselves, then send it off to you for you
  29086. to distribute.
  29087.  
  29088.    Finally, as this is a module, available to all programs, the code for
  29089. decoding interactive help messages isn’t duplicated across programs – and
  29090. the module is small enough for people not to worry about having it loaded.
  29091. The more programs use it, the larger the savings are – so distribute it like
  29092. crazy, use it in your own programs, and make More Help files for programs that
  29093. don’t provide interactive help!
  29094.  
  29095.    Evangelistic mode off ;)
  29096.  
  29097. The message file format
  29098. **********************
  29099.  
  29100.    If you want to know how the program works, for instance so you can use it
  29101. on your own programs or add help messages to other people’s, you’ll need to
  29102. know about Message files, as used by MessageTrans. Skip this section if you
  29103. already do, or if you feel confident enough to pick it up as you go along;
  29104. bear in mind, however, that the “How it works” relies to some extent on you
  29105. having read this section.
  29106.  
  29107.    If you don’t know what message files look like, the best way to find out is
  29108. to look at Text files called Messages or something similar, inside application
  29109. directories. A good place to start is the Resources filing system,
  29110. Resources:$.Resources (Choose “Open $” from the Apps icon bar menu, open the
  29111. directory Resources) – all the directories contain Messages files. ADFSFiler
  29112. in particular contains wildcarded tokens, AppDraw demonstrates linking one
  29113. message to several tokens. Doubtless there are others, I stopped at AppDraw.
  29114. (Guess how I was sorting the Filer window? ;) )
  29115.  
  29116.    But enough of this gibberish, what does it all mean? Well, if you’ve had a
  29117. look at Messages files, you’ll see they’re actually human-readable text files,
  29118. with lots of lines looking something like this:
  29119.  
  29120. SetI7:\Ssubstitute double quotes as open and closed double quotes.
  29121.  
  29122.    The important bit in this line is the “:” character: the stuff to the left
  29123. is the programmer-friendly “token”, the stuff to the right is the actual
  29124. message that, presumably, the user will see at one point or another
  29125. (although, as lots of message files contain almost nothing but errors, you may
  29126. not *want* to see the message). When the program asks for message code
  29127. “SetI7”, MessageTrans looks through the file for the token “SetI7”, which will
  29128. usually be at the beginning of a line. It then carries on looking through the
  29129. file until it finds a colon (“:”), which will usually be directly after the
  29130. token. It then reads the text between the colon and the next newline (i.e.
  29131. line break), and returns this as the user-friendly message.
  29132.  
  29133.    To get rid of the first complications, you may notice that although the
  29134. Messages files are full of things like “\S”, you never see such a character
  29135. combination when the messages are actually displayed. In case, “\S” is just
  29136. one of several special abbreviation codes used to keep message files
  29137. slightly shorter – much like abbreviations in Impression, they are expanded
  29138. automatically when the message is read. The list of abbreviation codes in
  29139. RISC OS 3.1 (I don’t think it has changed in RISC OS 3.5) is as follows:
  29140.       \S:“Click SELECT to ”
  29141.       \R:“Move the pointer right to ”
  29142.       \A:“Click ADJUST to ”
  29143.       \T:“This is the ”
  29144.       \G:“This option is greyed out because ”
  29145.       \W:“This window is ”
  29146.       \D:“Drag SELECT to ”
  29147.       \d:“Drag ADJUST to ”
  29148.       \w:“window”
  29149.       \s:“SELECT”
  29150.       \a:“ADJUST”
  29151.    Obviously the quote marks aren’t part of the message; also note the
  29152. trailing spaces, so that “\Ssubstitute quotes” is actually displayed as
  29153. “Click SELECT to substitute quotes”. A common mistake is to forget that “\S”,
  29154. “\R”, and other such abbreviations include a “ to ”: “\S to substitute
  29155. quotes” would actually be displayed as “Click SELECT to  to substitute
  29156. quotes”. Also note that there is no “\M” or “\m” – MENU nearly always brings
  29157. up a menu so there is usually no need to support interactive help about it.
  29158.    The actual list of tokens is contained in Help’s Messages file, in
  29159. Resources:$.Resources.Help in RISC OS 3.1 (somewhere else in RISC OS 3.5 I
  29160. think).
  29161.  
  29162.    Messages files do not just contain lines with one token and one message:
  29163. sometimes there will be several tokens for one message, or wildcarded tokens.
  29164. An example, again from the Smart Quotes help file, is for the “miscellaneous”
  29165. icons of the “Settings (as icons)” window:
  29166.  
  29167. SetI?/SetI??/SetIW:\Tsettings window, using icons at the moment, where you
  29168. can turn various character substitutions on and off. Use the Characters
  29169. window to change the characters used as quotes, or the Diphthongs window to
  29170. view and edit the list of diphthongs.
  29171.  
  29172.    Clearly, the message is found if you look for “SetIW”; it is also found
  29173. for tokens “SetI?” and “SetI??”. The message could also have been defined like
  29174. this:
  29175.  
  29176. SetI?
  29177. SetI??
  29178. SetIW:\Tsettings window, using ...
  29179.  
  29180.    In other words, a newline (line break) or a “/” (NB: do not confuse with
  29181. “\”, used for abbreviations) will tell the operating system that there are
  29182. several tokens that should return the same message. All the tokens after
  29183. the previous message, and before the colon (“:”), will be found and will
  29184. return the message after the colon.
  29185.  
  29186.    A last complication is the wildcard character, “?”. This will match any
  29187. one character (apart from the special ones like :, \ etc.), and one
  29188. character only, much like the blank square in Scrabble: in this case, the
  29189. “This is the settings window” message will be returned for tokens “SetI5”,
  29190. “SetI22”, “SetI05” but *not* “SetI” or “SetI22S”.
  29191.    Note that, because although several tokens can match one message, one
  29192. token cannot match several messages (that would be silly), so as soon as a
  29193. match has been found MessageTrans stops searching the file. This means that,
  29194. first of all, messages at the beginning of the file will be found slightly
  29195. faster (the difference is quite trivial), and secondly, wildcarded messages
  29196. should always be after all other similar messages. In other words, if you
  29197. want special messages for tokens “SetI5”, “SetI10” and “SetI16”, but want to
  29198. use the same one for all messages of the form “SetI?” or “SetI??” or “SetIW”,
  29199. the message file should look like this:
  29200.  
  29201. SetI5:message1
  29202. SetI10:message2
  29203. SetI16:message3
  29204. SetI?/SetI??/SetIW:This is the default message
  29205.  
  29206.    Finally, because MessageTrans looks for a newline (line break) after a
  29207. message, there should be one after the last message, otherwise it won’t be
  29208. found.
  29209.  
  29210. How it works
  29211. ************
  29212.  
  29213.    MoreHelp has three commands for you to use:
  29214.       • MoreHelp_AddTask         <task name> <message file>
  29215.       • MoreHelp_RemoveTask      <task name>
  29216.       • MoreHelp_AddHelpMessages
  29217.    AddTask will set up a filter on the specified task, and load a Messages type
  29218. file (that is, a Text file, type &FFF, with a list of tokens and message inside
  29219. – see above) containing the help messages: the task will now appear to give
  29220. interactive help. (It isn’t, of course, More Help is, but the point of all
  29221. this is that you don’t know). The task name is the name that appears in the
  29222. Task Manager window. If it contains spaces, put it in quotation marks, so you
  29223. would type *MoreHelp_AddTask "Smart Quotes" SmartQuote.
  29224.  
  29225.    RemoveTask will remove the specified task, messages will no longer be
  29226. intercepted and interactive help will stop.
  29227.  
  29228.    AddHelpMessages will make the *last task to be added* “know” about Help
  29229. messages – this is because under RISC OS 3 tasks can ask to only be told
  29230. about certain messages, so will often not receive the Help messages if they
  29231. preferred not to. The command should only be run once, because otherwise
  29232. strange effects can happen (not my fault, I don’t think), and the best bet is
  29233. to run it immediately afterwards AddTask. As a rule of thumb, run it *once*
  29234. if a program isn’t producing interactive help despite your carefully honed
  29235. Messages file.
  29236.  
  29237.    If you do a *Filters from the command line (F12 or Ctrl-F12) you will see
  29238. how More Help operates. It sets up a filter for each of the tasks that have
  29239. had interactive help added with AddTask, to intercept interactive help
  29240. messages. In addition, it sets up another filter on all tasks, to intercept
  29241. Close Down messages – messages sent out when a task closes down – so it can
  29242. remove its filter when the task it is supplying help to quits.
  29243.  
  29244.    When it gets a help message, it finds the title of the window the pointer
  29245. is over, strips spaces from it and replaces certain characters to avoid
  29246. using forbidden characters (see below), then looks in the supplied message
  29247. file for the corresponding message. For instance, if you asked for help on a
  29248. window whose title was “Settings (as icons)”, it would look for a message
  29249. token in the file called “Settings{asicons}”. It would then find the message
  29250. corresponding to the particular token, and use that as the window code. The
  29251. Smart Quotes interactive help file contains the following line:
  29252.  
  29253.       Settings{asicons}:SetI
  29254.       
  29255.    So, if you held the pointer over the window entitled “Settings (as
  29256. icons)”, the window code would be “SetI”. If this line wasn’t in the file for
  29257. some reason, the window code would default to “UK” (unknown, not United
  29258. Kingdom ;) ).
  29259.  
  29260.    The forbidden characters are as follows:
  29261.       , replaced by .
  29262.       ) replaced by }
  29263.       : replaced by ;
  29264.       ? replaced by !
  29265.       / replaced by \
  29266.       ( replaced by {  (for neatness' sake)
  29267.        
  29268.    If you hold the pointer over the icon bar, More Help will pretend the
  29269. window title was in fact “Iconbar”, so if the following line was in the
  29270. message file:
  29271.  
  29272.       Iconbar:Ibar
  29273.       
  29274. the window code would be “Ibar”.
  29275.  
  29276.    If the pointer is over a menu, it will look for the token corresponding to
  29277. the window the pointer was over when MENU was clicked, and add “M” to it, so
  29278. if the pointer is over the menu produced by clicking MENU on the Icon bar,
  29279. the window code will be “IBarM”.
  29280.  
  29281.    It will then add the icon number or the menu entry to the code, which
  29282. would then look something like “SetI22” or “IBarM2”, if the pointer was over
  29283. icon number 22 in the “Settings (as icons)” window, or the third entry in the
  29284. icon bar menu – the first option is in fact option 0. Because menus are
  29285. hierarchical, it will in fact add the numbers of all the menu options
  29286. currently highlighted, so if the pointer was over the first option of the first
  29287. submenu of the fifth option on the menu opened from a window with the token
  29288. “Main” (for instance, “Display.Font.System Font” in Edit’s main menu), the
  29289. resulting token would be “MainM400”. Each menu number will be exactly one
  29290. character long, to avoid confusion, which means that when we get to the
  29291. eleventh menu entry there could be problems. To work out the character used
  29292. for the menu entry, More Help does the following:
  29293.    For numbers 0-9, it uses characters “0” to “9”
  29294.    For numbers 10-35, it uses characters “A” to “Z”
  29295.    For numbers 36-71, it uses characters “a” to “z”
  29296.    For numbers 72-134, it uses characters “À” to “þ”
  29297.    This is really overkill: if you have a menu this long it’s probably either
  29298. a list of fonts, a list of modules, or some other list that More Help cannot
  29299. possibly know about – certainly there should be no need to supply *distinct*
  29300. help messages for each entry. If you do want to provide help, say for
  29301. MainM3420 to MainM342Z (or whatever), the best bet is to provide a single
  29302. token, MainM342?.
  29303.  
  29304.    If the pointer is over the window’s work area, it will instead add a “W”.
  29305.  
  29306.    Finally, it will look at the icon to see whether it is selected or greyed
  29307. out. If it is selected (only for icons) it will add a “S” to the token, if it
  29308. is greyed out (only for menu items) it will add a “G”. It is not possible to
  29309. have both.
  29310.  
  29311.    Finally, it will look for this token in the message file, and return the
  29312. corresponding message, which will then be used as interactive help.
  29313.  
  29314. Limitations
  29315. ***********
  29316.  
  29317.    Because More Help works out what window it’s looking at by reading the
  29318. title, if the title changes (for instance if it’s a pathname of a file) it
  29319. will be impossible to define the appropriate token. You should instead define
  29320. messages using the “UK” window code, which is the default code More Help
  29321. will use if it can’t find the right token. If there are no windows like that,
  29322. you should have the following like in the message file:
  29323.  
  29324. UK?/UK??/UK??/UK???/UK????:
  29325.  
  29326.    NB: there is nothing after the colon, except a newline (line break).
  29327.    If there are several different types of window, with varying titles,
  29328. despair.
  29329.  
  29330.    Similarly, interactive help won’t be as “intelligent” as it would be if
  29331. the program itself was supplying it: you won’t get things like “Move the
  29332. pointer right to perform an operation on ‘!MHelpEd’” because More Help
  29333. doesn’t know you clicked MENU over the application !MHelpEd. If you need
  29334. complicated help like that, either write your own routines if you’re
  29335. programming the application yourself, or, as before, despair.
  29336.  
  29337. Boring legal message
  29338. ********************
  29339.  
  29340.    This application is freeware, that is, it can be distributed freely as
  29341. long as only reasonable charges are made for media and distribution. I retain
  29342. copyright on all program code and documentation.
  29343.  
  29344.    This software is supplied “as is”: I make no warranty, expressed or
  29345. implied, of the merchantability of this software or its fitness for any
  29346. particular purpose. In no circumstances shall I be liable for any damage,
  29347. loss of profits, or any indirect or consequential loss arising out of the use
  29348. of this software or inability to use this software, even if I have been
  29349. advised of the possibility of such loss.
  29350.  
  29351.    In other words, if your computer crashes, blows up, you lose all your work
  29352. etc. all because of More Help (unlikely I know), don’t blame me. I will,
  29353. however, do my best to solve bugs, add features, answer queries etc. – but
  29354. bear in mind that I don’t have access to Acorns at University (term-time).
  29355.  
  29356. Distribution
  29357. ************
  29358.  
  29359.    This is freeware, so you can distribute this freely – and indeed I
  29360. encourage you most strongly to do so. However, because I retain copyright
  29361. and I want everyone to have all the files, when you distribute the
  29362. !MoreHelp application you must distribute all files intact, including source
  29363. code and this documentation, with this package – in other words, the files
  29364. !Boot, !Run, !Sprites, !Sprites22, MoreHelp, ModSource, !Help, and Vsn100.
  29365. Feel free to muck around with it as much as you like when it’s on your
  29366. machine, but distribute the original files, please.
  29367.  
  29368.    You are strongly encouraged to use MoreHelp in your own programs, or to
  29369. write MoreHelp help files for other programs – I have plans for a MoreHelp
  29370. editor and possibly an application patcher to make this sort of thing easier.
  29371. However, the most time-consuming part of writing a message file is actually
  29372. writing the helpful messages (or so I find anyway), so that isn’t *much* of a
  29373. problem.
  29374.  
  29375. About all these strange foreign characters in this file
  29376. ******************************************************
  29377.  
  29378.    OK, so if you’re reading this on a PC or a Mac or another strange machine
  29379. like that, you may be wondering what all these strange ae things are. Well,
  29380. they’re quotes (sorry, there was another one), dashes, ligatures, etc.
  29381. Honest. But not on all machines...
  29382.    Basically, character sets are only standard up to character 127, which is
  29383. basically alphanumerics and a few standard punctuation marks. Foreign
  29384. characters, typographical oddities like quotes and ligatures, and other more
  29385. obscure symbols are “non-standard”, and each computer often has its own idea
  29386. of where they should go in the character set. So don’t worry: even if it’s
  29387. hard to read on your current machine, it won’t be on an Acorn machine. It may
  29388. look slightly strange if you’re using the System font, however.
  29389.    But why am I using these strange characters in the first place? Well,
  29390. they’re in the character set and they look nice in an outine font, and I’ve
  29391. written a program called Smart Quotes (sorry for the plug) that substitutes
  29392. these sort of characters automatically, and I’ve got it turned on at the
  29393. moment...
  29394.  
  29395. How to contact me
  29396. *****************
  29397.  
  29398. All bug-reports, suggestions, comments or indeed any feedback at all will be
  29399. welcomed. Here’s how to get to me:
  29400.  
  29401. E-mail     : 9262861k@arts.gla.ac.uk, 926286ki@udcf.gla.ac.uk during term-time
  29402.              These should be OK until June 1996
  29403.              At Christmas, Easter and during the summer, you can get me at
  29404.              wombat@altern.com, wombat@email.teaser.com or sam@altern.com, in order
  29405.              of preference (that is, if mail bounces off one of these or I don’t
  29406.              answer within a week send to the next one)
  29407.  
  29408. Snail-mail : My term-time address, at least until June 1995, is:
  29409.              Sam Kington
  29410.              Flat 2/1
  29411.              44 Hotspur Street
  29412.              Glasgow G20 8NL
  29413.              SCOTLAND
  29414.              
  29415.              Again, a backup is the home address – anything that goes here will get
  29416.              to me eventually.
  29417.              Sam Kington
  29418.              Merlhiot
  29419.              24420 Savignac les Eglises
  29420.              FRANCE
  29421.  
  29422. Term-time is October to June, with bits off at Christmas (3 weeks) and
  29423. Easter (4 weeks).
  29424.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickFlipTopEÿÿÿ⇨lö⇧­{3FlipTopEÿÿÿ⇨lö⇧­{3yHelpFilesHelpFilesNick¥# Codes for window titles
  29425. Iconbar:Ibar
  29426. Desktopscreenmodes:Mod
  29427. Aboutthisscreenmode:Scr
  29428. Aboutthisprogram:Inf
  29429. FlipTopchoices:Cho
  29430. QuickChange:Qui
  29431.  
  29432. # Icon bar icon
  29433. Ibar:This is the FlipTop icon.|M\Ssee a list of possible screen modes.|M\Achange modes without using the screen modes window.|MDouble-click \s to decrease the number of colours, \a to increase them.
  29434.  
  29435. # Menus
  29436. IbarM0/ModM0:\Rsee more information about this version of FlipTop.
  29437. IbarM1/ModM1:\Sopen the desktop screen mode window, where you can change the current screen mode.
  29438. IbarM2/ModM2:\Ssee more information about the current mode.
  29439. IbarM3/ModM3:\Schoose the keyboard shortcuts used by FlipTop.
  29440. IbarM4/ModM4:\Rchoose a colour set, and change the Desktop palette.
  29441. IbarM5/ModM5:\Squit FlipTop.
  29442. IbarM4?/ModM5?:\Schoose this colour set.
  29443.  
  29444. # Desktop screen modes
  29445. ModW:\Tscreen modes window. Click on the coloured blobs to change to the appropriate mode. The current mode is highlighted in red.
  29446.  
  29447. # Miscellaneous
  29448.  
  29449. Scr21/Cho13/Qui5:\TFliptop icon. Do not for a moment imagine you can do anything worthwhile by clicking on it ;).
  29450.  
  29451. # About this screen mode
  29452. Scr3/Scr4:\Tinternal mode number, used by Palette and for *Configure WimpMode.
  29453. Scr15/Scr16:\Tnumber of colours available in this screen mode.
  29454. Scr19/Scr20:\Tamount of memory used by this screen mode.
  29455. Scr5/Scr6/Scr7:\Tsize of this screen mode in pixels (i.e. dots).
  29456. Scr8/Scr9/Sc10:\Trefresh rate of this screen mode - the higher the value, the less flicker. If you are not using a multiscan, VGA or SuperVGA monitor it will always be 50.
  29457. Scr11/Scr12/Scr13:\Tspeed of the computer in this screen mode.
  29458. Scr17/Scr18:\Tspeed of the computer in this screen mode compared to its speed in the mode last used. Modes with more colours slow down the computer, unless you have VRAM fitted (RiscPC only).
  29459. Scr?/Scr??/ScrW:\Tscreen mode information window, showing information about the current mode.
  29460.  
  29461. # About this program
  29462.  
  29463. Inf?/Inf??/InfW:\Tinfo window, with information about this particular version of FlipTop.
  29464.  
  29465. # FlipTop choices
  29466.  
  29467. Cho1/Cho3:This keystroke reduces the number of colours used. It is equivalent to Select-double-clicking on the icon, or clicking the left arrow in the QuickChange window.
  29468. Cho2/Cho4:This keystroke increases the number of colours used. It is equivalent to Adjust-double-clicking on the icon, or clicking the right arrow in the QuickChange window.
  29469. Cho8/Cho10:This keystroke moves down the list of screen dimensions. It is equivalent to clicking the down arrow in the QuickChange window.
  29470. Cho9/Cho11:This keystroke moves up the list of screen dimensions. It is equivalent to clicking the up arrow in the QuickChange window.
  29471. Cho7:\Ssave these settings as the defaults, so they are used next time the program is run. \Akeep the window open.
  29472. Cho5:\Sdiscard the changes you may have made to the choices, and revert to the ones you were using before you opened this window.
  29473. Cho6:\Suse these settings as the new ones. \Akeep the window open. When you next run the program, the default settings will be used - click \s on the Save button if you want to use these ones instead.
  29474. Cho?/Cho??/ChoW:\TFlipTop choices window, where you can set the keystrokes used to change screen mode without using the mouse.
  29475.  
  29476. # Quick Change
  29477.  
  29478. Qui1/Qui2:Enter a new screen mode number here, then press Return or click OK to change to that mode.
  29479. Qui3:This shows the current mode details.
  29480. Qui4:\Schange to the chosen mode.
  29481. Qui6:\Sreduce the number of colours.
  29482. Qui7:\Sincrease the number of colours.
  29483. Qui8:\Sincrease the size of the screen.
  29484. Qui9:\Sreduce the size of the screen.
  29485. Qui?/Qui??/QuiW:\TQuickChange window, where you can change the screen dimensions and number of colours by clicking on the arrows or entering a new mode number.
  29486.  
  29487. # Unknown windows
  29488.  
  29489. UK?/UK??/UKW:
  29490.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  29491. Qô More Help - provides interactive help for programs that don't usually do soô © Sam Kington 1994ô Started 19th August 1994(#ô Version 1.00 (27th August 94)2-ô Desktop Save code copied from Back Icon<Fmodtitle$="MoreHelp"P+modhelp$="More help    1.00 (27 Aug 1994)"Z#file$="<MoreHelp$Dir>.MoreHelp"dn,î Ŷ î Ŷ  : Ŷ fl, ö$+" at line "+Ã(fi) : àxŵÈœ "%.ShortHelp"…òprettyprintinit„ òassembleªà´¾ÝòassembleÈÞ asm 8000ÒL%=asm+8000Ü    sp=13æ link=14ð    pc=15úV_flag=1<<28 block=0numtasks=256"tasks=260,command=5126maxmem=768@_maxtasks=127JT&Service_FilterManagerInstalled=&87^Service_WimpSaveDesktop=&5Chr1ã pass=12 ¸ 14 ⇦ 2 : ô check for memory limit|P%=0ŷ
  29492. O%=asm‘[OPT passŒô ** Header **¤.modheader®1        EQUD    0          ; execution offset¸6        EQUD    init       ; initialisation offsetÂ-        EQUD    final      ; finalisationÌ.        EQUD    service    ; service callsÖ-        EQUD    title      ; title stringà,        EQUD    help       ; help stringê,        EQUD    commands   ; no commandsô*        EQUD    0          ; SWI chunkþ1        EQUD    0          ; SWI handler code3        EQUD    0          ; SWI decoding table2        EQUD    0          ; SWI decoding code&ô ** Initialise code **0:    .initD(        STMFD   (sp)!, {r2-r3, link}NH        MOV     r0, #6                  ; get memory (reason code 6)X=        MOV     r3, #maxmem             ; amount requiredb         SWI     "XOS_Module"l        STR     r2, [r12]v"        BL      readmodulepath€$        BL      addmessagefilter⇩>        ADD     r2, r2, #numtasks       ; get r12+numtasks“?        MOV     r3, #0                  ; set numtasks to 0fi        STR     r3, [r2]¨'        LDMIA   (sp)!, {r2-r3, pc}^²¼ô ** Finalise code **ÆÐ
  29493. .finalÚ%        STMFD   (sp)!, {r2, link}ä        LDR     r2, [r12]î        MOV     r0, #7ø         SWI     "XOS_Module"'        BL      removemessagefilter $        BL      removeallfilters#        LDMIA   (sp)!, {r2, pc} *ô ** Service calls **4> .serviceH0        CMPNE   r1, #Service_WimpSaveDesktopR        MOVNES  pc, link\!        STMFD   (sp)!, {link}f0        CMP     r1, #Service_WimpSaveDesktopp        BLEQ    desktopsavez         LDMIA   (sp)!, {pc}^☓‰ô ** Short title **—¢
  29494. .title¬        EQUS    modtitle$¶        EQUB    0ÀÊô ** Help string **ÔÞ    .helpè        EQUS    modhelp$ò        EQUB    0ü        ALIGNô ** Save desktop **Nô r0 flag word, r1 reason code (preserve unless error, in which case r1=0)$(ô r2 file handle of file to write to..desktopsave8(        STMFD   (sp)!, {r0-r3, link}BH        MOV     r0, #2                  ; write from current pointerLE        MOV     r1, r2                  ; file handle as suppliedV&        ADR     r2, savemodulepath`,        LDR     r3, savemodulepathlengthj        SWI     "XOS_GBPB"t         BVS     desktoperror~'        LDMIA   (sp)!, {r0-r3, pc}^⇦.desktoperror‹B        LDMIA   (sp)!, {r1, r1-r3, link}    ; don't re-load r0†2        ☓R     link, link, #V_flag     ; set V¦;        MOV     r1, #0                  ; claim service°4        MOVS    pc, link                ; returnºÄô ** Read module path **Î.readmodulepathØ(        STMFD   (sp)!, {r0-r4, link}â$        ADR     r0, variablenameì&        ADR     r1, savemodulepathö        ADD     r1, r1, #27        MOV     r2, #178
  29495.         MOV     r3, #0        MOV     r4, #0$        SWI     "XOS_ReadVarVal"(        CMP     r2, #02        ADDGT   r2, r2, #28<,        STRGT   r2, savemodulepathlengthF&        ADRGT   r0, savemodulepathP        MOVGT   r1, #10Z        SUBGT   r2, r2, #1d         STRGTB  r1, [r0, r2]n'        LDMIA   (sp)!, {r0-r4, pc}^x.savemodulepathlengthŵ        EQUD    51…6.savemodulepath ; buffer length 178, insert at +27„H        EQUS    "RMEnsure MoreHelp 0 RMLoad System:Modules.MoreHelp"         EQUB    10ª°        EQUS    "This is to fill out the buffer a bit in case the path is longer than that (which it should be). It will also intrigue people dissassembling the module ;)."´        ALIGN¾.variablenameÈ%        EQUS    "MoreHelp$Module"Ò        EQUB    0Ü        ALIGNæðô ** Commands **ú.commands&        EQUS    "MoreHelp_AddTask"        EQUB    0"        ALIGN,$        EQUD    delaytaskgothelp6D        EQUD    &20002                  ; must be two parameters@"        EQUD    syntax_addtaskJ         EQUD    help_addtaskT^-        EQUS    "MoreHelp_AddTaskAndHelp"h        EQUB    0r        ALIGN|$        EQUD    delaytaskaddhelpŷD        EQUD    &20002                  ; must be two parameters‘"        EQUD    syntax_addtaskŒ         EQUD    help_addtask¤®)        EQUS    "MoreHelp_RemoveTask"¸        EQUB    0        ALIGNÌ        EQUD    removetaskÖC        EQUD    &10001                  ; must be one parameterà%        EQUD    syntax_removetaskê#        EQUD    help_removetaskôþ        EQUB    0.help_addtask¶        EQUS    ¤print("MoreHelp_AddTask adds a task to More Help's list of tasks. From then onwards, More Help will provide interactive help for that task.", "MoreHelp_AddTask")        EQUB    13°        EQUS    ¤print("It takes two parameters: the name of the task, as seen in the Task Manager window, and the full filename of the messages file.", "MoreHelp_AddTask")&        EQUB    130.syntax_addtask:k        EQUS    ¤print("Syntax: *MoreHelp_AddTask <task name> <message file name>", "MoreHelp_AddTask")D        EQUB    0NX.help_addtaskbî        EQUS    ¤print("MoreHelp_AddTaskAndHelp adds a task to More Help's list of tasks, and makes it respond to interactive help. From then onwards, More Help will provide interactive help for that task.", "MoreHelp_AddTaskAndHelp")c        EQUB    13d¡        EQUS    ¤print("Use MoreHelp_AddTaskAndHelp rather than MoreHelp_AddTask if, and only if, MoreHelp_AddTask doesn't work.", "MoreHelp_AddTaskAndHelp")l·        EQUS    ¤print("It takes two parameters: the name of the task, as seen in the Task Manager window, and the full filename of the messages file.", "MoreHelp_AddTaskAndHelp")v        EQUB    13€.syntax_addtask⇩y        EQUS    ¤print("Syntax: *MoreHelp_AddTaskAndHelp <task name> <message file name>", "MoreHelp_AddTaskAndHelp")“        EQUB    0fi¨.help_removetask²Ê        EQUS    ¤print("MoreHelp_RemoveTask removes a task to More Help's list of tasks. From then onwards, More Help will no longer provide interactive help for that task. ", "MoreHelp_RemoveTask")¼©        EQUS    ¤print("It takes one parameter, the name of the task, as seen in the Task Manager window, and as handed to MoreHelp_AddTask.", "MoreHelp_RemoveTask")Æ        EQUB    13Ð.syntax_removetaskÚ]        EQUS    ¤print("Syntax: *MoreHelp_RemoveTask <task name>", "MoreHelp_RemoveTask")ä        EQUB    0îø.help_addhelpmessagesÜ        EQUS    ¤print("MoreHelp_AddHelpMessages adds the two interactive help messages to the last registered task's list of messages (i.e. the last one passed to MoreHelp_AddTask)."+½13, "MoreHelp_AddHelpMessages") ß        EQUS    ¤print("Only use this command if the task is not responding to the interactive help messages, i.e. you place the cursor over its icon, windows or menus and nothing happens. ", "MoreHelp_AddHelpMessages")ð        EQUS    ¤print("If you use this command on a task that *does* respond to help messages, you may well find it cannot e.g. load files, open submenus, or respond to desktop saves. You have been warned.", "MoreHelp_AddHelpMessages")         EQUB    0*4.help_delaytaskgothelp>ù        EQUS    ¤print("MoreHelp_DelayTaskGotHelp waits until the specified task starts up, then calls MoreHelp_AddTask with the supplied task name and message file. It will not add interactive help messages."+½(13), "MoreHelp_DelayTaskGotHelp")H‘        EQUS    ¤print("Use this command in an application's !Run file, before the application itself is run.", "MoreHelp_DelayTaskGotHelp")R        EQUB    13\.syntax_delaytaskgothelpf}        EQUS    ¤print("Syntax: *MoreHelp_DelayTaskGotHelp <task name> <message file name>", "MoreHelp_DelayTaskGotHelp")p        EQUB    0z☓.help_delaytaskaddhelp‰ú        EQUS    ¤print("MoreHelp_DelayTaskAddHelp waits until the specified task starts up, then calls MoreHelp_AddTask with the supplied task name and message file. It will also add interactive help messages."+½(13), "MoreHelp_DelayTaskAddHelp")—‘        EQUS    ¤print("Use this command in an application's !Run file, before the application itself is run.", "MoreHelp_DelayTaskAddHelp")¢        EQUB    13¬.syntax_delaytaskaddhelp¶}        EQUS    ¤print("Syntax: *MoreHelp_DelayTaskAddHelp <task name> <message file name>", "MoreHelp_DelayTaskAddHelp")À        EQUB    0Ê        ALIGNÔÞô ** Add/remove task **èòô r0 points to command tailü(ô r1 char, r2 position, r3 got quote     .remove            EQUD    0    
  29496. .delay    $        EQUD    0    ..addinthelp    8        EQUD    0    B.copycommandtail    L(        STMFD   (sp)!, {r1-r3, link}    V;        MOV     r2, #0                  ; reset counter    `Q        ADD     r3, r12, #command       ; point to command tail output buffer    j.copycommandtailloop    t         LDRB    r1, [r0, r2]    ~        CMP     r1, #32    ⇦&        BLT     endcopycommandtail    ‹         STRB    r1, [r3, r2]    †        ADD     r2, r2, #1    ¦        CMP     r2, #256    °'        BLT     copycommandtailloop    º.endcopycommandtail    Ä        MOV     r1, #0    Î         STRB    r1, [r3, r2]    Ø'        LDMIA   (sp)!, {r1-r3, pc}^    â.delaytaskgothelp    ì        STMFD   (sp)!, {r0}    ö7        MOV     r0, #1                  ; set delay
  29497.         STR     r0, delay
  29498.  
  29499. C        MOV     r0, #0                  ; clear remove and help
  29500.         STR     r0, remove
  29501. "        STR     r0, addinthelp
  29502. (        LDMIA   (sp)!, {r0}
  29503. 2        B       addorremove
  29504. <.delaytaskaddhelp
  29505. F        STMFD   (sp)!, {r0}
  29506. P@        MOV     r0, #1                  ; set delay and help
  29507. Z        STR     r0, delay
  29508. d"        STR     r0, addinthelp
  29509. n:        MOV     r0, #0                  ; clear remove
  29510. x        STR     r0, remove
  29511. ŵ        LDMIA   (sp)!, {r0}
  29512. …        B       addorremove
  29513. „.removetask
  29514.          STMFD   (sp)!, {r0}
  29515. ª8        MOV     r0, #1                  ; set remove
  29516. ´        STR     r0, remove
  29517. ¾9        MOV     r0, #0                  ; clear delay
  29518. È        STR     r0, delay
  29519. Ò        LDMIA   (sp)!, {r0}
  29520. Ü        B       addorremove
  29521. æ .addtask
  29522. ð        STMFD   (sp)!, {r0}
  29523. úD        MOV     r0, #0                  ; clear remove and delay         STR     r0, remove         STR     r0, delay         LDMIA   (sp)!, {r0} ".addorremove ,-        STMFD   (sp)!, {r0-r5, r12, link} 6        LDR     r12, [r12] @D        LDR     r2, delay               ; is this a delayed add? J        CMP     r2, #1 TE        BLEQ    copycommandtail         ; if so copy command tail ^;        MOV     r2, #0                  ; reset pointer hC        MOV     r3, #0                  ; haven't found a quote r.findloop |6        LDRB    r1, [r0, r2]            ; get char ŷ:        CMP     r1, #–("""")          ; is it a quote? ‘C        BNE     checkspace              ; if not, skip this bit Œ=        ADD     r3, r3, #1              ; increment quote ¤G        CMP     r3, #2                  ; is this the second quote? ®L        ADD     r0, r0, #1              ; increment buffer (not pointer) ¸M        BLT     findloop                ; if this wasn't the second, loop ÂD        B       lastchar                ; otherwise stop looking Ì.checkspace ÖM        STRB    r1, [r12, r2]           ; this wasn't a quote so store it à>        CMP     r1, #32                 ; is this a space? êX        BLT     lastchar                ; if was less (i.e. a control char) stop now ôG        ADDNE   r2, r2, #1              ; if not, increment pointer þ6        BNE     findloop                ; and loop >        CMP     r3, #1                  ; was this quoted? F        ADDEQ   r2, r2, #1              ; if so, increment pointer 6        BEQ     findloop                ; and loop &T.lastchar                               ; last char - r2 is pointer to last char 0=        MOV     r1, #0                  ; get a null char :C        STRB    r1, [r12, r2]           ; store after task name D NCô r4 pointer to task name, r5 success of comparison (1 if same) XS        ADD     r0, r0, r2              ; make r0 point to char after task name bD        STR     r0, messagefile         ; store it for later use lS        MOV     r0, #0                  ; this is first call to enumerate tasks v:        MOV     r5, #0                  ; no match yet €.findtask ⇩"        ADR     r1, taskbuffer “        MOV     r2, #16 fi1        SWI     "XTaskManager_EnumerateTasks" ¨"        ADR     r1, taskbuffer ²F        LDR     r4, [r1, #4]            ; get pointer to task name ¼!        BL      comparestring ÆA        CMP     r5, #1                  ; were they the same? ÐC        BEQ     foundtask               ; if so, quit this loop ÚU        CMP     r0, #0                  ; they weren't, are there any tasks left? ä9        BGT     findtask                ; if so, loop îA        LDR     r0, delay               ; if this was delayed ø        CMP     r0, #1B        BEQ     exitcommand             ; don't complain, wait -        LDMIA   (sp)!, {r0-r5, r12, link}B        ☓R     link, link, #V_flag     ; otherwise, set V flag <        ADR     r0, taskerror           ; point to error*8        MOVS    pc, link                ; and return4><ô r0 holds numtasks, r1 pointer in block, r3 task handleH.foundtaskRG        ADR     r1, taskbuffer          ; get pointer to taskbuffer\=        LDR     r3, [r1]                ; get task handlefE        LDR     r1, remove              ; was this add or remove?p        CMP     r1, #0zM        BNE     removetaskfilter        ; if it was remove, skip this bit☓Y        B       checktask               ; we're adding it, so check we haven't got it‰.haventgotnewtask—A        LDR     r0, [r12, #numtasks]    ; get number of tasks¢N        MOV     r1, r0, LSL #3          ; get pointer in task handle block¬#        ADD     r2, r12, #tasks¶A        ADD     r1, r1, r2              ; get memory positionÀ?        STR     r3, [r1, #0]            ; store task handleÊ?        BL      openmessages            ; open message fileÔK        STR     r2, [r1, #4]            ; store message file descriptorÞG        ADD     r0, r0, #1              ; increment number of tasksè7        STR     r0, [r12, #numtasks]    ; and storeò        BL      addfilterü.exitcommand,        LDMIA   (sp)!, {r0-r5, r12, pc}^$6ô enters with task handle in r3, can corrupt r1-r5..checktask8+        STMFD   (sp)!, {r2-r3, r10-r11}B:        ADD     r10, r12, #numtasks     ; get numtasksL        LDR     r11, [r10]VC        CMP     r11, #0                 ; if we haven't got any`O        BEQ     checktaskOK             ; we can't have this one, so add itj<        ADD     r10, r12, #tasks        ; point to taskstM        ADD     r11, r10, r11, LSL #3   ; point to maximum block position~.checktaskloop⇦=        LDR     r2, [r10]               ; get task handle‹A        CMP     r2, r3                  ; is it the same one?†A        LDMEQIA (sp)!, {r2-r3, r10-r11} ; if so, don't add it¦        BEQ     exitcommand°;        ADD     r10, r10, #8            ; point to nextº        CMP     r10, r11Ä!        BLT     checktaskloopÎ.checktaskOKØ+        LDMIA   (sp)!, {r2-r3, r10-r11}â$        B       haventgotnewtaskìö.removetaskafterclosedown-        STMFD   (sp)!, {r0-r5, r12, link}
  29524. 6ô enters with task handle in r3, can corrupt r1-r5.removetaskfilter+        STMFD   (sp)!, {r2-r3, r10-r11}(:        ADD     r10, r12, #numtasks     ; get numtasks2        LDR     r11, [r10]<        CMP     r11, #0F        BEQ     gotnotasksP<        ADD     r10, r12, #tasks        ; point to tasksZM        ADD     r11, r10, r11, LSL #3   ; point to maximum block positiond.findtaskloopn>        LDR     r2, [r10]               ; get current taskxB        CMP     r2, r3                  ; is it the right one?ŵH        BEQ     gottasktoremove         ; if so, get out of the loop…A        ADD     r10, r10, #8            ; go to the next task„H        CMP     r10, r11                ; is this past the last one? :        BLT     findtaskloop            ; if not, loopª+        LDMIA   (sp)!, {r2-r3, r10-r11}´-        LDMIA   (sp)!, {r0-r5, r12, link}¾B        ☓R     link, link, #V_flag     ; otherwise, set V flagÈ<        ADR     r0, taskerror           ; point to errorÒ8        MOVS    pc, link                ; and returnÜ.gotnotasksæ+        LDMIA   (sp)!, {r2-r3, r10-r11}ð-        LDMIA   (sp)!, {r0-r5, r12, link}úB        ☓R     link, link, #V_flag     ; otherwise, set V flag<        ADR     r0, notaskserror        ; point to error8        MOVS    pc, link                ; and return.gottasktoremove"?        BL      removethistask          ; r10 holds pointer,O        SUB     r11, r11, #8            ; shift down maximum block position6W        CMP     r11, r10                ; if it now points at the current position,@T        BEQ     finishedremovingtask    ; the removed task was last, so exit nowJ.removingtaskloopT8        LDR     r3, [r10, #8]           ; shift down^        STR     r3, [r10]h"        LDR     r3, [r10, #12]r!        STR     r3, [r10, #4]|?        ADD     r10, r10, #8            ; increment pointerŷN        CMP     r10, r11                ; if it's not the maximum position‘2        BLT     removingtaskloop        ; loopŒ.finishedremovingtask¤'        ADD     r10, r12, #numtasks®        LDR     r3, [r10]¸        SUB     r3, r3, #1        STR     r3, [r10]Ì+        LDMIA   (sp)!, {r2-r3, r10-r11}Ö        B       exitcommandàê.notaskserrorô        EQUD    0þ3        EQUS    "There are no tasks to remove!"        EQUB    0        ALIGN&ô Must preserve r10%ô Exit with file descriptor in r2:@ô r0 char, r1 points to command tail, r2 length of file nameD.openmessagesN,        STMFD   (sp)!, {r0-r1, r3, link}XI        LDR     r1, messagefile         ; get pointer to command tailb.skipspacesl6        LDRB    r0, [r1]                ; get charv<        CMP     r0, #32                 ; is it a space?€J        ADDEQ   r1, r1, #1              ; if so, look for the next one⇩6        BEQ     skipspaces              ; and loop“;        STR     r1, messagefile         ; store pointerfiG        MOV     r2, #0                  ; reset length of file name¨.countlength²6        LDRB    r0, [r1, r2]            ; get char¼@        CMP     r0, #0                  ; if it's not a nullÆ>        ADDNE   r2, r2, #1              ; increment lengthÐ6        BNE     countlength             ; and loopÚD        ADD     r3, r2, #16             ; claim 4 words + lengthä:        MOV     r0, #6                  ; claim memoryî         SWI     "XOS_Module"øC        STR     r2, filedesc            ; store file-descriptor B        ADD     r2, r2, #16             ; point to destination=        LDR     r1, messagefile         ; point to source @        MOV     r3, #0                  ; initialise pointer*.copyfileloop4=        LDRB    r0, [r1, r3]            ; get source char><        STRB    r0, [r2, r3]            ; store in blockHB        CMP     r0, #0                  ; if this isn't a nullR?        ADDNE   r3, r3, #1              ; increment pointer\6        BNE     copyfileloop            ; and loopfpF        LDR     r0, filedesc            ; point to file-descriptorzF        ADD     r1, r0, #16             ; point to file just after☓;        MOV     r2, #0                  ; load into RMA‰,        SWI     "XMessageTrans_OpenFile"—R        LDR     r2, filedesc            ; re-load file-descriptor just in case¢E        LDMIA   (sp)!, {r0-r1, r3, pc}^ ; exit with pointer in r2¬¶.messagefileÀ        EQUD    0Ê.filedescÔ        EQUD    0Þ.taskerrorè        EQUD    0ò$        EQUS    "Task not found"ü        EQUB    0        ALIGNSô r4 first string, r12 second string, r0 first char, r1 second char, r2 pointer$.comparestring.(        STMFD   (sp)!, {r0-r2, link}8E        MOV     r5, #0                  ; strings aren't the sameB;        MOV     r2, #0                  ; reset pointerL.compareloopV<        LDRB    r0, [r4, r2]            ; get first char`=        LDRB    r1, [r12, r2]           ; get second charj@        CMP     r0, r1                  ; are they the same?tH        BNE     stopcomparing           ; if not, stop this loop now~E        CMP     r0, #0                  ; was this the last char?⇦J        ìQ   r5, #1                  ; if so the strings are identical‹M        ADDNE   r2, r2, #1              ; otherwise we have to loop again†        BNE     compareloop¦.stopcomparing°&        LDMIA   (sp)!, {r0-r2, pc}ºÄ.taskbufferΠ       EQUD    0Ø        EQUD    0â        EQUD    0ì        EQUD    0öô ** Filter routines **
  29525. .filtername        EQUS    "More help"(        EQUB    02        ALIGN<F.addfilterP(        STMFD   (sp)!, {r0-r4, link}Z        BL      filterregsd0        SWI     "XFilter_RegisterPostFilter"n'        LDMIA   (sp)!, {r0-r4, pc}^xŵ.removefilter…(        STMFD   (sp)!, {r0-r4, link}„        BL      filterregs 2        SWI     "XFilter_DeRegisterPostFilter"ª'        LDMIA   (sp)!, {r0-r4, pc}^´¾.filterregsÈ"        ADR     r0, filternameÒ        ADR     r1, filterÜ        MOV     r2, r12æ/        ; r3 (task handle) set up by callerð"        LDR     r4, filtermaskú        MOV     pc, link.filtermaskZ        EQUD    ¬ ((1<<18)+(1<<6))    ; get User_Message_Recorded and Mouse_Click only",.addmessagefilter6(        STMFD   (sp)!, {r0-r4, link}@%        BL      messagefilterregsJ0        SWI     "XFilter_RegisterPostFilter"T'        LDMIA   (sp)!, {r0-r4, pc}^^h.removemessagefilterr(        STMFD   (sp)!, {r0-r4, link}|%        BL      messagefilterregsŷ2        SWI     "XFilter_DeRegisterPostFilter"‘'        LDMIA   (sp)!, {r0-r4, pc}^Œ¤.messagefilterregs®"        ADR     r0, filtername¸%        ADR     r1, messagefilterÂ7        MOV     r3, #0                  ; all tasksÌ)        LDR     r4, messagefiltermaskÖ        MOV     pc, linkàê.messagefiltermaskôA        EQUD    ¬ ((1<<17))           ; get User_Message onlyþ.messageclosedown        EQUD    &400C3.messagestarttask        EQUD    &400C2&0.messagefilter:2        STMFD   (sp)!, {r0, r3, r4, r12, link}DJ        LDR     r0, addinthelp          ; are we adding help messages?N        CMP     r0, #2XC        BNE     nextmessages            ; if not, skip this bitbV        MOV     r0, #0                  ; clear the bit so we don't add them againl"        STR     r0, addinthelpvC        BL      addhelpmessages         ; and add help messages€.nextmessages⇩=        LDR     r3, [r1, #16]           ; get reason code“(        LDR     r4, messageclosedownfiL        CMP     r3, r4                  ; is it a Message_TaskCloseDown?¨(        LDRNE   r4, messagestarttask²M        CMPNE   r3, r4                  ; is it a Message_StartTask then?¼=        BNE     exitmessagefilter       ; if not exit nowÆF        LDR     r4, messagestarttask    ; if it was the start taskР       CMP     r3, r4ÚY        BEQ     comparetasks            ; see if this was the one we were waiting foräG        LDR     r3, [r1, #4]            ; otherwise get task handleîN        BL      removetaskafterclosedown; and remove the task if necessaryø.exitmessagefilter1        LDMIA   (sp)!, {r0, r3, r4, r12, pc}^ .lasthandle         EQUD    0*.w4        EQUD    0>        EQUD    0H        EQUD    0R        EQUD    0\         f.addhelpmessagesp1        STMFD   (sp)!, {r0-r3, r10-r12, link}z"        ADR     r0, filtername☓,        ADR     r1, addhelpmessagefilter‰        MOV     r2, #0—J        LDR     r3, lasthandle                  ; get last task handle¢/        SWI     "XFilter_RegisterPreFilter"¬        STR     r0, w¶        STR     r1, w+4À        STR     r2, w+8Ê        STR     r3, w+12Ô        MOV     r1, r12Þ*        SWI     "XWimp_GetPointerInfo"èF        MOV     r0, #6                          ; send Mouse_Clickò"        LDR     r2, lasthandleüA        SWI     "XWimp_SendMessage"             ; send it off0        LDMIA   (sp)!, {r0-r3, r10-r12, pc}^.addhelpmessagefilter(        STMFD   (sp)!, {r0-r3, link}$K        ADR     r0, helpmessage                 ; point to Help_Message.V        SWI     "XWimp_AddMessages"             ; add to messages task knows about8.removehelpmessagefilterB        LDR     r0, wL        LDR     r1, w+4V        LDR     r2, w+8`        LDR     r3, w+12j1        SWI     "XFilter_DeRegisterPreFilter"t'        LDMIA   (sp)!, {r0-r3, pc}^~.thishandle⇦        EQUD    0‹†/ô r10 pointer in block, r11 numtasks/maxpos¦.removeallfilters°*        STMFD   (sp)!, {r10-r12, link}º        LDR     r12, [r12]Ä:        ADD     r10, r12, #numtasks     ; get numtasksΠ       LDR     r11, [r10]Ø<        ADD     r10, r12, #tasks        ; point to tasksâM        ADD     r11, r10, r11, LSL #3   ; point to maximum block positionì.removeloopö"        BL      removethistask>        ADD     r10, r10, #8            ; go to next entry
  29526. >        CMP     r10, r11                ; check for limitsC        BLT     removeloop              ; if there's more, loop)        LDMIA   (sp)!, {r10-r12, pc}^(2.removethistask<,        STMFD   (sp)!, {r0, r2-r4, link}F=        LDR     r3, [r10]               ; get task handleP;        BL      removefilter            ; remove filterZU        LDR     r0, [r10, #4]           ; get message file descriptor, close filed-        SWI     "XMessageTrans_CloseFile"n!        LDR     r2, [r10, #4]xB        MOV     r0, #7                  ; free block of memoryŵ         SWI     "XOS_Module"…+        LDMIA   (sp)!, {r0, r2-r4, pc}^„ ô ** Filter **ª´ .filter¾-        STMFD   (sp)!, {r1-r4, r12, link}È        CMP     r0, #6Ò        BEQ     mouseclickÜ        CMP     r0, #18æ        BNE     exitfilterð!        LDR     r3, [r1, #16]ú#        LDR     r4, helpmessage        CMP     r3, r4        BEQ     fillinhelp.exitfilter",        LDMIA   (sp)!, {r1-r4, r12, pc}^,.helpmessage6        EQUD    &502@.helpreplyJ        EQUD    &503T.endmessages^        EQUD    0h.helpsenderr        EQUD    0|.realblockŷ        EQUD    0‘Œ.mouseclick¤F        LDR     r2, [r1, #8]                    ; get button state®A        CMP     r2, #2                          ; is it menu?¸        CMPNE   r2, #&200ÂF        BNE     exitfilter                      ; if not, exit nowÌ]        LDR     r2, [r1, #12]                   ; it's a menu, so store the window handleÖ(        STR     r2, menuwindowhandleà@        B       exitfilter                      ; and returnêôô compare two tasksþZô r1 first char, r2 second char, r3 pointer to first, r4 pointer to second, r5 counter.comparetasks(        STMFD   (sp)!, {r0-r5, link}!        STR     r1, messblock&D        ADD     r3, r1, #28             ; point to new task nameQ        ADD     r4, r12, #command       ; point to string passed to DelayTask:;        MOV     r5, #0                  ; reset counterDP        LDRB    r2, [r4, #0]            ; get first character of stored taskN=        CMP     r2, #34                 ; if it's a quoteXO        ADDEQ   r4, r4, #1              ; increment pointer by 1 to miss itb.comparetaskslooplG        LDRB    r1, [r3, r5]            ; get first char (new task)vI        LDRB    r2, [r4, r5]            ; get second char (DelayTask)€G        CMP     r1, #32                 ; if this is a control code⇩M        BLT     tasksareidentical       ; we've finished, so add the task“@        CMP     r1, r2                  ; are they the same?fiJ        BNE     exitcomparetasks        ; if not, get out of this loop¨J        ADD     r5, r5, #1              ; otherwise increment the loop²6        B       comparetasksloop        ; and loop¼.messblockÆ        EQUD    0Ð.workspaceÚ        EQUD    0ä.tasksareidenticalî!        LDR     r1, messblockø=        LDR     r3, [r1, #4]            ; get task handle"        STR     r3, lasthandle K        ADD     r0, r12, #command       ; make r0 point to command tailJ        STR     r12, workspace          ; addtask loads r12 from [r12] Q        ADR     r12, workspace          ; so store r12 and point to workspace*;        BL      addtask                 ; add this task4"        ADR     r12, workspace>J        LDR     r0, addinthelp          ; are we adding help messages?H        CMP     r0, #1R>        BNE     exitcomparetasks        ; if not, exit now\V        MOV     r0, #2                  ; clear the bit so we don't add them againf"        STR     r0, addinthelppz.exitcomparetasks☓(        LDMIA   (sp)!, {r0-r5, link}‰%        B       exitmessagefilter—¢3ô can corrupt r1-r7, returns with pointer in r0¬Jô r1 pointer to block, r2 task handle, r3 end of block, r4 this handle¶.findfiledescÀ!        STMFD   (sp)!, {link}ÊF        MOV     r0, #5                  ; read current task handleÔ'        SWI     "XWimp_ReadSysInfo"Þ9        MOV     r2, r0                  ; store in r2èA        LDR     r3, [r12, #numtasks]    ; get number of tasksòJ        ADD     r1, r12, #tasks         ; get pointer to base of tasksüM        ADD     r3, r1, r3, LSL #3      ; get pointer to end of task list.findtaskloop>        LDR     r4, [r1]                ; load task handle$B        CMP     r4, r2                  ; is it the right one?.H        BEQ     exitfiledesc            ; if so, get out of the loop8D        ADD     r1, r1, #8              ; look at the next entryB=        CMP     r1, r3                  ; check for limitLG        BLT     findtaskloop            ; if it's not the end, loopVB        MOV     r0, #0                  ; use defaults instead`         LDMIA   (sp)!, {pc}^j.exitfiledesctA        LDR     r0, [r1, #4]            ; get file descriptor~2        LDMIA   (sp)!, {pc}^            ; exit⇦‹.fillinhelp†!        STR     r1, realblock¦G        LDR     r2, [r1, #4]            ; get task handle of sender°=        STR     r2, helpsender          ; store for laterºR        STMFD   (sp)!, {r0-r2, r4-r7}   ; save all this for looking up messageÄA        BL      findfiledesc            ; get file-descriptorÎA        BL      gettoken                ; get the right tokenØ<        ADR     r1, tokenbuffer         ; point to tokenâ!        LDR     r2, realblockì@        ADD     r2, r2, #20             ; insert at block+20ö<        MOV     r3, #232                ; maximum length        MOV     r4, #0
  29527.         MOV     r5, #0        MOV     r6, #0        MOV     r7, #0(*        SWI     "XMessageTrans_Lookup"2)        LDMIA   (sp)!, {r0-r2, r4-r7}<!        LDR     r2, realblockFM        ADD     r3, r3, #24             ; add message header overhead + 4PL        BIC     r3, r3, #3              ; make sure it's a multiple of 4ZF        STR     r3, [r2, #0]            ; store new message lengthdD        LDR     r0, helpreply           ; get reply message coden6        STR     r0, [r2, #16]           ; store itx8        LDR     r0, [r2, #8]            ; get my_refŵU        STR     r0, [r2, #12]           ; copy into your_ref (replied to message)…?        MOV     r0, #17                 ; send User_Message„<        MOV     r1, r2                  ; point to block F        LDR     r2, helpsender          ; get sender's task handleª>        SWI     "XWimp_SendMessage"     ; send message off´M        MOV     r0, #0                  ; set r0 to -1 to claim the event¾        SUB     r0, r0, #1È        B       exitfilterÒÜ.iconbartokenæ        EQUS    "Icon bar"ð        EQUB    0ú        ALIGNT.menusuffix                             ; sixteen menu options should be enough!        EQUD    0        EQUD    0"        EQUD    0,        EQUD    06.menuwindowhandle@        EQUD    0J.thiswasmenuT        EQUD    0^hBô r0 output buffer, r1 input buffer (supplied), r2 char, r3 -1r.menuhelp|D        ADR     r0, menusuffix          ; point to output bufferŷ        MOV     r3, #1‘#        STR     r3, thiswasmenuŒ4        MVN     r3, #0                  ; get -1¤.menuhelploop®@        LDR     r2, [r1]                ; get menu selection¸>        CMP     r2, r3                  ; is this the end?Â<        BEQ     exitmenuhelp            ; if so exit nowÌU        ADD     r2, r2, #–("0")       ; add –II 0 to it to make it a number (ish)ÖO        CMP     r2, #–("9")           ; if this was bigger than 9 make it Aà*        ADDGT   r2, r2, #–("@")-–("9")êO        CMP     r2, #–("Z")           ; if this was bigger than Z make it aô*        ADDGT   r2, r2, #–("`")-–("Z")þP        CMP     r2, #–("z")           ; if this was bigger than a make it A\ *        ADDGT   r2, r2, #–("¿")-–("z") D        STRB    r2, [r0]                ; store it in the buffer G        ADD     r1, r1, #4              ; increment buffer pointers &        ADD     r0, r0, #1 06        B       menuhelploop            ; and loop :.exitmenuhelp D6        MOV     r2, #255                ; get null N;        STRB    r2, [r0]                ; cap the token XV        LDR     r1, menuwindowhandle    ; get window handle mouse was clicked over b5        B       findtoken               ; go back l vô Can corrupt r1-r7 €7ô Window in r1, icon in r2, pointer to string in r3 ⇩Vô r4 pointer to output buffer, r5 pointer in string, r6 pointer in buffer, r7 char “.gettoken fi!        STMFD   (sp)!, {link} ¨C        STR     r0, filedesc            ; store file descriptor ²L        MOV     r0, #0                  ; get current state of menu tree ¼=        ADD     r1, r12, #24            ; buffer for menu Æ(        SWI     "XWimp_GetMenuState" ÐC        LDR     r0, [r1]                ; get first menu option Ú        MOV     r2, #0 ä7        SUB     r2, r2, #1              ; is it -1? î        CMP     r0, r2 ø@        BNE     menuhelp                ; then do menu stuff!K        MOV     r0, #0                  ; it's not a menu, so clear the! @        STR     r0, thiswasmenu         ; menu window handle!.findtoken! ?        LDR     r3, realblock           ; get block pointer!*?        LDR     r1, [r3, #32]           ; get window handle!46        STR     r1, windowhandle        ; store it!>=        LDR     r2, [r3, #36]           ; get icon handle!H6        STR     r2, iconhandle          ; store it!R4        MVN     r3, #1                  ; get -2!\C        CMP     r1, r3                  ; if window is icon bar!fK        ADREQ   r3, iconbartoken        ; then get token for "Icon bar"!pN        BLNE    getwindowtitle          ; otherwise copy from window title!z8        BL      copytoken               ; copy token!☓=        ADR     r2, tokenbuffer         ; point to source!‰B        ADD     r1, r2, r3              ; point to destination!—"        BL      addicondetails!¢T        MOV     r3, #58                 ; store colon (bit after this is in case!¬H        STRB    r3, [r1]                ; message token isn't found)!¶        ADD     r1, r1, #1!ÀO        MOV     r3, #0                  ; initialise counter, r4 holds char!Ê.copydefaultmessloop!Ô6        LDRB    r4, [r2, r3]            ; get char!Þ<        CMP     r4, #58                 ; is it a colon?!èB        ìQ   r4, #0                  ; if so replace by a null!òF        STRB    r4, [r1, r3]            ; write whatever the state!üU        ADDNE   r3, r3, #1              ; if it wasn't a colon, increment counter"6        BNE     copydefaultmessloop     ; and loop"E        LDR     r0, filedesc            ; re-load file descriptor"         LDMIA   (sp)!, {pc}^"$".0ô enters with pointer to window handle in r3"8.copytoken"B/        STMFD   (sp)!, {r0-r2, r4-r7, link}"L.setupcopytoken"VX        ADD     r4, r12, #96            ; output buffer in safe place (after window)"`A        MOV     r5, #0                  ; initialise counters"j        MOV     r6, #0"t.copytokenloop"~6        LDRB    r7, [r3, r5]            ; get char"⇦9        CMP     r7, #–(",")           ; change commas"‹        ìQ   r7, #–(".")"†O        CMP     r7, #–("(")           ; change open brackets (for neatness)"¦        ìQ   r7, #–("{")"°B        CMP     r7, #–(")")           ; change closed brackets"º        ìQ   r7, #–("}")"Ä9        CMP     r7, #–(":")           ; change colons"Π       ìQ   r7, #–(";")"ØA        CMP     r7, #–("?")           ; change question marks"â        ìQ   r7, #–("!")"ìB        CMP     r7, #–("/")           ; change forward slashes"ö        ìQ   r7, #–("\")#]        CMP     r7, #32                 ; if it's a printable character (but not a space)#
  29528. 6        STRGTB  r7, [r4, r6]            ; store it#Q        ADDGT   r6, r6, #1              ; and increment output buffer counter#Z        ADDGE   r5, r5, #1              ; if it's printable (space included) increment#(E        BGE     copytokenloop           ; source counter and loop#29        MOV     r7, #–(":")           ; write a colon#<         STRB    r7, [r4, r6]#F        ADD     r6, r6, #1#P7        MOV     r7, #–("U")           ; write a 'U'#Z         STRB    r7, [r4, r6]#d        ADD     r6, r6, #1#n7        MOV     r7, #–("K")           ; write a 'K'#x         STRB    r7, [r4, r6]#ŵ        ADD     r6, r6, #1#…K        MOV     r7, #0                  ; write a null terminator again#„         STRB    r7, [r4, r6]# #ª)ô r0 already contains file descriptor#´F        LDR     r0, filedesc            ; get file descriptor back#¾V        MOV     r1, r4                  ; get input buffer (token just calculated)#ÈR        ADR     r2, tokenbuffer         ; put in tokenbuffer for later parsing#ÒA        MOV     r3, #32                 ; size of tokenbuffer#ÜG        MOV     r4, #0                  ; don't substitute anything#æ        MOV     r5, #0#ð        MOV     r6, #0#ú        MOV     r7, #0$*        SWI     "XMessageTrans_Lookup"$.        LDMIA   (sp)!, {r0-r2, r4-r7, pc}^$$"$,Tô r1 points to end of token (insert here), r2 points to start, can corrupt r3-r7$6ô r3 icon handle$@.addicondetails$J)        STMFD   (sp)!, {r0, r2, link}$TA        LDRB    r3, [r2]                ; get first character$^6        CMP     r3, #–("U")           ; is it 'U'?$hI        BNE     knowthisone             ; if not, do the window stuff$r?        LDREQB  r3, [r2, #1]            ; if so, get second$|6        CMPEQ   r3, #–("K")           ; is it 'K'?$ŷI        BNE     knowthisone             ; if not, do the window stuff$‘Q        LDR     r0, thiswasmenu         ; no token for this, was this a menu?$Œ        CMP     r0, #1$¤K        BNE     knowthisone             ; it wasn't, so do window stuff$®F        LDR     r1, menuwindowhandle    ; get menu's window handle$¸4        MVN     r3, #1                  ; get -2$ÂC        CMP     r1, r3                  ; if window is icon bar$ÌK        ADREQ   r3, iconbartoken        ; then get token for "Icon bar"$ÖN        BLNE    getwindowtitle          ; otherwise copy from window title$à8        BL      copytoken               ; copy token$ê=        ADR     r2, tokenbuffer         ; point to source$ôB        ADD     r1, r2, r3              ; point to destination$þ6        MOV     r2, #–("M")           ; add an 'M'%        STRB    r2, [r1]%        ADD     r1, r1, #1%D        B       addmenunumbers          ; and add the menu stuff%&.knowthisone%0K        MOV     r0, #0                  ; this definately wasn't a menu%:#        STR     r0, thiswasmenu%D?        LDR     r0, windowhandle        ; get window handle%NF        MVN     r2, #1                  ; is it the icon bar (-2)?%X        CMP     r0, r2%bI        BEQ     aftericon               ; if so don't add icon handle%l=        LDR     r0, iconhandle          ; get icon handle%vG        MVN     r2, #0                  ; is it the work area (-1)?%€E        CMP     r0, r2                  ; if not, add icon number%⇩U        MOVNE   r2, #6                  ; length of buffer (buffer already in r1)%“O        SWINE   "XOS_ConvertCardinal2"  ; r1 now contains end of new string%fi<        ìQ   r2, #–("W")           ; otherwise add a "W"%¨        STREQB  r2, [r1]%²        ADDEQ   r1, r1, #1%¼.aftericon%ÆG        STMFD   (sp)!, {r1}             ; will corrupt r1, store it%ÐR        ADD     r1, r12, #200           ; get a bit of workspace for the block%ÚE        LDR     r0, windowhandle        ; write the window handle%ä        STR     r0, [r1]%îC        LDR     r0, iconhandle          ; write the icon handle%ø         STR     r0, [r1, #4]&(        SWI     "XWimp_GetIconState"& =        LDR     r0, [r1, #24]           ; read icon flags&9        LDMIA   (sp)!, {r1}             ; get r1 back& A        €     r2, r0, #(1<<21)        ; is the icon selected?&*<        LDR     r0, thiswasmenu         ; if this a menu&4        CMP     r0, #1&>        BEQ     greybit&H        CMP     r2, #0&R;        MOVNE   r2, #–("S")           ; if so add a "S"&\        STRNEB  r2, [r1]&f        ADDNE   r1, r1, #1&pN        B       exitsuffixes            ; this is an icon, can't be greyed&z .greybit&☓9        €     r2, r0, #(1<<22)        ; is it greyed?&‰        CMP     r2, #0&—;        MOVNE   r2, #–("G")           ; if so add a "G"&¢        STRNEB  r2, [r1]&¬        ADDNE   r1, r1, #1&¶.exitsuffixes&À'        LDMIA   (sp)!, {r0,r2, pc}^&Ê.addmenunumbers&ÔB        ADR     r3, menusuffix          ; point to menu suffix&Þ.addmenunumbersloop&è6        LDRB    r2, [r3]                ; get char&ò>        CMP     r2, #255                ; if it's negative&ü7        BEQ     aftericon               ; quit this'3        STRB    r2, [r1]                ; store'?        ADD     r1, r1, #1              ; increment buffers'        ADD     r3, r3, #1'$&        B       addmenunumbersloop'..iconhandle'8        EQUD    0'B.windowhandle'L        EQUD    0'V'`]ô Enters with window handle in r1, can corrupt r3-r7, return with pointer to string in r3'j.getwindowtitle't%        STMFD   (sp)!, {r1, link}'~J        STR     r1, [r12]               ; store window handle in block'⇦<        MOV     r1, r12                 ; point to block'‹K        ☓R     r1, r1, #1              ; set bit 1 to not get the icons'†=        SWI     "XWimp_GetWindowInfo"   ; get window info'¦9        BIC     r1, r1, #1              ; clear bit 1'°A        LDR     r3, [r1, #60]           ; get title bar flags'ºB        €     r3, r3, #(1<<8)         ; get bit 8 (indirected)'Ä8        CMP     r3, #0                  ; is it set?'ÎA        ADD     r3, r1, #76             ; point to title data'ØF        LDRNE   r3, [r3]                ; if it's set, get pointer'â$        LDMIA   (sp)!, {r1, pc}^'ì'öH.tokenbuffer                            ; 64 bytes should be enough!(        EQUD    0(
  29529.         EQUD    0(        EQUD    0(        EQUB    0((        EQUD    0(2        EQUD    0(<        EQUD    0(F        EQUD    0(P        EQUD    0(Z        EQUD    0(d        EQUD    0(n        EQUD    0(x        EQUD    0(ŵ        EQUD    0(…        EQUD    0(„        EQUD    0( ](ªí(´(¾+È− "OS_File", 10, file$, &FFA, ,asm, O%(È(Òáÿ  WonderWorks     WonderWorks     WonderWorks     Nick!FormEd2GýÿÿòïÙà~!TemplEdGýÿÿøñÙàŶ8ReadMeEÿÿÿsO3’þ}3SourceGûÿÿä(5 Œ¬‹!FormEd2GýÿÿòïÙà~!TemplEdGýÿÿøñÙàŶ8ReadMeEÿÿÿsO3’þ}3SourceGûÿÿä(5 Œ¬‹TemplEdTemplEdNick¶About this archive
  29530. ------------------
  29531. The file "Source" in this archive is the full Basic source for TemplEd,
  29532. a FreeWare template editor. TemplEd itself is distributed separately; it
  29533. runs a crunched version of the source file. This archive is distributed for
  29534. those who want to modify their personal copy of TemplEd to suit their own
  29535. needs, or just want to take a look at how it's been programmed.
  29536.  
  29537. In case you're interested: the Basic cruncher I use is ccrunch (comes with
  29538. front-end known as BasCrunch), by Ragnar Hafstað. It's great stuff, and
  29539. it's free.
  29540.  
  29541.  
  29542. Copyright notice
  29543. ----------------
  29544. This program is FreeWare. This means that I retain the copyright. You may
  29545. freely copy and distribute it, provided that it is complete with all
  29546. original files, and that you do not sell it. PD libraries may charge a
  29547. nominal fee for the cost of duplication, postage etc. When you use the
  29548. program, you do so entirely at your own risk. You may change the program to
  29549. suit your own needs. If it's a bug fix, or if you think it's an improvement,
  29550. then please send the changes to me at the address below.
  29551.  
  29552. If you have any questions, bug reports or suggestions for improvements,
  29553. you can contact me at the following address:
  29554.  
  29555. Lijnslagerstraat 204
  29556. NL-5625BP  Eindhoven
  29557. The Netherlands
  29558.  
  29559. Dick Alstein
  29560.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $Nick!BootCëÿÿ JqYÄ~!HelpDÿÿÿ⇧f⇦úK!RunDëÿÿ¿U:⇩ó~!RunImageDûÿÿyNJ⇨Á⇩€!SpritesDùÿÿ“Ý◰Ŵ ~chksprBüÿÿ2€tÉ    ~ChoicesDÿÿÿu¥d⇦'
  29561. ~DefaultDùÿÿ‡nô5ŴDeskFSGýÿÿ#ðÙàŵInterfaceCúÿÿ@ÃæT ~SpritesDùÿÿë.pBü;◰TemplatesDìÿÿ!4s⇦:☓!BootCëÿÿ JqYÄ~!HelpDÿÿÿ⇧f⇦úK!RunDëÿÿ¿U:⇩ó~!RunImageDûÿÿyNJ⇨Á⇩€!SpritesDùÿÿ“Ý◰Ŵ ~chksprBüÿÿ2€tÉ    ~ChoicesDÿÿÿu¥d⇦'
  29562. ~DefaultDùÿÿ‡nô5ŴDeskFSGýÿÿ#ðÙàŵInterfaceCúÿÿ@ÃæT ~SpritesDùÿÿë.pBü;◰TemplatesDìÿÿ!4s⇦:☓}!FormEd2!FormEd2$NickJ| > <FormEd$Dir>.!Boot
  29563. |
  29564. Set FormEd2$Dir <Obey$Dir>
  29565. If "Alias$@RunType_FF9"="" Then Set Alias$@RunType_FF9 /<Obey$Dir> %%*0
  29566. Set Alias$@RunType_FEC /<Obey$Dir> %%*0
  29567. IconSprites <Obey$Dir>.!Sprites
  29568. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | > <FormEd2$Dir>.!Run
  29569. |
  29570. | Task description file for FormEd
  29571. |
  29572. Set FormEd2$Dir <Obey$Dir>
  29573. RMEnsure WindowManager 2.00 Error FormEd2 needs a newer window manager
  29574. RMEnsure InterfaceManager 2.00 RMLoad <FormEd2$Dir>.Interface
  29575. RMEnsure InterfaceManager 2.00 Error 0 System Resources cannot be found
  29576. WimpSlot -min 400k -max 400K
  29577. IconSprites <Obey$Dir>.!Sprites
  29578. If "Alias$@RunType_FF9"="" Then Set Alias$@RunType_FF9 /<Obey$Dir> %%*0
  29579. Set Alias$@RunType_FEC /<Obey$Dir> %%*0
  29580. Run <FormEd2$Dir>.!RunImage %*0
  29581. derWorks     $!formed2 ¬¬ ððððððÐÐÐÐÐа°°°°°‘‘‘‘‘‘ppppppPPPPPP000000@‘@‘ààààÀÀÐÐàà°àà°P€P€ð°ð°°ð°ð"""""""""""""""Rwwwwwwwwwww""""Rw"w"""""w"w""""Rwwwwwwwwwww""""Rww"w""""Rww"w""""Rww"wwwwwRww"wÌÌÌwRww"wÌÌÌwRwwwwwwwwwwwÌÌÌwRw"""""""w/wÌÌÌwRwwwwwwwwwwwÌÌÌwR""""wÌÌÌÌÌÌÌÌÌwR""""wÌÌÌÌÌÌÌÌÌwR""""wwwwwwwwwwwR"""""""""""""""RPUUUUUUUUUUUUUUUUWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     @-éà•âñ•âÈ  ã0 ã@ ã#hÀŴà ° áÀ…â{å.Pãüÿÿ°⇧â  áAâñåPã €ÁúÿÿÀ ãt•â0 ãï  áPã
  29582.  ã
  29583.  áq •â
  29584. 0 ã@ ã ï   á]0•âòåóåPáûÿÿ
  29585. R᪠ã
  29586.  á   á 0 ã@ ã ï
  29587.  á ãè<Obey$Dir>.!SpritesObey$Dirks     WonderWorks     WonderWorks     WonderWorks     etalpmeT    setalpmeT    setalpmeTÿKUorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ,…ÀÔè<€P¸x@-é†äPã€ý  áC ã,ë'•b€½hÀ†äHë ã …å(…â⇦flå⇦%flå€èàã0À…â…â\á€ý¨…äûÿÿê@-é 0 áÀ†ä\ã€ý †åPã’•@½òfi á@ë€ýè@-éFQãÀ†* €ýèInterfaceManagerInterface Mgr    2.00 (28 May 1992)P-éÀ†ä@ á  ã+0…â ãêëÃw ŵâRáùÿÿº‘ýèInterfaceII3dColours .àPãð°¡>P-é@ ã3^•â
  29588. TãàÃ>‘ýÈ á4ëPã >‘ý@☓âPŶâôÿÿêInterfaceSlabButtonRender3dWindowInitialiseCloseDownSetWorkareaPointerRemoveWorkareaPointerPollSendHelpPreProcessKeyPlot3dIconBoundingBoxÀ†ä [ã ñ•0
  29589. ê¯ê⇧ê?êKê#ê5êªê
  29590. ê%êêãê•âòfiãæUnknown Interface Manager operation.€Interface Manager unable to claim workspace.Interface is currently active.    Interface II (vsn 2.00)    (c) 1991 SoftWare Interrupt Developments    For more information contact :-        SoftWare Interrupt Developments.        40 Castle Ings Gardens,        New Farnley,        LEEDS,        LS12 5EG.*3dColours sets the colours used as default by interface for rendering icons.The colours specified are Wimp colours in the range 0-15.Syntax: *3dColours <border dark> [<border light>] [<slab out>] [<slab in>] [<channel>]Wimp_BorderIconWimp_BorderWindowWimp_ClaimInterfaceWimp_ReleaseInterfaceWimp_SetWorkareaPointerWimp_RemoveWorkareaPointerWimp_PollPointerWimp_SendInformationWimp_PreProcessKeyWimp_BorderPlotIconWimp_BorderBoundingBox ÿ_-é4ÐMâ ‘å° á00™å áÂëSã
  29591.  á ‘è Bâ0Câ€⇦â‘⇨â™è œåR㺠۠Û. á2 ã €è@âÍï áÉïPã-
  29592. œåPãªÛå* áPá   Ûå€Ûå‘Ûå Ûåð-é!ëð½è00‡åSã4Йÿflý áÊïPãœóÿÿSã4ЙÿflýÛåPã,•   ;@Ûåï àRãûÿÿÛåPãøÿÿ4Йâÿflýè@-é ãÌå€ýè4Йâÿflýè•âRã  ÃñŴà/êê
  29593. êêêêê!ê@-é ã%ë ã#ë€ýè@-é ëàãë ãë€ýè@-é ã@DâPEâ`ŷâpâë€ýè@-é ãë€ýè@-éñÿÿëðÿÿë€ýè@-é    ë ãë€ýè@-é0†å ã…åë0…å€ýè_-éPã Á    € Á‘ Á
  29594. € ±
  29595. ‘ ±À…â †è áæï ã á  áEï% ã áEï% ã  áEï     áæï% ã áEï% ã  áEï
  29596. @Dà
  29597. PEà
  29598. `ŷà
  29599. pà°[âåÿÿÊflýèÿ_-éTÐM†áŴâeë@DâPEâ`ŷâpâ‘—å àã0 ™å àã ⇩â     á
  29600.  á  áÑëTЙbÿflýh° á‘èRáS¡V¡W¡ñÿÿº  á(™â%ëíÿÿj  á0 ã6ÿÿëéÿÿêÿ_-é☓ÐMâ@ á Ŵâ(’è á0ŴåËï q q$ ™r´{☓Йbÿflýh “åRãRX»L™â ë☓Йbÿflýh ÑåRãRR “ à Ŵå  áÿÿë☓ЙâÿflýèP-é@ á­ëpãP½òfi  áz ã®ëpã b ª pP½òfi(…â’è☓èc/•â0 ãÒä³ëÄw0◰âpãSøÿÿ‘ýèÿW-éÐMâ@ á á áÜÿÿëàc☓eЙbÿ–ýhÑå “å". áPá    ‘ÑåYã…’G•²    Ñ· ±à“èPEà`Fàpà€⇦àà☓èЙâÿ–ýèP-é ÐMâ  á á á½ÿÿë Йb‘ýh@àã@™å0 ãÌþÿë Йâ‘ýèP-ér ã& ãëu ã% ãë‘ýè?^-éÐMâ° á  á‘ áå™äVëpãЙ?fiý
  29601.  áXëpãЙ?^½òfi ãeëöÿÿj@ á
  29602.  ãaëòÿÿjP áTã      ¡  ³0 Ã    0 Ñ™â€è áÍï áðÿÿêЙâ?fiýèÿ ÿ_-éOâ   ãÜï$ Oâëÿflýèÿ_-éBâ ãßïÿflýèŵBad pointer passed to 'Wimp_BorderIcon' in R1.  A mouse click block should be passed.◰An invalid border type has been specified using 'B<Border_type>' in the validation string of the icon.  <Border_type> should be 0 - 3.☓An invalid colour has been specified in the validation string.  Colours 0 - 15 are valid.ŶBad parameter in validation string after 'R' command.  The valid parameters are, 0 switch off, 1 switch on, 2 toggle state.ŷBad pointer passed to 'Wimp_BorderWindow' in R1.  A Redraw block should be passed.⇦Sprite '%0' specified in the icons validation string does not exist in the sprite pool.⇨Bad pointer passed to 'Wimp_SendHelp' in R1.  A Help_Request block should be passed.ÿ_-é<ÐMâ° á  Ŵâ‹è  áQã<Й²ÿflý¸Tëdëpãi hp<Йÿflý⇧â0 ã Sã
  29603.  ÐäRãÚ;Rã  Áä0◰âõÿÿê Ðä;Rãð°  ã Áä,flå⇧åœå ⇧å0◰â0Ãã0⇧å ã  á œåçï<ЙâÿflýèP-é áàãëP½ht•bð a  ã€è †å€â …å‘ýèP-é    ë‘ýh áŴâŴëàãŴå †å@â …å‘ýèP-é0…â+ŴâQáP½¨òfi£0’äPáùÿÿAâ‘ýèŴToo many interface tasks (maximum 128).P-éŵè áÎï’åPãP½òfiŴ⑽èP-é0‘å0à àRàà‘½èP-é0 áflå"flåóÿÿ뛑ýèP-é0 ã ÐäRãàÓ‘ýØSã
  29604. ;Rã0 öÿÿêARãºZRã  ŵÓRá‘ý0 ãîÿÿêP-é  á áÑäPãAÒ; Ó;PãŴP½òfi,Pã PŴóÿÿ
  29605. ¢ ã!ï á q‘½èS-造áð‘è—å€⇦â—è@àAà@☓àPŶà`ŷàpà†è@Dà    PEà@Äá@☓àPÅáPŶà`ÆápÇá›ýèÿ_-éàã ã5ï` á ã5ïp áŷ€ á‘ á@HâPIâ0 ã3¶ á3 á Pá° Á    Xá  ±      ¡ð…èÿflýèP-éÐMâ á  ã Ŵå  ã  Ŵå  á ãçï áЙâ‘ýèùP-é$ÐMâ0 á áŴåËï@’åŴâà’èCàŴà Bà ŵà$Йâù‘ýèP-éð‘è’åŴâ’è@àAà@DàPEà`FàpGà‘ýèP-é@ á Ôä0ÑäRà‘ý Rã‘ý¸øÿÿê€P-é_ÿÿ둽h0 álflå* ãdÿÿëà ‘ýè_-é(ÐMⰠᠠᑠဠã Xá     ¡(Й¢flý¨
  29606.  áŴà  áçÿÿë     a(Йbflýhpã‘ €⇦ðÿÿêPãð°ú_-é<ÐMâ° á’è     á¥ÿÿëPá-zã+
  29607. €œå     á
  29608.  áL ã  ãŒP☓âUá•P☓U0à
  29609. ⇩P☓âUá‰P☓U0 
  29610. * ã¯P☓âUá0à
  29611. ®P☓âUá0 
  29612.      á
  29613.  á  á 0 á&ë<Йâúflýè¼ÿÿë
  29614. Pá
  29615.  á     á 0 áë ã  ã<Йâúflýè ã  ã<ЙâúflýèP-é(ÐMâ@ á` á áPŴèÎï’å ã’ŴP ãÑäPãPŶÂûÿÿÊ á á@àãÒï(Йâ‘ýèðY-é(ÐMâ@ áP á` áp á€ ã° ápâXãWÁ Ã  Ã(ЙÂð−ýÈ á á  áÝþÿëpàc€ cñÿÿjêþÿëpãk îþÿpëÿÿ
  29616.  ãýþÿëèÿÿjQáæÿÿ‡å
  29617. â
  29618. Pã   Áÿÿ  °⇧ ’⇧   ã(Йâð−ýèðÀÿS-é<ÐMâP áã@ @àÀãPãP$
  29619. Pã<ЙÂÿ›ýÈPã<Йÿ›ý áÏï ™âÀ‘èV㺠áÿÿëPá<Йÿ›ýwã
  29620. º á á  á‡þÿë­þÿëpãp ±þÿp
  29621. ë<ЙbÿS½h»•bð a<Йâÿ›ýèë<Йâÿ›ýè  { ñÿÿz÷ÿÿêP-éÐMâ áë$ †åQáЙ‘ý$…å ™â0àã ãpã¥þÿ cŵä0›âøÿÿº á áëЙ⑽èP-é$†åpã‘ýj ã ãïàã$…å‘ýèP-é0 ã @€â ÐäRãº,Rã;R
  29622.  Áä0◰àQáõÿÿ  ã Áä á@â‘ýèÿP-ép ã` ã Ŵâ0‹è0 ã  á°á$ ³é¿I £.¯ÿ‘½è?P-é@ á“å¯þÿëP á,þÿë?‘ýh€âflë  á0Ŵâqë?‘½h€à á,  ã§ë,P€å?‘ýèÿ_-é@ áþÿëÿflýh‘ áø“耠ã −å⇨â⇧ë° á Xáÿflý¨⇩àP‘èPá0€⇦øÿÿQáR\^ ÿflýTãUVW 0€⇦ëÿÿêP-é⇨â0⇦â/ àãUë −å0°Kâ‘ýèþ_-é4ÐMâ  á@ á áòýÿë4Йbþfl½hP á ‹å‹èzþÿë‘ á  á° áŶâ]ë`”åÀ ãŴ ãpŴàê0`ŷâVáª@„èYáùÿÿqãrs~\À òÿÿ
  29623. Zá R¡
  29624. S¡[¡íÿÿºQဠ¡À ¡éÿÿê\ã4Йþ_½òfi…â4Йâþflýèÿ_-é ŷâ¾üÿëÿflýèŵSprite does not exist specified in sprite pool.P-é@ á “äRã   B0Ŵâh á0Câ0€ä☓ä‘ýèþQ-ép‘äRãþ’ý@ áP á`ŵàWã00 €◰àRã» á áàÿÿëþ’½hp á«àþ’ýè@-éSãŶŷ C€ýèP-é‘åPã ‘ýèP-é@ á “åRã B  ã☓ä‘ýèRãð ÿO-éã%ã* R⺠RâºøC±èøC è  Râûÿÿª rãÿ•ý ‹âº8@±è8@ èÿ•ý Bâ ‹âº@±è@ èÿ•ý Bâ ‹âº0’ä0€äÿ•ý Bâ ‹âÿ•ý0’ä0Àä#4 á RâûÿÿÊÿ•ýè0Ñä0Àä Râÿ•ýãùÿÿÒÿÿêÀâÁã…Á á °lâ0’ä3< á Râ%º RâºðG±è;◰á4L áK☓á5\ á[Ŷá6l ákŷá7| á{á8… á⇧⇦á9† áœ⇨á:¬ á«⇩áø è>< á  Râëÿÿª rãÿ•ý ‹â ºp@±è;◰á4L áK☓á5\ á[Ŷá6l ákŷáx èÿ•ý Bâ>< á ‹âº@±è;◰á4L áK☓á€èÿ•ý Bâ>< á ‹âºà’ä;◰á0€äÿ•ý Bâ>< á ‹âÿ•ýà’ä;◰á0Àä#4 á RâûÿÿÊÿ•ýè0flå °Oâ[àð°$°flå°⇧à  •â‹äpãð°Ñ0œç0◰à0⇧çøÿÿêÔ  $(Tdlp ÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  29625.  
  29626. *****************************************************************************
  29627.  
  29628.             FormEd2 3.04  -  by Acorn Computers/RISC squad/Paul Hobbs
  29629.  
  29630. *****************************************************************************
  29631.  
  29632.                            Paul Hobbs commentary
  29633.                            ---------------------
  29634.  
  29635. This is RISC Squad's FormEd version 2.84b enhanced to include Interface 3D
  29636. icons and some extra options to make it easier to use. The template 'Filer'
  29637. and the 'Handles' code were extracted from version 2.87 of Risc Squad's effort.
  29638.  
  29639. If I knew who 'Risc Squad' were I'd ask permission before hacking their
  29640. program, but they are so modest they don't even give an address. I intend
  29641. eventually to create !FormEd+ (hows that for originality) using my EvntShell
  29642. library and even more features when I can get around to it.
  29643.  
  29644. New Features Include:
  29645.  - Resizing of icons without dragging for more accuracy
  29646.  - The addition of Left/Right/Top/Bottom alignment options for selected icons
  29647.  - The 'Arrange' option for selected icons
  29648.  - Interface style icons may be created directly from the menus, including
  29649.    new borders introduced with v2.00 of the Interface module
  29650.  - DragASprite solid dragging for RISC-OS 3.1 (wow!)
  29651.  - Support for RISC-OS 3 boot message
  29652.  - Template 'Filer' window (no more windows opening all over your desktop!)
  29653.  
  29654.                            RISC Squad commentary
  29655.                            ---------------------
  29656.  
  29657. Completed 21st September 1990 to version 2.80. Here's a list of all the
  29658. things I did, as far as I can remember - I didn't make a list as I went
  29659. along.
  29660.  
  29661.         i) Icons can now be selected/deselected by clicking the menu button
  29662.                on them whilst holding the SHIFT key down.
  29663.        ii) The icon dragging procedure - with the left button - now moves
  29664.                all of the selected icons in the window.  Dragging with the
  29665.                right button (re-sizing) is unchanged.
  29666.       iii) The main menu structure has been split into an Icon menu and a
  29667.                Window menu - for convenience and for speed.  Previous
  29668.                releases of FormEd were notoriously slow at creating their
  29669.                menus. Each of the two menus includes an option for calling
  29670.                up the other, which will then be opened as default on each
  29671.                subsequent occasion.
  29672.        iv) The Window menu is largely unaltered, but does include a 'save'
  29673.                option for saving only one template at a time. Be warned,
  29674.                font freaks - the save routine will check for anti-aliased
  29675.                fonts in all other windows too, so I don't know what will
  29676.                happen in that situation. Whatever it is, it shouldn't be
  29677.                fatal.
  29678.         v) The Icons menu is now far more versatile than before.  Many
  29679.                choices are now available for all selected icons (in that
  29680.                window only) including specific choices from the EDIT ICONS
  29681.                submenu structure - notably BUTTON TYPE !!
  29682.        vi) The RENUMBER option is virtually as before, but the renumbering
  29683.                process can be optimised by the use of the MENU button whilst
  29684.                depressing the CONTROL key. This is identical to choosing the
  29685.                'Renumber #nn' option directly.
  29686.       vii) The DESELECT ALL option deselects all the icons in the current
  29687.                window.
  29688.      viii) The COPY and MOVE choices may now be performed on either single
  29689.                icons or on all the selected icons.
  29690.        ix) The WIPE option may now be on selected icons, on a single icon or
  29691.                on any icon number specified. I find this useful in two
  29692.                instances - (i) When I import templates which have 'missing'
  29693.                icons that aren't used - see Paint's 'save' box, icon #1 is
  29694.                to the right and is '<CRAP>'  (ii) If I can't find one of my
  29695.                own icons !!
  29696.         x) Note that any options which are either on 'selected' icons or on
  29697.                a specific icon can be controlled by clicking MENU over a
  29698.                specific icon for the latter, or on no icons (the window's
  29699.                work area) for the former. In such a case, if no icons are
  29700.                selected, you will be informed, eg. 'Wipe No Icons' - which
  29701.                will also be 'shaded out'.
  29702.  
  29703.   All in all, the lesson to be learned from this is - if you want any icons
  29704. to be selected (in the finished template) - leave them to the end, so they
  29705. don't screw up your work !
  29706.  
  29707. PS   I also put in an 'Info' box and attached it to the icon bar menu as
  29708.      expected. Plus, while checking up on the 'Save one template' job I
  29709.      re-enabled the facility to save off the entire file merely by choosing
  29710.      the 'Save templates' option on the icon bar menu. - this had been
  29711.      REMd out !
  29712.  
  29713. *****************************************************************************
  29714.  
  29715.                     Updates, Version 2.81 - 24/11/90
  29716.  
  29717.   The main problem bugging those people I knew of who were using this was
  29718. that of the un-named windows not being saved. I have therefore included a
  29719. new error in the 'save' routine such that the error 'Only the named windows
  29720. were saved' occurs if any of the templates were un-named.
  29721.   I also fixed the 'Move Selected' option from the 'Icons' menu, which did
  29722. absolutely nothing in version 2.80.
  29723.  
  29724. *****************************************************************************
  29725.  
  29726.                     Updates, Version 2.82 - 02/12/90
  29727.  
  29728.   Oops, version 2.81 was chronically buggered ! The aforementioned error
  29729. occurred on every occasion, without exception. This is now completely
  29730. fixed ! The extra features are as follows :
  29731.  
  29732.         i) It is now impossible to create un-named templates.
  29733.        ii) The identifiers of windows must be different on a non
  29734.                case-sensitive basis, i.e. It is not now possible to call one
  29735.                template 'Save' and a different template 'save' even though
  29736.                the names, strictly speaking, are distinct.
  29737.       iii) Clicking on the icon bar icon opens a dialogue box, prompting the
  29738.                user to enter the identifier of the new template. Press ENTER
  29739.                or click on OK to confirm; press ESCAPE or close the box to
  29740.                cancel.
  29741.        iv) Alternatively, a new template may still be created by the use of
  29742.                the icon bar menu structure. The normal rules for identifiers
  29743.                still apply.
  29744.         v) Any new template has its title bar icon set to text as before,
  29745.                but the text defaults to the identifier at the time of
  29746.                creation. This allows easy reference on a set of newly
  29747.                created templates.
  29748.        vi) As a result of all this, the errors such as 'Only named windows
  29749.                can be saved' and 'Only the named windows were saved' are now
  29750.                a thing of the past !
  29751.       vii) On a completely different point : newly created icons now appear
  29752.                directly underneath the pointer rather than a small distance
  29753.                above it.
  29754.  
  29755. *****************************************************************************
  29756.  
  29757.                     Updates, Version 2.83 - 23/12/90
  29758.  
  29759.   Aha, welcome back to all template designers. It's been exactly three weeks
  29760. since v2.82 and in such a short time I found a lot to do to the program, it
  29761. wan't hard. Have you noticed how all of these have been issued at weekends,
  29762. i.e. Friday, Saturday, then Sunday twice ?
  29763.   I suppose I should tell you what I've done to it again - well, in order of
  29764. appearance . . .
  29765.         
  29766.         i) The icon bar menu is restructured so that the templates and the
  29767.                sprites are handled independently. This also makes the main
  29768.                menu less tall, which looked very silly.
  29769.        ii) You will of course have noticed an unfamiliar option on this menu
  29770.                as soon as you tried it out after you'd read through part (i)
  29771.                i.e. the new 'Clear' option. Fairly self-explanatory, all it
  29772.                does is asks for confirmation, then clears all templates from
  29773.                memory. This is mainly useful for loading a new file etc.
  29774.            For example, if you want to pinch the save box from Edit, then
  29775.                you would load the templates from Edit, save off just the one
  29776.                template you wanted, clear the templates then re-load the old
  29777.                file, eg from RAM:. This saves either (a) deleting all of the
  29778.                templates in the file 'by hand' or (b) quitting FormEd and
  29779.                waiting for another copy to load and initialise (very slow)!
  29780.       iii) The next idea I had was to add a facility for certain 'default'
  29781.                icons, rather than the <Untitled> icon as before. This became
  29782.                a thorough restructure of the icons menu, to become a more
  29783.                filer-type menu tree. Here's how the new 'icons' menu looks.
  29784.        iv) Create icon - On its own, this creates the old <Untitled> icon,
  29785.                almost. The submenu has a variety of goodies on offer ;
  29786.                Text      - Colour 12 bordered text icon   (Click/Drag)
  29787.                Sprite    - 'Free-standing' sprite icon    (Click/Drag)
  29788.                Arrow     - Colour 12 bordered arrow icon  (Click/Drag)
  29789.                Option    - Normal 'Optoff,Opton' icon     (Radio)
  29790.                Radio     - Normal 'Radiooff,Radioon' icon (Radio)
  29791.                Writeable - Normal text entry icon         (Write/Click/Drag)
  29792.                Menu      - Normal menu icon, eg 'OK' box  (Menu)
  29793.                Comment   - 'Free-standing' text icon      (Click/Drag)
  29794.                             e.g. the 'Name:' icon in a
  29795.                                  ProgInfo window.
  29796.  
  29797.         v) This is where the similarities to the Filer start. The third
  29798.                choice is either 'No Icons' or 'Selected Icons' or 'Icon #0'
  29799.                for example. The submenu yields to present the choices :
  29800.                Edit, Copy, Move, Wipe, and Renumber - all as in v2.82
  29801.        vi) By the way, the 'Button type' menu has been rigged to disallow
  29802.                types 12 & 13 (reserved) and type 11 is once again referred
  29803.                to as 'Radio'
  29804.       vii) Back to the filer, the next two choices are 'Select All' and
  29805.                'Deselect All'
  29806.      viii) Lastly, 'Tidy Icons' removes any spurious icons that lie wholly
  29807.                outside the window's Work Area. Note that this is NOT the
  29808.                same as outside the opened window space. For example, in
  29809.                Paint's notorious SaveBox [see v2.80, (ix),(i)] the CRAP icon
  29810.                is within the Work Area, but the lack of scroll bars on these
  29811.                windows sometimes makes it seem to lie beyond these bounds.
  29812.  
  29813.    NB when using the default icons on the 'Create' submenu, make sure that
  29814.       you remember to set the button types of the icons, particularly the
  29815.       arrow icons (usually Auto-Repeat). The icons default to Click/Drag
  29816.       because they rarely appear in exactly the right place, so need moving.
  29817.  
  29818.                               Happy templating ! !
  29819.  
  29820. *****************************************************************************
  29821.  
  29822.                     Updates, Version 2.84 - 07/02/91
  29823.  
  29824.   Thought for the day :
  29825.   When I use this - and I do, despite the bugs - I nearly always use the
  29826. icons menu rather than the windows menu, but this poses an annoying problem.
  29827. How does a lazy programmer (contradiction ?) like me delete a window without
  29828. using the other menu ? Answer - put the 'Delete window' choice on BOTH.
  29829. Completely against the idea of separating the two menus, but I don't care.
  29830.   I was quite stunned when I happened to notice how Acorn handled their icon
  29831. indirection workspace - it goes like this. (i) DIM a large block of memory.
  29832. (ii) Set a pointer to the start of this area. (iii) Whenever workspace is
  29833. needed, use the memory at the pointer, and move the pointer on. (iv) When
  29834. the pointer reaches the end of the buffer, annoy the user by generating
  29835. errors. Actually, (iv) might have been 'by crashing without explanation' -
  29836. but if it was, I've already 'corrected' this.
  29837.   To counteract this problem, the pointer is moved back to the beginning
  29838. when the last template is deleted, or if 'Clear' is chosen from the icon bar
  29839. menu. Crude, but still better than Acorn.
  29840.   I've been hassled a lot recently by my friend Anonymous 'Rabbit' Unknown
  29841. 'cos he was getting worked up about the indirection buggy bits - apparently,
  29842. when large, multi-indirected templates are used (waffle) the indirection
  29843. buggers up so the icons start to contain bits of the !RunImage, i.e. it
  29844. points to the WRONG BIT of application workspace. As a result, when you wipe
  29845. it, bits of your (still running) program go missing, and crashes ensue.
  29846. Alternatively, all the icons are inter-connected, so when you delete the
  29847. unwanted bit of one, the other one does spurious things too.
  29848.   I think I've sussed it though; I looked at the code, changed a few things
  29849. and now it seems to work, so to quote the ISV docs, 'Everyone is happy'.
  29850.   Rabbit was also whining about the way that the files were saved
  29851. 'backwards' so that the window stacking is reversed. Big template files have
  29852. to be kept tidy in this respect, it was annoying !
  29853.   I've just done another detail - when a single template was saved before,
  29854. the 'Original' filename, as appears off the icon bar 'save' box, was changed
  29855. to become that of the single template just saved. It was wrong, it's not
  29856. now.
  29857.   The other (trivial) bug was that the colours menus did odd things;
  29858. sometimes the icon colours menu was in monochrome, and always there were
  29859. problems with mobile tick on the currently selected colour - particularly if
  29860. a menu choice was made with ADJUST. This is fixed too. Acorn were previously
  29861. reading the palette each time the tick moved, to decide which colours
  29862. contrasted with which others - this is now, of course, done on the WIMP
  29863. message which has something to do with palette changes, and it's faster too.
  29864.   Typical.
  29865.  
  29866. *****************************************************************************
  29867.  
  29868.                     Updates, Version 2.84b  - 01/03/91
  29869.  
  29870.   Nothing fascinating, as usual - a minor bug fix to do with the
  29871. 'Icon #nn.Edit.Text' bit of a submenu, from where the text sometimes goes
  29872. walkies. The usual un-recreatable bug sort of idea, the icon would contain
  29873. text, but the menu would suggest that it had a null text string.
  29874.   Also I added a new choice to the icon bar menu, 'Finish', which is exactly
  29875. equivalent to 'Save Templates' then 'Clear Templates'. Some choices, i.e.
  29876. 'Finish', 'Clear' and 'Save' are now shaded whenever there are no templates
  29877. loaded into FormEd.
  29878.   I thought it would be a nice idea to be able to load an application's
  29879. 'Templates' file by merely dragging the application to FormEd, so it now
  29880. attempts to load the file '!ApplName.Templates', failing if it is not found,
  29881. or if it does not have the file type &FEC (Templates). I was right about the
  29882. nice idea, it's very convenient ! The slight fib is that the normal error
  29883. 'This application has no Templates file' occurs even if it exists, but with
  29884. the wrong file type. So who cares anyway ? Not my problem.
  29885.   Lastly, the general icons menu now opens such that the pointer is usually
  29886. over the 'Selected icons' jobbie, making editing slightly easier, ta very
  29887. much Mister WIMP, see you on the next version of FormEd.
  29888.  
  29889. *****************************************************************************
  29890.  
  29891.   For those interested, here's Acorn's crap on the subject, as found in my
  29892. application directory. Anything subsequently in this text file is unedited,
  29893. excepting the last few lines (blanks and asterisks).
  29894.  
  29895. *****************************************************************************
  29896.  
  29897. Notes on using FormEd, 16-May-89
  29898.  
  29899. FormEd is an editor of Template files. To understand this you need to
  29900. understand the program interface of the Window System, as described in the
  29901. Programmer's Reference Manual. The description here assumes an understanding
  29902. of template files.
  29903.  
  29904. FormEd is started by double-clicking on a template file after the FormEd
  29905. icon has been "seen". This will cause FormEd to be loaded, and to display
  29906. all of the windows in the template file. Alternatively, double-click on
  29907. FormEd itself and it will be loaded with no current windows. If a template
  29908. file does not appear to load properly, give more memory to FormEd before it
  29909. starts using the Task Manager window.
  29910.  
  29911. A template file is often constructed with reference to a specific set of
  29912. sprites. A sprite file can be dragged onto the FormEd icon on the icon bar
  29913. to set the available sprites. These are displayed in a window. Some previous
  29914. versions of FormEd used to provide facilities for editing sprites, these are
  29915. now provided only in the Paint application.
  29916.  
  29917. Clicking on the FormEd icon creates a new window in the current template
  29918. file, and displays it on the screen.
  29919.  
  29920. The menu provided from the icon on the icon bar provides the following
  29921. functions:
  29922.  
  29923. Create window - similar to clicking on the FormEd icon, except that a name
  29924. may be specified for the template.
  29925.  
  29926. Load templates - allows you to type in the filename of a template file to be
  29927. loaded, instead of dragging an icon from the Filer.
  29928.  
  29929. Save templates - a save box for the templates being edited.
  29930.  
  29931. Quit - quit FormEd. Beware that this has no "confirm" option, so any edits
  29932. will be discarded instantly if you choose this menu entry.
  29933.  
  29934. The template windows displayed by FormEd mirror precisely the size, position
  29935. and properties of the windows in the Template file. The following actions
  29936. directly affect the stored values:
  29937.  
  29938. Close the window - deletes it from the template file.
  29939.  
  29940. Move/scroll/resize the window - moves the default setup of the window in the
  29941. template file.
  29942.  
  29943. Clicking MENU on a template window produces a menu tree that allows a wide
  29944. variety of alterations to the menu structure, based on the various control
  29945. fields of a window structure as described in the Wimp documentation. It also
  29946. allows you to create icons in the window. An icon, once created, can be
  29947. moved and resized using drag-SELECT and drag-ADJUST. It can also have its
  29948. properties adjusted by pointing at it and then clicking MENU, and following
  29949. the "amend icon" submenu.
  29950.  
  29951. The best way to experiment is to examine and update the template files
  29952. belonging to the Applications Suite (saving the original first!). It's also
  29953. possible to update the template files used by ROM utilities. These reside in
  29954. the deskfs: filing system in the ROM. They are accessed via the environment
  29955. variable Wimp$Path, so by updating this to search a directory of your own
  29956. first where your updated template files reside, you can replace the window
  29957. templates used by the utilities in the ROM.
  29958.  
  29959. Your ability to drag and resize icons may be affected by a button type
  29960. affixed to an icon: only those button types which generate the appropriate
  29961. Wimp events can be dragged and resized directly. It's interesting to note
  29962. that FormEd keeps no data structures describing each template window,
  29963. relying on the Wimp to keep and manipulate each structure.
  29964.  
  29965. FormEd keeps a file of sprites in memory which can be used in icons in the
  29966. template being edited. The default sprite file used is the file Default
  29967. inside !FormEd, which is in fact a copy of the sprites found in the RISC OS
  29968. ROM. To load in a separate sprite file to use with your template file, drag
  29969. the sprite file onto the FormEd icon.
  29970.  
  29971. *****************************************************************************
  29972. s     ô > <FormEd2$Dir>.!RunImageAô /// Forms Editor program (for designing Wimp Templates) ///ô1ô  Buggered about with with by The RISC Squadô  Now on version 2.84bô(ô Directory Structure: . . . Snore !ô    ô !Formed.!Boot
  29973. ô !Formed.!Help ô !Formed.!Run Jô !Formed.!RunImage            (this file) - run when !Run is executedô !Formed.!Spritesô !Formed.Defaultô !Formed.Spritesô !Formed.TemplatesôÈ− "XHourglass_On"#È− "OS_GetEnv" ¸ commandstring$hw%=¹:hwic%=-2Þ fontcounts% 255#ã I%=0 ¸ 255:fontcounts%?I%=0:íô -- Start Wimp goingHÈ− "Wimp_Initialise",200,&4B534154,"FormEd2" ¸ version%,task_handle%@î Ŷ òerrordisplay(fl,ö$,fi) : ô after calling Wimp_Initialise!)`wbcol=&0:`tbcol=&D:`sco=&3:`mbcol=&B*`wfcol=&7:`tfcol=&7:`sci=&D:`tbcol2=&CDragASprite%=£Þ inv% 27,outv% 23Þ px2% 1,px4% 3,px256% 255ògetmodeinfo switched%=£!Þ factors% 15,pixtrans% 15"ô -- dimension arrays#'Þ pal%(2),bright%(15),uncolour%(15)$/Þ q% &2000,erroraddr%(4),oldq% &100,_Q% 256%*Þ indexdata% 32*24+20,fontbinding% 255&maxbuf%=&3000'&Þ buffer% maxbuf%:curbuff%=buffer%(
  29974. nh%=32)LÞ handle%(nh%+1),wident$(nh%),wptr%(nh%),tempind% nh%*16,temppatch%(nh%)*>ã I%=0¸nh%:handle%(I%)=I%-1:wident$(I%)="":í:handleSP%=nh%+Þ spritename% 12,.Þ menufree% &2500:menuend%=menufree%+&2500-Þ menulist% &100.brx%=400:bry%=740/>currentwindow%=-1:currenticon%=-1:dialogue%=-1:def_menu%=10spritef$="":clear%=£1DÞ ib_text% 256,ib_sprite% 12,ib_buffersize% 6,ib_validation% 25620Þ tb_text% 40,tb_sprite% 12,tb_buffersize% 63!Þ mb_fsize% 6:$mb_fsize%="30"4Þ mb_wident% 125&Þ mb_renumber% 5:$mb_renumber%="0"6!Þ mb_delete% 5:$mb_delete%=""7&Þ mb_Hspacing% 6:$mb_Hspacing%="8"8&Þ mb_Vspacing% 6:$mb_Vspacing%="8"9%Þ mb_crsprite% 12,mb_rnsprite% 12:nsp=80:ns%=10;GÞ spw%(nsp),sph%(nsp),spwx%(nsp),minx%(nsp),miny%(nsp),spname$(nsp)<#Þ spritew%(ns%+1),nsprite%(ns%)=AÞ spritei%(ns%),sprxscale%(ns%),spryscale%(ns%),spriten$(ns%)>Hã I%=0¸ns%:spritew%(I%)=I%-1:spriten$(I%)="":í:sprSP%=ns%:sprSP2%=-1?EÈ− "OS_File",5,"<FormEd2$Dir>.Sprites" ¸ type%,,,,systemareasize%@0ç type%<>1 … Ŷ 1,"Can't find 'Sprites' file"Asystemareasize%+=4B$Þ systemsprites% systemareasize%C$systemsprites%!0=systemareasize%D@È− "OS_SpriteOp",&10A,systemsprites%,"<FormEd2$Dir>.Sprites"EQô SYS "OS_SpriteOp",&10F,systemsprites%,"editbuffer",0,1280/dx%,1024/dy%,MODEF;ô editbuffer%=FNspriteaddr(systemsprites%,"editbuffer")G%ô editbufferwidth%=(sptr%!16+1)*4Hspriteareasize%=›-à-16*1024I!Þ spritearea% spriteareasize%J1!spritearea%=spriteareasize%:spritearea%!8=16K%È− "OS_SpriteOp",&109,spritearea%L<òloadsprites("<FormEd2$Dir>.Default"):spritef$="Default"MòloadchoicesN.undoname$="":undoscreen%=-1:editbuffer%=-2Oô -- Create windowsPòdefaultwindowsQ3Þ paltable% 79:È− "Wimp_ReadPalette",,paltable%Rpalcolour%=7:sprcolour%=7S.paintmode%=16:òselect(palette%,paintmode%)T*grid%=£:ç grid% … òselect(palette%,31)Uô -- Create MenusVm_palette%=¤crmenuW8  Ü "#Colours,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"Xi_esg%=¤crmenuY4  Ü "#ESG,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"Zi_button%=¤crmenu[M  Ü "#Button type,Never,Always,Auto-repeat,Click,Release,Double click,++"\L  Ü "Click/Drag,Release/Drag,Double/Drag,Menu icon,Double/Click/Drag,++"]<  Ü "Radio,Reserved,Reserved,Write/Click/Drag,Writeable"^m_fsize%=¤crmenu_G  Ü "#Point size,10 point,12 point,14 point,20 point,$mb_fsize%(6)"`i_font%=¤crmenua  Ü "#Text style,&"bi_txt%=¤crmenuc#  Ü "#Icon text,$ib_text%(256)"di_sprite%=¤crmenue&  Ü "#Sprite name,$ib_sprite%(12)"fi_validation=¤crmenug*  Ü "#Validation,$ib_validation%(256)"hi_buffersize%=¤crmenui9  Ü "#Max size,$ib_buffersize%(6),Valid>i_validation"ji_flags%=¤crmenukF  Ü "#Icon flags,Text>i_txt%,Sprite>i_sprite%,Border,H centred,++"l=  Ü "V centred,Filled,Anti-aliased>i_font%,Needs help,++"mH  Ü "Indirected>i_buffersize%,R justified,Allow adjust,Half size,++"n-  Ü "Button type>i_button%,ESG>i_esg%,++"o3  Ü "Fg colour?m_palette%,Bg colour?m_palette%"pt_text%=¤crmenuq#  Ü "#Title text,$tb_text%(40)"rt_sprite%=¤crmenus&  Ü "#Sprite name,$tb_sprite%(12)"tt_buffersize%=¤crmenuu&  Ü "#Max size,$tb_buffersize%(6)"vt_flags%=¤crmenuwH  Ü "#Title flags,Text>t_text%,Sprite>t_sprite%,Border,H centred,++"xK  Ü "V centred,Filled,Anti-aliased>i_font%,Indirected>t_buffersize%,++"y  Ü "R justified"zw_scroll%=¤crmenu{  Ü "Auto-repeat,Debounced"|w_flags%=¤crmenu}N  Ü "#Flags,Title>t_flags%,Moveable,V scroll,H scroll,Auto-redraw,Pane,++"~E  Ü "No bounds,No quit box,User scroll>w_scroll%,Real colours,++"@  Ü "Back,Keys,Work area#>i_button%,New format,Back icon,++"€O  Ü "Quit icon,Title icon>t_flags%,Toggle icon,V scroll,Size icon,H scroll"Ŵw_colours%=¤crmenuŵfi  Ü "Title fg?m_palette%,Title bg?m_palette%,Work fg?m_palette%,Work bg?m_palette%,Scroll outer?m_palette%,Scroll inner?m_palette%,Input focus?m_palette%"◰w_ident%=¤crmenu☓'  Ü "#Window name:,$mb_wident%(12)"Ŷi_renumber%=¤crmenuŷ"  Ü "#Icon #,$mb_renumber%(5)"i_delete%=¤crmenu⇦   Ü "#Icon #,$mb_delete%(5)"⇨i_copy%=¤crmenu⇩"  Ü "#Copy,left,right,up,down"⇧i_move%=¤crmenu…"  Ü "#Move,left,right,up,down"™i_arrows%=¤crmenu‰#  Ü "#Arrow,left,right,down,up"•i_3darrows%=¤crmenu‘&  Ü "#3D Arrow,left,right,down,up"’i_align%=¤crmenu‹8  Ü "#Align,Left,Right,Top,Bottom,V Centre,H Centre"›i_Hspacing%=¤crmenu“#  Ü "#Spacing,$mb_Hspacing%(6)"”i_Vspacing%=¤crmenu„#  Ü "#Spacing,$mb_Vspacing%(6)"–i_arrange%=¤crmenu—C  Ü "#Arrange,Horizontal>i_Hspacing%,Vertical>i_Vspacing%,Both"−i_new%=¤crmenuŒC  Ü "#New icon,Text>i_txt%,Sprite>i_sprite%,Arrow>i_arrows%,++"œD  Ü "Option>i_txt%,Radio>i_txt%,Writeable>i_txt%,Menu>i_txt%,++"†^  Ü "Comment#>i_txt%,Group,Raised>i_txt%,Sunken>i_txt%,Writeable>i_txt%,Default>i_txt%,++"‡E  Ü "Groove,Double,Option>i_txt%,Radio>i_txt%,Arrows>i_3darrows%"fii_sel%=¤crmenufl⇧  Ü "#Selection,Edit>i_flags%,Copy>i_copy%,Move>i_move%,Resize?m_resize%,Same size,Align>i_align%,Arrange>i_arrange%,Wipe>i_delete%,++" #  Ü "Renumber nnnn>i_renumber%"¡i_general%=¤crmenu¢H  Ü "#Icons,Edit window,Create icon?i_new%,Selected xxxxx?i_sel%,++"£:  Ü "Select all,Deselect all,Tidy icons,Delete window"¤w_general%=¤crmenu¥H  Ü "#Window,Edit icons,Window flags?w_flags%,Colours>w_colours%,++"¦D  Ü "Work area?m_workarea%,Identifier>w_ident%,Delete window,++"§  Ü "Save?m_savetemp%"¨m_templates%=¤crmenu©(  Ü "#Filename:,$mb_templates%(256)"ªm_show%=¤crmenu«!  Ü "#Show,Handles,Templates"¬main_w%=¤crmenu­M  Ü "#Templates,Create>w_ident%,Clear,Load>m_templates%,Save?m_savetemp%"®main_s%=¤crmenu¯*  Ü "#Sprites,Show sprites,Show tools"°mainmenu%=¤crmenu±J  Ü "#FormEd2,Info>proginfo%,Sprites,Show>m_show%,Options,Finish,Quit"²m_rowcol%=¤crmenu³  Ü "Row,Column"´m_sprite%=¤crmenuµO  Ü "#Sprite,Undo,Colour>m_palette%,Transparent,Create mask,Delete mask,++"¶P  Ü "Extend>m_rowcol%,Reduce>m_rowcol%,Insert>m_rowcol%,Delete>m_rowcol%,++"·*  Ü "Flip X,Flip Y,Blob size>m_scale%"¸m_crsprite%=¤crmenu¹%  Ü "#New name,$mb_crsprite%(12)"ºm_rnsprite%=¤crmenu»%  Ü "#New name,$mb_rnsprite%(12)"¼m_spritef%=¤crmenu½%  Ü "#Filename,$mb_spritef%(256)"¾m_append%=¤crmenu¿!  Ü "Horizontally,Vertically"Àm_spritelist%=¤crmenuÁo  Ü "#Sprites,Delete,Copy>m_rnsprite%,Rename#>m_rnsprite%,Load>m_spritef%,Save>m_savespr%,Merge>m_spritef%"Ât_sel%=¤crmenuÃD  Ü "#Selection,Open,Close#,Copy?w_ident%,Rename?w_ident%#,Wipe"Ät_file%=¤crmenuÅ}  Ü "#Templates,'12345678901'>t_sel%,Select all,Clear selection,Create?w_ident%,Clear,Load>m_templates%,Save?m_savetemp%"ÆÇloaded%=¹:òsetloaded(£)ÈCô -- if command was '*FormEd2 <filename>', load a template fileÉic_window%=¤iconbarÊ!I%=§commandstring$," -quit ")Ë
  29975. ç I% …Ì  I%+=©" -quit "Í*  È” Ácommandstring$,I%,1)=" ":I%+=1:ÎΠ õÏ(    I%=§commandstring$+" "," ",I%+1)Ð*    õI%+=1:ýÁcommandstring$,I%,1)<>" "Ñ    f$=Ácommandstring$,I%)Ò    f$=Àf$,§f$+" "," ")-1)Ó    ç f$<>"" …Ô      È‰ ¤filetype(f$) ÊÕ#      É &FEC:òloadtemplates(f$)Ö-      É &FF9:òloadsprites(f$):òspriteinfo×-      É -2: Ŷ 1,"File '"+f$+"' not found"ØE       Ŷ 1,"File '"+f$+"' is not a sprite file or template file"Ù       ËÚ        ÍÛ  ý f$=""ÜÍÝòencodepal(0,15)Þßinitbuf%=curbuff%àòfront(handlew%)áòmovehandles(¹)âòupdatefile(1)ã3ô -- Error handler - drops through to Wimp_Polläsaveref%=-1:scrapref%=-1ådragtype%=0:pdrag%=-1æpaint_drag%=-1çinerror%=£:oldhelp%=1è"È− "XHourglass_Off":*Pointer 1é>î Ŷ È− "Wimp_DragBox",,-1:menuhandle%=-1:òerrorbox(fl,ö$,fi)êô -- Main Polling loopëõì(ç hw% € ?hndident%<>13 òhandledoiconí!È− "Wimp_Poll",0,q% ¸ action%î=ç interface% È− "XWimp_PollPointer",action%,,task_handle%ïȉ action% ÊðÉ 1: òredraw(!q%)ñ;É 2: òopen(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)òÉ 3: òclose(!q%)óÉ 4: òleave(!q%)ôÉ 5: òenter(!q%)õ0É 6: òmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)ö)É 7: òdecodedrag(!q%,q%!4,q%!8,q%!12)÷/É 8: key%=q%!24:òprocesskey(q%!0,q%!4,key%)ø8É 9: I%=0:õ:menulist%!I%=q%!I%:I%=I%+4:ýq%!(I%-4)=-1ù.        òdecodemenu(menuhandle%,menulist%)ú.        ògetpointer:ç buttons%€1 … òremenuûMÉ 10:òopen(!q%,q%!4,q%!8,q%!12,q%!16,q%!20+q%!32*32,q%!24+q%!36*32,q%!28)üÉ 17,18:òreceive(q%)ýËþý £ÿÝ òreceive(q%)&ã I%=0 ¸ !q%-1 ⇦4:oldq%!I%=q%!I%:íȉ q%!16 ÊÉ 0:òfinish:àÉ 1:ȉ q%!40 Ê5       É &FF9,&FEC:  ô do the scrap file businessD            È− "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 ¸ ,,exists%<            ç exists%=0 … Ŷ 1,"<Wimp$Scrap> not defined"7            q%!36=-1:òstring0(q%+44,"<Wimp$Scrap>")+            !q%=(48+©"<Wimp$Scrap>")€¬3    C            q%!12=q%!8:q%!16=2:È− "Wimp_SendMessage",17,q%,q%!4
  29976.             scrapref%=q%!8        Ë EÉ 2:ç q%!12<>saveref% … Ŷ 1,"Unexpected DataSave packet received"       È‰ q%!40 Ê;       É &FEC:òsavetemplates(¤string0(q%+44),q%!36<>-1)1                 ç clear% … òwipealltemplates9       É &FF9:òsavesprites(¤string0(q%+44),q%!36<>-1)8       :Ŷ 1,"Unexpected DataSave filetype received"        ËM       oldq%!12=oldq%!8:oldq%!16=3:È− "Wimp_SendMessage",17,oldq%,oldq%!4(É 3:typ%=q%!40:file$=¤string0(q%+44)       ç typ%=&2000 …G        È− "OS_File",5,file$+"."+auto$ ¸ T%,,R%:typ%=(R%>>8) € &FFF        ç typ%=&FEC …;         file$+="."+auto$:ç loaded% … òwipealltemplates        ÌL         void%=¤warning(q%,1,"This application has no '"+auto$+"' file")          typ%=&1000:name$=""        Í        Í       È‰ typ% Ê'       É &FEC:òloadtemplates(file$)        É &FF9:ç q%!20=-2 …!9                      òloadsprites(file$):òspriteinfo"7                 Ì òmergesprites(file$):òspriteinfo#                 Í$       :á%        Ë&6       ç oldq%!12=scrapref% … *Delete <Wimp$Scrap>'M       oldq%!12=oldq%!8:oldq%!16=4:È− "Wimp_SendMessage",17,oldq%,oldq%!4(É 5:ç q%!40=&FEC …)        A%=¹*        ãI%=0¸nh%+%         ç wident$(I%)<>"" … A%=£,        í-        ç A% ….,         òloadtemplates(¤string0(q%+44))/O         oldq%!12=oldq%!8:oldq%!16=4:È− "Wimp_SendMessage",17,oldq%,oldq%!40        Í1        Í2É 9:òencodepal(0,15)3É 10:òbootmessage(q%)4É &400C0:59  submenu%=q%!20:subx%=q%!24:suby%=q%!28:menus%=q%+326  ç submenu%>&8000 …7   òencodemenu(submenu%)8  Ì9(   ç submenu%=m_savetemp% … clear%=£:  Í;3  È− "Wimp_CreateSubMenu",,submenu%,subx%,suby%<)É &400C1:ògetmodeinfo:òmovehandles(£)=Ë>á?Ý òsendsave(ft%,fn%)@ê filename%AÈ− "Wimp_CreateMenu",,-1B2õfilename%=fn%:fn%+=§$fn%,"."):ý fn%=filename%C9ògetpointer : ô sets up handle%,icon%,mousex%,mousey%D!q%=(48+©$filename%)€¬3Eq%!12=0:q%!16=1F9q%!20=handle%:q%!24=icon%:q%!28=mousex%:q%!32=mousey%G(q%!36=0   : ô file size (inaccurate)Hq%!40=ft% : ô file typeIòstring0(q%+44,$filename%)J-È− "Wimp_SendMessage",17,q%,handle%,icon%Ksaveref%=q%!8LáM8Ý ¤string0(a%) êa$:a$="":È” ?a%:a$+=½?a%:a%+=1:Î:=a$N'Ý òstring0(a%,a$) $a%=a$:a%?©a$=0:áOÝ ògetmodeinfoPinv%!0 = 4Qinv%!4 = 5Rinv%!8 = 6Sinv%!12= 7Tinv%!16= 11Uinv%!20= 12Vinv%!24= -1W'È− "OS_ReadVduVariables",inv%,outv%Xdx%=1<<(outv%!0)Ydy%=1<<(outv%!4)Zlinelen%=outv%!8[screensize%=outv%!12\scrx1%=(outv%!16+1)*dx%]scry1%=(outv%!20+1)*dy%^á_:`EÝ òredraw(handle%):!q%=handle%:È− "Wimp_RedrawWindow",,q% ¸ more%aòinfo(q%+4):ê dx%:dx%=48b È” more%c+ ç hatch% € (¤whichwindow(handle%)>0) …d-  x0%=q%!28:y0%=q%!32:x1%=q%!36:y1%=q%!40e/  minx0%=x0%-(by%-y0%):maxx0%=x1%-(by%-y1%)f/  minx1%=x0%+(by%-y1%):maxx1%=x1%+(by%-y0%)g1  minx0%=(minx0%-bx%+10000)Ŵdx%*dx%+bx%-10000h1  minx1%=(minx1%-bx%+10000)Ŵdx%*dx%+bx%-10000i1  ãx%=minx0%¸maxx0%⇦dx%:ìx%,by%:ð1,3E4,-3E4:íj2  ãx%=minx1%¸maxx1%⇦dx%:ìx%,by%:ð1,-3E4,-3E4:ík Íl- ç interface% È− "XWimp_BorderWindow",,q%m' È− "Wimp_GetRectangle",,q% ¸ more%nÎoáp:qÝ òfront(handle%)r,!q%=handle%:È− "Wimp_GetWindowState",,q%s%q%!28=-1:È− "Wimp_OpenWindow",,q%táuÝ òreopen(handle%)vE!q%=handle%:È− "Wimp_GetWindowState",,q%:È− "Wimp_OpenWindow",,q%wáxÝ ògetw(handle%)y8!q%=handle%:È− "Wimp_GetWindowState",,q%:òinfo(q%+4)zá{Ý ògeti(h%,i%)|-!q%=h%:q%!4=i%:È− "Wimp_GetIconState",,q%}.ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20~iflags%=q%!24:idata%=q%+28á€:ŴÝ òinfo(p%)ŵ'x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12◰5scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28☓Kbx%=x0%-scx%:by%=y1%-scy% : ô all drawing should be relative to bx%,by%Ŷáŷ:&Ý òupdate(handle%,x0%,y0%,x1%,y1%)⇦5!q%=handle%:q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%⇨&È− "Wimp_UpdateWindow",,q% ¸ more%⇩á⇧Ý òupicon(handle%,icon%)…D!q%=handle%:q%!4=icon%:q%!8=0:q%!12=0:È− "Wimp_SetIconState",,q%™á‰FÝ ¤lc(a$):ê b$,A%:È” a$>"":A%=–a$:a$=Áa$,2):ç A%>64 € A%<91 A%+=32• b$+=½A%:Î:=b$‘:’Ý ònewdef(a$)‹8ç a$="" ç ¤warning(q%,2,"Templates must be named"):á›Fç ¤matchident(a$)<>-1 ç ¤warning(q%,2,"Template already exists"):á“1òcreatewindow(brx%,bry%,a$):brx%+=60:bry%-=40”òsetloaded(¹)„òupdatefile(0)–çbry%<340 bry%=1000—çbrx%>1040 brx%=40−áŒ:œ#Ý òsetloaded(T%):ç loaded%=T% á†mç T% loaded%=¹ ⇧ loaded%=£:templatef$=deffile$:ã I%=0¸nh%:handle%(I%)=I%-1:wident$(I%)="":í:handleSP%=nh%‡áfi:fl7Ý òopen(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%) ê d%¡!q%=handle%¢)q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%£q%!20=scx%:q%!24=scy%¤q%!28=bhandle%¥È− "Wimp_OpenWindow",,q%¦á§:¨Ý òclose(handle%)©ê i%ª9I%=¤whichwindow(handle%):çI%<>-1 … òsetfileopen(I%,£)«#ç handle%=spritelist% … spop%=£¬ç handle%=options% …­: ç interface% È− "XWimp_ReleaseInterface",task_handle%®1 ògeti(options%,2):ç iflags%€(1<<21) finac%=0¯1 ògeti(options%,3):ç iflags%€(1<<21) finac%=1°1 ògeti(options%,4):ç iflags%€(1<<21) finac%=2±5 ògeti(options%,8):interface%=(iflags%€(1<<21))>0²5 ògeti(options%,9):    hatch%=(iflags%€(1<<21))>0³Í´ç handle%=handlew% … hw%=£µ)!q%=handle%:È− "Wimp_CloseWindow",,q%¶á·:¸@Ý òmouse(mousex%,mousey%,buttons%,handle%,icon%,oldbuttons%)¹ ê void%ºȉ buttons% Ê» É &02     : ô -- MENU button¼  I%=¤whichwindow(handle%)½  menuwindow%=handle%¾  çI%<>-1…¿  ç ¦(-1) …ÀK   !q%=handle%:q%!4=icon%:q%!8=1<<21:q%!12=0:È− "Wimp_SetIconState",,q%Á  Ì   ç ¦(-2) …à   ç icon%>-1 …Ä!     renumber%=»$mb_renumber%Å&     òrenumber(I%,icon%,renumber%)Æ6     ç renumber%<9999 $mb_renumber%=Ã(renumber%+1)Ç        ÍÈ   ÌÉN    oldhandle%=handle%:oldicon%=icon%:mmousex%=mousex%:mmousey%=mousey%+44Ê"    mmousey%-=44*(def_menu%=1)Ë    òwindowmenu(I%)Ì   ÍÍ  ÍΠ áÏ  ÍÐ8  I%=¤whichsprite(handle%):çI%<>-1 òspritemenu(I%):áÑ  È‰ handle% ÊÒ  É -2:òmenu(mainmenu%)Ó(  É spritelist%:òmenu(m_spritelist%)ÔG  É tempfile%:I%=q%+40:È− "Wimp_WhichIcon",tempfile%,I%,5<<21,1<<21Õ    ç !I%=-1 ☓ I%!4=-1 …Ö-      ç !I%>-1 … òdeselect(tempfile%,!I%)×/      ç icon%>-1 … òselect(tempfile%,icon%)Ø        ÍÙ    òmenu(t_file%)Ú  ËÛ*É &01,&04 : ô -- SELECT/ADJUST buttonsÜ9  I%=¤whichsprite(handle%):çI%<>-1 òspritepixel(I%):áÝ  È‰ handle% ÊÞ
  29977.   É -2ß       È‰ icon% Êà       É ic_window%á         $mb_name%=deftem$â<         È− "Wimp_CreateMenu",,new_temp%,mousex%-192,160ã        Ëä  É palette%:òpaletteå  É spritelist%æ       çicon%=-1…ç         ç buttons%=&04 …è           òdeselectspritesé         Ìê)           ògeti(spritelist%,icon%☓1)ë         Íì  É m_scale%í*       òsetxy(xsc%,ysc%,$sprbuff%,"x")î       xs%=xsc%ï       È‰ icon% Êð        É 0:ç xs%<48 xs%+=dx%ñ!       É 1:ç xs%>dx% xs%-=dx%ò        Ëó       ç xs%<>xsc% …ô         ys%=xs%*ysc%/xsc%õ$         $sprbuff%=Ãxs%+"x"+Ãys%ö4         òupicon(m_scale%,2):òupicon(m_scale%,3)÷0         òchangesize(currentsprite%,xs%,ys%)ø        Íù  É m_workarea%ú%       òsetwork(q%,mb_workarea0%)û'       òsetwork(q%+8,mb_workarea1%)ü.       x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12ý       È‰ icon% Êþ       É 0:y1%+=4ÿ       É 1:x1%+=2       É 2:x0%-=2       É 3:y0%-=4+       É 5:x0%+=2:ç x0%>mwx0% x0%=mwx0%+       É 6:x1%-=2:ç x1%<mwx1% x1%=mwx1%+       É 7:y1%-=4:ç y1%<mwy1% y1%=mwy1%+       É 8:y0%+=4:ç y0%>mwy0% y0%=mwy0%&       É 11:òxor(m_workarea%,11,6)/               òsetworkarea(currentwindow%)<               ç (buttons%€1)=0 È− "Wimp_CreateMenu",,-1            Ë
  29978.        w0$=Ãx0%+","+Ãy0%        w1$=Ãx1%+","+Ãy1% I       çw0$<>$mb_workarea0% $mb_workarea0%=w0$:òupicon(m_workarea%,9)J       çw1$<>$mb_workarea1% $mb_workarea1%=w1$:òupicon(m_workarea%,10)  É dial_delete%       È‰ icon% Ê%       É 2:òxor(dial_delete%,2,6)"              ògodeletesprites&              òclose(dial_delete%)#       É 3:òclose(dial_delete%)        Ë  É m_savetemp%       ç icon%=2 …&        òcheckfull($mb_templates%),        òsavetemplates($mb_templates%,¹)7        ç buttons% € &01 ⇧ È− "Wimp_CreateMenu",,-1&        ç clear% òwipealltemplates        Í  É m_savespr%       ç icon%=2 …%         òcheckfull($mb_spritef%))         òsavesprites($mb_spritef%,¹) 8         ç buttons% € &01 ⇧ È− "Wimp_CreateMenu",,-1!        Í"  É new_temp%#       ç icon%=1 …$         ònewdef($mb_name%)%         òclose(new_temp%)&        Í'  É options%(%       ç icon%<2 òclose(options%))       ç icon%=1 …**         X%=®("<FormEd2$Dir>.Choices")+9         ñ#X%,deftem$,deffile$:Õ#X%,finac%:ñ#X%,auto$,6         Õ#X%,interface%:Õ#X%,hatch%:ñ#X%,country$-?         ¢#X%=•#X%:Ù#X%:*SetType <FormEd2$Dir>.Choices Text.)         *Stamp <FormEd2$Dir>.Choices/        Í0  É m_resize%1    ô Hilke2L    C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,5<<21,1<<213;    ç currenticon%>-1 … ògeti(menuwindow%,currenticon%)4    È‰ icon% Ê5      É 1:ô increase max x6'        òhandle_resize(6,4,0,0,4,0)7      É 2:ô decrease max x8)        òhandle_resize(6,-4,0,0,-4,0)9      É 3:ô decrease max y:)        òhandle_resize(5,-4,0,0,0,-4);      É 4:ô increase max y<'        òhandle_resize(5,4,0,0,0,4)=      É 7 :ô increase min x>(        òhandle_resize(6,-4,4,0,0,0)?      É 10:ô decrease min x@(        òhandle_resize(6,4,-4,0,0,0)A      É 11:ô increase min yB(        òhandle_resize(5,4,0,-4,0,0)C      É 12:ô decrease min yD(        òhandle_resize(5,-4,0,4,0,0)E      É 13:ô OKF        òhandle_resizeOKG3        ç buttons%=4 … È− "Wimp_CreateMenu",,-1H<        È− "Wimp_ForceRedraw",menuwindow%,0,-5000,5000,0I        ËJ  É tempfile%K   ç icon%>-1 …LQ     I%=¤backreffile(icon%):q%!40=handle%(I%):È− "Wimp_GetWindowState",,q%+40M%     ç q%!72 € (1<<16) € ¬¦(-1) …N       òclose(q%!40)O
  29979.      ÌP+       òfront(q%!40):òsetfileopen(I%,¹)Q
  29980.      ÍR   ÌS>     I%=q%+40:È− "Wimp_WhichIcon",tempfile%,I%,5<<21,1<<21T3     È” !I%>-1:òdeselect(tempfile%,!I%):I%+=4:ÎU   ÍV  ËW+É &10,&40 : ô -- SELECT/ADJUST draggingX  È‰ handle% ÊYG  É m_savetemp%,m_savespr%:òdragicon(mousex%,mousey%,handle%,icon%)Z0  :çicon%<>-1 òdrag(buttons%,handle%,icon%)[  Ë\2É &100,&400:ô -- selection if button type = 10]  È‰ handle% Ê^  É spritelist%_+       ç buttons%=&400 òdeselectsprites`!       ògeti(handle%,icon%☓1)a"       ç (iflags%€&400000)=0 …b3          òseti(spritelist%,icon%€¬1,&200000,0)c2          òseti(spritelist%,icon%☓1,&200000,0)d        Íe  ËfËgáh%Ý òprocesskey(handle%,icon%,key%)iȉ handle% ÊjÉ m_workarea%k     ç key%=13 …l!       òxor(m_workarea%,11,6)m'       òsetworkarea(currentwindow%)n#       È− "Wimp_CreateMenu",,-1o        áp
  29981.      ÍqÉ m_savetemp%r     ç key%=13 …s%       òcheckfull($mb_templates%)t+       òsavetemplates($mb_templates%,¹)u%       ç clear% òwipealltemplatesv#       È− "Wimp_CreateMenu",,-1w        áx
  29982.      ÍyÉ m_savespr%z     ç key%=13 …{#       òcheckfull($mb_spritef%)|'       òsavesprites($mb_spritef%,¹)}#       È− "Wimp_CreateMenu",,-1~        á
  29983.      Í€É new_temp%Ŵ     ç key%=13 …ŵ       ònewdef($mb_name%)◰       òclose(new_temp%)☓
  29984.      ÍŶÉ options%ŷ     È‰ icon% Ê$   É  5:N%= 6: deftem$=$mb_deft%⇦D   É  6:N%= 7:deffile$=$mb_deff%:ç ¬ loaded% templatef$=deffile$⇨$   É  7:N%=10:   auto$=$mb_auto%⇩   É 10:N%= 5⇧  Ë…J  È− "Wimp_SetCaretPosition",handle%,N%,0,0,-1,©$¤iconaddr(handle%,N%)™É m_resize%‰     ç key% =13 …•       È‰ icon% Ê‘         É 5’Q           È− "Wimp_SetCaretPosition",handle%,6,0,0,-1,©$¤iconaddr(handle%,6)‹         É 6›           òhandle_resizeOK“            òclose(new_temp%)”'           È− "Wimp_CreateMenu",,-1„?           È− "Wimp_ForceRedraw",menuwindow%,0,-5000,5000,0–        Ë—
  29985.      Í−ËŒÈ− "Wimp_ProcessKey",key%œá†R------------------------------------------------------------------------------‡Ý òdrag(b%,handle%,icon%)fi%I%=¤whichwindow(handle%):çI%=-1 áfl(currentwindow%=I%:currenticon%=icon% 4dragtype%=b%:draghandle%=handle%:dragicon%=icon%¡ ògetcurw¢ògetcuri(currenticon%)£+cx0%+=bx%:cy0%+=by%:cx1%+=bx%:cy1%+=by%¤%x0%=0:y0%=0:x1%=scrx1%:y1%=scry1%¥home_x%=cx0%:home_y%=cy0%¦ çb%=&10…§%  ògetminxy(flags%,text$,sprite$)¨)  mx0%=mousex%-cx0%:mx1%=cx1%-mousex%©)  my0%=mousey%-cy0%:my1%=cy1%-mousey%ª4  x0%=cx0%+minx%:y0%=0:x1%=scrx1%:y1%=cy1%-miny%«:  çmx0%<mx1% òswapx:x0%=0:x1%=cx0%-minx%:x0%+=1:x1%-=1¬?  çmy0%>my1% òswapy:y0%=cy1%+miny%:y1%=scry1%:y0%+=1:y1%-=1­.  x0%+=cx0%-cx1%:y1%+=cy1%-cy0%  : ô bodge®  many_icon%=£¯Ì°  many_icon%=¹±Í²(!q%=handle%:ç b%=&40 q%!4=5 ⇧ q%!4=6³.q%!8=cx0%:q%!12=cy0%:q%!16=cx1%:q%!20=cy1%´+q%!24=x0%:q%!28=y0%:q%!32=x1%:q%!36=y1%µÈ− "Wimp_DragBox",,q%¶á·R------------------------------------------------------------------------------¸:¹.Ý òdragicon(mousex%,mousey%,handle%,icon%)º%ê f%,area%,name%,spr_name$,flags%»%dragtype%=&FF:draghandle%=handle%¼0ç handle%=m_savetemp% … spr_name$="file_FEC"½0ç handle%=m_savespr%  … spr_name$="file_FF9"¾ògetw(handle%)¿ògeti(handle%,icon%)Àflags%=q%!24Á!q%=handle%:q%!4=5Â>q%!8=bx%+ix0%:q%!12=by%+iy0%:q%!16=bx%+ix1%:q%!20=by%+iy1%Ã*q%!24=q%!8-mousex%:q%!28=q%!12-mousey%Ä9q%!32=scrx1%+q%!16-mousex%:q%!36=scry1%+q%!20-mousey%ÅÆÈ− "OS_Byte",161,28 ¸ ,,f%ÇDragASprite%=((f% € 2)=2)Èç DragASprite% …É  f%=flags%Ê5  ç (f% € 2)=0 … Ŷ 99,"Not a sprite icon to drag"Ë7  È− "DragASprite_Start",%10000101,1,spr_name$,q%+8ÌÌÍ  È− "Wimp_DragBox",,q%ÎÍÏÐáÑR------------------------------------------------------------------------------Ò Ý òswapxÓ@cx0%=cx0%ŵcx1%:cx1%=cx1%ŵcx0%:cx0%=cx0%ŵcx1%:cx0%-=1:cx1%+=1ÔáÕR------------------------------------------------------------------------------Ö Ý òswapy×@cy0%=cy0%ŵcy1%:cy1%=cy1%ŵcy0%:cy0%=cy0%ŵcy1%:cy0%-=1:cy1%+=1ØáÙR------------------------------------------------------------------------------Ú%Ý ògetminxy(flags%,text$,sprite$)Ûê x0%,y0%,x1%,y1%,mx%,my%Üminx%=0:miny%=0Ýç flags%€&01 € text$<>"" …Þ  ç flags%€&40 …ß5       È− "Font_ReadInfo",flags%>>24 ¸ ,,y0%,,y1%àD       È− "Font_StringBBox",,½26+½(flags%>>24)+text$ ¸ ,x0%,,x1%á,       È− "Font_ConverttoOS",,x0% ¸ ,x0%â,       È− "Font_ConverttoOS",,x1% ¸ ,x1%ã&       minx%=x1%-x0%:miny%=y1%-y0%ä&  Ì minx%=6*dx%+16*©text$:miny%=32å  Íæ  ç flags%€&04 miny%+=2*dy%çÍè ç flags%€&02 € sprite$<>"" …éI   È− "XOS_SpriteOp",&128,spritearea%,sprite$ ¸ ,,,mx%,my%,,spm% ; P%ê   ç (P%€1)=0 …ëA      È− "XOS_ReadModeVariable",spm%,4 ¸ ,,spx%:mx%=mx%<<spx%ìA      È− "XOS_ReadModeVariable",spm%,5 ¸ ,,spy%:my%=my%<<spy%í+      ç flags%€&800 mx%=mx%/2:my%=my%/2îB      ç (flags%€&21B)=&13 mx%=minx%+mx% :ô sprite+text (V~H~R)ï      ç mx%>minx% minx%=mx%ð      ç my%>miny% miny%=my%ñ   ÍòÍóáôR------------------------------------------------------------------------------õ&Ý òdecodedrag(cx0%,cy0%,cx1%,cy1%)ödragtype%=0÷ç DragASprite% …ø  DragASprite%=£ù  È− "DragASprite_Stop"úÍû=ç draghandle%=m_savetemp% òsendsave(&FEC,mb_templates%):áü:ç draghandle%=m_savespr% òsendsave(&FF9,mb_spritef%):áýògetw(draghandle%)þ'd_x%=cx0%-home_x%:d_y%=cy0%-home_y%ÿ+cx0%-=bx%:cx1%-=bx%:cy0%-=by%:cy1%-=by%ç cx0%>cx1% òswapxç cy0%>cy1% òswapyç many_icon% ….òmoveicon(draghandle%,dragicon%,d_x%,d_y%)<I%=q%+&80:È− "Wimp_WhichIcon",draghandle%,I%,5<<21,1<<21CÈ” !I%>-1:ç !I%<>dragicon% òmoveicon(draghandle%,!I%,d_x%,d_y%) I%+=4:ÎÌ ògeti(draghandle%,dragicon%)    -od0%=idata%!0:od1%=idata%!4:od2%=idata%!8
  29986. &òdeleteicon(draghandle%,dragicon%) Pcurrenticon%=¤cricon(draghandle%,cx0%,cy0%,cx1%,cy1%,iflags%,od0%,od1%,od2%) ÍáR------------------------------------------------------------------------------<Ý ¤cricon(handle%,x0%,y0%,x1%,y1%,flags%,dt0%,dt1%,dt2%)    ê ic%!q%=handle%1q%!20=flags%:q%!24=dt0%:q%!28=dt1%:q%!32=dt2%text$="":sprite$=""ç flags% € 1 …4 ç flags% € &100 text$=$(q%!24) ⇧ text$=$(q%+24)Íç flags% € 2 … ç flags% € &100 …$  sprite$=¤getcommand(q%!28,"S") Ì  sprite$=$(q%+24) ÍÍ/ògetminxy(flags%,text$,sprite$)   : ô bodge çx1%-x0%<minx% x1%=x0%+minx%  çy1%-y0%<miny% y1%=y0%+miny%!)q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%""È− "Wimp_CreateIcon",,q% ¸ ic%#Eô due to interface icon borders redraw a larger area than before!$?È− "Wimp_ForceRedraw",!q%,q%!4-50,q%!8-50,q%!12+50,q%!16+50%"È− "Wimp_GetCaretPosition",,q%&Iç!q%=handle%çq%!4=ic%:È− "Wimp_SetCaretPosition",handle%,ic%,0,0,-1,0'=ic%(R------------------------------------------------------------------------------)(Ý òmoveicon(handle%,icon%,d_x%,d_y%)*ê new_handle%+ògeti(handle%,icon%),Boldflags%=iflags%:odt0%=idata%!0:odt1%=idata%!4:odt2%=idata%!8-ix0%+=d_x%:ix1%+=d_x%.iy0%+=d_y%:iy1%+=d_y%/òdeleteicon(handle%,icon%)0,ç ix0%>ix1% È“ ix0%,ix1%:ix0%-=1:ix1%+=11,ç iy0%>iy1% È“ iy0%,iy1%:iy0%-=1:iy1%+=12Pnew_handle%=¤cricon(handle%,ix0%,iy0%,ix1%,iy1%,oldflags%,odt0%,odt1%,odt2%)31ç currenticon%<>-1 … currenticon%=new_handle%4á5R------------------------------------------------------------------------------6 Ý òdeleteicon(handle%,icon%)7ê bd%:bd%=2085!q%=handle%:q%!4=icon%:È− "Wimp_GetIconState",,q%9È− "Wimp_DeleteIcon",,q%:Mô ##PH increased redrawn area to erase interface type icons when dragging;DÈ− "Wimp_ForceRedraw",!q%,q%!8-bd%,q%!12-bd%,q%!16+bd%,q%!20+bd%<á=R------------------------------------------------------------------------------>Ý òmenu(m%)?menuhandle%=m%@1ògetpointer:mmousex%=mousex%:mmousey%=mousey%Aç ¤encodemenu(m%) …B  ç handle%=-2 …C+    I%=m%!20+m%!24:J%=m%+28:K%=96-m%!24D#    õ K%+=I%:J%+=24:ýJ%!-24€&80E  ÌF    K%=mousey%+12+44G  ÍH  È− "Wimp_CreateMenu",,-1I6  È− "Wimp_CreateMenu",,menuhandle%,mousex%-102,K%J'  oldhandle%=handle%:oldicon%=icon%KÍLáM Ý òremenu:ç menuhandle%=-1 áN%handle%=oldhandle%:icon%=oldicon%O ç ¤encodemenu(menuhandle%) …PR  È− "Wimp_CreateMenu",,menuhandle%,mmousex%-102,mmousey%+12 :ô default coordsQÍRáSÝ ¤crmenuT2ç menufree%+28 > menuend% Ŷ 1,"Menu area full"Uê m%,menu$,m$:ó menu$V6È” Âmenu$,2)="++":ó m$:menu$=Àmenu$,©menu$-2)+m$:ÎW$ç Àmenu$,1)="=" menu$= Ámenu$,2)Xmenuptr%=menufree%Yi%=0:ctr%=0Z=ç Àmenu$,1)="#" i%=1:menutitle$=¤par(",") ⇧ menutitle$=""[I%=§menutitle$,">")\ ç I%>0 …])     menuptr%!20= (Ámenutitle$,I%+1))^%     menutitle$=Àmenutitle$,I%-1)_Ì menuptr%!20=40`Ía$menuptr%=menutitle$bJmenuptr%?12=`tfcol:menuptr%?13=2:menuptr%?14=`wfcol:menuptr%?15=`wbcolc$menuptr%!16=196-24:menuptr%!24=0d$menuptr%+=28:maxx%=©menutitle$-3eÈ” Âmenu$,1)="~"f  menu$=Àmenu$,©menu$-1)g3  õ item$=¤par(","):òmenuitem(item$):ý item$=""h  ó menu$iÎj1õ item$=¤par(","):òmenuitem(item$):ý item$=""k3ç menuptr%-menufree% <= 28 … = -1 : ô null menul#menuptr%!-24=(menuptr%!-24)☓&80m"m%=menufree%:m%!16=maxx%*16+12nmenufree%=menuptr%o=m%pÝ òmenuitem(text$)qç text$="" ár1ç menuptr%+24 > menuend% Ŷ 1,"Menu area full"sç text$="&" …t+  È− "Font_ListFonts",,q%,ctr% ¸ ,,ctr%u/  ç ctr%>=0 text$=$q%+">m_fsize%":i%-=2 ⇧ ávÍw êi%,flg%x flg%=&00yi%=§text$,"?")z%ç i%<2 i%=§text$,">") ⇧ flg%+=&08{@ç i%>0 subptr%= Átext$,i%+1):text$=Àtext$,i%-1) ⇧ subptr%=-1|4ç Âtext$,1)="#" text$=Àtext$,©text$-1):flg%+=&02}menuptr%!0=flg%~menuptr%!4=subptr%menuptr%!8=&07000021€ç Àtext$,1)="?" …Ŵ  menuptr%!8=&0700011Aŵ)  I%=¤workspace(©text$):$I%=Átext$,2)◰B  menuptr%!12=I%:menuptr%!16=systemsprites%:menuptr%!20=©text$☓ÌŶ  ç Àtext$,1)="$" …ŷ    !menuptr%+=&04    menuptr%!8+=&100⇦    i%=§text$,"(")⇨7    çi%>0 L%=»Átext$,i%+1):text$=Àtext$,i%-1)⇧L%=12⇩<    menuptr%!12= Átext$,2):menuptr%!16=-1:menuptr%!20=L%⇧*    ç L%>15 L%=15 : ô icons can scroll…3    text$=ÄL%-1," ")  : ô 1 char was terminator™  Ì‰    ç©text$<=12…•!         $(menuptr%+12)=text$‘)    Ì I%=¤workspace(©text$):$I%=text$’?         menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=©text$+1‹)         menuptr%!8=menuptr%!8 ☓ &100›        Í“  Í”   ç©text$>maxx% maxx%=©text$„Í–menuptr%+=24—á− ŒÝ ¤par(sep$)œ%i1%=i%+1:i%=§menu$+sep$,sep$,i1%)†=Ámenu$,i1%,i%-i1%)‡R------------------------------------------------------------------------------fiÝ òwindowmenu(I%)flcurrentwindow%=I% ȉ def_menu% Ê¡ É 0:menuhandle%=w_general%¢5 É 1:currenticon%=oldicon%:menuhandle%=i_general%£Ë¤ òremenu¥á¦Ý òspritemenu(I%)§7currentsprite%=I%:mmousex%=mousex%:mmousey%=mousey%¨òmenu(m_sprite%)©áªR------------------------------------------------------------------------------«Ý òencodemenu(menuhandle%)¬@ç ¤encodemenu(menuhandle%) ⇧ Ŷ 1,"Menu shouldn't be allowed"­á®Ý ¤encodemenu(menuhandle%)¯çmenuhandle%<&8000 …=¹°êI%±I%=menuhandle%+28²7õ!I%=!I%€¬&01:I%!8=I%!8€¬&400000:I%+=24:ýI%!-24€&80³ȉ menuhandle% Ê´É mainmenu%µ     òencodemenu(m_show%)¶É m_show%·     ç hw% òtick(m_show%,0)¸8     q%!40=tempfile%:È− "Wimp_GetWindowState",,q%+40¹+     ç q%!72 € (1<<16) òtick(m_show%,1)º%     òshade(mainmenu%,4,¬loaded%)»É i_flags%¼     ç currenticon%=-1 …½N      C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,5<<21,1<<21¾      C%=!C%¿      òshade(i_flags%,0,1)À      òshade(i_flags%,1,1)Á      òshade(i_flags%,6,1)      òshade(i_flags%,8,1)Ã
  29987.      ÌÄ      C%=currenticon%Å
  29988.      ÍÆ     ç C%>-1 …Ç      ògetcuri(C%)ÈC      òencodeicon(i_flags%,11,flags%,q%+28,ib_text%,ib_sprite%)É      $ib_buffersize%=ÃL%Ê      $ib_validation%=""Ë$      òencodemenu(i_buffersize%)Ì      ç (flags%€&01)=0 …Í$       òshade(i_buffersize%,1,1)Î       ÌÏ       ç flags%€&100 …ÐE        ç q%!32>0 $ib_validation%=$(q%!32):òtick(i_buffersize%,1)Ñ        ÍÒ       ÍÓ-      $(i_flags%+28+12+24*14)="Fg colour"Ô-      $(i_flags%+28+12+24*15)="Bg colour"Õ?      ç flags% € &02 … $(i_flags%+28+12+24*14)="EOR colour"Ö?      ç flags% € &20 ⇧ $(i_flags%+28+12+24*15)="EOR colour"×      ç flags% € &40 …Ø#       i_flags%?(28+11+24*14)=7Ù#       i_flags%?(28+11+24*15)=7Ú6       òshade(i_flags%,14,1):òshade(i_flags%,15,1)Û       ÌÜ<       i_flags%?(28+11+24*14)=¤foreback((flags%>>24)€&F)Ý<       i_flags%?(28+11+24*15)=¤foreback((flags%>>28)€&F)Þ       Íß       òencodemenu(i_button%)à      òencodemenu(i_esg%)á
  29989.      Íâ É i_esg%ã'     òtick(i_esg%,(flags%>>16)€&0F)äÉ i_button%å*     òtick(i_button%,(flags%>>12)€&0F)æ     òshade(i_button%,12,1)ç     òshade(i_button%,13,1)èÉ w_general%é.     ç currentwindow%=-1 … =£ : ô deleted!ê     òencodemenu(w_flags%)ë-     $mb_workarea0%=Ã(q%!44)+","+Ã(q%!48)ì-     $mb_workarea1%=Ã(q%!52)+","+Ã(q%!56)í#     $mb_minx%=Ã(q%!72 € &FFFF)î!     $mb_miny%=Ã(q%!72 >> 16)ï-     mwx0%=q%!20:mwy0%=q%!24+(q%!8-q%!16)ð-     mwx1%=q%!20+(q%!12-q%!4):mwy1%=q%!24ñ     I%=w_colours%+28òB     ã J%=q%+36 ¸ q%+42:I%?11=(?J%<<4)☓uncolour%(?J%):I%+=24:íó/     $mb_wident%   =wident$(currentwindow%)ô4     $mb_templates%=Àwident$(currentwindow%),10)õÉ i_general%ö     ògetcuri(currenticon%)÷?     ç flags%€&800000 currenticon%=-1 : ô has been deleted!øI     C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,4<<21,0ù     ç !C%=-1 …ú/      $(i_general%!(28+24*2+12))="No icons"û.      ã A%=2 ¸ 5:òshade(i_general%,A%,1):íü
  29990.      ÌýN      C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,5<<21,1<<21þ)      ç !C%=-1 òshade(i_general%,4,1)ÿ      ç currenticon%>-1 …<       $(i_general%!(28+24*2+12))="Icon #"+Ãcurrenticon%       Ì       ç !C%=-1 …1        $(i_general%!(28+24*2+12))="No icons""        òshade(i_general%,2,1)        Ì7        $(i_general%!(28+24*2+12))="Selected icons"        Í       Í    
  29991.      Í
  29992. É i_sel% M     C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,5<<21,1<<21      ç !C%=-1 ☓ C%!4=-1 …@       òshade(i_sel%,4,1):ô shade 'Same size' if <2 selected
  29993.      Í     i_sel%!16=152     ç currenticon%>-1 …+      $i_sel%="Icon":i_renumber%!16=160=      $(i_sel%!(28+24*8+12))="Renumber #"+û$mb_renumber%
  29994.      Ì      $i_sel%="Selected">      $(i_sel%!(28+24*8+12))="Renumber":i_renumber%!16=128      òshade(i_sel%,8,1)
  29995.      Í     òencodemenu(i_flags%)     òencodemenu(i_align%)      òencodemenu(i_arrange%)     òencodemenu(i_delete%)É i_delete%     ç currenticon%>-1 …$       $mb_delete%=Ãcurrenticon%
  29996.      Ì        $mb_delete%=""!
  29997.      Í"É i_align%#0     ô if <2 icons are selected then shade..$M     I%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21%     ç !I%=-1 ☓ I%!4=-1 …&       òshade(i_align%,0,1)'       òshade(i_align%,1,1)(       òshade(i_align%,2,1))       òshade(i_align%,3,1)*       òshade(i_align%,4,1)+       òshade(i_align%,5,1),
  29998.      Í-É i_arrange%.0     ô if <2 icons are selected then shade../M     I%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<210     ç !I%=-1 ☓ I%!4=-1 …1!       òshade(i_arrange%,0,1)2!       òshade(i_arrange%,1,1)3!       òshade(i_arrange%,2,1)4
  29999.      Í58     òshade(i_arrange%,2,1):ô shade 'Both' for now..6É w_flags%7$     !q%=handle%(currentwindow%)8$     È− "Wimp_GetWindowInfo",,q%9     ã I%=0 ¸ 7:.      ç q%!32 € (1<<I%) òtick(w_flags%,I%);
  30000.      í<,     ç q%!32 € (3<<8)  òtick(w_flags%,8)=>     ç q%!32 € (1<<10) òtick(w_flags%,9)   :ô real colours>=     ç q%!32 € (1<<11) òtick(w_flags%,10)  :ô back window?;     ç q%!32 € (1<<12) òtick(w_flags%,11)  :ô grab keys@     òencodemenu(t_flags%)A     ç currenticon%=-1 …BD      flags%=q%!64:òencodemenu(i_button%):òshade(i_button%,14,1)C
  30001.      ÌD      òshade(w_flags%,12,1)E
  30002.      ÍF     ã I%=14 ¸ 20G6      ç q%!32 € (1<<(I%+24-14)) òtick(w_flags%,I%)H
  30003.      íI     ç q%!32 € &80000000 …J       òtick(w_flags%,13)K       òshade(w_flags%,0,1)L       òshade(w_flags%,2,1)M       òshade(w_flags%,3,1)N       òshade(w_flags%,7,1)O
  30004.      ÌP/       ã I%=14 ¸ 20:òshade(w_flags%,I%,1):íQ
  30005.      ÍRÉ t_flags%SM     q%!60=q%!60 ☓ &24                     : ô must be filled with borderT@     òencodeicon(t_flags%,6,q%!60,q%+76,tb_text%,tb_sprite%)U     $tb_buffersize%=ÃL%V&     çq%!60€&100 òtick(t_flags%,7)W&     çq%!60€&200 òtick(t_flags%,8)XÉ w_scroll%Y     ògetcurwZ(     çflags%€&100 òtick(w_scroll%,0)[(     çflags%€&200 òtick(w_scroll%,1)\É m_spritelist%].     $mb_spritef%=spritef$:iflags%=&400000^(     çicon%<>-1 ògeti(handle%,icon%)_     çiflags%€&400000…`$       òshade(m_spritelist%,1,1)a$       òshade(m_spritelist%,2,1)b
  30006.      Ìc4       renamesprite$=¤iconstring(iflags%,idata%)d&       $mb_rnsprite%=renamesprite$e
  30007.      Íf;     È− "Wimp_WhichIcon",spritelist%,q%,&200001,&200001g+     ç !q%=-1 òshade(m_spritelist%,0,1)h É i_new%i     $ib_text%=""j     $ib_sprite%=""kÉ m_palette%l     È‰ def_menu% Êm7      É 0:C%=((w_colours%!(36+24*menus%!4)>>28)€&F)n7      É 1:C%=  ((i_flags%!(36+24*menus%!8)>>28)€&F)o      :C%=13p
  30008.      Ëq     òencodepalmenu(C%)rÉ t_file%s;     I%=q%:È− "Wimp_WhichIcon",tempfile%,I%,5<<21,1<<21t"     $mb_templates%=templatef$u     ç !I%=-1 …v3      òshade(t_file%,0,1):m$="Nothing":curw%=-1w
  30009.      ÌxW      ç I%!4>-1 m$="Selection":curw%=-1 ⇧ curw%=¤backreffile(!I%):m$=wident$(curw%)y?      òshade(t_sel%,2,(I%!4>-1)):òshade(t_sel%,3,(I%!4>-1))z
  30010.      Í{#     $(t_file%!(28+24*0+12))=m$|     ç ¬loaded% …}~1      òshade(t_file%,:,1):òshade(t_file%,2,1)1      òshade(t_file%,4,1):òshade(t_file%,6,1)€
  30011.      ÍŴÉ m_resize%ŵ     ç currenticon%<>-1 …◰*       ògeti(menuwindow%,currenticon%)☓9       òshell_IconPutData(m_resize%,5,Ã(iy1%-iy0%),0)Ŷ9       òshell_IconPutData(m_resize%,6,Ã(ix1%-ix0%),0)ŷ
  30012.      ÌB       ô if no icons are selected and currenticon%=-1 then the⇦E       ô resize menu entry is greyed already, so a selection must⇨"       ô exist to reach here..⇩O       C%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),C%,5<<21,1<<21⇧       ç C%>-1 ……B         ògeti(menuwindow%,C%!0):ô take coords of first icon..™;         òshell_IconPutData(m_resize%,5,Ã(iy1%-iy0%),0)‰;         òshell_IconPutData(m_resize%,6,Ã(ix1%-ix0%),0)•        Í‘
  30013.      Í’Ë‹=¹›2Ý òshade(mh%,I%,T%):mh%+=28+8+24*I%:T%=(T%<>0)“,!mh%=!mh% €(¬&400000) ☓ (T% € (1<<22)):á”7Ý òtick(mh%,I%):mh%!(28+24*I%)=mh%!(28+24*I%)☓&01:á„0Ý òselect(h%,i%):!q%=h%:q%!4=i%:q%!8=&200000–0  q%!12=&200000:È− "Wimp_SetIconState",,q%:á—Ý òdeselect(h%,i%)−B!q%=h%:q%!4=i%:q%!8=0:q%!12=&200000:È− "Wimp_SetIconState",,q%Œáœ=Ý òencodeicon(iconmenu%,nmenu%,flags%,q%,itext%,isprite%)†%ç i_font%<0 òshade(iconmenu%,6,1)‡$itext%="":$isprite%=""fi1ç flags% € &01 $itext%=¤iconstring(flags%,q%)fl8ç (flags%€ &03)=&02 $isprite%=¤iconstring(flags%,q%) :ç flags% € &100 L%=q%!8 ⇧ L%=12 : ô returned to caller¡I%=iconmenu%+28:J%=1¢*ãitem%=0¸nmenu%:çflags%€J% !I%=!I%☓&01£I%+=24:J%+=J%:í¤á¥:¦%Ý òdecodemenu(MenuHandle%,menus%)§=ê temp%,minix%,miniy%,maxix%,maxiy%,ref_cl%,nr_left_side%¨(ê nr_right_side%,x_centre%,y_centre%©ȉ MenuHandle% ÊªÉ mainmenu%«     È‰ !menus% Ê¬D     É 0:ògetpointer:È− &400D4,,proginfo%,mousex%-160,mousey%+64­     É 1:òspriteinfo®     É 2:ȉ menus%!4 Ê¯$             É 0:òmovehandles(¹)°#             É 1:òupdatefile(1)±            Ë²A     É 3:$mb_deft%=deftem$:$mb_deff%=deffile$:$mb_auto%=auto$³%            òdeselect(options%,2)´%            òdeselect(options%,3)µ%            òdeselect(options%,4)¶%            òdeselect(options%,8)·%            òdeselect(options%,9)¸*            òselect(options%,finac%+2)¹0            ç interface% òselect(options%,8)º0            ç     hatch% òselect(options%,9)»9            !q%=options%:È− "Wimp_GetWindowState",,q%¼4            È− "Wimp_CreateMenu",,!q%,q%!4,q%!16½G            È− "Wimp_SetCaretPosition",options%,5,0,0,-1,©$mb_deft%¾     É 4:ȉ finac% Ê¿/             É 0:òcheckfull($mb_templates%)À8                    òsavetemplates($mb_templates%,¹)Á)                    òwipealltemplatesÂC             É 1:clear%=¹:ògetpointer:$mb_templates%=templatef$ÃP                    È− "Wimp_CreateMenu",,m_savetemp%,mousex%-112,mousey%+64Ä&             É 2:òwipealltemplatesÅ            ËÆ     É 5:òfinish:àÇ
  30014.      ËÈÉ i_general%É     È‰ !menus% ÊÊA     É 0:def_menu%=0:ògetmenuposn:òwindowmenu(currentwindow%)Ë     É 1:ògetcurwÌ=            mx%=mmousex%-bx%:my%=mmousey%-by%:t$="":s$=""Í            È‰ menus%!4 ÊÎ/             É 0:t$=$ib_text%:fl%=&C700603DÏ0                    ix%=16*(©(t$)+2):iy%=&30Ð1             É 1:s$=$ib_sprite%:fl%=&0700601AÑ,                    ògetminxy(fl%,"",s$)Ò+                    ix%=minx%:iy%=miny%Ó@             É 2:ç menus%!8>-1 t$=½((menus%!8)+136) ⇧ t$="?"Ô5                    fl%=&C700603D:ix%=&28:iy%=&30ÕB             É 3:t$=$ib_text%:s$="Soptoff,opton":fl%=&1700B113Ö0                    ix%=16*(©(t$)+4):iy%=&30×J             É 4:t$=" "+$ib_text%:s$="Sradiooff,radioon":fl%=&1700B113Ø0                    ix%=16*(©(t$)+4):iy%=&30Ù/             É 5:t$=$ib_text%:fl%=&0700E13DÚ0                    ix%=16*(©(t$)+2):iy%=&30Û/             É 6:t$=$ib_text%:fl%=&C71F903DÜ0                    ix%=16*(©(t$)+2):iy%=&30Ý/             É 7:t$=$ib_text%:fl%=&17006019Þ0                    ix%=16*(©(t$)+2):iy%=&30ß[ô --------------------##PH Interface mods ---------------------------------------------à4             É 8:t$="    ":fl%=&17006139:s$="b1"á0                    ix%=16*(©(t$)+2):iy%=&30â!             É 9:t$=$ib_text%ã0                    ix%=16*(©(t$)+2):iy%=&30ä-                    s$="b0":fl%=&17006139å"             É 10:t$=$ib_text%æ1                     ix%=16*(©(t$)+2):iy%=&30ç.                     s$="b3":fl%=&17006139è"             É 11:t$=$ib_text%é1                     ix%=16*(©(t$)+2):iy%=&30ê-                     s$="b3":fl%=&700E13Dë"             É 12:t$=$ib_text%ì1                     ix%=16*(©(t$)+2):iy%=&30í.                     s$="b2":fl%=&17006139î              É 13:t$="     "ï1                     ix%=16*(©(t$)+2):iy%=&30ð.                     s$="b6":fl%=&17006139ñ              É 14:t$="     "ò1                     ix%=16*(©(t$)+2):iy%=&30ó.                     s$="b5":fl%=&17006139ôG             É 15:t$=$ib_text%:s$="S3doptoff,3dopton":fl%=&1700B113õ1                     ix%=16*(©(t$)+4):iy%=&30öO             É 16:t$=" "+$ib_text%:s$="S3dradiooff,3dradioon":fl%=&1700B113÷1                     ix%=16*(©(t$)+4):iy%=&30ø#             É 17:ȉ menus%!8 ÊùL                     É 0:t$="":s$="3dleft" :fl%=&700601A:ix%=&28:iy%=&30úL                     É 1:t$="":s$="3dright":fl%=&700601A:ix%=&28:iy%=&30ûL                     É 2:t$="":s$="3ddown" :fl%=&700601A:ix%=&28:iy%=&30üL                     É 3:t$="":s$="3dup"   :fl%=&700601A:ix%=&28:iy%=&30ý                     Ëþ[ô --------------------##PH Interface mods ---------------------------------------------ÿ.             :t$="Untitled":fl%=&C700603D'                    ix%=192:iy%=&30            ËM            q%!4=mx%-ix%/2:q%!8=my%-iy%*3/2:q%!12=q%!4+ix%:q%!16=q%!8+iy%/            ç ©t$>11 ☓ ©s$>11 fl%=fl% ☓ 256            q%!20=fl%            ç fl% € 256 …2             ç (((fl% € 3)=3) ☓ (fl% € 257)) …3              q%!24=¤workspace(©t$):$(q%!24)=t$3              q%!28=¤workspace(©s$):$(q%!28)=s$                  q%!32=©t$+1
  30015.              Ì               ç s$="" … 4               q%!24=¤workspace(©t$):$(q%!24)=t$               q%!28=-1               q%!32=©t$+1              Ì4               q%!24=¤workspace(©s$):$(q%!24)=s$$               q%!28=spritearea%               q%!32=©s$+1              Í             Í            Ì4             ç fl% € 1 $(q%+24)=t$ ⇧ $(q%+24)=s$            Í7            È− "Wimp_CreateIcon",,q% ¸ currenticon%S            È− "Wimp_ForceRedraw",!q%,(q%!4)-50,(q%!8)-50,(q%!12)+50,(q%!16)+50     É 2:ȉ menus%!4 Ê           É 0#            ç currenticon%>-1 …'             ògetcuri(currenticon%)&             òdeleteicon(!q%,q%!4)e             òdecodeicon(menus%+8,q%+24,q%+28,ib_text%,ib_sprite%,ib_buffersize%,$ib_validation%) Y             currenticon%=¤cricon(!q%,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28,q%!32,q%!36)!$             òencodemenu(i_sel%)"            Ì#             I%=q%+&80$K             È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21%             ç !I%>-1 …&              ògetcuri(!I%)''              òdeleteicon(!q%,q%!4)(              È‰ menus%!8 Ê)I               É 2,3,4,5,7,8,9,10,11:B%=1<<(menus%!8):A%=(q%!24) ŵ B%*4               É 12:B%=15<<12:A%=(menus%!12)<<12+4               É 13:B%=31<<16:A%=(menus%!12)<<16,4               É 14:B%=15<<24:A%=(menus%!12)<<24-4               É 15:B%=15<<28:A%=(menus%!12)<<28.              Ë/6              A%=A% € B%:q%!24=(q%!24 €(¬B%)) ☓ A%0O              ç ¤cricon(!q%,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28,q%!32,q%!36)1              I%+=42              È” !I%>-13                ògetcuri(!I%)4(               òdeleteicon(!q%,q%!4)5,               q%!24=(q%!24 €(¬B%)) ☓ A%6P               ç ¤cricon(!q%,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28,q%!32,q%!36)7               I%+=48              Î9;              ç (menus%!8)>13 òencodepalmenu(menus%!12):%              òencodemenu(i_sel%);             Í<            Í=           É 1>#            ç currenticon%>-1 …?&            ògetcuri(currenticon%)@            çflags%€&100…A9              B%=¤workspace(q%!36):$B%=text$:q%!28=B%BK              çq%!32>0 B%=¤workspace(©$(q%!32)+1):$B%=$(q%!32):q%!32=B%C            ÍD6            x0%=q%!8:y0%=q%!12:x1%=q%!16:y1%=q%!20E            È‰ menus%!8 ÊF)            É -1:copyx%=16:copyy%=-16G-            É 0:copyx%=x0%-x1%-8:copyy%=0H-            É 1:copyx%=x1%-x0%+8:copyy%=0I-            É 2:copyx%=0:copyy%=y1%-y0%+4J-            É 3:copyx%=0:copyy%=y0%-y1%-4K            ËL?            x0%+=copyx%:y0%+=copyy%:x1%+=copyx%:y1%+=copyy%MQ            currenticon%=¤cricon(!q%,x0%,y0%,x1%,y1%,q%!24,q%!28,q%!32,q%!36)N            ÌOR          I%=q%+&80:È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21P=            min_x%=1E8:max_x%=-1E8:min_y%=1E8:max_y%=-1E8Q            È” !I%>-1R#            ògetcuri(!I%):I%+=4S)            ç cx0%<min_x% min_x%=cx0%T)            ç cx1%>max_x% max_x%=cx1%U)            ç cy0%<min_y% min_y%=cy0%V)            ç cy1%>max_y% max_y%=cy1%W            ÎX            È‰ menus%!8 ÊY)            É -1:copyx%=16:copyy%=-16Z3            É 0:copyx%=min_x%-max_x%-8:copyy%=0[3            É 1:copyx%=max_x%-min_x%+8:copyy%=0\3            É 2:copyx%=0:copyy%=max_y%-min_y%+4]3            É 3:copyx%=0:copyy%=min_y%-max_y%-4^            Ë_            I%=q%+&80`            È” !I%>-1a            ògetcuri(!I%)b            çflags%€&100…c9              B%=¤workspace(q%!36):$B%=text$:q%!28=B%dK              çq%!32>0 B%=¤workspace(©$(q%!32)+1):$B%=$(q%!32):q%!32=B%e            Íf6            x0%=q%!8:y0%=q%!12:x1%=q%!16:y1%=q%!20g?            x0%+=copyx%:y0%+=copyy%:x1%+=copyx%:y1%+=copyy%hF            ç ¤cricon(!q%,x0%,y0%,x1%,y1%,q%!24,q%!28,q%!32,q%!36)i<            òdeselect(handle%(currentwindow%),!I%):I%+=4j            Îk            Íl           É 2m*            h%=handle%(currentwindow%)n            È‰ menus%!8 Êo#             É 0:ix%=-dx%:iy%=0p#             É 1:ix%=+dx%:iy%=0q#             É 2:iy%=+dy%:ix%=0r#             É 3:iy%=-dy%:ix%=0s            Ët#            ç currenticon%=-1 …u             I%=q%+&80vK             È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21w             È” !I%>-1x1              òmoveicon(h%,!I%,ix%,iy%):I%+=4y             Îz            Ì{3             òmoveicon(h%,currenticon%,ix%,iy%)|            Í}           É 3~7             ô PH mod - add resize dialog for icons           É 4€"             òHandle_Same_sizeŴ           É 5ŵ             I%=q%+&80◰K             È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21☓8             J%=q%+&400:J%!0=handle%(currentwindow%)Ŷ$             ç currenticon%=-1 …ŷ4               J%!4=¤pick_referenceicon(J%!0,I%)             Ì⇦$               J%!4=currenticon%⇨             Í⇩K             È− "Wimp_GetIconState",,J% :ô get position of first icon..⇧             È‰ menus%!8 Ê…!             É 0:ô left align™               minix%=J%!8‰               È” !I%>-1•                 J%!4=!I%‘/                 È− "Wimp_GetIconState",,J%’;                 òmoveicon(!J%,!I%,minix%-J%!8,0):I%+=4‹               Î›"             É 1:ô right align“               maxix%=J%!16”               È” !I%>-1„                 J%!4=!I%–/                 È− "Wimp_GetIconState",,J%—<                 òmoveicon(!J%,!I%,maxix%-J%!16,0):I%+=4−               ÎŒ              É 2:ô top alignœ               miniy%=J%!20†               È” !I%>-1‡                 J%!4=!I%fi/                 È− "Wimp_GetIconState",,J%fl<                 òmoveicon(!J%,!I%,0,miniy%-J%!20):I%+=4                Î¡#             É 3:ô bottom align¢               maxiy%=J%!12£               È” !I%>-1¤                 J%!4=!I%¥/                 È− "Wimp_GetIconState",,J%¦<                 òmoveicon(!J%,!I%,0,maxiy%-J%!12):I%+=4§               Î¨             É 4:ô V Centre©2               x_centre%=((J%!16-J%!8)/2)+J%!8ª               È” !I%>-1«                 J%!4=!I%¬/                 È− "Wimp_GetIconState",,J%­O                 òmoveicon(!J%,!I%,x_centre%-((J%!16-J%!8)/2+J%!8),0):I%+=4®               Î¯             É 5:ô H Centre°.               y_centre%=((J%!12+J%!20)/2)±               È” !I%>-1²                 J%!4=!I%³/                 È− "Wimp_GetIconState",,J%´N                 òmoveicon(!J%,!I%,0,y_centre%+“(((J%!12+J%!20)/2))):I%+=4µ               Î¶             Ë·           É 6¸             I%=q%+&80¹K             È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21º8             J%=q%+&400:J%!0=handle%(currentwindow%)»$             ç currenticon%=-1 …¼4               J%!4=¤pick_referenceicon(J%!0,I%)½             Ì¾$               J%!4=currenticon%¿             ÍÀ%             reference_icon%=J%!4Á             È‰ menus%!8 ÊÂ>             É 0:òarrange_horizontal(J%!0,reference_icon%)Ã<             É 1:òarrange_vertical(J%!0,reference_icon%)Ä             ËÅ           É 7Æ            ç menus%!8=-1 …Ç$             ç currenticon%=-1 …È              I%=q%+&80ÉL              È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21Ê              È” !I%>-1ËA               òdeleteicon(handle%(currentwindow%),!I%):I%+=4Ì              ÎÍ             ÌÎC              òdeleteicon(handle%(currentwindow%),currenticon%)Ï             ÍР           ÌÑ#             ç $mb_delete%="" …Ò             ÌÓI              !q%=handle%(currentwindow%):È− "Wimp_GetWindowInfo",,q%Ô(              ç q%!88>»$mb_delete% …ÕD               òdeleteicon(handle%(currentwindow%),»$mb_delete%)Ö              Ì×>               ç ¤warning(q%,2,"Icon number out of range")Ø              ÍÙ             ÍÚ            ÍÛ           É 8Ü(            renumber%=»$mb_renumber%Ý@            òrenumber(currentwindow%,currenticon%,renumber%)Þ=            ç renumber%<9999 $mb_renumber%=Ã(renumber%+1)ß           ËàI     É 3:I%=q%+&40:!q%=handle%(currentwindow%):q%!8=1<<21:q%!12=1<<21á6            È− "Wimp_WhichIcon",!q%,I%,5<<21,0<<21âE            È” !I%>-1:q%!4=!I%:È− "Wimp_SetIconState",,q%:I%+=4:ÎãE     É 4:I%=q%+&40:!q%=handle%(currentwindow%):q%!8=0:q%!12=1<<21ä6            È− "Wimp_WhichIcon",!q%,I%,5<<21,1<<21åE            È” !I%>-1:q%!4=!I%:È− "Wimp_SetIconState",,q%:I%+=4:Îæ1     É 5:I%=q%+48:!q%=handle%(currentwindow%)ç+            È− "Wimp_GetWindowInfo",,q%è3            A%=q%!44:B%=q%!48:C%=q%!52:D%=q%!56é2            È− "Wimp_WhichIcon",!q%,I%,1<<23,0ê            È” !I%<>-1ë             ògetcuri(!I%)ìŴ             ç ((cx0%<A% € cx1%<A%) ☓ (cx0%>C% € cx1%>C%)) ☓ ((cy0%<B% € cy1%<B%) ☓ (cy0%>D% € cy1%>D%)) òdeleteicon(!q%,!I%)í             I%+=4î            Îï<     É 6:òdeletewindow(currentwindow%):currentwindow%=-1ð
  30016.      ËñÉ w_general%ò     È‰ !menus% ÊóA     É 0:def_menu%=1:ògetmenuposn:òwindowmenu(currentwindow%)ô+     É 1:òdecodemenu(w_flags%,menus%+4)õ,     É 2:ç menus%!4<>-1 € menus%!8<>-1 …ö-              !q%=handle%(currentwindow%)÷-              È− "Wimp_GetWindowInfo",,q%øD              q%?(36+menus%!4)=menus%!8:òencodepalmenu(menus%!8)ù&              curw%=currentwindow%ú0              òcrwindow(q%+4,wident$(curw%))û&              òdeletewindow(curw%)ü            Íý)     É 3:òsetworkarea(currentwindow%)þ     É 4:ç $mb_wident%="" …ÿ;             ç ¤warning(q%,2,"Templates must be named")            ÌA             òcheckident($mb_wident%,wident$(currentwindow%))4             wident$(currentwindow%)=$mb_wident%            Í<     É 5:òdeletewindow(currentwindow%):currentwindow%=-1
  30017.      ËÉ w_flags%     ç !menus%=-1 á$     !q%=handle%(currentwindow%)    $     È− "Wimp_GetWindowInfo",,q%
  30018.      È‰ !menus% Ê      É 0:òdecodetitle(1)      É 1:q%!32=q%!32ŵ&02     É 2:q%!32=q%!32ŵ&04     É 3:q%!32=q%!32ŵ&08     É 4:q%!32=q%!32ŵ&10     É 5:q%!32=q%!32ŵ&20     É 6:q%!32=q%!32ŵ&40     É 7:q%!32=q%!32ŵ&80     É 8:q%!32=q%!32€¬&300            È‰ menus%!4 Ê$            É 0:q%!32=q%!32☓&100$            É 1:q%!32=q%!32☓&200            Ë            Í     É 9:q%!32=q%!32ŵ&400     É 10:q%!32=q%!32ŵ&800     É 11:q%!32=q%!32ŵ&10001     É 12:ç menus%!4<>-1 q%!64=(menus%!4)<<12#     É 13:q%!32=q%!32ŵ&80000000<     É 14,15,17,18,19,20:q%!32=q%!32 ŵ (1<<(10+!menus%))!     É 16:òdecodetitle(1<<26) 
  30019.      Ë!     curw%=currentwindow%""     òchangewindow(q%+4,curw%)#É m_spritelist%$     È‰ !menus% Ê%W     É 0:A%=¤warning(q%,3,"Are you sure you want to delete the selected sprites ?")&'            ç A%=1 ògodeletesprites'+     É 1:ç$mb_rnsprite%<>renamesprite$…(L            È− "OS_SpriteOp",&11B,spritearea%,renamesprite$,mb_rnsprite%)            òspriteinfo*          Í++     É 2:ç$mb_rnsprite%<>renamesprite$…,L            È− "OS_SpriteOp",&11A,spritearea%,renamesprite$,mb_rnsprite%-            òspriteinfo.          Í/3     É 3:òloadsprites($mb_spritef%):òspriteinfo0%     É 4:òcheckfull($mb_spritef%)1,            òsavesprites($mb_spritef%,¹)24     É 5:òmergesprites($mb_spritef%):òspriteinfo3
  30020.      Ë4É t_file%5     È‰ !menus% Ê6B     É 0:J%=q%+40:È− "Wimp_WhichIcon",tempfile%,J%,5<<21,1<<217            È‰ menus%!4 Ê8a            É 0:È” !J%>-1:B%=¤backreffile(!J%):òfront(handle%(B%)):òsetfileopen(B%,1):J%+=4:Î9a            É 1:È” !J%>-1:B%=¤backreffile(!J%):q%!36=handle%(B%):È− "Wimp_CloseWindow",,q%+36:1                   òsetfileopen(B%,0):J%+=4:Î;5            É 2:a$=$mb_wident%:W%=¤matchident(a$)<R                   ç a$="" ç ¤warning(q%,2,"Templates must be named")☓1 Ŷ 1,""=S                   ç W%<>-1 ç ¤warning(q%,2,"Template already exists")☓1 Ŷ 1,"">E                   !q%=handle%(curw%):È− "Wimp_GetWindowInfo",,q%?:                   òcrwindow(q%+4,a$,0):òupdatefile(0)@5            É 3:a$=$mb_wident%:W%=¤matchident(a$)AR                   ç a$="" ç ¤warning(q%,2,"Templates must be named")☓1 Ŷ 1,""B_                   ç W%<>-1 € W%<>curw% ç ¤warning(q%,2,"Template already exists")☓1 Ŷ 1,""C?                   wident$(curw%)=a$:òupdatefilename(curw%)DU            É 4:È” !J%>-1:òdeletewindow(¤backreffile(!J%)):J%+=4:Î:òupdatefile(0)E            ËF>     É 1:I%=q%+40:È− "Wimp_WhichIcon",tempfile%,I%,5<<21,0G8            È” !I%>-1:òselect(tempfile%,!I%):I%+=4:ÎHB     É 2:I%=q%+40:È− "Wimp_WhichIcon",tempfile%,I%,5<<21,1<<21I:            È” !I%>-1:òdeselect(tempfile%,!I%):I%+=4:ÎJ-     É 3:ògetpointer:ònewdef($mb_wident%)Ko     É 4:A%=¤warning(q%,3,"Are you sure you want to clear all of the templates ?"):ç A%=1 òwipealltemplatesL7     É 5:È− "XOS_File",5,$mb_templates% ¸ T%,,R%;F%M#            typ%=(R%>>8) € &FFFN            È‰ ¹ ÊO             É F%€1P1              ç ¤warning(q%,1,¤string0(T%+4))Q             É T%=1Rs              ç typ%<>&FEC A%=¤warning(q%,3,"This is not a template file - Are you sure you want to load it ?")SC              ç typ%=&FEC ☓ A%=1 òloadtemplates($mb_templates%)T             UF              ç ¤warning(q%,1,"File "+$mb_templates%+" not found")V             ËW'     É 6:òcheckfull($mb_templates%)X0            òsavetemplates($mb_templates%,¹)Y
  30021.      ËZË[á\;Ý òloadsprites(f$):È− "OS_SpriteOp",&10A,spritearea%,f$]$ç f$<>"<Wimp$Scrap>" spritef$=f$^_I  ô following added by Paul Hobbs to redraw all windows after loading`8  ô a sprite file so that sprites appear immediatelya-  È−"Wimp_ForceRedraw",-1,0,0,10000,10000bcádAÝ òsavesprites(f$,safe%):È− "OS_SpriteOp",&10C,spritearea%,f$eç ¬ safe% áfspritef$=f$g%ç $spritef%<>¤spfname(spritef$) …h"  $spritef%=¤spfname(spritef$)i.  !q%=spritelist%:È−"Wimp_CloseWindow",,q%j  òfront(spritelist%)kÍlámÝ òmergesprites(f$)n(È− "OS_SpriteOp",&10B,spritearea%,f$opI  ô following added by Paul Hobbs to redraw all windows after loadingq8  ô a sprite file so that sprites appear immediatelyr-  È−"Wimp_ForceRedraw",-1,0,0,10000,10000stáuÝ ¤filetype(f$)vê f%,type%w"È− "OS_File",17,f$ ¸ type%,,f%xç type%<>1 … = -2y-ç (f%>>>20)=&FFF … = (f%>>>8)€&FFF ⇧ = -1zÝ òdecodetitle(bit%){ȉ menus%!4 Ê|É -1:q%!32=q%!32ŵbit%}:q%!32=q%!32☓bit%~Ë>çmenus%!4=8 menus%!4=9 : ô bodge for 'right-justified' bit€9çmenus%!4=7 menus%!4=8 : ô bodge for 'indirected' bitŴKòdecodeicon(menus%+4,q%+60,q%+76,tb_text%,tb_sprite%,tb_buffersize%,"")ŵá◰Ý òsetxy(ø x%,ø y%,a$,sep$)☓x%=»a$:y%=»Áa$,§a$,sep$)+1)ŶáŷÝ òsetwork(q%,v%)"!q%=»$v%:q%!4=»$(v%+§$v%,","))⇦á⇨Ý òsetworkarea(curw%)⇩ê h%⇧h%=handle%(curw%)…òsetwork(q%,mb_workarea0%)™ òsetwork(q%+8,mb_workarea1%)‰È− "Wimp_SetExtent",h%,q%•4min% = (»$mb_minx% € &FFFF) ☓ (»$mb_miny% << 16)‘&!q%=h%:È− "Wimp_GetWindowInfo",,q%’ç q%!72<>min% …‹>  q%!72=min%:È− "Wimp_CreateWindow",,q%+4 ¸ handle%(curw%)›1  !q%=handle%(curw%):È− "Wimp_OpenWindow",,q%“'  !q%=h%:È− "Wimp_DeleteWindow",,q%”Í„á–Ý ògodeletesprites—@I%=q%+&40:È− "Wimp_WhichIcon",spritelist%,I%,&200001,&200001−!q%=spritelist%ŒÈ” !I%<>-1œ'q%!4=!I%:È− "Wimp_GetIconState",,q%†+È− "OS_SpriteOp",&119,spritearea%,q%+28‡ I%+=4:Îfiòspriteinfoflá KÝ òdecodeicon(menus%,fptr%,qptr%,mb_text%,mb_sprite%,mb_buffersize%,v$)¡ȉ !menus% Ê¢É 0:oldf%=!fptr%£       È‰ menus%!4 Ê¤#       É -1:!fptr%=!fptr% ŵ &01¥       :!fptr%=!fptr%☓&01¦7                 ç (oldf%€&01)=0 !fptr%=!fptr%€¬&02§        Ë¨6       òputiconstring(oldf%,fptr%,qptr%,$mb_text%)©É 1:oldf%=!fptr%ª       È‰ menus%!4 Ê«#       É -1:!fptr%=!fptr% ŵ &02¬%       :!fptr%=(!fptr%€¬&03)☓&02­        Ë®7       ç !fptr% € &01 A$=$mb_text% ⇧ A$=$mb_sprite%¯/       òputiconstring(oldf%,fptr%,qptr%,A$)°É 2:!fptr%=!fptr%ŵ&04±É 3:!fptr%=!fptr%ŵ&08²É 4:!fptr%=!fptr%ŵ&10³É 5:!fptr%=!fptr%ŵ&20´EÉ 6:È− "Wimp_DecodeMenu",,i_font%,menus%+4,Ä100," ")¸,,,fontname$µ:       ç menus%!4<>-1 ç menus%!8=4 fontname$+=" point"¶       ç fontname$="" …·"            !fptr%=!fptr%€¬&40¸            fptr%?3=&D7¹       Ì !fptr%=!fptr%☓&40º)            ç Âfontname$,5)="point" …»"                 I%=©fontname$¼3                 õI%=I%-1:ýÁfontname$,I%,1)="."½,                 psiz%=»Áfontname$,I%+1)¾/                 fontname$=Àfontname$,I%-1)¿            Ì psiz%=12À            ÍÁ2            fptr%?3=¤findfont(fontname$,psiz%)        ÍÃÉ 7:!fptr%=!fptr%ŵ&80Ä)É 8:ç!fptr%€&100 B$=$!qptr%⇧B$=$qptr%Å?       çmenus%!4=-1 !fptr%=!fptr%ŵ&100 ⇧ !fptr%=!fptr%☓&100Æ       ç!fptr%€&100…Ç%         qptr%!8=»$mb_buffersize%È>         !qptr%=¤workspace(qptr%!8):$!qptr%=ÀB$,qptr%!8-1)É         ç v$="" …Ê              qptr%!4=-1Ë#         Ì ç (!fptr%€&03)=&02 …Ì*                   qptr%!4=spritearea%Í;              Ì qptr%!4=¤workspace(©v$+1):$(qptr%!4)=v$Π             ÍÏ         ÍР      Ì $qptr%=ÀB$,11)Ñ        ÍÒ%       ç (!fptr% € &103) = &102 …Ó0         ç qptr%!4 > 1 !fptr%=!fptr% € ¬ &02Ô        ÍÕÉ 9:!fptr%=!fptr%ŵ&200ÖÉ 10:!fptr%=!fptr%ŵ&400×É 11:!fptr%=!fptr%ŵ&800Ø,É 12:!fptr%=¤field(!fptr%,12,4,menus%!4)Ù,É 13:!fptr%=¤field(!fptr%,16,5,menus%!4)ÚEÉ 14:!fptr%=¤field(!fptr%,24,4,menus%!4):òencodepalmenu(menus%!4)ÛEÉ 15:!fptr%=¤field(!fptr%,28,4,menus%!4):òencodepalmenu(menus%!4)ÜËÝáÞÝ ¤field(flg%,b0%,nb%,i%)ß8çi%<>-1 … =flg%€¬(((1<<nb%)-1)<<b0%)☓(i%<<b0%)⇧=flg%à*Ý òputiconstring(oldf%,fptr%,qptr%,A$)áç oldf%€&100 …â;     ç (!fptr% € &03)=&02 qptr%!4=-1 : ô no sprite areaã     ç ©A$<qptr%!8 …ä+        $!qptr%=A$:!fptr%=!fptr%☓&100:áå
  30022.      ÍæÌ ç ©A$<12 …ç+        $qptr%=A$:!fptr%=!fptr%€¬&100:áè
  30023.      ÍéÍê!fptr%=!fptr% ☓ &100ë*!qptr%=¤workspace(©A$+1):qptr%!8=©A$+1ì$!qptr%=A$íFç (oldf%€&100)=0 qptr%!4=-1 : ô keep old validation string, if anyîáïR------------------------------------------------------------------------------ð8Ý òrenumber(curw%,curi%,newi%):ç curi%<0 ☓ newi%<0 áñ:ê M%,N%:!q%=handle%(curw%):È− "Wimp_GetWindowInfo",,q%òBç q%!88 <= newi% ç ¤warning(q%,2,"Icon number out of range"):áó+M%=q%+4+88+32*curi%:N%=q%+4+88+32*newi%ô#ã I%=0 ¸ 28 ⇦4:È“ M%!I%,N%!I%:íõ7òcrwindow(q%+4,wident$(curw%)):òdeletewindow(curw%)öá÷R------------------------------------------------------------------------------ø Ý òdialogue(handle%,mx%,my%)ùHògetw(handle%):òopen(handle%,mx%,my%+y0%-y1%,mx%+x1%-x0%,my%,0,0,-1)úGÈ− "Wimp_SetCaretPosition",handle%,-1,0,0,&3000000,0:ògetw(handle%)û6È– È› x0%,y0%,x1%-x0%,y1%-y0%+40:dialogue%=handle%üáýR------------------------------------------------------------------------------þ#Ý òstandardwindow(brx%,bry%,n$)ÿ@ã I%=0 ¸ 84 ⇦4:q%!I%=default%!I%:í:q%!84=0:q%!64=spritearea%NI%=q%!8-q%!0:q%!0=brx%:q%!8=q%!0+I%:I%=q%!4-q%!12:q%!12=bry%:q%!4=q%!12+I%$(q%+72)=n$:á:&Ý òcreatewindow(brx%,bry%,wident$)&òstandardwindow(brx%,bry%,wident$)òcrwindow(q%,wident$,1)á:Ý òcrwindow(q%,wident$,F%)    Pô IF handle%(handleSP%)=-1 IF FNwarning(q%,1,FNmsg0("TEMPFL"))OR1 ERROR 1,""
  30024. (È− "Wimp_CreateWindow",,q% ¸ handle% Am%=handleSP%:handleSP%=handle%(handleSP%):handle%(m%)=handle% Lç F% … !q%=handle%:È− "Wimp_GetWindowState",,q%:È− "Wimp_OpenWindow",,q%)currentwindow%=m%:wident$(m%)=wident$currenticon%=-1á:Ý ¤whichwindow(handle%)ç handle%=-1 … =-1handle%(nh%+1)=handle%&I%=-1:õI%+=1:ý handle%(I%)=handle%çI%>nh%…=-1⇧=I%Ý ¤whichsprite(handle%)ç handle%=-1 … =-1spritew%(ns%+1)=handle%'I%=-1:õI%+=1:ý spritew%(I%)=handle%çI%>ns%…=-1⇧=I%JÝ òdeletewindow(I%):!q%=handle%(I%):handle%(I%)=handleSP%:handleSP%=I%-È− "Wimp_DeleteWindow",,q%:wident$(I%)=""9I%=0:C%=¹:È” I%<=nh% € C%:C%=(wident$(I%)=""):I%+=1:Î(ç C% curbuff%=initbuf%:òsetloaded(£)á Ý òdeletesprite(I%)!1ç ((paint_drag%>>16)€&7FFF)=I% paint_drag%=-1"êi%#ç sprSP2%=I% …$     sprSP2%=nsprite%(I%)%/Ì i%=sprSP2%:õi1%=i%:i%=nsprite%(i%):ýi%=I%&#     nsprite%(i1%)=nsprite%(i%)'Í(/òseti(spritelist%,spritei%(I%)☓1,0,&600000))!q%=spritew%(I%)*!spritew%(I%)=sprSP%:sprSP%=I%+È− "Wimp_DeleteWindow",,q%,á-GÝ ògetcurw:!q%=handle%(currentwindow%):È− "Wimp_GetWindowState",,q%.òinfo(q%+4):á/8Ý ògetcuri(currenticon%):!q%=handle%(currentwindow%)00q%!4=currenticon%:È− "Wimp_GetIconState",,q%1;cx0%=q%!8:cy0%=q%!12:cx1%=q%!16:cy1%=q%!20:flags%=q%!2424ç  flags% € &100 text$=$(q%!28) ⇧ text$=$(q%+28)3Iç (flags% € &103)=&103 sprite$=¤getcommand(q%!32,"S") ⇧ sprite$=text$4á5,Ý ¤getcommand(v%,c$):ç v%<=0 … ="" ⇧ êI%6$I%=§";"+$v%,";"+c$):ç I%=0 … =""7$=À$(v%+I%),§$(v%+I%)+";",";")-1)8"Ý ¤iconstring(flg%,p%):ê i%,i$9=ç flg% € &100 i$=$!p% ⇧ i%=p%?12:p%?12=13:i$=$p%:p%?12=i%:=i$;GÝ ògetpointer:È− "Wimp_GetPointerInfo",,q%:mousex%=!q%:mousey%=q%!4<-buttons%=q%!8:handle%=q%!12:icon%=q%!16:á=R------------------------------------------------------------------------------>BÝ ¤warning(b%,f%,a$):!b%=1:$(b%+4)=a$+½0:È− "Wimp_DragBox",,-1?Bmenuhandle%=-1:È− "Wimp_ReportError",b%,f%,"FormEd2" ¸ ,A%:=A%@Ý òerrorbox(err%,err$,erl%)Aòeditoff("")B!Err%=err%:Err$=err$:Erl%=erl%C+çinerror% òerrordisplay(err%,err$,erl%)Dinerror%=¹E1È− "Wimp_DragBox",,-1 : dragtype%=0:pdrag%=-1F%ç dialogue%<>-1 òclose(dialogue%)G0!q%=err%:$(q%+4)=err$+" [Ref. "+Ãerl%+"]"+½0H(È− "Wimp_ReportError",q%,1,"FormEd2"Iinerror%=£JáK#Ý òerrordisplay(err%,err$,erl%)LîŶM0!q%=err%:$(q%+4)=err$+" [Ref. "+Ãerl%+"]"+½0N(È− "Wimp_ReportError",q%,2,"FormEd2"O òfinishPàQÝ òfinishRãI%=0¸255SAÈ” fontcounts%?I%>0:È− "Font_LoseFont",I%:fontcounts%?I%-=1:ÎTíUÈ− "Wimp_CloseDown"VÍWáXR------------------------------------------------------------------------------YÝ ¤workspace(L%):L%+=1Z<ç curbuff%+L%>buffer%+maxbuf% Ŷ 1,"No more buffer space"[jç (buffer%+maxbuf%-curbuff%)<256 ç ¤warning(q%+100,1,"Buffer space running short, Save off quick ! !")\curbuff%+=L%:=curbuff%-L%]R------------------------------------------------------------------------------^CÝ ¤findfont(f$,p):êf%:È− "Font_FindFont",,f$,p*16,p*16,0,0 ¸ f%_Jfontcounts%?f%+=1:ç fontcounts%?f%>=255 Ŷ 1,"Internal font table full"`=f%aR------------------------------------------------------------------------------bÝ òspriteinfocê I%d8I%=q%+4:È− "Wimp_WhichIcon",spritelist%,I%,&800000,0eCÈ” !I%<>-1:I%!-4=spritelist%:È− "Wimp_DeleteIcon",,I%-4:I%+=4:Îf:i%=sprSP2%:È” i%<>-1:spritei%(i%)=-1:i%=nsprite%(i%):Îg-!q%=spritelist%:È− "Wimp_CloseWindow",,q%h $spritef%=¤spfname(spritef$)i4È− "OS_SpriteOp",&108,spritearea% ¸ ,,,nsprites%j?maxspwidth%=scrx1%-80:curx%=0:cury%=0:maxw%=0:maxh%=0:ix%=0kç nsprites%>0 …l  ã I%=1 ¸ nsprites%m  òreadsprite(I%)nG  flags%=&1701A429:text$=$spritename%:ògetminxy(flags%,text$,text$)o1  ç minx%>spw% spwx%=minx%+32 ⇧ spwx%=spw%+32p.  ç curx%+spwx%>maxspwidth% òlineofspritesq  spwx%(ix%)=spwx%r5  ç -32-sph%-miny%-8<maxh% maxh%=-32-sph%-miny%-8sE  spw%(ix%)=spw%:sph%(ix%)=sph%:minx%(ix%)=minx%:miny%(ix%)=miny%t  spname$(ix%)=$spritename%u  curx%+=spwx%(ix%):ix%+=1v  íw  òlineofspritesxÍy'!q%=0:q%!4=cury%:q%!8=maxw%:q%!12=0z&È− "Wimp_SetExtent",spritelist%,q%{òfront(spritelist%)|i%=sprSP2%:È” i%<>-1}i2%=nsprite%(i%)~òclose(spritew%(i%))/ç spritei%(i%)>=0 òopensprite(spritei%(i%))€ i%=i2%:ÎŴ6È− "Wimp_ForceRedraw",spritelist%,0,-30000,30000,0ŵá◰Ý ¤spfname(sp$)☓2ç ©sp$>spflen%-2 ="..."+Âsp$,spflen%-5) ⇧ =sp$ŶÝ òlineofspritesŷ curx%=0:cury%+=maxh%:maxh%=0ç ix%>0 …⇦  ãJ%=0¸ix%-1⇨O  !q%=spritelist%:q%!4=curx%+(spwx%(J%)-spw%(J%))Ŵ2:q%!8=cury%+miny%(J%)+16⇩M  q%!12=curx%+(spwx%(J%)+spw%(J%))Ŵ2:q%!16=cury%+miny%(J%)+16+sph%(J%)+16⇧"  q%!20=¤sprflags(spname$(J%))…9  $(q%+24)=spname$(J%):È− "Wimp_CreateIcon",,q% ¸ ic%™  f%=flags%:i%=sprSP2%‰H  È”i%<>-1:ç spriten$(i%)=spname$(J%) f%=f%☓&400000:spritei%(i%)=ic%•  i%=nsprite%(i%):ΑF  !q%=spritelist%:q%!4=curx%+(spwx%(J%)-minx%(J%))Ŵ2:q%!8=cury%+16’B  q%!12=curx%+(spwx%(J%)+minx%(J%))Ŵ2:q%!16=cury%+miny%(J%)+16‹<  q%!20=f%:$(q%+24)=spname$(J%):È− "Wimp_CreateIcon",,q%›  curx%+=spwx%(J%)“  í”Í„ç curx%>maxw% maxw%=curx%–ix%=0:curx%=0—á−Ý ¤sprflags(sp$)Œ9È− "OS_SpriteOp",&128,spritearea%,sp$ ¸ ,,,,,hasmask%œ*ç hasmask% … = &1701A032 ⇧ = &1701A012†Ý òreadsprite(I%)‡ê S%:S%=spritearea%fiPÈ− "OS_SpriteOp",&10D,S%,spritename%,12,I% ¸ ,,,splen%:spritename%?splen%=13flEÈ− "OS_SpriteOp",&128,S%,spritename% ¸ ,,,spw%,sph%,hasmask%,spm% <È− "OS_ReadModeVariable",spm%,4 ¸ ,,spx%:spw%=spw%<<spx%¡<È− "OS_ReadModeVariable",spm%,5 ¸ ,,spy%:sph%=sph%<<spy%¢á£Ý òdeselectsprites¤ I%=q%+16¥6È− "Wimp_WhichIcon",spritelist%,I%,&200000,&200000¦0È” !I%>-1:òdeselect(spritelist%,!I%):I%+=4:Χá¨Ý òopensprite(icon%)©-ç sprSP%=-1 Ŷ 1,"No more sprite windows!"ªògeti(spritelist%,icon%☓1)«6idata0%=idata%!0:idata4%=idata%!4:idata8%=idata%!8¬%text$=¤iconstring(iflags%,idata%)­"òstandardwindow(0,0,"Sprites")®q%!28=&0F¯ q%?35=-1°q%!56=(iflags%€&100)☓&3D±<q%!72=idata0%:q%!76=idata4%:q%!80=idata8% : ô share data²q%!60=&3000³@È− "OS_SpriteOp",&128,spritearea%,text$ ¸ ,,,spw%,sph%,,spm%´9È− "OS_ReadModeVariable",spm%,4 ¸ ,,spx%:xsc%=6<<spx%µ9È− "OS_ReadModeVariable",spm%,5 ¸ ,,spy%:ysc%=6<<spy%¶wx%=spw%*xsc%:wy%=sph%*ysc%·+q%!4=-wy%:q%!8=wx%:q%!44=-wy%:q%!48=wx%¸(È− "Wimp_CreateWindow",,q% ¸ handle%¹6m%=sprSP%:sprSP%=spritew%(m%):spritew%(m%)=handle%º#nsprite%(m%)=sprSP2%:sprSP2%=m%»>spriten$(m%)=text$:sprxscale%(m%)=xsc%:spryscale%(m%)=ysc%¼spritei%(m%)=icon%€¬1½#òdeselect(spritelist%,icon%€¬1)¾Hòseti(spritelist%,icon%☓1,&400000,&600000) : ô shaded and deselected¿(!q%=handle%:q%!20=0:q%!24=0:q%!28=-1ÀIq%!4=mousex%-wx%Ŵ2:q%!8=mousey%-wy%:q%!12=mousex%+wx%Ŵ2:q%!16=mousey%ÁÈ− "Wimp_OpenWindow",,q%ÂáÃÝ ògetspritexy(I%,mx%,my%)Ä)xs%=sprxscale%(I%):ys%=spryscale%(I%)Åx%=(mx%-bx%)/xs%Æy%=(by%-my%-dy%)/ys%ÇOÈ− "OS_SpriteOp",&128,spritearea%,spriten$(I%) ¸ ,,,spw%,sph%,hasmask%,spm%È,È− "OS_ReadModeVariable",spm%,4 ¸ ,,spx%É,È− "OS_ReadModeVariable",spm%,5 ¸ ,,spy%Êwx%=spw%*xs%:wy%=sph%*ys%Ëçx%<0x%=0Ìçy%<0y%=0Íçx%>=spw%x%=spw%-1Îçy%>=sph%y%=sph%-1ÏáÐ%Ý òadjustsize(I%,insdel%,rowcol%)Ñògetw(spritew%(I%))Ò&ògetspritexy(I%,mmousex%,mmousey%)Óowx%=wx%:owy%=wy%Ôȉ rowcol% ÊÕÉ 0:ȉ insdel% ÊÖ*       É 0:rcode%=31:rc%=sph%:wy%+=ys%×5       É 1:rcode%=32:rc%=sph%-1:wy%-=ys%:çwy%<1 áØ/       É 2:rcode%=31:rc%=sph%-1-y%:wy%+=ys%Ù8       É 3:rcode%=32:rc%=sph%-1-y%:wy%-=ys%:çwy%<1 áÚ        ËÛÉ 1:ȉ insdel% ÊÜ*       É 0:rcode%=45:rc%=spw%:wx%+=xs%Ý5       É 1:rcode%=46:rc%=spw%-1:wx%-=xs%:çwx%<1 áÞ(       É 2:rcode%=45:rc%=x%:wx%+=xs%ß1       É 3:rcode%=46:rc%=x%:wx%-=xs%:çwx%<1 áà        Ëá:áâËã=È− "OS_SpriteOp",&100+rcode%,spritearea%,spriten$(I%),rc%ä"ònewsize(I%,owx%,owy%,wx%,wy%)å%òupicon(spritelist%,spritei%(I%))æáç(Ý ònewsize(I%,wx%,wy%,newwx%,newwy%)èògetw(spritew%(I%))élimitx%=¹:limity%=¹ê3ô limitx%=(x1%-bx%>=wx%):limity%=(by%-y0%>=wy%)ëwx%=newwx%:wy%=newwy%ì2çlimitx%☓(wx%<x1%-bx%) newx%=bx%+wx%⇧newx%=x1%í2çlimity%☓(wy%<by%-y0%) newy%=by%-wy%⇧newy%=y0%îHçnewx%<x1%☓newy%>y0% q%!8=newy%:q%!12=newx%:È− "Wimp_OpenWindow",,q%ï,q%!&80=0:q%!&84=-wy%:q%!&88=wx%:q%!&8C=0ð+È− "Wimp_SetExtent",spritew%(I%),q%+&80ñHçnewx%>x1%☓newy%<y0% q%!8=newy%:q%!12=newx%:È− "Wimp_OpenWindow",,q%ò7È− "Wimp_ForceRedraw",spritew%(I%),0,-30000,30000,0óáôÝ òupdatesprite(I%)õ7È− "Wimp_ForceRedraw",spritew%(I%),0,-30000,30000,0ö%òupicon(spritelist%,spritei%(I%))÷áøÝ òchangesize(I%,xsc%,ysc%)ù)xs%=sprxscale%(I%):ys%=spryscale%(I%)ú+sprxscale%(I%)=xsc%:spryscale%(I%)=ysc%ûAÈ− "OS_SpriteOp",&128,spritearea%,spriten$(I%) ¸ ,,,spw%,sph%ü6ònewsize(I%,spw%*xs%,sph%*ys%,spw%*xsc%,sph%*ysc%)ýáþÝ òflipx(I%)ÿ2È− "OS_SpriteOp",&12F,spritearea%,spriten$(I%)7È− "Wimp_ForceRedraw",spritew%(I%),0,-30000,30000,0%òupicon(spritelist%,spritei%(I%))áÝ òflipy(I%)2È− "OS_SpriteOp",&121,spritearea%,spriten$(I%)7È− "Wimp_ForceRedraw",spritew%(I%),0,-30000,30000,0%òupicon(spritelist%,spritei%(I%))áÝ òbigsprite(I%)    ê xs%,ys%,By%,paint%
  30025. Dpaint%=£:ç paint_drag%>=0 paint%=(!q%=spritew%(paint_drag%>>16)) $spritename%=spriten$(I%) )xs%=sprxscale%(I%):ys%=spryscale%(I%)ï 23,12,0,7,0,7,0,7,0,7IÈ− "OS_SpriteOp",&128,spritearea%,spritename% ¸ ,,,spw%,sph%,hasmask%By%=by%-sph%*ys% È” more%çhasmask% æ16,128:ÚMÈ− "Wimp_ReadPixTrans",&100,spritearea%,spritename%,,,,factors%,pixtrans%!factors%!0=xs%:factors%!4=ys%NÈ− "OS_SpriteOp",&134,spritearea%,spritename%,bx%,By%,8,factors%,pixtrans%ç paint% òdrgoff&È− "Wimp_GetRectangle",,q% ¸ more%ÎáR------------------------------------------------------------------------------Ý òspritepixel(I%)ògetw(spritew%(I%)))xs%=sprxscale%(I%):ys%=spryscale%(I%)$ògetspritexy(I%,mousex%,mousey%)y%=sph%-1-y%)ç x%<0 ☓ y%<0 ☓ x%>=spw% ☓ y%>=sph% á ȉ paintmode% Ê!É 16:òpaint_pixel(&40)"É 17:òpaint_spray#É 18:òpaint_flood(&80)$É 19:òpaint_line(&00)%É 20:òpaint_ellipse(&C0)&É 21:òpaint_ellipse(&C8)'É 22:òpaint_circle(&90)(É 23:òpaint_circle(&98))É 24:òpaint_arc(&A0)*É 25:òpaint_segment(&A8)+É 26:òpaint_sector(&B0),É 27:òpaint_triangle(&50)-É 28:òpaint_blockcopy(&BE).É 29:òpaint_blockmove(&BD)/É 30:òpaint_typetext0 Ŷ 1,"Unknown paint mode!"1Ë2%òupicon(spritelist%,spritei%(I%))3á4Ý òpaint_pixel(void%)5(paint_drag%=I%<<16   : ô auto-repeat6 ç sprcolour%=16 € hasmask% …7   ç buttons%=&01 c%=1 ⇧ c%=08=  È− "OS_SpriteOp",&12C,spritearea%,spriten$(I%),x%,y%,c%9  ç c%=0 …:       c%=16;F  Ì È− "OS_SpriteOp",&129,spritearea%,spriten$(I%),x%,y% ¸ ,,,,,c%<  Í=Ì>)  ç buttons%=&01 c%=0 ⇧ c%=sprcolour%?  ç c%=16 c%=0@=  È− "OS_SpriteOp",&12A,spritearea%,spriten$(I%),x%,y%,c%AF  ç hasmask% È−"OS_SpriteOp",&12C,spritearea%,spriten$(I%),x%,y%,1BÍCKòupdate(spritew%(I%),x%*xs%,-(sph%-y%)*ys%,(x%+1)*xs%,-(sph%-1-y%)*ys%)D È” more%E1ç c%=16 ï 23,12,0,7,0,7,0,7,0,7:æ16,0 ⇧ æ0,c%F"ì bx%+x%*xs%,by%-(sph%-y%)*ys%G0ð &65,bx%+(x%+1)*xs%-1,by%-(sph%-1-y%)*ys%-1H(È− "Wimp_GetRectangle",,q% ¸ more%:ÎIáJÝ òpaint_flood(code%)K ç buttons% € &01 òundo(I%):áLBÈ− "OS_SpriteOp",&129,spritearea%,spriten$(I%),x%,y% ¸ ,,,,,c%Mòedit(spriten$(I%))Næ 0,128+c%:æ 0,sprcolour%Oð code%+5,x%<<spx%,y%<<spy%Pòeditoff(spriten$(I%))Qòupdatesprite(I%)RáSÝ òpaint_line(code%)TÝ òpaint_circle(code%)Uòdragclick(1,code%)VáWÝ òpaint_ellipse(code%)XÝ òpaint_arc(code%)YÝ òpaint_segment(code%)ZÝ òpaint_sector(code%)[Ý òpaint_triangle(code%)\Ý òpaint_blockcopy(code%)]Ý òpaint_blockmove(code%)^òdragclick(2,code%)_á` Ý òdragclick(nclicks%,code%)a.ç buttons% € &01 òdragoff:paint_drag%=-1:ábç paint_drag%>=0 …c  òdragoffd1  È‰ ((paint_drag%>>4)€&F)-(paint_drag%€&F) Êe      É 1f'    dragx1%=dragx0%:dragy1%=dragy0%g#    sprx1%=sprx0%:spry1%=spry0%h/    dragx0%=mousex%-bx%:dragy0%=mousey%-by%i9    dragx%=dragx0%:dragy%=dragy0%:sprx0%=x%:spry0%=y%j    paint_drag%+=1k      É 0l    òedit(spriten$(I%))m    æ0,sprcolour%n    æ0,128+sprcolour%o;    ç (paint_drag%€&F0)=&10 ì sprx1%<<spx%,spry1%<<spy%p#    ì sprx0%<<spx%,spry0%<<spy%q    È‰ paintmode% Êr    É 28,29s-      ç sprx1%-sprx0%<0 x%+=sprx1%-sprx0%t-      ç spry1%-spry0%<0 y%+=spry1%-spry0%u#      ð code%,x%<<spx%,y%<<spy%v        w%      ð code%+5,x%<<spx%,y%<<spy%x        Ëy    òeditoff(spriten$(I%))z    òupdatesprite(I%){    È‰ paintmode% Ê|    É 19:}=    É 28:dragx%=mousex%-bx%:dragy%=mousey%-by%:òdragoff:á~,    É 27:dragx1%=dragx0%:dragy1%=dragy0%+            sprx1%=sprx0%:spry1%=spry0%€    :paint_drag%=-1Ŵ        Ëŵ  Ë◰Ì☓5  paint_drag%=(I%<<16)☓(code%<<8)☓(nclicks%-1<<4)ŶÍŷ+dragx0%=mousex%-bx%:dragy0%=mousey%-by%5dragx%=dragx0%:dragy%=dragy0%:sprx0%=x%:spry0%=y%⇦ òdragoff⇨á⇩DÝ òpaintdrag(mousex%,mousey%,buttons%,handle%,icon%,oldbuttons%)⇧$ògetw(spritew%(paint_drag%>>16))… òdragoff™9ç handle%<>spritew%(paint_drag%>>16) paint_drag%=-1:á‰)dragx%=mousex%-bx%:dragy%=mousey%-by%•Gç (paintmode%=20 ☓ paintmode%=21)€(paint_drag%€&F)=0 dragy%=dragy0%‘òdragon(buttons%)’á‹Ý òdragoff›ç paint_drag%=-1 á“ȉ paintmode% Ê”É 16,18: ô do nothing„–K  !q%=spritew%(paint_drag%>>16):q%!4=-1E8:q%!8=-1E8:q%!12=1E8:q%!16=1E8—(  È− "Wimp_UpdateWindow",,q% ¸ more%−;  È” more%:òdrgoff:È− "Wimp_GetRectangle",,q% ¸ more%:Ό˜á†Ý òdrgoff‡æ3,7ficode%=(paint_drag%>>8)€&FFflȉ paintmode% Ê  É 28,29¡  È‰ paint_drag%€&F Ê¢B  É 0:È› bx%+dragx0%,by%+dragy0%,dragx%-dragx0%,dragy%-dragy0%£B  É 1:È› bx%+dragx%,by%+dragy%,dragx1%-dragx0%,dragy1%-dragy0%¤!    ì bx%+dragx0%,by%+dragy0%¥A    ð 29,bx%+dragx1%,by%+dragy0%:ð 29,bx%+dragx1%,by%+dragy1%¦A    ð 29,bx%+dragx0%,by%+dragy1%:ð 29,bx%+dragx0%,by%+dragy0%§  Ë¨ É 19,20,21,22,23,24,25,26,27©  È‰ paint_drag%€&F Êª
  30026.   É 0:«    È‰ paint_drag%€&F0 Ê¬?    É &10:ì bx%+dragx0%,by%+dragy0%:ß bx%+dragx%,by%+dragy%­G    É &00:ì bx%+dragx0%,by%+dragy0%:ð code%+5,bx%+dragx%,by%+dragy%®        Ë¯$  É 1:code%=(paint_drag%>>8)€&FF°!    ì bx%+dragx1%,by%+dragy1%±    È‰ code% Ê²(    É &00: ß bx%+dragx0%,by%+dragy0%³)              ß bx%+dragx%,by%+dragy%´+              ß bx%+dragx1%,by%+dragy1%µ#    :ì bx%+dragx0%,by%+dragy0%¶1              ð code%+5,bx%+dragx%,by%+dragy%·        Ë¸  Ë¹˺á»Ý òdragon(buttons%)¼ȉ paintmode% Ê½É 16¾  ç buttons%€&05 …¿(       òspritepixel(paint_drag%>>16)À  Ì paint_drag%=-1Á  ÍÂÉ 30:ô do nothingàòdragoffÄËÅáÆÝ òedit(spname$)ÇMÈ− "OS_SpriteOp",&13C,spritearea%,spname$,0 ¸ oldR0%,oldR1%,oldR2%,oldR3%Èswitched%=¹ÉáÊ; ê A%,B%,sptr%Ë); A%=¤spriteaddr(spritearea%,spname$)Ì&; ç (sptr%!16+1)*4=linelen% € £  …Í;      !vduscreen%=A%Î6;      È− "OS_ReadModeVariable",sptr%!40,10 ¸ ,,B%Ï%;      ï 29,(sptr%!24>>B%)*dx%;0;Ð$; ⇧ !vduscreen%=editbuffer%:ï 26ÑF;      È− "OS_SpriteOp",&122,spritearea%,spname$,0,1024-sph%*dy%,0Ò; ÍÓ); ï 24,0;1024-sph%*dy%;spw%*dx%;1023;Ô; áÕÝ òeditoff(spname$)Öç switched% …×2  È− "OS_SpriteOp",oldR0%,oldR1%,oldR2%,oldR3%Ø  undoname$=spname$Ù  switched%=£ÚÍÛáÜ"; ê A%,B%,E%,H%,L%,W%,I%,J%,T%Ý!; ç !vduscreen%=editbuffer% …Þ; ô IF hasmask% THENß+;   A%=¤spriteaddr(spritearea%,spname$)à;   ç sptr%!24<>0 …á5;     È− "OS_ReadModeVariable",sptr%!40,10 ¸ ,,B%â&;     J%=sptr%!24 >> B%:sptr%!24=0ãA;     ã I%=1 ¸ J%:È− "OS_SpriteOp",&22E,spritearea%,sptr%,0:íä    ;   Íå';   W%=(sptr%!16+1)*4:H%=sptr%!20+1æ*;   E%=editbuffer%:L%=editbufferwidth%çO;   sgetpars!0=A%:sgetpars!4=E%:sgetpars!8=W%:sgetpars!12=H%:sgetpars!16=L%è;   Ö sgetéNô FOR J%=1 TO H%:FOR I%=0 TO W%-1 STEP4:T%=A%!I%:A%!I%=E%!I%:E%!I%=T%:NEXTêô A%+=W%:E%+=L%:NEXTë
  30027. ô ELSEìQô SYS"OS_SpriteOp",&110,spritearea%,spname$,0,0,1024-sph%*dy%,spw%*dx%-1,1023í ô ENDIFî; Íï/; undoscreen%=!vduscreen%:undoname$=spname$ð$; !vduscreen%=oldvdu%:ï29,0;0;26ñ; áòÝ òundo(sprite%)óï7:áô?; ç undoname$<>spriten$(I%) ☓ undoscreen%<>editbuffer% ï7:áõ; !vduscreen%=undoscreen%ö; òeditoff(spriten$(I%))÷; òupdatesprite(I%)ø; áùÝ ¤spriteaddr(A%,name$)úê N%,N1%,N2%,N3%,I%û:$spritename%=name$:ã I%=©name$ ¸ 11:spritename%?I%=0:íü9N1%=spritename%!0:N2%=spritename%!4:N3%=spritename%!8ýN%=A%+A%!12:A%=A%+A%!8þ<È” A%<N%:çA%!4=N1%çA%!8=N2%çA%!12=N3% sptr%=A%:=A%+A%!32ÿA%+=!A%:Π   6Ŷ 1,"Sprite '"+name$+"' not found by FNspriteaddr"    R------------------------------------------------------------------------------    Ý òpalette    ȉ icon% Ê    
  30028. É -1:á    (É 31:òseti(palette%,icon%,&200000,0)         grid%=¬grid%             ç icon%<16 …               òunhtpal    
  30029.        palcolour%=icon%             sprcolour%=palcolour%            òhtpal    
  30030.      Ì            ç icon%<>paintmode% …    +         òdeselect(palette%,paintmode%)    $         òselect(palette%,icon%)    ,         paintmode%=icon%:paint_drag%=-1            Í    
  30031.      Í    Ë    á         !Ý òxor(handle%,icon%,ntimes%)    4êI%:ãI%=1¸ntimes%:òseti(handle%,icon%,&200000,0)    tempt%=’:õý’-tempt%>3:í    á    Ý òunhtpal    çpalcolour%=-1 á    &òseti(palette%,palcolour%,&00,&05)    á           Ý òhtpal    !    ê c3%    "çpalcolour%=-1 á    #!c3%=uncolour%(palcolour%)<<24    $0òseti(palette%,palcolour%,c3%☓&05,&0F000005)    %á    &$Ý òseti(handle%,icon%,eor%,bic%)    'J!q%=handle%:q%!4=icon%:q%!8=eor%:q%!12=bic%:È− "Wimp_SetIconState",,q%    (á    )Ý òsetrgbvals(r%,g%,b%)    *êI%    +$pal%(0)=r%:pal%(1)=g%:pal%(2)=b%    , ãI%=0¸2    -òseti(palette%,I%,0,0)    .í    /á    0     1Ý òreadpal(c%,c2%)    2ç c2%=16 …    3"     palword%=paltable%!(4*c%)    4-Ì È− "OS_ReadPalette",c%,c2% ¸ ,,palword%    5Í    6r%=(palword%>> 8)€&FF    7g%=(palword%>>16)€&FF    8b%=(palword%>>24)€&FF    9á    :     ;R------------------------------------------------------------------------------    <!Ý òencodepalmenu(tickcolour%)    =JI%=m_palette%+28:ã c%=0 ¸ 15:I%!0=(c%=tickcolour% € 1) ☓ (c%=15 € 128)    >I%+=24:í:á    ?Ý òencodepal(c1%,c2%)    @ê c%,d%,e%,br%,maxd%,maxe%    A$È− "Wimp_ReadPalette",,paltable%    B-ãc%=c1%¸c2%:bright%(c%)=¤brightness(c%):í    C(ãc%=c1%¸c2%:br%=bright%(c%):maxe%=-1    D"ãd%=0¸15:e%=“(bright%(d%)-br%)    Eçe%>maxe% maxe%=e%:maxd%=d%    Fí:uncolour%(c%)=maxd%:í    GI%=m_palette%+28    H?ã c%=0 ¸ 15:I%!8=(((c%<<4)+uncolour%(c%))<<24) ☓ 9:I%+=24:í    Iá    JÝ ¤brightness(c%)    Kêr%,g%,b%    Lòreadpal(c%,16)    M=r%+g%+g%+b%    N+Ý ¤foreback(c%) = (c%<<4)☓uncolour%(c%)    OÝ ¤colourdiff(rgb1%,rgb2%)    Pê r%,g%,b%,R%,G%,B%    Q;r%=(rbg1%>>8)€&FF:g%=(rbg1%>>16)€&FF:b%=(rbg1%>>24)€&FF    R;R%=(rbg2%>>8)€&FF:G%=(rbg2%>>16)€&FF:B%=(rbg2%>>24)€&FF    S#= (R%-r%)^2+(G%-g%)^2+(B%-b%)^2    TR------------------------------------------------------------------------------    UÝ òcheckfull(f$)    Vç §f$,".") ☓ §f$,":") á    W;Ŷ 1,"To save, drag the file icon to a directory viewer"    XÝ òcheckident(A$,B$)    Yç ¤lc(A$)=¤lc(B$) á    Z7ç ¤matchident(A$)<>-1 Ŷ 1,"Template already exists"    [á    \Ý ¤matchident(A$)    ]ç A$="" … =-1    ^ê I%    _A$=¤lc(A$)    `/I%=nh%+1:õI%=I%-1:ýA$=¤lc(wident$(I%))☓I%=0    a çA$=¤lc(wident$(I%))…=I%⇧=-1    b:    cÝ òwipealltemplates    d ãI%=0¸nh%    e)  ç wident$(I%)<>"" òdeletewindow(I%)    f í    gòupdatefile(0)    há    i:    j"Ý òsavetemplates(tfile$,safe%)    k2ç ¬loaded% ç¤warning(q%,1,¤msg0("NTMPSV"))☓1:á    l;all%=(menuhandle%=mainmenu% ☓ menuhandle%=t_file%):J%=0    mãI%=nh%¸0⇦-1    nF ç wident$(I%)<>"" € (all% ☓ I%=currentwindow%) wptr%(J%)=I%:J%+=1    oí    pKãI%=0¸255:fontbinding%?I%=0:í:freef%=1:ô internal font handle allocator    q<tf_hdr%=16:tf_fsize%=48:È− "XOS_Find",&80,tfile$ ¸ E%;F%    rjç F%€1 ç E%=&108C2 È− "XOS_Find",0,0:È− "XOS_Find",&80,tfile$ ¸ E%;F%:ç ¤warning(q%,1,¤msg0("CLOSED"))    s3ç F%€1 ç ¤warning(q%,1,¤string0(E%+4))☓1 Ŷ 1,""    t6ç E%=0 ç ¤warning(q%,1,¤msg1("NOOPEN",tfile$))☓1:á    utf_handle%=E%:ê Ŷ    v!î Ŷ ê:÷ Ŷ:Ù#tf_handle%:Ŷ fl,ö$    wtf_dataptr%=tf_hdr%+J%*24+4    xBãI%=0¸tf_hdr%-1:indexdata%?I%=0:í:tf_index%=indexdata%+tf_hdr%    yã I%=0¸J%-1    z7 !q%=handle%(wptr%(I%)):È− "Wimp_GetWindowInfo",,q%    {? q%!68=1:tf_datasize%=88+32*q%!88:òprocessicon(q%+60,q%+76)    | ç q%!88>0 òprocessicons    }< È− "OS_GBPB",1,tf_handle%,q%+4,tf_datasize%,tf_dataptr%    ~C tf_index%!0=tf_dataptr%:tf_index%!4=tf_datasize%:tf_index%!8=1    O $(tf_index%+12)=wident$(wptr%(I%)):tf_index%+=24:tf_dataptr%+=tf_datasize%    €í    ŴD!tf_index%=0:ç freef%=1 !indexdata%=-1 ⇧ !indexdata%=tf_dataptr%    ŵAÈ− "OS_GBPB",1,tf_handle%,indexdata%,tf_index%+4-indexdata%,0    ◰ç freef%>1 …    ☓,  ã I%=0 ¸ tf_fsize%-1:indexdata%?I%=0:í    Ŷ  ã I%=1 ¸ freef%-1    ŷ%  J%=0:õJ%+=1:ýfontbinding%?J%=I%    F  È− "Font_ReadDefn",J%,indexdata%+8 ¸ ,,indexdata%!0,indexdata%!4    ⇦@  È− "OS_GBPB",1,tf_handle%,indexdata%,tf_fsize%,tf_dataptr%    ⇨  tf_dataptr%+=tf_fsize%    ⇩  í    ⇧Í    …EÙ #tf_handle%:ÿ("Settype "+tfile$+" Template"):ÿ("Stamp "+tfile$)    ™3ç safe% € menuhandle%=t_file% templatef$=tfile$    ‰á    •:    ‘Ý òprocessicons    ’ ê I%,J%    ‹ J%=q%+92    ›7ã I%=0 ¸ q%!88-1:òprocessicon(J%+16,J%+20):J%+=32:í    “á    ”Ý òprocessicon(fptr%,qptr%)    „ç !fptr% € &40 …    –,  extf%=fptr%?3:intf%=fontbinding%?extf%    —?  ç intf%=0 intf%=freef%:freef%+=1:fontbinding%?extf%=intf%    −  fptr%?3=intf%    ŒÍ    œç !fptr% € &100 …    †  B%=q%+4+tf_datasize%    ‡:  $B%=$!qptr%:!qptr%=tf_datasize%:tf_datasize%+=©$B%+1    fi  ç qptr%!4>0 …    fl    B%=q%+4+tf_datasize%     @    $B%=$(qptr%!4):qptr%!4=tf_datasize%:tf_datasize%+=©$B%+1    ¡  Í    ¢Í    £á    ¤:    ¥Ý òloadtemplates(tfile$)    ¦ ê I%,f$    §È− "Hourglass_On"    ¨"È− "Wimp_OpenTemplate",,tfile$    ©:ç tfile$<>"<Wimp$Scrap>" ç ¬ loaded% templatef$=tfile$    ªê Ŷ    «=î Ŷ ê:î Ŷ ÷:È− "Wimp_CloseTemplate":òupdatefile(0):Ŷ fl,ö$    ¬tf_index%=0:õ    ­$mb_wident%="*"    ®tÈ− "Wimp_LoadTemplate",,q%+4,curbuff%,buffer%+maxbuf%,fontcounts%,mb_wident%,tf_index% ¸ ,,curbuff%,,,,tf_index%    ¯)ç tf_index%<>0 òloadtemp($mb_wident%)    °ý tf_index%=0    ±)È− "Wimp_CloseTemplate":òsetloaded(¹)    ²òupdatefile(0)    ³È− "Hourglass_Off"    ´á    µ:    ¶Ý òloadtemp(wident$)    ·6I%=¤matchident(wident$):ç I%<>-1 òdeletewindow(I%)    ¸'q%!68=spritearea%:P%=q%+92:I%=q%!88    ¹2È”I%>0:ç ((P%!16)€&103)=&102 P%!24=spritearea%    º,P%+=32:I%-=1:Î:òcrwindow(q%+4,wident$,0)    »á    ¼:    ½R------------------------------------------------------------------------------    ¾Ý òdefaultwindows    ¿5È− "Wimp_OpenTemplate",,"<FormEd2$Dir>.Templates"    ÀÞ default% (88+1*32)    Á#òloadcrtemp("default",default%)    Â'spritelist% = ¤crtemp("spritelist")    Ã$m_scale%    = ¤crtemp("m_scale")    Ä'm_workarea% = ¤crtemp("m_workarea")    Å%m_resize%   = ¤crtemp("m_resize")    Æ$palette%    = ¤crtemp("palette")    Ç&m_savetemp% = ¤crtemp("save_temp")    È(m_savespr%  = ¤crtemp("save_sprite")    É%proginfo%   = ¤crtemp("ProgInfo")    Ê(dial_delete%= ¤crtemp("dial_delete")    Ë(new_temp%   = ¤crtemp("NewTemplate")    Ì$options%    = ¤crtemp("Options")    Í$handlew%    = ¤crtemp("Handles")    Î&tempfile%   = ¤crtemp("Templates")    ÏÈ− "Wimp_CloseTemplate"    Ð"sprbuff%=¤iconaddr(m_scale%,3)    Ñ*mb_templates%=¤iconaddr(m_savetemp%,1)    Ò'mb_spritef%=¤iconaddr(m_savespr%,1)    Ó*mb_workarea0%=¤iconaddr(m_workarea%,9)    Ô+mb_workarea1%=¤iconaddr(m_workarea%,10)    Õ&mb_minx%=¤iconaddr(m_workarea%,14)    Ö&mb_miny%=¤iconaddr(m_workarea%,15)    ×#mb_name%=¤iconaddr(new_temp%,0)    Ø"mb_deft%=¤iconaddr(options%,5)    Ù"mb_deff%=¤iconaddr(options%,6)    Ú"mb_auto%=¤iconaddr(options%,7)    Û#hndident%=¤iconaddr(handlew%,1)    Ü"hndicon%=¤iconaddr(handlew%,3)    ÝCògeti(m_scale%,2):sprxoff%=(ix0%+ix1%)Ŵ2:spryoff%=(iy0%+iy1%)Ŵ2    Þá    ßR------------------------------------------------------------------------------    àÝ ¤crtemp(wident$)    áòloadcrtemp(wident$,q%)    â#È− "Wimp_CreateWindow",,q% ¸ I%    ã=I%    äR------------------------------------------------------------------------------    åÝ òloadcrtemp(wident$,q%)    æê I%,c%,c2%,w$    ç#c%=curbuff%:c2%=buffer%+maxbuf%    è w$=wident$+Ä12-©wident$,½13)    éIÈ− "Wimp_LoadTemplate",,q%,c%,c2%,fontcounts%,w$,0 ¸ ,,curbuff%,,,,c%    ê,ç c%=0 Ŷ 1,"Window definition not found"    ë)ç wident$="iconbar" q%!28=q%!28 € ¬ 1    ìq%!64=systemsprites%    í,ç wident$="spritelist" q%!64=spritearea%    î9ç wident$="save_temp" ☓ wident$="save_sprite" q%!64=1    ïCç wident$="spritelist" spritef%=q%!72:spflen%=q%!80-1:q%!68=100    ð,ç wident$="Options" q%!64=systemsprites%    ñá    òR------------------------------------------------------------------------------    óÝ ¤iconaddr(h%,i%)    ô-!q%=h%:q%!4=i%:È− "Wimp_GetIconState",,q%    õç q%!24€&100 … =q%!28    ö Ŷ 1,"Icon is not indirected"    ÷AÝ ¤iconbar:!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=72:q%!20=&3002    ø;$(q%+24)="!FormEd2":È− "Wimp_CreateIcon",,q% ¸ ic%:=ic%    ùô spname$=$(icon%+20)    ú6ô q%!24=FNworkspace(LENspname$+1):$(q%!24)=spname$    ûô q%!28=systemsprites%    üô q%!32=LENspname$+1    ýR------------------------------------------------------------------------------    þÝ òcreatemenu    ÿDŶ 1,"Not yet implemented - sorry!" : ô Weddun ! - The RISC Squad
  30032. R------------------------------------------------------------------------------
  30033.  
  30034. Ý òprintscreen
  30035.     òensure
  30036. :    È− "Print_PageSize" ¸ ,xs%,ys%,px0%,py0%,px1%,py1%
  30037. O    q%!&90=0:q%!&94=0:q%!&98=scrx1%:q%!&9C=scry1%    : ô input bounding box
  30038.      ê Ŷ
  30039. M    îŶê:È−"Print_AbortJob":òinvalidate(-1,0,0,scrx1%,scry1%):÷ Ŷ:Ŷ fl,ö$:á
  30040.         È− "Print_StartJob"
  30041.  
  30042. '    ï 23,25,&80,1,&F0,&F0,&F0,0,0,0
  30043.     û 14,0
  30044. P  òmatrix(q%+&A0,300,0,0,300,(xs%-scrx1%*300)/2,py1%-scry1%*300-18000):òpage
  30045. 4ô PROCmatrix(q%+&A0,0,-400,400,0,0,ys%):PROCpage
  30046. 4ô PROCmatrix(q%+&A0,0,500,-400,0,xs%,0):PROCpage
  30047.     È− "Print_EndJob"
  30048. 
  30049.     ï7
  30050. á
  30051.  Ý òpage
  30052. :    È− "Print_DrawPage",,q%+&80,q%+&90,q%+&A0 ¸ pmore%
  30053.     È” pmore%
  30054. 3    òinvalidate(-1,q%!&80,q%!&84,q%!&88,q%!&8C)
  30055. -ô    PROCinvalidate(-1,0,0,scrx1%,scry1%)
  30056.     òensure
  30057. 1    È− "Print_NextRectangle",,q%+&80 ¸ pmore%
  30058.         Î
  30059. á
  30060. Ý òmatrix(q%,a,b,c,d,e,f)
  30061. 4    q%!0=a:q%!4=b:q%!8=c:q%!12=d:q%!16=e:q%!20=f
  30062. á
  30063. %Ý òinvalidate(h%,x0%,y0%,x1%,y1%)
  30064. 0    È− "Wimp_ForceRedraw",h%,x0%,y0%,x1%,y1%
  30065.  á
  30066. ! 
  30067. "Ý òensure
  30068. #(    õ È− "Wimp_Poll",¬3,q% ¸ action%
  30069. $     ç action%=1 òredraw(!q%)
  30070. %    ý action%=0
  30071. &á
  30072. ':
  30073. (>Ý òhandle_resize(info_ic%,change_info_ic%,x0%,y0%,x1%,y1%)
  30074. )ê newval%,void%,ctr%
  30075. *Enewval%=»(¤shell_IconGetData(m_resize%,info_ic%))+change_info_ic%
  30076. +ç newval%>=1 …
  30077. ,8  òshell_IconPutData(m_resize%,info_ic%,Ãnewval%,-1)
  30078. -  ç currenticon%>-1 …
  30079. .`    void%=¤shell_IconResize(menuwindow%,currenticon%,ix0%+x0%,iy0%+y0%,ix1%+x1%,iy1%+y1%,20)
  30080. /  Ì
  30081. 0    ctr%=0
  30082. 1    ç C%!ctr%>-1 …
  30083. 2       õ
  30084. 3&        ògeti(menuwindow%,C%!ctr%)
  30085. 4_        void%=¤shell_IconResize(menuwindow%,C%!ctr%,ix0%+x0%,iy0%+y0%,ix1%+x1%,iy1%+y1%,20)
  30086. 5        ctr%+=4
  30087. 6      ý C%!ctr%=-1
  30088. 7        Í
  30089. 8  Í
  30090. 9Í
  30091. :á
  30092. ;:
  30093. <Ý òhandle_resizeOK
  30094. =ê ctr%,void%
  30095. >ç currenticon%>-1 …
  30096. ?“  void%=¤shell_IconResize(menuwindow%,currenticon%,ix0%,iy0%,ix0%+»(¤shell_IconGetData(m_resize%,6)),iy0%+»(¤shell_IconGetData(m_resize%,5)),20)
  30097. @Ì
  30098. A   ctr%=0
  30099. B  õ
  30100. C"    ògeti(menuwindow%,C%!ctr%)
  30101. D’    void%=¤shell_IconResize(menuwindow%,C%!ctr%,ix0%,iy0%,ix0%+»(¤shell_IconGetData(m_resize%,6)),iy0%+»(¤shell_IconGetData(m_resize%,5)),20)
  30102. E    ctr%+=4
  30103. F  ý C%!ctr%=-1
  30104. GÍ
  30105. Há
  30106. I:
  30107. JKô ------------------ Added PH Routines --------------------------------
  30108. K:
  30109. L8Ý òshell_IconPutData(whandle%,ihandle%,data$,redraw)
  30110. M_Q%!0=whandle%
  30111. N_Q%!4=ihandle%
  30112. OÈ− "Wimp_GetIconState",,_Q%
  30113. Pç (_Q%!24 € (1<<8))<>0 …
  30114. Qh  ç ©data$>_Q%!36 … Ŷ 99,"Icon overflow - attempt to place too many characters in a indirected icon"
  30115. R  $(_Q%!28)=data$
  30116. SÌ
  30117. T  $(_Q%+28)=Àdata$,11)
  30118. UÍ
  30119. Vç redraw<>0 …
  30120. W  _Q%!8=0:_Q%!12=0
  30121. X!  È− "Wimp_SetIconState",,_Q%
  30122. YÍ
  30123. Zá
  30124. [:
  30125. \+Ý ¤shell_IconGetData(whandle%,ihandle%)
  30126. ]ê result$
  30127. ^_Q%!0=whandle%
  30128. __Q%!4=ihandle%
  30129. `È− "Wimp_GetIconState",,_Q%
  30130. aBç (_Q%!24 € (1<<8))<>0 … result$=$(_Q%!28) ⇧ result$=$(_Q%+28)
  30131. b =result$
  30132. c:
  30133. d5Ý ¤shell_IconResize(wh%,ih%,x0%,y0%,x1%,y1%,bdr%)
  30134. e3_Q%!0=wh%:_Q%!4=ih%:È− "Wimp_GetIconState",,_Q%
  30135. fÈ− "Wimp_DeleteIcon",,_Q%
  30136. g._Q%!8=x0%:_Q%!12=y0%:_Q%!16=x1%:_Q%!20=y1%
  30137. h/_Q%!4=wh%:È− "Wimp_CreateIcon",,_Q%+4 ¸ ih%
  30138. iAÈ− "Wimp_ForceRedraw",wh%,x0%-bdr%,y0%-bdr%,x1%+bdr%,y1%+bdr%
  30139. j=ih%
  30140. k:
  30141. l)Ý ¤pick_referenceicon(wh%,selection%)
  30142. mê icon%,max_y%,ptr%,Q%
  30143. n.Q%=q%+&500:Q%!0=wh%:ptr%=0:max_y%=-9999999
  30144. oÈ” selection%!ptr%<>-1
  30145. p  Q%!4=selection%!ptr%
  30146. q   È− "Wimp_GetIconState",,Q%
  30147. r  ç Q%!20>max_y% …
  30148. s!    max_y%=Q%!20:icon%=ptr%/4
  30149. t  Í
  30150. u  ptr%+=4
  30151. vÎ
  30152. w
  30153. =icon%
  30154. x:
  30155. y.Ý òarrange_horizontal(wh%,reference_icon%)
  30156. zCê ref_cl%,RIGHT%,LEFT%,ref_minx%,ref_miny%,ref_maxx%,ref_,maxy%
  30157. {+ê nr_left_side%,nr_right_side%,icon_cl%
  30158. |È− "Hourglass_On"
  30159. }/ô calculate centre line of reference icon..
  30160. ~ J%!0=wh%
  30161. È− "Wimp_GetIconState",,J%
  30162. €$È− "Interface_BoundingBox",,J%+8
  30163. Ŵref_cl%=J%!8+(J%!16-J%!8)/2
  30164. ŵBref_minx%=J%!8:ref_miny%=J%!12:ref_maxx%=J%!16:ref_maxy%=J%!20
  30165. ◰RIGHT%=q%+&1000
  30166. ☓+LEFT% =q%+&1300:ô space for 192 icons..
  30167. Ŷ$nr_left_side%=0:nr_right_side%=0
  30168. ŷÈ” !I%<>-1
  30169.   ç !I%<>reference_icon% …
  30170. ⇦&    ô icon is not reference icon..
  30171. ⇨    J%!4=!I%
  30172. ⇩"    È− "Wimp_GetIconState",,J%
  30173. ⇧1    ô check if centre line is left or right..
  30174. …$    icon_cl%=J%!8+(J%!16-J%!8)/2
  30175. ™    ç icon_cl%>=ref_cl% …
  30176. ‰(      RIGHT%!(nr_right_side%*4)=J%!4
  30177. •      nr_right_side%+=1
  30178. ‘        Ì
  30179. ’&      LEFT%!(nr_left_side%*4)=J%!4
  30180. ‹      nr_left_side%+=1
  30181. ›        Í
  30182. “  Í
  30183. ”   I%+=4
  30184. „Î
  30185. –LEFT%!(nr_left_side%*4)=-1
  30186. — RIGHT%!(nr_right_side%*4)=-1
  30187. −-òdo_icon_sort(wh%,LEFT%,nr_left_side%,-1)
  30188. Œ/òdo_icon_sort(wh%,RIGHT%,nr_right_side%,-1)
  30189. œ/òarrange_horizontal_right(RIGHT%,ref_maxx%)
  30190. †;òarrange_horizontal_left(LEFT%,ref_minx%,nr_left_side%)
  30191. ‡È− "Hourglass_Off"
  30192. fiá
  30193. fl:
  30194.  ,Ý òarrange_vertical(wh%,reference_icon%)
  30195. ¡6ê ref_cl%,ref_minx%,ref_miny%,ref_maxx%,ref_,maxy%
  30196. ¢0ê ABOVE%,BELOW%,nr_below%,nr_above%,icon_cl%
  30197. £È− "Hourglass_On"
  30198. ¤ J%!0=wh%
  30199. ¥È− "Wimp_GetIconState",,J%
  30200. ¦$È− "Interface_BoundingBox",,J%+8
  30201. §!ref_cl%=J%!20+(J%!12-J%!20)/2
  30202. ¨Bref_minx%=J%!8:ref_miny%=J%!12:ref_maxx%=J%!16:ref_maxy%=J%!20
  30203. ©ABOVE%=q%+&1000
  30204. ª+BELOW%=q%+&1300:ô space for 192 icons..
  30205. «nr_below%=0:nr_above%=0
  30206. ¬È” !I%<>-1
  30207. ­  ç !I%<>reference_icon% …
  30208. ®&    ô icon is not reference icon..
  30209. ¯    J%!4=!I%
  30210. °"    È− "Wimp_GetIconState",,J%
  30211. ±2    ô check if centre line is above or below..
  30212. ²&    icon_cl%=J%!20+(J%!12-J%!20)/2
  30213. ³    ç icon_cl%>=ref_cl% …
  30214. ´#      ABOVE%!(nr_above%*4)=J%!4
  30215. µ      nr_above%+=1
  30216. ¶        Ì
  30217. ·#      BELOW%!(nr_below%*4)=J%!4
  30218. ¸      nr_below%+=1
  30219. ¹        Í
  30220. º  Í
  30221. »   I%+=4
  30222. ¼Î
  30223. ½ABOVE%!(nr_above%*4)=-1
  30224. ¾BELOW%!(nr_below%*4)=-1
  30225. ¿)òdo_icon_sort(wh%,ABOVE%,nr_above%,0)
  30226. À)òdo_icon_sort(wh%,BELOW%,nr_below%,0)
  30227. Á-òarrange_vertical_above(ABOVE%,ref_maxy%)
  30228. Â7òarrange_vertical_below(BELOW%,ref_miny%,nr_below%)
  30229. ÃÈ− "Hourglass_Off"
  30230. Äá
  30231. Å:
  30232. Æ/Ý òarrange_vertical_above(ABOVE%,ref_maxy%)
  30233. Ç ê maxiy%
  30234. Èmaxiy%=ref_maxy%
  30235. ÉÈ” !ABOVE%<>-1
  30236. Ê  J%!4=!ABOVE%
  30237. Ë   È− "Wimp_GetIconState",,J%
  30238. Ì&  È− "Interface_BoundingBox",,J%+8
  30239. Í  ç maxiy%<=0 …
  30240. ÎD    òmoveicon(!J%,!ABOVE%,0,“(J%!12)-“(maxiy%)+»($mb_Vspacing%))
  30241. Ï  Ì
  30242. ÐD    òmoveicon(!J%,!ABOVE%,0,“(J%!12)+“(maxiy%)+»($mb_Vspacing%))
  30243. Ñ  Í
  30244. Ò   È− "Wimp_GetIconState",,J%
  30245. Ó&  È− "Interface_BoundingBox",,J%+8
  30246. Ô  maxiy%=J%!20
  30247. Õ  ABOVE%+=4
  30248. ÖÎ
  30249. ×á
  30250. Ø:
  30251. Ù9Ý òarrange_vertical_below(BELOW%,ref_miny%,nr_below%)
  30252. Úê miniy%,loop%
  30253. Ûminiy%=ref_miny%
  30254. Ü$ã loop%=(nr_below%-1)*4 ¸ 0 ⇦ -4
  30255. Ý  J%!4=BELOW%!loop%
  30256. Þ   È− "Wimp_GetIconState",,J%
  30257. ß&  È− "Interface_BoundingBox",,J%+8
  30258. àG  òmoveicon(!J%,BELOW%!loop%,0,“(J%!20)-“(miniy%)-»($mb_Vspacing%))
  30259. á   È− "Wimp_GetIconState",,J%
  30260. â&  È− "Interface_BoundingBox",,J%+8
  30261. ã  miniy%=J%!12
  30262. ä í loop%
  30263. åá
  30264. æ:
  30265. ç1Ý òarrange_horizontal_right(RIGHT%,ref_maxx%)
  30266. è ê maxix%
  30267. émaxix%=ref_maxx%
  30268. êÈ” !RIGHT%<>-1
  30269. ë  J%!4=!RIGHT%
  30270. ì   È− "Wimp_GetIconState",,J%
  30271. í&  È− "Interface_BoundingBox",,J%+8
  30272. îA  òmoveicon(!J%,!RIGHT%,“(maxix%)-“(J%!8)+»($mb_Hspacing%),0)
  30273. ï   È− "Wimp_GetIconState",,J%
  30274. ð&  È− "Interface_BoundingBox",,J%+8
  30275. ñ  maxix%=J%!16
  30276. ò  RIGHT%+=4
  30277. óÎ
  30278. ôá
  30279. õ:
  30280. ö=Ý òarrange_horizontal_left(LEFT%,ref_minx%,nr_left_side%)
  30281. ÷ê minix%,loop%
  30282. øminix%=ref_minx%
  30283. ù(ã loop%=(nr_left_side%-1)*4 ¸ 0 ⇦ -4
  30284. ú  J%!4=LEFT%!loop%
  30285. û   È− "Wimp_GetIconState",,J%
  30286. ü&  È− "Interface_BoundingBox",,J%+8
  30287. ý@  òmoveicon(!J%,LEFT%!loop%,minix%-J%!16-»($mb_Hspacing%),0)
  30288. þ   È− "Wimp_GetIconState",,J%
  30289. ÿ&  È− "Interface_BoundingBox",,J%+8   minix%=J%!8  í loop% á : 4Ý òdo_icon_sort(wh%,selection%,nr_icons%,horiz%) $ê flag%,loop%,cl1%,cl2%,I%,temp% I%=q%+&1600 ç nr_icons%<2 … á !I%=wh%     õ
  30290.   flag%=£ '  ã loop%=0 ¸ ((nr_icons%-2)*4) ⇦ 4 +    ô sort icons on centre line coord..     I%!4=selection%!loop% "    È− "Wimp_GetIconState",,I%     ç horiz% … "      cl1%=I%!8+(I%!16-I%!8)/2 #      I%!4=selection%!(loop%+4) $      È− "Wimp_GetIconState",,I% "      cl2%=I%!8+(I%!16-I%!8)/2         Ì $      cl1%=I%!20+(I%!12-I%!20)/2 #      I%!4=selection%!(loop%+4) $      È− "Wimp_GetIconState",,I% $      cl2%=I%!20+(I%!12-I%!20)/2         Í     ç cl1%>cl2% …       flag%=¹ 6      ô SWAP selection%!loop%,selection%!(loop%+4)        temp%=selection%!loop% /      selection%!loop%=selection%!(loop%+4) $      selection%!(loop%+4)=temp%          Í !  í loop% "ý flag%=£ #á $: %Ý òHandle_Same_size & ê I%,J%,void%,width%,height% 'ô Handle 'Same size' item.. (I%=q%+&80 )>È− "Wimp_WhichIcon",handle%(currentwindow%),I%,5<<21,1<<21 *+J%=q%+&400:J%!0=handle%(currentwindow%) +ç currenticon%=-1 … ,'  J%!4=¤pick_referenceicon(J%!0,I%) -Ì .  J%!4=currenticon% /Í 0=È− "Wimp_GetIconState",,J%:ô get size of reference icon.. 1,width%=J%!16-J%!8:height%=“(J%!20-J%!12) 2È” !I%>-1 3  J%!4=!I% 4   È− "Wimp_GetIconState",,J% 5P  void%=¤shell_IconResize(J%!0,J%!4,J%!8,J%!20-height%,J%!8+width%,J%!20,50) 6   I%+=4 7Î 8/È− "Wimp_ForceRedraw",J%!0,0,-10000,10000,0 9á :: ;Ý òbootmessage(Q%) < ê boot$ =Cboot$="Run "+¤shell_OSVarGetVal(Q%+256,256,"FormEd2$Dir",0)+½10 >%È− "OS_GBPB",2,Q%!20,boot$,©boot$ ?á @: A7Ý ¤shell_OSVarGetVal(buffer%,size%,varname$,expand) B$ê value$,nr_bytes,nameptr%,type% CZÈ− "XOS_ReadVarVal",varname$,buffer%,size%,0,-3*(expand=¹) ¸ ,,nr_bytes,nameptr%,type% Dã loop%=0 ¸ nr_bytes-1 E$  value$=value$+½(buffer%?loop%) F í loop% G =value$ H: IÝ òupdatefile(F%) JPq%!40=tempfile%:È− "Wimp_GetWindowInfo",,q%+40:È− "Wimp_DeleteWindow",,q%+40 K1I%=0:A%=tempind%:B%=nh%:C%=q%+132:Y%=-4:D%=40 Lõ M ç wident$(B%)<>"" … N2  !q%=handle%(B%):È− "Wimp_GetWindowState",,q% O  $A%="  "+wident$(B%) P  ç q%!32 € (1<<16) ?A%=128 QS  P%=C%:[OPT2:DCD8:DCDY%-D%:DCD248:DCDY%:DCD&17018531:DCDA%:DCD-1:DCD16:]:C%=P% R+  temppatch%(B%)=I%:A%+=16:I%+=1:Y%-=D% S Ì T  temppatch%(B%)=-1 U Í V
  30291.  B%-=1 W
  30292. ý B%<0 Xq%!128=I%:ç Y%>-96 Y%=-96 Yq%!88=Y%-4 Z8ç Y%<-20*D%-8 q%!48=q%!56-20*D%-8 ⇧ q%!48=q%!56+Y%-8 [-È− "Wimp_CreateWindow",,q%+44 ¸ tempfile% \ç q%!72 € (1<<16) ☓ F% ⇧ á ]%ç q%!72 € (1<<16) € ¬F% ⇧ q%!64=0 ^/q%!40=tempfile%:È− "Wimp_OpenWindow",,q%+40 _á `: aÝ òmovehandles(F%) b6!q%=handlew%:È− "Wimp_GetWindowState",,q%:q%!28=-1 cç (q%!32€(1<<16)) ☓ F% ⇧ á d4q%!40=handlew%:È− "Wimp_GetWindowOutline",,q%+40 e%x1%=scrx1%-q%!52:y1%=scry1%-q%!56 f?q%!4=q%!4+x1%:q%!12=q%!12+x1%:q%!8=q%!8+y1%:q%!16=q%!16+y1% g:È− "Wimp_SendMessage",2,q%,task_handle%:hw%=¹:hwic%=-2 há i: jÝ ¤backreffile(A%) k.B%=-1:õ:B%+=1:ý B%=nh% ☓ temppatch%(B%)=A% l8ç temppatch%(B%)=A% … =B% ⇧ Ŷ 1,"Bad icon reference" m: nÝ òsetfileopen(I%,O%) o#A%=tempind%+16*(temppatch%(I%)) pç O% ?A%=128 ⇧ ?A%=32 q.!q%=tempfile%:È− "Wimp_GetWindowState",,q% rç (q%!32)€(1<<16) ⇧ á s%òupicon(tempfile%,temppatch%(I%)) tá u: vÝ ògetmenuposn w@È− "Wimp_GetPointerInfo",,q%:È− "Wimp_GetWindowState",,q%+12 x(mmousex%=q%!16+102:mmousey%=q%!28-12 yá z: {Ý òchangewindow(q%,curw%) |(È− "Wimp_CreateWindow",,q% ¸ handle% }1!q%=handle%(curw%):È− "Wimp_DeleteWindow",,q% ~handle%(curw%)=handle% E!q%=handle%:È− "Wimp_GetWindowState",,q%:È− "Wimp_OpenWindow",,q% €á Ŵ: ŵÝ òloadchoices ◰Fdeftem$="Template":deffile$="Templates":finac%=1:auto$="Templates" ☓'interface%=£:hatch%=¹:country$="UK" Ŷê Ŷ:î Ŷ ê Ù#X%:á ŷ!X%=‰("<FormEd2$Dir>.Choices")  ç X%=0 á ⇦4è#X%,deftem$ :ç ©deftem$ >11 deftem$ ="Template" ⇨5è#X%,deffile$:ç ©deffile$>10 deffile$="Templates" ⇩.finac%=Œ#X%   :ç finac%     >2  finac%  =1 ⇧5è#X%,auto$   :ç ©auto$   >10 auto$   ="Templates" …interface%=(Œ#X%>0) ™hatch%=(Œ#X%>0) ‰.è#X%,country$:ç ©country$>10 country$="UK" •OÈ− "OS_File",5,"<FormEd$Dir>.Messages."+country$ ¸ T%:ç T%<>1 country$="UK" ‘Ù#X% ’á ‹: ›Ý òupdatehatch “ã I%=0 ¸ nh% ” ç wident$(I%)<>"" … „2  !q%=handle%(I%):È− "Wimp_GetWindowState",,q% –D  ç q%!32 € (1<<4) ⇧ È− "Wimp_ForceRedraw",!q%,-1E5,-1E5,1E5,1E5 — Í −í Œá œ: †Ý òleave(handle%) ‡%I%=¤whichwindow(handle%):çI%=-1 á fi%$hndident%="":òupicon(handlew%,1) fl$$hndicon%="":òupicon(handlew%,3)  á ¡: ¢Ý òenter(handle%) £%I%=¤whichwindow(handle%):çI%=-1 á ¤.$hndident%=wident$(I%):òupicon(handlew%,1) ¥á ¦: §Ý òhandledoicon ¨0È− "Wimp_GetPointerInfo",,q%:ç hwic%=q%!16 á ©9hwic%=q%!16:ç hwic%<0 $hndicon%="" ⇧ $hndicon%=Ãhwic% ªòupicon(handlew%,3) «á ¬:ÿonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /ø5€file_fed,, wwwwwwwwwwwwwwwwww!"""3333ww!"""3333ww!"""3333wwDDDTUUUefffwwwwwwDDDTUUUefffwwwwwwDDDTUUUefffwwwwwwDDDTUUUefffwwwwwww⇦⇦⇦—−−−©ªªª»»»»www⇦⇦⇦—−−−©ªªª»»»»ww⇦⇦⇦—−−−©ªªª»»»»ww⇦⇦⇦—−−−©ªªª»»»»wwÌÌÌÜÝÝÝíîîîÿÿÿÿwwÌÌÌÜÝÝÝíîîîÿÿÿÿwwÌÌÌÜÝÝÝíîîîÿÿÿÿwwÌÌÌÜÝÝÝíîîîÿÿÿÿwwwwwwwwwwwwwwwwwwìerror,  333333»»»0333333333333»»»»»33333333333°»»»» 03333333333»» °»»333333333°»»»» 033333333»» w°»»3333333°»»pw»» 0333333»» pw°»»33333°»»pw»» 03333»» pw°»»333°»»pw»» 033»» w°»»3°»»»» 0»» pw°»»°»»pw»» »» °»»»»»»»»»»»»»»»»»»»»»°»»»»»»»»»»»»»»»»» ðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsmall_dir,— 333333303swww3330swwwwwww7pwwÿÿwwwwwpwÿÿÿÿÿÿÿwpw⇦⇦⇦⇦⇦⇦⇦wpwÿÿÿÿÿÿÿwpwÿÿÿÿÿÿÿwpwwwwwwwwwðÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ€file_fff,, wwwwwwwwwwwwwwwwwwwww⇦wwwwwwwwwwwpww€⇦wwwww⇦ø⇦wwwwwwwpwwww€⇦•wwwww⇦ø⇦wwwwwwwwwpww€⇦•wwwww⇦ø⇦wwwwwwwwwww€⇦•wwwwww⇦ø⇦wwwwwwwwww€⇦•wwwwww⇦ø⇦wwwwwwwwwwà‰•wwwwwwfiî⇦wwwwwwwpwwpî~wwwwwàîwwwwwwwwwwwwwwwwwwwwwÌÌÌÔdirectory,€ wwwwwwp÷ÿÿÿÿwpwwÿÿÿÿÿwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwwôÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO€file_ffb,, wwwwwwwwwwwwwwwwww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€€⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€⇦€⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€⇦€⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€⇦⇦⇦⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€€€€ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦⇦⇦⇦€⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ww⇦€€⇦⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwwwwwwwwwwwwwwwwwL—small_ffb,, wwwwwwwwwpw⇦⇦⇦⇦⇦⇦⇦wpw⇦€€€⇦wpw⇦⇦⇦⇦⇦⇦⇦wpw⇦⇦€⇦wpw⇦⇦⇦⇦⇦⇦⇦wpw⇦€⇦⇦wpw⇦⇦⇦⇦⇦⇦⇦wpwwwwwwwww€—small_fff,, wwwwwwwwwpwwpwpwpw€•wpwøwpwppw€•wpwøwpwpwà⇨wpwîwpwwwwwwwww€—small_fed,, wwwwwwwwwp!"23spGDTUefvwwpGDTUefvwwp⇦—−©ªº»{p⇦—−©ªº»{pÇÌÜÝíîþÿpÇÌÜÝíîþÿpwwwwwwwww€file_feb,, wwwwwwwwwwwwwwwwwww⇦ø•⇦⇦ÿ⇦⇦⇦⇦⇦⇦⇦⇦⇦www⇦⇦ÿ⇦ø•⇦⇦⇦⇦⇦⇦⇦⇦www⇦⇦ø•ÿ⇦⇦⇦⇦⇦⇦⇦⇦wwwÿÿÿÿÿÿÿ•⇦⇦⇦°⇦www⇦⇦ø•ÿ⇦⇦⇦⇦⇦°»⇦www⇦⇦ÿ⇦ø•⇦⇦⇦°»»⇦www⇦ø•⇦⇦ÿ⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ—small_feb,, wwwwwwwwwpw•⇦•⇦⇦⇦⇦wpwøø⇦⇦⇦⇦wp÷ÿÿÿ⇦⇦ wpwøø⇦⇦» wpw•⇦•wpw⇦⇦‘−−    wpw⇦‘−−−    wpwwwwwwwww€switcher,, ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ° ÿÿÿÿÿÿÿÿÿÿÿÿÿ°» ÿÿÿÿÿÿÿÿÿÿÿÿ°»» ÿÿÿÿÿÿÿÿÿÿÿ°»»» ÿÿÿÿÿÿÿÿÿÿ°»»»» ÿÿÿÿÿÿÿÿÿàî° ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ−−−−−−ÿÿÿÿÿÿ−−−−−−−−    ÿÿÿÿÿ−−−−−−−−−    ÿÿÿÿ−−−−−−−−−−    ÿÿÿ−−−−−−−−−−−    ÿÿ−−−−−−−−−−−−    ÿ−−−−−−−−−−−−−    ÿ€file_ff9,, wwwwwwwwwwwwwwwwwÿÿw−−ÿÿÿÿÿÿÿÿwÿÿw−ùÿÿÿÿÿÿÿwwwpÿÿwÿÿÿÿÿ¿ûÿwwwwÿÿwÿÿÿÿ»»»»w'wwÿÿwÿÿÿ¿»»» pwrwwÿÿwÿÿÿÿïîîp'wwwÿÿwÿÿÿÿï‰îwwwÿÿwªªªªêîî33wÿÿwªªªªêîî3wÿÿwªªªªªªª·»wÿÿwªªªªªªª{ë wÿÿwªªªªªªª·»wÿÿwªªªªªªª{ë wÿÿwªªªªªª
  30293. ·»wÿÿwªªªªªª{ë wÿÿwwwwwwwwwwwwwwwww€€file_ffe,, wwwwwwwwwwwwwwwwwwwÿÿÿ⇦ÿ⇦ø•⇦⇦⇦⇦⇦⇦⇦wwwÿ⇦⇦⇦ø•ÿ⇦⇦⇦⇦⇦⇦⇦wwwÿ⇦⇦⇦⇦ÿ•⇦⇦⇦⇦⇦⇦wwwÿÿ•ÿÿÿÿÿ•⇦⇦°⇦wwwÿ⇦⇦⇦⇦ÿ•⇦⇦⇦°»⇦wwwÿ⇦⇦⇦ø•ÿ⇦⇦°»»⇦wwwÿÿÿ⇦ÿ⇦ø•°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ—small_ffe,, wwwwwwwwwpwÿ••ø⇦⇦⇦wpw•⇦ø•⇦⇦wpwÿøÿÿ• wpw•⇦ø•» wpwÿ••òwpw⇦⇦‹−−    wpw⇦‹−−−    wpwwwwwwwwwÀLnetwork,< @UUUUUUUE @@UÌÌÌÌÌ\EÌÌwwwwGPU<3333\EÌpÀ|wGPU<3333\EÄpÀ|wGPU<3333\ÅÌÌwwwÇGPUÌÌÌÌÌ\5ÌÌ ÌwÇWUUÅUUUÅUUU33w3WUÌÌÌÌÌÌÌÌU30w3WU""""""""UwwwÇÌ\UÌÌÌÌÌÌÌÌUpwwGPUUUUUUUUEpw@PÅÌÌÌÌÌÌ\EpwwwwWU¼Ë»¼ËDÌÌUpwwwwWULDDDÄDLÄUpwwwwWULDDDÄDLÄUpwwwwWUÌÌÌÌÌÌÌÌUpwwwwWUUUUUUUUUUpwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÀ\fileserver,Ä UUUUUUUÌÌ ÌPUUUUUUUUUÌÌÌÌÌ\ÌwwwwwUÌÌÌÌÌÌUU<3333\ÌwÀU""""""UU<3333\ÀwÀUÌÌÌÌÌÌUU<3333\ÅÌ|ww\UUUUUUUÌÌÌÌÌ\UÌÌ |\ÅÌÌÌÌ\UUÅUUUÅUUUDtPU¼Ë»¼ËÌUUÌÌÌÌÌÌÌÌUDttPULDDDDÄUU""""""""UwwwPULDDDDÄUUÌÌÌÌÌÌÌÌUPPUÌÌÌÌÌÌUPUUUUUUUUUUUUUUUUUUUPÅÌÌÌÌÌÌ\UUUUUUUUUUUUUU¼Ë»¼ËDÌÌUUUUPUÀUUUU\UÅULDDDÄDLÄUUUUPUÅUU\ÅÅUÌULDDDÄDLÄUUPUPÅUUUUÅUÌUÌÌÌÌÌÌÌÌUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlsmall_fs    ,Ì PUUUULÄ3SUUUUUwwTÌÌÌ\ÄwwWUUUUUwwT<33\|wwWÌÌÌÌ\wwTÌÌÌ\swDPUUUUUwwUÅUÅUEwGDæ»»ÌEwwÅÌÌÌÌuww`LDDD\wwEDDDDuwGTUUUUUwwf¾»Ë\ÄD@DDLDwwÆDDÄÄÅDDDDDDDwwUUUUUE@DDDDDðÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€file_ffa,, wwwwwwwwwwwwwwwwwwwÿÿ•⇦ÿÿøÿ•⇦⇦⇦⇦⇦⇦wwwÿ⇦ÿ⇦ÿøÿø•⇦⇦⇦⇦⇦wwwÿÿ•⇦ÿ⇦•ø•⇦⇦⇦⇦wwwÿø•⇦ÿ⇦⇦ø•⇦⇦°⇦wwwÿ⇦ÿ⇦ÿ⇦⇦ø•⇦°»⇦www⇦⇦⇦⇦⇦⇦⇦⇦⇦°»»⇦www⇦⇦⇦⇦⇦⇦⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ—small_ffa,, wwwwwwwwwp÷ÿ⇦ÿø•⇦⇦wp÷ø••••⇦wp÷ÿ⇦•⇦• wp÷ø••⇦» wpw⇦⇦⇦wpw⇦⇦‹−−    wpw⇦‹−−−    wpwwwwwwwww€—small_ff9,, wwwwwwwwwpw−ÿÿwpwÿ¿ÿPwwpw¿» uqwpwÿî'wpwªîwpwªª· wpwª
  30294. { wpwwwwwwwww@Ôtick,€ 3333333ª
  30295. 333333£ª333333ª:33333£ª333ª:3ª:333£ª£ª33333ªª:30ÿÿÿÿÿðÿðÿÿÿÿðÿÿÿðÿðÿÿÿÿÿðÿÿÿðÿðÿðÿÿÿÿÿðÿÿÿ°yes
  30296. ,, wwwwwwwwwwwwwwª
  30297. ww ªwwª
  30298. ww ªwwª
  30299. ª
  30300. ww ª ªwwªª
  30301. wwwwwwwwwwwwww°no
  30302. ,, wwwwwwwwwwwwwwà»à»wwà»à»wwà»à»wwà»wwà»à»wwà»à»wwà»à»wwwwwwwwwwwwww°dontcare
  30303. ,, wwwwwwwwwwwwwwDDDww@DwwDww@DwwDwwwwDwwwwwwwwwwwwww☓radiooff
  30304. ,X 3ÀÀ0 0 0ÀÀ3 ?ÀÿÀÿÀÿðÿÃÿüÿÏÿÿÿÿÿüÿÏÿðÿÃÿÀÿÀÿ?Àÿ ÀÿXoptoff
  30305. ,,ÿÿ?000000000ÿÿ?´file_xxx,,ÿÿÿÿÿÿÿÿPsmall_xxx,,ÿÿÿÿ€file_ff8,, wwwwwwwwwwwwwwwwwwwøÿÿ⇦ÿÿ•øÿÿ⇦⇦⇦⇦⇦wwwÿ⇦ø•ÿ⇦ÿø•ø•⇦⇦⇦wwwÿÿÿ•ÿÿ•øÿÿ⇦⇦⇦wwwÿ⇦ø•ÿ⇦⇦ø•⇦⇦°⇦wwwÿ⇦ø•ÿ⇦⇦ø•⇦°»⇦www⇦⇦⇦⇦⇦⇦⇦⇦⇦°»»⇦www⇦⇦⇦⇦⇦⇦⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ—small_ff8,, wwwwwwwwwpw•ø•ø•⇦⇦wp÷øøøøø⇦wp÷ÿø•ø• wp÷øø⇦ø» wpw⇦⇦⇦ wpw⇦⇦‹−−    wpw⇦‹−−−    wpwwwwwwwwwÀ€application,, ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿ⇦⇦ø•⇦⇦ÿ⇦⇦øÿÿÿÿÿÿw•øÿ⇦•ø•ø⇦ÿ⇦ÿÿÿðÿw•øÿ⇦•ø•ø⇦ÿ⇦ÿÿðÿw•⇦⇦⇦•⇦⇦ÿ⇦⇦øÿ ðÿw•øÿ⇦•øÿÿ⇦ÿÿ» ðÿw•øÿ⇦•øÿÿ⇦ÿ»» ðÿw•øÿ⇦•øÿÿ⇦»»» ðÿwÿÿÿÿÿÿÿÿ ðÿwÿÿÿÿÿÿÿ−−−−    ðÿwÿÿÿÿÿÿ−−−−−−    ðÿwÿÿÿÿÿ−−−−−−−    ðÿwÿÿÿÿ−−−−−−−−    ðÿwÿÿÿ−−−−−−−−−    ðÿwÿÿ−−−−−−−−−−    ðÿwÿ−−−−−−−−−−−    ðÿw−−−−−−−−−−−−    ðÿÌ—small_app,, •ø•⇦ÿ⇦øÿÿpø••ÿøø•ÿÿp⇦⇦•⇦ÿ⇦øðpø••ÿÿø°ðpø••ÿÿ(°»ðpÿÿÿÿðpÿÿÿ −−−ðpÿÿ −−−−ðpÿ‘−−−−−ðÀXptr_default
  30306. ,,UYU©U©ZU©ªU©ZUYiT¤‘@€file_ffc,, wwwwwwwwwwwwwwwwwwwÿ⇦ÿøÿ•ÿø•⇦⇦⇦⇦⇦⇦wwwÿ⇦ÿ⇦ÿ⇦ÿø•⇦⇦⇦⇦⇦wwwÿ⇦ÿ⇦ÿ⇦ÿø•⇦⇦⇦⇦wwwÿ⇦ÿ⇦ÿ⇦ÿø•⇦⇦°⇦wwwøÿÿ⇦ÿ⇦ÿøÿ•°»⇦www⇦⇦⇦⇦⇦⇦⇦⇦⇦°»»⇦www⇦⇦⇦⇦⇦⇦⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ€file_ff6,, wwwwwwwwwwwwwwwwwwwwwwQUUUUUU5wws7Swwr7wwr7wwrWUUU'wwr7$wwr7wwr7wwsGwwQef%wwwwwwwwwwwwwwwwwwwwwwww´file_ff7,,ÿÿÿÿüÿüÿððüÿüÿÃ?ðÃ?ðÃ?ðüÿüÿÿÿÿÿDfloppydisc    ,, UUUUUUUUUUUUUUUUUUUUUUUUU3UUUÌLÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌLÌU3UUUÌLÌÌÌÌÌÌÌÌÌÌÌÌÌUUUUUÅLÌU3UUUÌLÌwwwwwwwwwwwwgffffÇLÌU3UUUÌLÌ·»»»îîîîîîîîî¾»»»ÇLÌU3UUUÌLÌÌÌÌÌÌÌÌÌÌÌÌÌUUUUUÅLÌU3UUUÌLÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌLÌU3UUUUUUUUUUUUUUUUU#"""""2UUU3UUUQUQUQUQUQUQUQU"wwwww"UU3UUUQUQUQUQUQ»»[QU#"""""2UUDDÜradioon
  30307. ,☓    ppp pª
  30308. p ªªpª
  30309. p pppððÿÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿðÿÿðÿÿÿðÿÿððÿÿ☓opton
  30310. ,,    wwwww€€€€⇦€€€€€wwwww´palette,,    ""33""33""33""33DDUUffwwDDUUffwwDDUUffwwDDUUffwwDDUUfvww⇦⇦−−ªª»»⇦⇦−−ªª»»⇦⇦−−ªª»»⇦⇦−−ªª»»ÌÌÝÝîîÿÿÌÌÝÝîîÿÿÌÌÝÝîîÿÿÌÌÝÝîîÿÿøfile_fec,,    wwwwwwwwwwwww÷ÿÿorwwwwwprptptwprÌwwwwwÌ'D$rrÌwwwwwÌpÌÌÌÌpÌÌÌÌpwwwwwwwwwwww€file_bbc,, wwwwwwwwwwwwwwwwwwwÿÿ•øÿÿ⇦øÿ•⇦⇦⇦⇦⇦wwwÿ⇦ÿø•ø•ÿ⇦⇦⇦⇦⇦⇦wwwÿÿ•øÿÿ⇦ÿ⇦⇦⇦⇦⇦wwwÿ⇦ÿø•ø•ÿ⇦⇦⇦°⇦wwwÿÿ•øÿÿ⇦øÿ•°»⇦www⇦⇦⇦⇦⇦⇦⇦⇦⇦°»»⇦www⇦⇦⇦⇦⇦⇦⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ€file_ffd,, wwwwwwwwwwwwwwwwww÷ÿ•⇦ÿ⇦ÿ•ø•⇦⇦⇦⇦⇦⇦www•øø⇦•ø⇦•ø⇦⇦⇦⇦⇦www•øøÿ•ø⇦ÿÿ⇦⇦⇦⇦www•øø⇦•ø⇦•ø⇦⇦°⇦ww÷ÿ•ø⇦•ø⇦•ø⇦°»⇦www⇦⇦⇦⇦⇦⇦⇦⇦⇦°»»⇦www⇦⇦⇦⇦⇦⇦⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌ—small_ffd,, wwwwwwwwwp÷•⇦•ÿ••⇦wp÷øøøøøøwp÷øøÿøøÿ wp÷•øøøðû wpw⇦⇦⇦wpw⇦⇦‘−−    wpw⇦‘−−−    wpwwwwwwwwwÌharddisc    ,,    UUUUUUUUUUUUÅÌÌÌÌÌÌÌÌÌÌÌÅÇÇÇÇÇÌÌÌÌÌÌÅÇÇÇÇÇÌÌÌÌÌÌÅÇÇÇÇÇÌÌÌ»ËÌÅÇÇÇÇÇÌÌÌ»ËÌÅÇÇÇÇÇÌÌÌÌÌÌÅÇÇÇÇÇÌÌÌÌÌÌÅÌÌÌÌÌÌÌÌÌÌÌUUUUUUUUUUUU4ramfs
  30311. ,°ªªªªªªªªªª*ÿÿÿÿÿÿÿÿÿÿ?ûê«ê«®úÿÿÿ?ÿÿÿÿÿÿÿÿÿÿ?ºúªÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿ?¯ê««ªÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿ?ªªªªªªªªªª************
  30312.  
  30313.  
  30314.  
  30315.  
  30316.  
  30317.  
  30318.  
  30319.  
  30320.  
  30321.  
  30322. ??????????ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ??????????ÿÿ Ìÿ ÌÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickFilerBìÿÿ$·fÍ⇨ŵNetFilerBìÿÿ8·fÍ?ŵPaletteBìÿÿH·fÍá ŵSwitcherBìÿÿY·fÍÙŵWimpBìÿÿi·fÍ}ŵFilerBìÿÿ$·fÍ⇨ŵNetFilerBìÿÿ8·fÍ?ŵPaletteBìÿÿH·fÍá ŵSwitcherBìÿÿY·fÍÙŵWimpBìÿÿi·fÍ}ŵ~DeskFSDeskFSNick<ÿÿÿÿ\úfaccessyV×daccess ã-\directory
  30323. å¨☓Ô¬Ìÿÿÿ$☓  üÿÿÌÿÿÿ=ÿÿÿÿr¨þÿÿ(Øþÿÿ=‘ÇUpdateed>ô†ÿÿÿ*Èÿÿÿ± $D lÿÿÿâ—ÿÿÿ± Rm<ÿÿÿîhÿÿÿ± {– ÿÿÿê8ÿÿÿ± ¥ÁÜþÿÿüÿÿÿ± ÏìFile accessFile is locked against deletionsoptoff,optonFile has owner read-accesssoptoff,optonFile has owner write-accesssoptoff,optonFile has public read-accesssoptoff,optonFile has public write-accesssoptoff,optonr\fiÈÌÿÿÿ,☓  üÿÿÌÿÿÿ=—ÿÿÿÿrdÿÿÿ(“ÿÿÿ=‘ÇUpdateed>ô†ÿÿÿ*Èÿÿÿ± ©É Directory accessDir. is locked against deletionsoptoff,optonÚêt¿ ðÿÿ øÿÿÿÿR¨ÿÿÿØÿÿÿ=`Çnext diràhÿÿÿ‰—ÿÿÿ=aÇÿÿÿÿ * ÿÿÿÖ…ÿÿÿ a!,þÿÿÿìþÿÿÖÿÿÿc9D†Ðÿÿÿh=aÇOÿÿÿÿfull dir name%24:%mi:%se %dy %m3 %ce%yrTenLong000sapplicationTenLong000ssmall_appnext top dirks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ\ànotify_dbox<¸FS_viewer  ôKlogon_dbox °0Ü ŷ¬þÿÿx=Notify: :aÄÿÿÿºôÿÿÿ9PStation:rþ¸Äÿÿÿ<ôÿÿÿ5ñØÙ—ÿÿÿºÈÿÿÿ9PMessage:þ¸—ÿÿÿ Èÿÿÿ5ñßÿÿÿÿPa0-9. fi ,¿ üÿÿ=08ÿÿÿÿ`ÿÿÿ&ÐÿÿÿaM^ÿÿÿV@ÿÿÿaj{ÈþÿÿÚðþÿÿaŶfiXÿÿÿ(Øÿÿÿ`Untitled>¿ÿÿÿVDÿÿÿ`×Untitled>¿
  30324. Èþÿÿæôþÿÿ`×Untitled>¿,8þÿÿ— þÿÿ a¨¯List of File Serverssixteenlong23456sfileserversixteenlong23456ssmall_fssixteenlong23456 123.123ssmall_fsEconetSnetworkÊàþÔ(ŷ¬þÿÿ4=Log on: :a´ÿÿÿºäÿÿÿ9PFileserverþ¸´ÿÿÿ(äÿÿÿ5ñ89⇦ÿÿÿº¸ÿÿÿ9PUsername:þ¸⇦ÿÿÿ(¸ÿÿÿ5ñ>?\ÿÿÿº…ÿÿÿ9PPassword:þ¸\ÿÿÿ(…ÿÿÿ5ñEF ÿÿÿ*Tÿÿÿ=Jÿÿÿÿ@a~ :a~ @"d\- WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿDØpalette´ªÅsaveasú…ô( Xþÿÿ=0Palette        Øÿÿÿðÿÿÿ☓`ditsprites¸ÿÿÿÐÿÿÿ☓`alette        —ÿÿÿ°ÿÿÿ☓`-sizeow    ¨þÿÿLÔþÿÿ-`BorÿÿÿÿR¨þÿÿ‰Ôþÿÿ-`Ms1ze        “¨þÿÿÐÔþÿÿ-`Ms2ÿÿÿÿÔ¨þÿÿÔþÿÿ-`Ms3                lþÿÿ…†þÿÿ-p€ÎLoad            ‹lþÿÿ†þÿÿ-p€ÎSave            \ÿÿÿP⇦ÿÿÿ(`0ÿÿ#P\ÿÿÿ‹⇦ÿÿÿ(`1ÿÿ#‹\ÿÿÿÐ⇦ÿÿÿ(` 2ÿÿ#Ð\ÿÿÿ⇦ÿÿÿ(`03ÿÿ#0ÿÿÿP\ÿÿÿ(`@4ÿÿ#P0ÿÿÿ‘\ÿÿÿ(`P5ÿÿ#‘0ÿÿÿÐ\ÿÿÿ(``6ÿÿ#Ð0ÿÿÿ\ÿÿÿ(`p7ÿÿ#ÿÿÿP0ÿÿÿ(`€8ÿÿ#Pÿÿÿ‘0ÿÿÿ(`‘9ÿÿ#‘ÿÿÿÐ0ÿÿÿ(` 10ÿ#Ðÿÿÿ0ÿÿÿ(`°11ÿ#ØþÿÿPÿÿÿ(`À12ÿ#PØþÿÿ‘ÿÿÿ(`Ð13ÿ#‘ØþÿÿÐÿÿÿ(`à14ÿ#ÐØþÿÿÿÿÿ(`ð15ÿ#Ðÿÿÿøÿÿÿ×Rntitled>°ÿÿÿØÿÿÿ×Gntitled>‘ÿÿÿ¸ÿÿÿ×Bntitled>lôb†$›üÿÿ=Save as:>N¤ÿÿÿ‰ìÿÿÿ`×file_fed>d
  30325. `ÿÿÿº‘ÿÿÿ=ñ¸ÁÀ`ÿÿÿî‘ÿÿÿ=‘ÇOKtitled>d!Palettea~ onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿDXgrabkeys~†=taskmenu½ÿÌü“_ üÿÿ=0Grab keyse‹†@$P @‘üÿÿ—$=0Tasksled>M:ôÿÿÿ>(1a@8ÿÿÿÿ$:8ÿÿÿ@hÿÿÿ1a@Lÿÿÿÿ$:ýÿÿB4ýÿÿ1a@gÿÿÿÿ$JÄÿÿÿ—äÿÿÿavÿÿÿÿ“Äÿÿÿôäÿÿÿb560KÿÿÿÌÿÿÿàÿÿÿ<`×<Untitled>dÖ—ÿÿÿ‹¸ÿÿÿb×Next  300K ÿÿÿ´ÿÿÿ<`·<Untitled>dÔtÿÿÿ‘“ÿÿÿb×Free  300K|ÿÿÿ‘ÿÿÿ<`·<Untitled>dLÿÿÿ—$ÿÿÿaŴÿÿÿÿJØþÿÿ„øþÿÿa•ÿÿÿÿJ¬þÿÿ“Ìþÿÿa£ÿÿÿÿJ€þÿÿ„ þÿÿaµÿÿÿÿJTþÿÿ“tþÿÿaÁÿÿÿÿJ(þÿÿ“HþÿÿaÌÿÿÿÿJüýÿÿ“þÿÿaÛÿÿÿÿJÐýÿÿ„ðýÿÿaäÿÿÿÿJ¤ýÿÿ„ÄýÿÿaøÿÿÿÿJxýÿÿ„—ýÿÿa ÿÿÿÿ,Hýÿÿ…hýÿÿcÿÿÿÿÒÌüÿÿ‰ìüÿÿc#ÿÿÿÿ² üÿÿ‰Àüÿÿc/ÿÿÿÿ Application tasks: System memory allocation: Module tasks:<Untitled>Screen memoryCursor/System/SoundSystem heap/stackModule areaFont cacheSystem spritesRAM discApplications (free)Applications (used)System workspaceTotalFree in RMALargest blockks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿtXbackwindow>ÌXcommand$error%XiconbarüÄ R à±ÿÿ N=Back window  Xì@›  üÿÿ=0*Command><îì4◰üÿÿ=0øÿÿÿÿ<r°þÿÿlìÿÿÿ=aþÿ²dþÿÿL†þÿÿ=`ÇOKtinue>x0ÿÿÿ`|ÿÿÿ`×errored>~0ÿÿÿÐ|ÿÿÿ`×errored>‰dþÿÿ(†þÿÿ=`Cancele>xErrorL ¸R<lÜRèÿÿÿl=                           WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $<lstop,Ì °»»»»»»»»»»»»»»» °»»»»»»»»»»»»»»»»» °»»»» °»»»» °»»»» °»»»» °»»»» °» °» °»»»»»»»»»»»»»»»»»»»»»»»»»»» °» °» °» °» °» wwpwwwwpww°» °» ppppppp°» °» pppppp°» °» wwppppww°» °» ppppp°» °» pppppp°» °» wwpwwp°» °» °» °» °» °»»»»»»»»»»»»»»»»»»»»»»»»»»» °» °» °»»»» °»»»» °»»»» °»»»» °»»»» °»»»»»»»»»»»»»»»»» °»»»»»»»»»»»»»»» ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿ exclam    ",¤ »»»°»»» »»»»°» °» »»»»°» °» »»»»°» °» »»»»°» °» »»w»»°» www°» »»pwww»»°» pwww°» »»pwww»»°» pwww°» »»pwww»»°» pwww°» »»pwww»»°» pwww°» »»www»»°» www°» »»pw»»°» pw°» »»w»»°» w°» »»w»»°» °» »»pw»»°» www°» »»pw»»°» °» »»»»°»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» °»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» ðÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬palette ,l wwwwwpwppppwppwww°» www°»»ª
  30326. p»» ª
  30327. »»ªªpðÐÝppðÿÝÝÝÝpðÿÐÝÝwÿwpwwpwpwwwwwwwÿÿÿÿÿðÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÌÌìeditsprites,  pwwwwwwwwwwpwp⇦xwwwwwwww⇦⇦⇦wwwwwwwwpww⇦pww⇦⇦wpw⇦⇦pwpw⇦⇦wwww⇦⇦wwwxwwwwx» » »w⇦⇦⇦» » w⇦xwwwwwwwwwwwwwwwwðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿ|newwindow,Ô wwwwwwwwwwww'r"'""""'r"wwwwwwwwwwwwwp"wpwwp"wp"wp"wp"wpwwp"wwwwwwwwwwwww'r""""""'r"wwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdnewmenu ,È wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgr1,, ÿwwwwwwwwwwwwwwwppppwwwwwppwwwwppwwwpwwwwpwpwwpppwwppwwppwpppwwwwwwwwwwwwwwwgr2,, ÿwwwwwwwwwwwwwwwppwpwpwwwwpwwpwwwwpwwwpwwwpwwwppppwwwwwwwwwwwwwwwgr9,, ÿwwwwwwwwwwwwwwwppwppwwpwwwwppwwwwwpwwwwwwppwwwwpwwwppwppppwwwwwwwwwwwwwwwgr3,, ÿwwwwwwwwwwwwwwwpppppppppppppppwppppwwppwwwwwpppwwwwwwwwwwwwwwwgr4,, ÿwwwwwwwwwwwwwwwpppppppppppppppppppppwwwwwwwwwwwwwwwgr5,, ÿwwwwwwwwwwwwwwwpppppwwwppppppppppppppwwwppppwwwwwwwwwwwwwwwgr6,, ÿwwwwwwwwwwwwwwwpppppwwwppwwwwwppwwwwwwwppwwwwwwwppwwwwwppwwwppppwwwwwwwwwwwwwwwgr7,, ÿwwwwwwwwwwwwwwwppppwwwppppppppppppppppppppwwwpppwwwwwwwwwwwwwwwgr8,, ÿwwwwwwwwwwwwwwwppppwwwppwwwwwppwwwwwwwppwwwwwwwppwwwwwwwppwwwwwwwppwwwwwppwwwpppwwwwwwwwwwwwwwwgr10,, ÿwwwwwwwwwwwwwwwppppwwppwpppppppppppppppwwwwwwwwwwwwwwwgr11,, ÿwwwwwwwwwwwwwwwppppwwpppwppppppppppppppwpppppwwwwwwwwwwwwwwwgr12,, ÿwwwwwwwwwwwwwwwppppwwpppwpppppppppppppppppwwwwwwwpppwwwwwwwwwwwwwwwgr13,, ÿwwwwwwwwwwwwwwwppppwpppwpwwwwwwpppppwwwppppppppwwwppwwwwwwwpppwwwwwwwwwwwwwwwgr14,, ÿwwwwwwwwwwwwwwwppppwwppppwwwwwwwppppwpwwpwwpppppwwwwwwwwwwwwwwwgr15,, ÿwwwwwwwwwwwwwwwppppwwwwwwwppwwwwwpppppwppppppppwppwppppppppwwwwwwwpppwwwwwwwwwwwwwwwgr16,, ÿwwwwwwwwwwwwwwwpppppppppppppppppppppwwwwwwwwwwwwwwwgrx,, ÿwwwwwwwwwwwwwwwppppppppppppppppppwppppppppppppppwwwpppwwwwwwwwwwwwwwwôerror,, 'UÌq'UÌwwwwwwwwwwwwwwwq'UÌwÌÌÌÌÌÌÌÌÌÌÌÌÌÌq'UÌwÌÌÌÌÌ ÀÌÌÌq'UÌwÌÌÌÌÌ· pÌ Àq'UÌwÌÌÌÌ p» pÌ pq'UÌwÌÌÌÌ·» pÌ pq'UÌwÌÌÌ p»» pÌÌÇq'UÌwÌÌÌ pÌÌ pÌq'UÌwÌÌ pwwpÌÌ pÌq'UÌwÌÌ⇦⇦xpÌÌÌÌÌq'UÌwÌ p⇦⇦⇦⇦pÌÌ ÀÌq'UÌwÌ⇦⇦⇦⇦pÌÌÇq'UÌw p⇦⇦⇦⇦⇦pÌÌ pÌq'UÌÇÌÌÌÌÌÌÌÌÌÌÌÌÌÌq'UÌq'UÌq'UÌwwwwwwwwwwwwwwwwwwww'Uw43doptoff
  30328. ,° PUUUUUUUUUpwwwwwwwwwWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ43dopton
  30329. ,° uwwwwwwwwwU"""""""""U"""""""""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U"""""""""U"""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ43dradiooff
  30330. ,° 03333w3w3w3w3wwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ43dradioon
  30331. ,° wðw"3w"""3w""»""3w""»»»""3w""»»»»»""33""»»»""3""»""3"""3"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ3dup,€ @AAAACAUUUUUUUUUUUðÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ3ddown,€ AUAUõAUñAUñAUTUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿðÿì3dright ,… DUUUUUUDUDUDUDUDUDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì3dleft ,… DUDUDUDUDUDUUUUUUDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ43dup2,,wwwwwwwwwwwptAtAtAtAtqwAtwwAtqwwwAtwwwwAtqwwwwwAtwwAtwwAtwwAtwwAtAtAtAt@DDDDDDDdtDDDDDDDDDvwwwwwwwwwww43ddown2,,wwwwwwwwwwwptAtAtAtwwAtwwAtwwAtwwAtqwwwwwAtwwwwAtqwwwAtwwAtqwAtAtAtAtAt@DDDDDDDdtDDDDDDDDDvwwwwwwwwwww443dleft2,,wwwwwwwwwwwptAtAtqAtwAtqwAtwwwwAtqwwwwAtwwwwwAtqwwwwAtwwwwAtqwAtwAtqAtAtAtAt@DDDDDDDdtDDDDDDDDDvwwwwwwwwwww443dright2,,wwwwwwwwwwwptAtAtAtwAtwAtwwwwAtwwwwAtwwwwwAtwwwwAtwwwwAtwAtwAtAtAtAtAt@DDDDDDDdtDDDDDDDDDvwwwwwwwwwww    ÿÿÿÿd÷Options[`spritelist»õdial_delete°Øpalette⇦ Þm_scalef Ïm_workarea5Ðsave_spriteÐsave_tempÕXdefault-àProgInfo>m_resizeK½NewTemplateÚHandlesâXTemplates$6Püÿÿÿüÿÿÿÿÿÿÿ ŷ üÿÿÿ ýÿÿüÿÿÿ=Xÿÿÿÿ¨èýÿÿþÿÿ91gj ,èýÿÿ…þÿÿ91mr 8ÿÿÿ6hÿÿÿ±uŶÿÿÿ4ÿÿÿ±œ¹Ðþÿÿ„ÿÿÿ±ÏåÀÿÿÿæðÿÿÿ=áû |ÿÿÿæ¬ÿÿÿ=á …þÿÿæ¼þÿÿ=á-8 Tþÿÿx☓þÿÿ±K` þÿÿäPþÿÿ±r‘‘ýÿÿÀýÿÿ=᢭ |ÿÿÿþ¬ÿÿÿa¹ÿÿÿÿ8ÿÿÿþhÿÿÿaÈÿÿÿÿ…þÿÿþ¼þÿÿaØÿÿÿÿX‘ýÿÿÀýÿÿ`Country :¶ÀÿÿÿþðÿÿÿaèÿÿÿÿFormEd OptionsOKb2Saveb0 Save and ClearS3dradiooff,3dradioon Save with prompt, then ClearS3dradiooff,3dradioon Clear without savingS3dradiooff,3dradioonDefaultNameA~ ";b3MyFileNameA~ @#$%^&*:\\.";b3AutoLoaderA~ @#$%^&*:\\.";b3 Support 'Interface'S3doptoff,3dopton Shade user-redrawn templatesS3doptoff,3doptonMadagascarAA-Za-z0-9_Default file :FINISH action :AutoLoad file :New template :F¾²„ÿÿÿÿ  üýÿÿ =0ddXÿÿÿÿ(Sprites€„ÿÿÿÿ›  üÿÿ=ØÿÿÿÿpÿÿÿNäÿÿÿ×stoptled>ÿÿÿNHÿÿÿ×çÿÿÿÿ‘þÿÿ¦ôþÿÿ=‘ÇOKtitled>¾‘þÿÿLôþÿÿ=‘ÇCanceled>Delete SpritesAre you sure?b´€€—ÿÿÿÿÿÿÿ  Ìýÿÿ—ÿÿÿ=0Toolss        $\ÿÿÿP⇦ÿÿÿ(`0ÿÿ#P\ÿÿÿ‹⇦ÿÿÿ(`1ÿÿ#‹\ÿÿÿÐ⇦ÿÿÿ(` 2ÿÿ#Ð\ÿÿÿ⇦ÿÿÿ(`03ÿÿ#0ÿÿÿP\ÿÿÿ(`@4ÿÿ#P0ÿÿÿ‘\ÿÿÿ(`P5ÿÿ#‘0ÿÿÿÐ\ÿÿÿ(``6ÿÿ#Ð0ÿÿÿ\ÿÿÿ(`p7ÿÿ#ÿÿÿP0ÿÿÿ(`€8ÿÿ#Pÿÿÿ‘0ÿÿÿ(`‘9ÿÿ#‘ÿÿÿÐ0ÿÿÿ(` 10ÿ#Ðÿÿÿ0ÿÿÿ(`°11ÿ#ØþÿÿPÿÿÿ(`À12ÿ#PØþÿÿ‘ÿÿÿ(`Ð13ÿ#‘ØþÿÿÐÿÿÿ(`à14ÿ#ÐØþÿÿÿÿÿ(`ð15ÿ#—þÿÿJÔþÿÿ`×gr1itled>P—þÿÿ…Ôþÿÿ`×gr2itled>‹—þÿÿÎÔþÿÿ`×gr3itled>Ô—þÿÿÔþÿÿ`×gr4itled>XþÿÿJ“þÿÿ`×gr5itled>PXþÿÿ…“þÿÿ`×gr6itled>‹XþÿÿΓþÿÿ`×gr7itled>ÔXþÿÿ“þÿÿ`×gr8itled>þÿÿJTþÿÿ`×gr10tled>Pþÿÿ…Tþÿÿ`×gr11tled>‹þÿÿÎTþÿÿ`×gr12tled>ÔþÿÿTþÿÿ`×gr9tled>ØýÿÿJþÿÿ`×gr13tled>PØýÿÿ…þÿÿ`×gr14tled>‹ØýÿÿÎþÿÿ`×gr15tled>ÔØýÿÿþÿÿ`×gr16tled>À⇦þÿÿp¸þÿÿ=`€×<Untitled>Ô†ýÿÿØýÿÿ`Ŵ×gr16tled>†ýÿÿJØýÿÿ`Ŵ×gr13tled>P†ýÿÿ…Øýÿÿ`Ŵ×gr14tled>,…þHÿÿÿÿ◰  üÿÿ=Blob size¤ÿÿÿDÐÿÿÿ= '+ntitled>‘¤ÿÿÿºÐÿÿÿ= '-ntitled>P☓ÿÿÿ☓ðÿÿÿ—<Untitled>:LÿÿÿŒxÿÿÿ¹Øÿÿÿÿ00x00ú4þTÿÿÿÿ ☓€þÿÿT=xÿÿÿÿî°ÿÿÿÜÿÿÿ '3dup2led>n0ÿÿÿŒ\ÿÿÿ> '3dright2>\0ÿÿÿ⇦\ÿÿÿ> '3dleft2d>î¨þÿÿÔþÿÿ> '3ddown2d>⇦Ðþÿÿp´ÿÿÿ†×0000x0000⇦0ÿÿÿ´\ÿÿÿ> '3dright2>B0ÿÿÿn\ÿÿÿ> '3dleft2d>î⇦ÿÿÿ´ÿÿÿ '3ddown2d>îÐþÿÿüþÿÿ> '3dup2led>‘þÿÿÊÀþÿÿ5ó⇨” :Äÿÿÿöôÿÿÿ5ñfl« ⇦“þÿÿìàþÿÿ1ǵ¸ xDb×Min x:ed>< èÿÿÿxb×Min y:ed><€ìH5ñ»½€àÿÿÿî 5áÅÇ ¸ÿÿÿ—Øÿÿÿ`×Max x/y:><Work area extent-0000,-0000a0-9-,;b3-0000,-0000a0-9-,;b3OKb20a0-9;b30a0-9;b3Œæ¶„ÿÿÿÿ ☓üÿÿ=Save as:>N¤ÿÿÿ‹ìÿÿÿa׸¹ `ÿÿÿ‘ÿÿÿ=ñÆÇÚ`ÿÿÿ ‘ÿÿÿ1ÇÊÍ Sfile_FF9;b3b3OKb2ô6°ÿÿÿÿ ☓Dÿÿÿ$=Save as:>N¤ÿÿÿ‹ìÿÿÿa׸¹ `ÿÿÿÄ‘ÿÿÿ=ñÆÇÜ`ÿÿÿ‘ÿÿÿ1ÇÊÍ b3;Sfile_fecb3OKb2Ð<Ìÿÿÿÿ ÿ üÿÿ=0<Untitled>eôÔfiÈ5‹☓ üÿÿ=0xÿÿÿÿ    ®4ÿÿÿ^dÿÿÿ=0·OKtitled>þŒÐÿÿÿ„ôÿÿÿa⇧›(Œ“ÿÿÿ„¸ÿÿÿa„¦(ŒXÿÿÿ„|ÿÿÿa©É(Œÿÿÿ„@ÿÿÿaÌÝ6Ðÿÿÿ‹ôÿÿÿ9Name:led>þ“ÿÿÿ‹¸ÿÿÿ9Purpose:>þXÿÿÿ‹|ÿÿÿ9Author:d>þÿÿÿ‹@ÿÿÿ9Version:>þAbout this ProgramFormEd2b3Template Editorb3Acorn/The RISC Squad/Paul Hobbsb33.04 (10-Apr-93)b3pŒ☓„Tÿÿÿÿ ☓PÿÿÿT=ÿÿÿÿ6¬ÿÿÿþ¼Ç0000x0000üÄÿÿÿ(ðÿÿÿ> '3dright2>ÒÄÿÿÿþðÿÿÿ> '3dleft2d>☓Üÿÿÿ°> '3ddown2d>☓°0 '3dup2led>²D5ñ$&²Ìÿÿÿüÿÿÿ5ñ.08Äÿÿÿdðÿÿÿ> '3dright2>2Øÿÿÿfiøÿÿÿ×Width:ed><2®D×Height:d>< Äÿÿÿ8ðÿÿÿ> '3dleft2d>☓☓ÿÿÿ°°ÿÿÿ> '3ddown2d>☓¬ÿÿÿ°Øÿÿÿ '3dup2led>¼tÿÿÿü¤ÿÿÿ9a8;Resize icon0a0-9;b30a0-9;b3OKb2v☓þèÿÿÿÿŷ  ÿÿÿ⇦=0—ÿÿÿÿ ¼ÿÿÿìÿÿÿ=ñ¨´ 0¼ÿÿÿzìÿÿÿ9a·º New Window Name12345678901b3OKb2Ô`>ÔÿÿÿÿR  …ÿÿÿj=Handlesd>eúÿÿÿÈÿÿÿ⇩øÿÿÿWindow:ÿ‰Èÿÿÿ^øÿÿÿ=Øÿÿÿÿ úÿÿÿ“ÿÿÿ⇩ÄÿÿÿIcon::ÿ‰“ÿÿÿ^Äÿÿÿ=Ùÿÿÿÿ8Ôÿÿÿÿ ¿ dÿÿÿ=0üTemplateses     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     5Nick!BootDëÿÿÁ|ý8±Ŷ!HelpEÿÿÿ®.tŶ!RunGëÿÿ©j@=
  30332. Ŷ!RunImageGûÿÿB=A fŷ!SpritesDùÿÿ°ŷOí☓ Ŷ!Sprites22Eùÿÿ-¢¡l¬ ŶBorderUtilDúÿÿõuÐFôŶExtrasGýÿÿòÙàManualGÿÿÿ¹¾4 ◰q…MenuUtilsDúÿÿØ¿tÀ™MessagesGÿÿÿq(1 ËŶOptionsGýÿÿys7PŶSpritesEùÿÿFÌ)]´)‰TechDocsGÿÿÿtëC⇩5•TemplatesGìÿÿIË2 
  30333. F‘TemplEdGÖóÿ¬î@ Ð­’!BootDëÿÿÁ|ý8±Ŷ!HelpEÿÿÿ®.tŶ!RunGëÿÿ©j@=
  30334. Ŷ!RunImageGûÿÿB=A fŷ!SpritesDùÿÿ°ŷOí☓ Ŷ!Sprites22Eùÿÿ-¢¡l¬ ŶBorderUtilDúÿÿõuÐFôŶExtrasGýÿÿòÙàManualGÿÿÿ¹¾4 ◰q…MenuUtilsDúÿÿØ¿tÀ™MessagesGÿÿÿq(1 ËŶOptionsGýÿÿys7PŶSpritesEùÿÿFÌ)]´)‰TechDocsGÿÿÿtëC⇩5•TemplatesGìÿÿIË2 
  30335. F‘TemplEdGÖóÿ¬î@ Ð­’}!TemplEd!TemplEd5NickÆ|
  30336. | !Boot file for !TemplEd
  30337. |
  30338. Set TemplEd$Dir <Obey$Dir>
  30339. If "<Alias$@RunType_FEC>"= "" Then Set Alias$@RunType_FEC Run <TemplEd$Dir>.!Run %%*0
  30340. IconSprites <TemplEd$Dir>.!SpritesonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks                      TemplEd Quick Reference
  30341.  
  30342. Function                      Button          Remark
  30343. --------                      ------          ------
  30344. Select icon(s) (exclusive)    Select          1
  30345. Select icon(s) (additional)   Adjust          1
  30346. Move icon(s)                  Shift+Select    2,3
  30347. Resize icon(s)                Shift+Adjust    2,3
  30348. Edit icon(s)                  Shift+Menu      3,4,5
  30349. Move window                   Ctrl+Select     6
  30350. Resize window                 Ctrl+Adjust     6
  30351. Edit window                   Ctrl+Menu       7
  30352. Edit title bar                Ctrl+Menu       8,9
  30353. Resize work area of window    Ctrl+Alt+Adjust 6
  30354. Renumber icon(s)              Alt+Select      10
  30355. Renumber icon(s)              Alt+Adjust      11
  30356.  
  30357.  
  30358. REMARKS
  30359. -------
  30360.  1. Click selects single icon; drag selects all icons within drag-box
  30361.  2. Also works for click without Shift, if mouse button is pressed longer
  30362.     than 0.5 seconds
  30363.  3. Function operates on all selected icons, or (if no icons are selected)
  30364.     on the icon that the pointer is over
  30365.  4. If more than 1 icon is edited, only the icon flags can be modified
  30366.  5. Or by double-clicking with Select (if option is on)
  30367.  6. Only works if "Movable"-flag of window is set
  30368.  7. Or by double-clicking with Select on window background (if option is on)
  30369.  8. Pointer must be over the title bar
  30370.  9. Or by double-clicking with Select on title bar (if option is on)
  30371. 10. When repeating this, next icon number is:
  30372.       <number issued on last renumber> + 1
  30373. 11. When repeating this, next icon number is:
  30374.       <number issued on last renumber> - 1
  30375.  
  30376. For more info, read the file "Manual" in the TemplEd application directory.
  30377. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  30378. | !Run file for !TemplEd
  30379. |
  30380. Set TemplEd$Dir <Obey$Dir>
  30381. Set Alias$@RunType_FEC Run <TemplEd$Dir>.!Run %%*0
  30382. IconSprites <TemplEd$Dir>.!Sprites
  30383. RMEnsure MenuUtils 0.11 RMLoad <TemplEd$Dir>.MenuUtils
  30384. |
  30385. | Check if BorderUtils module must be loaded
  30386. |
  30387. Set LoadBorderUtils 0
  30388. RMEnsure UtilityModule 3.50 Set LoadBorderUtils 1
  30389. If <LoadBorderUtils> = 1 Then RMEnsure BorderUtils 0.0 Set LoadBorderUtils 1
  30390. If <LoadBorderUtils> = 1 Then RMLoad <TemplEd$Dir>.BorderUtil
  30391. UnSet LoadBorderUtils
  30392. |
  30393. | Check if MessageTrans module must be loaded
  30394. |
  30395. Set LoadMsgTrans 0
  30396. RMEnsure MessageTrans 0.0 Set LoadMsgTrans 1
  30397. If "<System$Path>" = "" AND "<LoadMsgTrans>" = "1" Then Error 0 System resources cannot be found
  30398. If <LoadMsgTrans> = 1 Then RMLoad System:modules.MsgTrans
  30399. UnSet LoadMsgTrans
  30400. |
  30401. WimpSlot -min 108K -max 108K
  30402. Run <TemplEd$Dir>.!RunImage %*0   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ⇦ì!templed¬Ì ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿwwwwwwwwwwwwwwÌÇÌÌÌÌÌÌÌwÌwwwwwwwwwwwwwwww"www"wwwwww"wwwwUwwwwUwwww"wwwwwwwwwwwwwwwwwÌ7SUUU333wÌwwwwwwwwwwwwwÿwqwwww•øÿwqwwww•⇦wqwwwwwwwwwwÿ•øwwqwwwñ⇦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿ—sm!templed,, wwwwwwwwwÇ|ÌÌÌÌÌÇ|wwwwwwwww7s7sÿÿWu•øWuÿ•7swwwww÷øwwôptr_menu,,@UUUU@©ªªªUifff©j−−−−©j©ªªªUYUUU@YUUU@−¦Yi−efeYUUUYUUU−YYY−eZeYUUUYUUU−VfU−−−UYUUUYUUU−−UU−fUUYUUUYUUU©ªªªUUUU€ic_templed,, wwwwwwwwwwwwwwwww'r"DDDDDD'rwwwwwwwwwwwwwwwww'rwwwwwwwwwwwqÇ|ÌÌÌÌÌÇ|7swwwwwwwww7sw7s7sw7s7sÿWuq•øWuqÿ•7swwwwwww÷øww'rww'rwwwwwwwwwwwwwwwww€ptr_write,,UTi¥”YP@@@@@@@@@@@@P”Yi¥UUerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ° Üsm!templed,wwwwwwÇÇÌDÌÇwwwwwwWWW'''Wñ_wwww÷øWU%"õ⇦wwww÷⇦øñ⇦⇦ñ⇦⇦øñÿ⇦ñ⇦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿôptr_menu,,@UUUU@©ªªªUifff©j−−−−©j©ªªªUYUUU@YUUU@−¦Yi−efeYUUUYUUU−YYY−eZeYUUUYUUU−VfU−−−UYUUUYUUU−−UU−fUUYUUUYUUU©ªªªUUUU€ptr_write,,UTi¥”YP@@@@@@@@@@@@P”Yi¥UUÔic_templed!,,wwwwwwwwwwwwwwwww77wwqw7s77wwwwqww7swwwwwwwwwwwwwwwww7swwqqqqwwwwwwwww7sp7swwwwwp7swSUssp7swwwwwp7sptp7spqwwp7spqqsp7sptwwp7swwwww|tp7sGDt|qp7swwwww|qp7spÌÌÌÌ|tp7spwwwwwwp7spDDAttpqpwwwwwwpqpqwwwwwwwwwqqww7sww7swwwwwwwwwwwwwwwww|!templed!,ÔwwwwwwwwwwwwWÇÌÌÌ\UUÅÌ||wwwwwwwwwwwwq|qtqtqtqqqqqqqqwwwqq3ssqqwwwqtqvqtqtqtqtqtqqqtqqq|qqwwwwwwwwwwwwqqÇDDDDDD|sqqwwwwwwwwwwwwqqqqqqqqqqtqqtqqvqwwwwwwwwwwwwwqFDDDADDDvsqwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     H—¨(BorderUtilsBorder Utils    0.02 (03 Dec 1992)>P-é ã0•âï s q u Br ŵp0 s[>‘½hpflå0á@…>‘ýèWindowManager@-éà ãà…ä€ýèS1ãð°@-éÀ†ä<ã€ý☓†å⇦†åqãp€ýà’å( á">áàà☓æ…⇦æ…€ýèherWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     CANC:Cancel
  30403. DALL:Delete all
  30404. DCRD:Discard
  30405. EDIC:Template '%0': Edit %1
  30406. EDTP:Edit template '%0'
  30407. ICBT0:Never
  30408. ICBT1:Always
  30409. ICBT2:Auto-repeat
  30410. ICBT3:Click
  30411. ICBT4:Release
  30412. ICBT5:Double click
  30413. ICBT6:Click/Drag
  30414. ICBT7:Release/Drag
  30415. ICBT8:Double/Drag
  30416. ICBT9:Menu
  30417. ICBT10:Double/Click/Drag
  30418. ICBT11:Radio
  30419. ICBT12:12 (reserved)
  30420. ICBT13:13 (reserved)
  30421. ICBT14:Write/Click/Drag
  30422. ICBT15:Writable
  30423. ICNR:icon %0
  30424. ISLF:To save, drag the file icon to a directory viewer
  30425. IWAS:Invalid work area size
  30426. LNEW:Load new
  30427. MICX:Maximum number of icons exceeded
  30428. MOD0:The templates have been modified
  30429. MTPX:Maximum number of templates has been reached; can't add more templates
  30430. NFRM:Nothing left to put a frame around
  30431. NOCH:No changes
  30432. NOHP:Can't claim enough heap memory
  30433. NORM:Can't support the %0 module: it is not loaded
  30434. NOSF:Could not find sprite file %0
  30435. NOSH:I need !StrongHelp to display the info. Run !StrongHelp (version 2), then select 'Help' again
  30436. NSEL:Nothing selected
  30437. NSTF:Could not read status file; using default
  30438. NUPD:I can't update: the icon number may have changed in the mean time
  30439. OK:OK
  30440. SAVE:Save
  30441. SEL:selection
  30442. TAEX:A template with that name already exists
  30443. TBAR:title bar
  30444. TIDY:Changed %0 icon(s)
  30445. TTLB:Template %0 too large for internal buffer
  30446. WNBT0:Never
  30447. WNBT1:Always
  30448. WNBT2:Auto-repeat
  30449. WNBT3:Click
  30450. WNBT4:Release
  30451. WNBT5:Double click
  30452. WNBT6:Click/Drag
  30453. WNBT7:Release/Drag
  30454. WNBT8:Double/Drag
  30455. WNBT9:Click
  30456. WNBT10:Double/Click/Drag
  30457. WNBT11:Click/Drag
  30458. WNBT12:12 (reserved)
  30459. WNBT13:13 (reserved)
  30460. WNBT14:14 (reserved)
  30461. WNBT15:Writable
  30462.      WonderWorks     WonderWorks     WonderWorks     @ÿÿÿÿ@ÿÿÿÿ@ÿÿÿÿ@@ÿÿÿÿ@@@ÿÿÿÿ@@@@@ÿÿÿÿ@ÿÿÿÿ@ÿÿÿÿ@WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     }A_$="TemplEd":B_$="1.32 (20-Oct-96)":C_%=100:D_%=200:E_%=8000:F_%=£:òG_:H_%=(1<<0)+(1<<4)+(1<<5)+(1<<11)+(1<<12):îŶòI_(0)õ:çJ_%=3…:È−284596:È−262343,H_%,K_%¸L_%:È−284548,M_%,K_%,L_%¸L_%Ì:È−262343,H_%,K_%¸L_% Í:ȉL_%Ê$É0:È−262351,,N_%:ç(N_%!8>0)€O_%…0O_%=£:òP_(N_%!0,N_%!4,N_%!8,N_%!12,N_%!16,0) Ì:çN_%!8=0…"ç(¬O_%)€(Q_%=7)…#cR_%!0=S_%:È−262347,,R_%:R_%!52=R_%!12-R_%!4+R_%!20:R_%!48=-(R_%!16-R_%!8-R_%!24):S_%=¤T_(R_%,¹)*Í:O_%=¹:Q_%=-1:U_%=£.$Ì:ç“(N_%!0-V_%)+“(N_%!4-W_%)>16…1    U_%=£2 Í:çU_%…4ç((’-X_%)>Y_%)€(N_%!16>=0)…5.È−262352,-1:òZ_(N_%!8,N_%!12,N_%!16):U_%=£8Í9Í:Í;Í<É1:òa_(K_%!0)=É2:ç(K_%!0=b_%)…?$c%=(K_%!12-K_%!4)Ŵc_%:çc%<1…c%=1Açd_%<>c%…Bd_%=c%:òe_(£):K_%!0=b_%EÍFÍ:çK_%!0=f_%…H+òg_(h_%,K_%!28,K_%!4,K_%!16):K_%!28=h_%JÍ:È−262341,,K_%:çK_%!0=f_%…M òg_(h_%,K_%!28,K_%!4,K_%!16)NÍOÉ3:i_%=¤j_(K_%!0):çi_%>=0…R òk_(i_%)SÌ:ç¬(¦-1)…Uòl_(K_%!0)V9Í:È−262351,,N_%:ç(K_%!0=b_%)€(N_%!8=1)€(§m_$,".")>0)…Y&È−262366,"Filer_OpenDir "+¤n_(m_$)ZÍ[Í\-É6:òP_(K_%!0,K_%!4,K_%!8,K_%!12,K_%!16,¹)]$É7:òo_(K_%!0,K_%!4,K_%!8,K_%!12)^É8:òp_(K_%!0,K_%!4,K_%!24)_É9:òq_(K_%)`É17,18:òr_(K_%)a Ë:çs_%…còt_d$Í:ýF_%:òu_:òv_(0):òw_:È−262365:àlPÝòG_:êp%,x_$,i%,y_%,z_%:Þ__%&100:È−262336,200,&4B534154,A_$¸`_%,M_%:îŶòI_(1)q8ÞA`%&100:B`$=¤C`("TemplEd$Dir"):òD`:òE`:çC_%<4…C_%=4wçD_%<64…D_%=64xçE_%<&1000…E_%=&1000yàF`%=4*D_%:G`%=¤H`(F`%):I`%=¤H`(F`%):J`%=¤H`(C_%*28):K`%=¤H`(4*C_%):L`%=¤H`(C_%):M`%=92+32*D_%:M`%+=E_%:R_%=¤H`(M`%):N`%=16+C_%*24+4:O`%=¤H`(N`%):ÞP`% 40:ÞK_%&100:ÞN_% 20:ÞQ`% 8:$Q`%="A0-9":ÞR`% 8:$R`%="A0-9.":S`%=0:T`%=0•ÝU`%=&1800:ÞV`% U`%:W`%=V`%:X`%=U`%:ÞY`%(36):ÞZ`%(36):Þa`%(36):Þb`%(12):Þc`%(12):Þd`%(12):Þe`% 20*16:Þf`% 20*16:ãi%=0¸15:$(e`%+20*i%)=¤g`("ICBT"+Ã(i%)):$(f`%+20*i%)=¤g`("WNBT"+Ã(i%)):íi%:Þh`%(6):Þi`%(15):ãi%=0¸15:ȉi%Ê£É0,1,2,3,9,12,14:i`%(i%)=7¥:i`%(i%)=0§åË:íi%:Þj`% 40:Þk`%(256):Þl`% 256:Þm`% 64:Þn`% 16:o`%=-1000:p`%=-1000:q`%=-1:O_%=£:X_%=’:V_%=-1000:W_%=-1000:r`%=0:U_%=£:Y_%=50:s`%=50:t`%=0:u`%=-1:v`%=-31:w`%=-1:m_$="Templates":x`$="Selection":y`$="TemplText":z`$="IconNames"ÂÐ_`%=£:``%=£:Aa%=£:Ba$="":Ca%=£:Da%=1:Ea$="":Q_%=-1:J_%=0:P`%!0=-1:P`%!4=0:P`%!8=0:P`%!12=68:P`%!16=68:P`%!20=&7000301A:$(P`%+24)="!templed":È−262338,,P`%¸Fa%:Ga%=¤Ha(B`$+".Sprites"):ãi%=0¸255:l`%?i%=0:íi%ÙÛÈ−262361,,B`$+".Templates":Ia%=¤Ja("Info",R_%,W`%,X`%,1):$(R_%!(92+3*32+20))=B_$:b_%=¤Ja("Templates",R_%,W`%,X`%,Ga%):Ka%=R_%!76:$(Ka%)=m_$:i%=R_%+92:c_%=i%!8-i%!0+8:La%=i%!12-i%!4+8:Ma%=i%!16:d_%=(R_%!12-R_%!4)Ŵc_%äçd_%<1…d_%=1åáA`%!0=b_%:A`%!4=0:È−262340,,A`%:Na%=¤Ja("IconEdit",R_%,W`%,X`%,Ga%):Oa%=R_%!76:òPa(0,R_%,23):òPa(1,R_%,24):òPa(2,R_%,25):òPa(3,R_%,26):òPa(4,R_%,28):òPa(5,R_%,31):òPa(19,R_%,45):òPa(20,R_%,48):òPa(21,R_%,51):òQa(0,R_%,34)ôÖòQa(1,R_%,37):Ra%=¤Ja("WindowEdit",R_%,W`%,X`%,Ga%):Sa%=R_%!76:òPa(6,R_%,23):òQa(2,R_%,27):òQa(3,R_%,31):òQa(4,R_%,35):òQa(5,R_%,39):òQa(6,R_%,43):òQa(7,R_%,47):òQa(8,R_%,51):Ta%=¤Ja("DefaultWin",R_%,W`%,X`%,1)ãUa%=¤Ja("SaveBox",R_%,W`%,X`%,1):Va%=R_%!(92+1*32+20):Wa%=R_%!(92+2*32+20):Xa%=¤Ja("IconInfo",R_%,W`%,X`%,1):Ya%=R_%!12-R_%!4:òPa(7,R_%,6):òPa(8,R_%,7):òPa(9,R_%,9):òPa(26,R_%,10):òPa(10,R_%,11):òPa(27,R_%,8):òPa(11,R_%,12) ÚòPa(24,R_%,13):Za%=¤Ja("Export",R_%,W`%,X`%,1):aa%=R_%!(92+1*32+20):ba%=R_%!(92+2*32+20):ca%=¤Ja("WorkArea",R_%,W`%,X`%,Ga%):òPa(12,R_%,10):òPa(13,R_%,13):òPa(14,R_%,16):òPa(15,R_%,19):òPa(16,R_%,22):òPa(17,R_%,25)äda%=¤Ja("Align",R_%,W`%,X`%,Ga%):òea(da%,2,1):òea(da%,8,1):f_%=¤Ja("Options",R_%,W`%,X`%,Ga%):h_%=¤Ja("OptPane",R_%,W`%,X`%,Ga%):òPa(28,R_%,19):òPa(29,R_%,23):òPa(30,R_%,28):òPa(31,R_%,32):fa%=¤Ja("Spaceout",R_%,W`%,X`%,Ga%)!ãòea(fa%,3,1):òea(fa%,4,1):òPa(18,R_%,6):ga%=4:òha(18,Ã(ga%)):òia:ja%=¤Ja("Frame",R_%,W`%,X`%,Ga%):òPa(32,R_%,7):òPa(33,R_%,11):òPa(34,R_%,17):òPa(35,R_%,22):òea(ja%,6,1):òea(ja%,15,1):òea(ja%,21,1):ka%=0:la%=24:ma%=0:na%=323àòha(33,Ã(la%)):òha(35,Ã(na%)):oa%=¤Ja("Stats",R_%,W`%,X`%,Ga%):pa%=(R_%!(92+5*32+16))€&FF000000:qa%=¤Ja("Palette",R_%,W`%,X`%,1):ra%=¤Ja("Dialogue",R_%,W`%,X`%,1):sa%=R_%!(92+20):ta%=R_%!(92+1*32+20):ua%=R_%!(92+2*32+20)<£va%=R_%!(92+3*32+20):y_%=(1<<2)+(1<<5)+(&FF<<24):wa%=(R_%!(92+1*32+16))€y_%:xa%=(R_%!(92+2*32+16))€y_%:ya%=(R_%!(92+3*32+16))€y_%:È−262362:ãi%=0¸255:çl`%?i%>0…Fk`%(i%)=1GÌ:k`%(i%)=0IåÍ:íi%:òza:ò_a:òea(h_%,13,s_%):òea(h_%,11,`a%):òea(h_%,12,Ab%):òea(h_%,16,Bb%):òha(28,Ã(Cb%)):òha(29,Ã(Db%)):òea(h_%,25,Eb%):òha(30,Ã(Fb%)):òha(31,Ã(Gb%)):òea(h_%,14,Hb%):òea(h_%,15,Ib%):òea(h_%,8,Jb%):òea(h_%,35,Kb%):òv_(Lb%)[Aòea(oa%,1,Mb%):òea(oa%,2,¬Mb%):òNb:È−53,27,0¸;z_%:ç(z_%€2)=0…` Ob$="22"a Ì:Ob$=""c¤Í:R_%!0=Ta%:È−262347,,R_%:R_%!28=-2:È−262341,,R_%:i%=R_%!12:È−262368,,R_%:Pb%=R_%!12-i%:È−262342,,R_%:È−16¸x_$:p%=§x_$,"-quit"):çp%>0…p%=§x_$,½34,p%+©("-quit"))qçp%>0…p%=§x_$,½34,p%+1)r
  30463. çp%>0…s2õ:x_$=Áx_$,p%+1):p%=§x_$," "):ýp%=0:ç©(x_$)>0…xòQb(x_$,1):òRb(x_$)zÍ{    Ì:òSb}Í:á€ZÝòp_(Tb%,Ub%,p_%):êi%,Vb%,Wb%,Xb%,i_%,Yb$,Zb%,ab%,bb%,cb%,db%,eb%:ç(p_%=27)€(Q_%<>-1)…◰òfb☓ Ì:ȉTb%ÊŷÉNa%:ȉp_%Ê⇦É&18E,&18A,13:çUb%>0…⇩i%=Ub%:Vb%=£:õ:çi%=26…‰i%=23:Vb%=¹‘ Ì:i%+=1‹-Í:ý(¬¤gb(Na%,i%))☓(i%=Ub%):çVb%€(p_%=13)…”,òea(Na%,9,1):òhb(-1):òea(Na%,9,0):i%=Ub%−Í:òib(Na%,i%)œÍ†É&18F,&19A:çUb%>0…fii%=Ub%:õ:çi%=23…¡    i%=26¢ Ì:i%-=1¤*Í:ý(¬¤gb(Na%,i%))☓(i%=Ub%):òib(Na%,i%)§Í¨$É&181:È−262351,,N_%:çN_%!12=Na%…«Yb$="":ȉN_%!16Ê­É14:Yb$="Indirected"®É3,25:Yb$="Validation"¯É4,26:Yb$="Maxsize"°É15:Yb$="Border"±É16:Yb$="Filled"²É17:Yb$="Hcentred"³É18:Yb$="Vcentred"´É19:Yb$="Rjustified"µÉ20:Yb$="Needshelp"¶É21:Yb$="Allowadjust"·É22:Yb$="Halfsize"¸ É5,27,28,29:Yb$="Buttontype"¹É6,30,31,32:Yb$="ESG"ºÉ39:Yb$="Shaded"»É7,33,34,35:Yb$="Fgcol"¼É8,36,37,38:Yb$="Bgcol"½É41:Yb$="Font"¾É1:Yb$="Flags"¿Ë:çYb$<>""…Á òjb("TemplEd.IconInfo_"+Yb$)ÂÍÃÍÄ+É&182:òea(Na%,9,1):òhb(-1):òea(Na%,9,0)ÈBÉ&183:òea(Na%,10,1):òhb(-1):òea(Na%,10,0):òl_(Na%):òib(o`%,-1)Î=É&184,27:òea(Na%,11,1):òl_(Na%):òea(Na%,11,0):òib(o`%,-1)Ó:È−262364,p_%ÕËÖÉRa%:ȉp_%ÊØ$É&181:È−262351,,N_%:çN_%!12=Ra%…ÛYb$="":ȉN_%!16ÊÝÉ4:Yb$="Moveable"ÞÉ5:Yb$="Auto-redraw"ßÉ6:Yb$="Hotkeys"àÉ7:Yb$="Pane"áÉ8:Yb$="Nobounds"âÉ9:Yb$="GCOL"ãÉ10:Yb$="Backwindow"ä#É1,21,22,23,24:Yb$="Buttontype"åÉ20:Yb$="Newformat"æÉ57:Yb$="OnScreen"çÉ11,58,59,60:Yb$="Scroll"èÉ12,61,62,63:Yb$="NoExtent"éË:çYb$<>""…ëòjb("TemplEd.WinInfo_"+Yb$)ìÍíÍî,É&182,13:òea(Ra%,53,1):òkb:òea(Ra%,53,0)ò>É&183:òea(Ra%,54,1):òkb:òea(Ra%,54,0):òl_(Ra%):òib(q`%,-1)ø=É&184,27:òea(Ra%,55,1):òl_(Ra%):òea(Ra%,55,0):òib(q`%,-1)ý:È−262364,p_%ÿËÉUa%:ȉp_%ÊÉ13:òea(Ua%,0,1):ç``%…òlb($(Va%)) Ì:ç_`%…x`$=$(Va%):òmb(x`$)
  30464. Ì:òRb($(Va%)):òmb(m_$)ÍÍ:òea(Ua%,0,0):È−262356,,-1:È−262364,p_%ËÉZa%:ȉp_%Ê:É13:òea(Za%,0,1):ònb($(aa%)):òea(Za%,0,0):È−262356,,-1:È−262364,p_%ËÉca%:ȉp_%Ê É&18E,&18A,13:çUb%=25…" çp_%=13…#0òea(ca%,30,1):òob:òea(ca%,30,0):È−262356,,-1'Ì:òib(ca%,10))Í*Ì:òib(ca%,Ub%+3),Í-É&18F,&19A:çUb%=10…/òib(ca%,25)0Ì:òib(ca%,Ub%-3)2Í3É27:È−262356,,-15:È−262364,p_%7Ë8Éfa%:çp_%=13…:3òea(fa%,9,1):òpb(v`%):òea(fa%,9,0):È−262356,,-1>Ì:È−262364,p_%@ÍAÉja%:çp_%=13…C3òea(ja%,3,1):È−262356,,-1:òqb(v`%):òea(ja%,3,0)GÌ:È−262364,p_%IÍJ :ȉQ_%ÊL!É0,1,5,6,7:Wb%=0:Xb%=0:ȉp_%ÊPÉ&18C:Wb%=-rb%QÉ&18D:Wb%=rb%RÉ&18E:Xb%=-sb%SÉ&18F:Xb%=sb%TÉ&19C:Wb%=-4*rb%UÉ&19D:Wb%=4*rb%VÉ&19E:Xb%=-4*sb%WÉ&19F:Xb%=4*sb%X:È−262364,p_%Y.Ë:È−262351,,N_%:È–¸(N_%!0)+Wb%,(N_%!4)+Xb%\É-1:i_%=¤j_(Tb%):çi_%>=0…_
  30465. ȉp_%Ê`É1:òtb(Tb%)aÉ3:ub%=-1:òvb(Tb%,ub%,0)dÉ4:ub%=-1:òvb(Tb%,ub%,2)gÉ5:òwb(Tb%,-1)hÉ6:òxb(Tb%):çyb%>=2…kòzb:ò_b(Tb%,ja%,-80,80)mÍnÉ10:òxb(Tb%):çyb%>=2…qò_b(Tb%,da%,-80,80)rÍsÉ11:òxb(Tb%):çyb%>=2…vò_b(Tb%,fa%,-80,80)wÍxÉ12:ub%=-1:òvb(Tb%,ub%,3){É17,&1A2:òk_(i_%)|É18:ub%=-1:òvb(Tb%,ub%,4)É20:òwb(Tb%,-4)€É21:ub%=-1:òvb(Tb%,ub%,1)◰É23:ò`b(Tb%)☓É24:òAc(Tb%,-1)ŶÉ26:òBc(Tb%,-1)ŷ=É&18C,&18D,&18E,&18F,&19C,&19D,&19E,&19F:òxb(Tb%):çyb%>0…⇨"òCc(Tb%,Zb%,ab%,bb%,cb%):çEb%…⇧db%=Fb%:eb%=Gb%™ Ì:çBb%…•db%=Cb%:eb%=Db%’Ì:db%=rb%:eb%=sb%“Í”Í:ȉ(p_%€&F)Ê–É&C:Wb%=-db%—É&D:Wb%=db%−É&E:Xb%=-eb%ŒÉ&F:Xb%=eb%œË:çp_%€&10…‡Wb%=Wb%*4:Xb%=Xb%*4flIÍ:Zb%+=Wb%:bb%+=Wb%:ab%+=Xb%:cb%+=Xb%:òDc(Tb%,-1,Tb%,Zb%,ab%,bb%,cb%)¥Í¦:È−262364,p_%§Ë¨Ì:È−262364,p_%ªÍ«Ë¬Ë­Í:á°>ݤJa(Ec$,Fc%,øGc%,øHc%,Ic%):êJc%,Kc%:êŶ:îŶêÈ−262362:òI_(1)´lJc%=Gc%:Ec$=Ec$+Ä12,½0):È−262363,,Fc%+4,Gc%,Gc%+Hc%,l`%,Ec$,0¸,,Gc%:Hc%-=(Gc%-Jc%):Fc%!68=Ic%:çFc%!88>0…º6ãi%=0¸Fc%!88:f%=Fc%!(92+i%*32+16):ç(f%€&103)=&102…½Fc%!(92+i%*32+24)=Ic%¾    Í:íi%À(Í:È−262337,,Fc%+4¸Kc%:Fc%!0=Kc%:=Kc%Å¥Ýòq_(Lc%):êMc%,Nc%,Oc%,Qc%,Qc$,Rc%,Rc$:êSc$,i%,j%,Tc%,Uc%,Vc,Wc%:È−285636,u`%,Lc%¸,Mc%,Nc%:Oc%=Nc%!0:Qc%=Nc%!8:Qc$=¤Xc(Nc%!12):Rc%=Nc%!24:çRc%<>0…Rc$=¤Xc(Nc%!28)Î
  30466. ȉu`%ÊÏÉYc%:ȉQc%ÊÑÉZc%:ç¤ac("StrongHelp")…Ó.È−262366,"Filer_Run <TemplEd$Dir>.TemplEd"ÔÌ:òbc(5,"")ÖÍ×Écc%:òdc(f_%,2)Ù Éec%:òfcÛÉgc%,hc%:çDa%<>1…Ý-Sc$="Run "+Ea$:ç`_%>=300…Sc$="Filer_"+Sc$ßÿSc$àÍáÉic%:òjc(Ea$)ãÉkc%:òjc("")åÉlc%:çCa%…çòbc(0,"")è    Ì:òmcêÍëËìÉnc%:ȉQc%ÊîÉoc%:ȉRc%ÊðÉqc%:ç©(Qc$)>0…òSR_%!0=Ta%:È−262348,,R_%:$(R_%+76)=Qc$:R_%!88=0:òrc(Qc$,R_%,1):òsc(S`%-1):òtc(¹)ùÍúÉuc%:ç©(Qc$)>0…ü>j%=0:È”(j%<S`%)€($(J`%+28*j%)<>Qc$):j%+=1:Î:ç(j%=S`%)☓`a%…i%=G`%!0:$(J`%+28*i%)=Qc$:P`%!0=b_%:P`%!4=i%:È−262350,,P`%:P`%!16=(P`%!8)+(c_%-8)-16*(11-©(Qc$)):ub%=¤vc(b_%,i%,P`%):òtc(¹)
  30467. Ì:òwc(¤g`("TAEX")) ÍÍÉxc%:ç©(Qc$)>0…Còxb(b_%):R_%!0=K`%!(4*(G`%!0)):È−262348,,R_%:çL`%?(G`%!(4*i%))…R_%!32=R_%!32☓(1<<5)#Í:òyc(R_%+60,R_%+76):çR_%!88>0…;ãi%=0¸R_%!88-1:òyc(R_%+92+32*i%+16,R_%+92+32*i%+20):íi%&Í:òrc(Qc$,R_%,1):òsc(S`%-1):òtc(¹)Í Ë!4Ézc%:òxb(b_%):ãi%=yb%-1¸0⇦-1:òsc(G`%!(4*i%)):íi%&4É_c%:òxb(b_%):ãi%=yb%-1¸0⇦-1:òk_(G`%!(4*i%)):íi%+aÉ`c%:È−263872:òxb(b_%):ãi%=yb%-1¸0⇦-1:òAd(G`%!(4*i%)):íi%:òBc(b_%,-1):v`%=b_%:w`%=-1:È−2638735ÉBd%:òtb(b_%):Cd%=£8ÉDd%:òBc(b_%,-1):Cd%=£;ÉEd%:çCa%…=òbc(1,"")>Ì:òFd:v`%=b_%:w`%=-1BÍC.ÉGd%:òBc(b_%,-1):òHd:òe_(¹):v`%=b_%:w`%=-1IÉId%:_`%=£:òmb(m_$)LË:çCd%…òBc(b_%,-1)NÉJd%:ȉQc%ÊPÉKd%,Ld%,Md%,Nd%,Od%:ȉQc%ÊRÉKd%:Wc%=0SÉLd%:Wc%=1TÉMd%:Wc%=2UÉNd%:Wc%=3VÉOd%:Wc%=4WË:òvb(v`%,w`%,Wc%)Y ÉPd%,Qd%:çQc%=Pd%…t`%=»(Qc$)[òxb(v`%):ȉyb%Ê]"É0:òRd(v`%,w`%):w`%=t`%:t`%+=1aÉ1:òRd(v`%,G`%!0)c:òSd(v`%)eËfÉTd%:òAc(v`%,w`%)hÉUd%:òwb(v`%,w`%)jÉVd%:òWd(v`%,w`%,0)lÉXd%:òYd(v`%,w`%,0)nÉZd%:òad(v`%,w`%,0)pÉbd%,cd%,dd%:ȉRc%ÊrÉVd%:òWd(v`%,w`%,Oc%)tÉXd%:òYd(v`%,w`%,Oc%)vÉZd%:òad(v`%,w`%,Oc%)xËyÉed%:òtb(v`%){Éfd%:òBc(v`%,-1)}Égd%:ò`b(v`%)Éhd%:òwb(v`%,-4)ŴÉid%:v`%=¤jd(v`%,1)◰Ékd%:v`%=¤jd(v`%,2)ŶÉld%:v`%=¤jd(v`%,3)Émd%:v`%=¤jd(v`%,4)⇨Énd%:v`%=¤jd(v`%,5)⇧Éod%:òdc(v`%,1)™Épd%:òqd(v`%,1)•Érd%:òqd(v`%,Da%)’Ésd%:òk_(¤j_(v`%))›Étd%:òdc(qa%,0)”Ë„%Éud%:vd%=Oc%:òha(4,$(e`%+20*vd%))−%Éwd%:xd%=Oc%:òha(6,$(f`%+20*xd%))†%Éyd%:zd%=»(ÀQc$,2)):òha(5,Ã(zd%))flÉ_d%:çQc$="None"…¡
  30468. j%=255¢Ì:j%=»(Qc$)¤ Í:ȉv`%ʦÉNa%:ȉw`%ʨÉ34:`d%=j%:òAe(0,j%)«É37:Be%=j%:òAe(1,j%)®Ë¯.ÉRa%:i%=(w`%-27)Ŵ4:h`%(i%)=j%:òAe(2+i%,j%)³Ë´ÉCe%:ç©(Rc$)>0…¶çQc$="(Regular)"…· De$=Rc$¸Ì:De$=Rc$+"."+Qc$ºÍ:òha(19,De$)¼Í½ÉEe%:Vc=»(Qc$):çVc>0…À çw`%=48…Á)Fe=Vc:òha(20,ÀÃ(Fe),4)):ç¤Ge(Na%,53)…ÄHe=Fe:òha(21,ÀÃ(He),4))ÆÍÇÌ:He=Vc:òha(21,ÀÃ(He),4))ÊÍËÍÌÉIe%:ȉQc%ÊÎÉJe%:òhb(&F<<12)ÏÉKe%:òhb(&1F<<16)ÐÉLe%:òhb((&F<<24)+(1<<6))ÑÉMe%:òhb((&F<<28)+(1<<6))ÒÉNe%:òhb((&FF<<24)+(1<<6))ÓÉOe%:òhb(&EFC+(1<<22))ÔÉPe%:òhb(1<<2)ÕÉQe%:òhb(1<<5)ÖÉRe%:òhb(1<<3)×ÉSe%:òhb(1<<4)ØÉTe%:òhb(1<<9)ÙÉUe%:òhb(1<<7)ÚÉVe%:òhb(1<<10)ÛÉWe%:òhb(1<<11)ÜÉXe%:òhb(1<<22)ÝË:çw`%=10…ßòl_(Na%):òib(o`%,-1):Mc%=£âÍã Ë:çMc%…åòYe(Ze%,ae%,v`%,w`%)æ Ì:u`%=-1èÍ:áëDÝòbe(ce%,de%,ee%,Tb%,Ub%,i_%):êp_%,fe%:p_%=0:fe%=£:ç(¦-1)…p_%+=1ðç(¦-2)…p_%+=2ñç(¦-3)…p_%+=4ò#U_%=(p_%=0)€(Ub%>=-1):çee%>256…ôee%=ee%>>8õ Í:ȉp_%Ê÷É0:çee%>0…ùofe%=(’-X_%)<s`%:fe%=fe%€(r`%=ee%)€(i_%>=0):fe%=fe%€(“(V_%-ce%)+“(W_%-de%))<32:X_%=’:V_%=ce%:W_%=de%:r`%=ee% Í:ȉee%ÊÉ1,4:ȉUb%ÊÉ-4:çfe%€Jb%€(ee%=4)…òwb(Tb%,Ub%)ÍÉ-1:çee%=4…òBc(Tb%,-1)
  30469. çfe%€Jb%€(ee%=4)… ò`b(Tb%) "Ì:òge(ee%):çi_%>=0…òib(Tb%,-1)Í:çUb%>=0… çee%=1…:A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:ȉ((A`%!24)>>12)€15ÊÉ4,9É5,7,8,11òhe(Tb%,Ub%,1<<21,0)Ë"Ì:òBc(Tb%,Ub%):笤Ge(Tb%,Ub%)… òea(Tb%,Ub%,1)!Í"Í:çfe%€Jb%€(ee%=4)…$òwb(Tb%,Ub%)%"Ì:òge(ee%):çi_%>=0…òib(Tb%,-1)(Í)Í*Ë+Ë,É1:ȉee%Ê.É1,4:çi_%>=0…òib(Tb%,-1)0ç(i_%>=0)☓(ee%=4)…1òZ_(ee%,Tb%,Ub%)2Í3É2:çi_%>=0…òwb(Tb%,Ub%)5Ë6É2:ȉee%Ê8É1:çi_%>=0…:òib(Tb%,-1):òie(Tb%)<Í=É2:çi_%>=0…? çUb%=-4…@òwb(Tb%,Ub%)AÌ:ò`b(Tb%)CÍDÍEÉ4:çi_%>=0…Gòib(Tb%,-1):òje(Tb%)IÍJËKÉ4:ȉee%ÊMÉ1:ç(Ub%>=0)€(i_%>=0)…OòRd(Tb%,Ub%):çt`%>0…t`%-=1QÍRÉ4:ç(Ub%>=0)€(i_%>=0)…TòRd(Tb%,Ub%):t`%+=1VÍWËXÉ6:ȉee%ÊZÉ1:ç(i_%>=0)…òke(Tb%)\Ë]:ç(ee%>0)…_
  30470. ȉJ_%Ê``É1:A`%!8=ee%:A`%!12=Tb%:A`%!16=Ub%:È−530048,,A`%:A`%!8=0:A`%!12=Tb%:A`%!16=Ub%:È−530048,,A`%k?É2:A`%!8=ee%:A`%!12=Tb%:A`%!16=Ub%:È−281294,,A`%:È−281295,0qÉ3:È−284546,,,Tb%,Ub%sËtÍuË:áxQÝòP_(ce%,de%,ee%,Tb%,Ub%,le%):êi_%,p_%:O_%=(ee%=0):U_%=£:i_%=¤j_(Tb%):çee%=2…~È−6,121,0¸,p_%:çp_%>=3…Ŵçle%…òYe(ce%,de%,Tb%,Ub%)ŵ+Ì:çi_%<>-1…òbe(ce%,de%,ee%,Tb%,Ub%,i_%)☓ÍŶÌ:çi_%<>-1… òbe(ce%,de%,ee%,Tb%,Ub%,i_%)⇦#Ì:çle%…òme(ce%,de%,ee%,Tb%,Ub%)⇩Í⇧Í:á‰kÝòme(ce%,de%,ee%,Tb%,Ub%):êne%,oe%,Mc%,i%,j%,pe%,qe%,re%,se%:ne%=(ee%=4):oe%=(ee%=2):Mc%=(ee%=1):ȉTb%Ê“É-2:çne%…„%òe_(£):òdc(b_%,3):çs_%…òdc(Xa%,4)−ÍŒ!ÉNa%:òte(ce%,de%,ne%,Mc%,Ub%)†!ÉRa%:òue(ce%,de%,ne%,Mc%,Ub%)fiÉoa%:ç(Ub%=1)☓(Ub%=2)… "Mb%=(Ub%=1):òea(oa%,Ub%,1):òfc£Í¤Éb_%:ç(ne%☓Mc%)€(Ub%>=0)…¦4A`%!0=K`%!(4*Ub%):È−262347,,A`%:çA`%!32€(1<<16)…© òk_(Ub%)ªÌ:òsc(Ub%)¬Í:òea(b_%,Ub%,0)®Í:çne%€(Ub%=-1)…°òBc(b_%,-1)±Í:ç(ee%=16)☓(ee%=64)…³òge(ee%>>4)´ÍµÉUa%:ȉUb%Ê· É0:ç``%…¹òlb($(Va%))º Ì:ç_`%…¼x`$=$(Va%):òmb(x`$)¾Ì:òRb($(Va%)):òmb(m_$)ÁÍÂÍ:È−262356,,-1ÄÉ2:ç(ee%>>4)€5…Æ òve(Ua%)ÇÍÈËÉÉZa%:ȉUb%ÊËÉ0:ònb($(aa%))ÍÉ2:ç(ee%>>4)€5…Ï òve(Za%)ÐÍÑÉ3,4,5:òwe(Ub%-3)ÓËÔÉda%:ȉUb%ÊÖ%É10:òxe(v`%):ç(¬Mc%)…È−262356,,-1Ù    :òyeÛËÜÉfa%:ȉUb%ÊÞFÉ5,7:ga%=»($(Y`%(18))):re%=(Mc%ŵ(Ub%=7)):ç¤ze(ga%,4,re%,-512,512)…âòha(18,Ã(ga%)):òib(fa%,6)äÍåÉ4,8:òia:çUb%=8…òib(-1,-1)è$É9:òpb(v`%):ç(¬Mc%)…È−262356,,-1ëËìÉja%:ȉUb%ÊîCÉ8,9:ka%=»($(Y`%(32))):re%=(Mc%ŵ(Ub%=9)):ç¤ze(ka%,1,re%,0,512)…òòha(32,Ã(ka%)):òib(ja%,7)ôÍõFÉ12,13:la%=»($(Y`%(33))):re%=(Mc%ŵ(Ub%=13)):ç¤ze(la%,4,re%,0,512)…ùòha(33,Ã(la%)):òib(ja%,11)ûÍüFÉ18,19:ma%=»($(Y`%(34))):re%=(Mc%ŵ(Ub%=17)):ç¤ze(ma%,1,re%,0,512)…òha(34,Ã(ma%)):òib(ja%,17)ÍFÉ23,24:na%=»($(Y`%(35))):re%=(Mc%ŵ(Ub%=24)):ç¤ze(na%,4,re%,0,512)…òha(35,Ã(na%)):òib(ja%,22)    Í
  30471. É3:ç(¬Mc%)…È−262356,,-1 òqb(v`%)(É5,6,15,16,20,21:çMc%…òea(ja%,Ub%,1)ò_eËÉca%:çUb%<=26…ç(Ub%>=9)€((Ub%◰3)<>1)…?re%=((Ub%◰3)=2)ŵMc%:i%=(Ub%-9)Ŵ3:j%=»($(Y`%(12+i%))):çi%<2…se%=-10000 Ì:se%=0Í:ç¤ze(j%,4,re%,se%,10000)…%òha(12+i%,Ã(j%)):òib(ca%,3*i%+10) Í!Í"$Ì:R_%!0=v`%:È−262347,,R_%:ȉUb%Ê&QÉ27,28:pe%=R_%!12-R_%!4+R_%!20-R_%!44:qe%=R_%!16-R_%!8-R_%!24+R_%!56:çUb%=27…*Qòha(12,Ã(R_%!44)):òha(13,Ã(R_%!56)):òha(14,Ã(pe%)):òha(15,Ã(qe%)):òib(ca%,16)//Ì:òha(16,Ã(pe%)):òha(17,Ã(qe%)):òib(ca%,22)3Í4`É29:òha(12,"0"):òha(13,"0"):òha(14,"1236"):òha(15,"936"):òha(16,"0"):òha(17,"0"):òib(ca%,16)< É30:òob:ç(¬Mc%)…È−262356,,-1?@ËAÍBÉh_%:ȉUb%ÊDÉ8:Jb%=¬Jb%EÉ9:ç¤Ge(h_%,Ub%)…G
  30472. òv_(1)H Ì:òv_(0)JÍKÉ10:ç¤Ge(h_%,Ub%)…M
  30473. òv_(2)N Ì:òv_(0)PÍQÉ34:ç¤Ge(h_%,Ub%)…S
  30474. òv_(3)T Ì:òv_(0)VÍWÉ11:`a%=¬`a%XÉ12:Ab%=¬Ab%:ò`e[É13:s_%=¬s_%:çs_%…^òdc(Xa%,4)_Ì:òl_(Xa%)aÍbÉ14:Hb%=¬Hb%cÉ15:Ib%=¬Ib%dÉ35:Kb%=¬Kb%eÉ16:Bb%=¬Bb%f7É18,20:re%=(Mc%ŵ(Ub%=20)):ç¤ze(Cb%,rb%,re%,rb%,64)…iòha(28,Ã(Cb%))jÍk7É22,24:re%=(Mc%ŵ(Ub%=24)):ç¤ze(Db%,sb%,re%,sb%,64)…nòha(29,Ã(Db%))oÍpÉ25:Eb%=¬Eb%q7É27,29:re%=(Mc%ŵ(Ub%=29)):ç¤ze(Fb%,rb%,re%,rb%,64)…tòha(30,Ã(Fb%))uÍv7É31,33:re%=(Mc%ŵ(Ub%=33)):ç¤ze(Gb%,sb%,re%,sb%,64)…yòha(31,Ã(Gb%))zÍ{Ë|Éf_%:ȉUb%Ê~É0:òAf:òl_(f_%)ŴÉ1:òl_(f_%)◰Ë☓Éra%:È−262356,,-1:ȉBf%ÊÉ0:ȉUb%Ê⇩UÉ1:È−262351,,N_%:$(Va%)=m_$:$Wa%="file_fec":_`%=£:``%=£:Aa%=¹:ò_b(-1,Ua%,-126,56)‹
  30475. É2:òmc“Ë”É1:çUb%=1…òFd—É2:çUb%=1…œòFd:òQb(Ba$,1):òRb(Ba$)fiÍflÉ8:ȉUb%Ê¢7É1:òFd:È−262355,,A`%:A`%!24=&1FC:È−262375,8,A`%,Cf%¨Ë©ËªË:á­0Ýòue(ce%,de%,ne%,Mc%,Ub%):êre%,i%,Df%:ȉUb%Ê° É53:òkb² É54:òkb:òl_(Ra%):òib(q`%,-1)¶É55:òl_(Ra%):òib(q`%,-1)¹É13:笤Ge(Ra%,20)…»òea(Ra%,14,¤Ge(Ra%,13))¼Í½É14:笤Ge(Ra%,20)…¿òea(Ra%,13,¤Ge(Ra%,14))ÀÍÁÉ15,17,19,20:òEf(Ub%)Ã1É23,27,31,35,39,43,47,51:òYe(ce%,de%,Ra%,Ub%)Å3É22,24:re%=(Mc%ŵ(Ub%=24)):ç¤ze(xd%,1,re%,0,15)…Èòha(6,$(f`%+20*xd%))ÉÍÊeÉ56:h`%(0)=7:h`%(1)=2:h`%(2)=7:h`%(3)=1:h`%(4)=3:h`%(5)=1:h`%(6)=12:ãi%=0¸6:òAe(2+i%,h`%(i%)):íi%Õ':ç(Ub%>=26)€(Ub%<=52)€((Ub%◰2)=0)…×Pre%=((Ub%◰4)=0)ŵMc%:i%=(Ub%-26)Ŵ4:Df%=¤Ge(Ra%,9):òFf(2+i%,h`%(i%),1,re%,Df%)ÛÍÜË:áß,Ýòte(ce%,de%,ne%,Mc%,Ub%):êre%,l%:ȉUb%ÊâÉ4:çMc%€¤Ge(Na%,14)…äç¤Ge(Na%,12)…æl%=©($(Y`%(0)))çÌ:ç¤Ge(Na%,13)…él%=©($(Y`%(1)))êÍëÍ:òha(3,Ã(l%+1))íÍîÉ9:òhb(-1)ð$É10:òhb(-1):òl_(Na%):òib(o`%,-1)ôÉ11:òl_(Na%):òib(o`%,-1)÷É12,13,14,41,53:òGf(Ub%)ù1É28,31,34,37,45,46,48,51:òYe(ce%,de%,Na%,Ub%)û3É27,29:re%=(Mc%ŵ(Ub%=29)):ç¤ze(vd%,1,re%,0,15)…þòha(4,$(e`%+20*vd%))ÿÍ3É30,32:re%=(Mc%ŵ(Ub%=32)):ç¤ze(zd%,1,re%,0,31)…òha(5,Ã(zd%))Í0É33,35:re%=(Mc%ŵ(Ub%=35)):òFf(0,`d%,1,re%,0)0É36,38:re%=(Mc%ŵ(Ub%=38)):òFf(1,Be%,1,re%,0) *É47,49:ç(Mc%€(Ub%=47))☓(ne%€(Ub%=49))… çFe<998…)Fe+=2:òha(20,ÀÃ(Fe),4)):ç¤Ge(Na%,53)…He=Fe:òha(21,ÀÃ(He),4))ÍÍ Ì:çFe>2…)Fe-=2:òha(20,ÀÃ(Fe),4)):ç¤Ge(Na%,53)…He=Fe:òha(21,ÀÃ(He),4))ÍÍÍ*É50,52:ç(Mc%€(Ub%=50))☓(ne%€(Ub%=52))…! çHe<998…"He+=2:òha(21,ÀÃ(He),4))$Í% Ì:çHe>2…'He-=2:òha(21,ÀÃ(He),4)))Í*Í+Ë:á.vÝòr_(Fc%):êHf%,If%,Jf%,Kf%,Lf%,Mf$,Nf%,Ub%,i_%,Of$:êNc%,Qc%:Hf%=Fc%!4:If%=Fc%!8:Jf%=Fc%!16:Kf%=0:Lf%=17:çHf%<>M_%…7
  30476. ȉJf%Ê8
  30477. É0:òmc;É1:çFc%!40=&FEC…><Pf$=¤Xc(Fc%+44):$(Fc%+44)="<Wimp$Scrap>":Fc%!36=-1:Kf%=2CÍDÉ2:Mf$=¤Xc(Fc%+44):ȉS_%ÊHÉUa%:ç``%…J òlb(Mf$)K Ì:ç_`%…Mx`$=Mf$:òmb(x`$)O*Ì:ç(Fc%!36<>-1)€(Mf$<>"<Wimp$Scrap>")…Q òRb(Mf$)RÍ:òmb(Mf$)TÍUÍVÉZa%:ònb(Mf$)X#Ë:È−8,17,Mf$¸Nf%,,,,Qf%:çNf%=1…[Kf%=3:Fc%!36=Qf%]Í:È−262356,,-1_ É3:Ba$=¤Xc(Fc%+44):ȉFc%!40ÊcÉ&FEC:ȉFc%!20Êe$Éb_%:òtc(S`%>0):òQb(Ba$,0):Kf%=4iÉ-2:çFc%!24=Fa%…k    çCa%…lòbc(2,"")mÌ:òFd:òQb(Ba$,1)pÍq Í:Kf%=4sËt$É&FF9:ç(Fc%!20=-2)€(Fc%!24=Fa%)…vòjc(Ba$):Kf%=4xÍyKÉ&2000:Ba$=¤Xc(Fc%+44)+".Templates":ç¤Rf(Ba$)€(Fc%!20=-2)€(Fc%!24=Fa%)…|    çCa%…}òbc(2,"")~Ì:òFd:òQb(Ba$,1)Ŵ Í:Kf%=4◰Í☓ËŶ É5:Ba$=¤Xc(Fc%+44):ȉFc%!40Ê⇨É&FEC:çS`%=0…⇧òQb(Ba$,1):Kf%=4™Í‰Ë• É8:çCa%…‹"Kf%=8:Lf%=19:Cf%=Hf%:òbc(8,"")„Í–BÉ10:Of$="Run "+¤C`("TemplEd$Dir")+½10:È−12,2,Fc%!20,Of$,©(Of$)œ9É&502:i_%=¤j_(Fc%!32):Ub%=Fc%!36:ç(i_%>=0)€(Ub%>=-1)… #$(Fc%+20)=¤Sf(i_%,Ub%):Kf%=&503¢Í£6É&400C0:È−285636,u`%,Fc%+32¸,,Nc%:Qc%=Nc%!8:ȉQc%ʨÉqc%:È−285640,oc%,""«4Éxc%,uc%:òxb(b_%):È−285640,oc%,$(J`%+28*(G`%!0))¯/ÉTf%:$(Va%)=y`$:_`%=£:``%=¹:$Wa%="file_fff"´ÉUf%:ȉVf%ʶÉ1:$(aa%)=¤Wf(z`$)¸:$(aa%)=z`$ºË» ÉXf%:òzb½/ÉId%:$(Va%)=m_$:_`%=£:``%=£:$Wa%="file_fec"Ã/ÉYf%:$(Va%)=x`$:_`%=¹:``%=£:$Wa%="file_fec"ɺÉZf%:R_%!0=v`%:È−262348,,R_%:$(Y`%(12))=Ã(R_%!44):$(Y`%(13))=Ã(R_%!56):$(Y`%(14))=Ã(R_%!52-R_%!44):$(Y`%(15))=Ã(R_%!56-R_%!48):$(Y`%(16))=Ã((R_%!72)€&FFFF):$(Y`%(17))=Ã((R_%!72)>>16)Ó$Ë:È−262376,,Fc%!20,Fc%!24,Fc%!28ÕÉ&400C1:ò_a:çaf%<d_%…òe_(¹)ÙÉ&400C9:çu`%=nc%…ÜçCd%…òBc(b_%,-1)ÝÍÞÉ&80E1E:òjc(Ea$)áË:çKf%<>0…ã7Fc%!0=256:Fc%!12=If%:Fc%!16=Kf%:È−262375,17,Fc%,Hf%çÍèÍ:áëÝòa_(Kc%):êbf%,cf%,df%,Wb%:êef%,ff%,gf%,hf%,x%,y%:Wb%=48:K_%!0=Kc%:È−262344,,K_%¸bf%:cf%=K_%!4-K_%!20:df%=K_%!16-K_%!24:È”bf%:çAb%…õÏff%=K_%!40-K_%!32:ef%=K_%!28-ff%:gf%=(ef%-cf%)◰Wb%:hf%=(df%-K_%!32)◰Wb%:ãx%=ef%-(gf%+hf%)¸K_%!36⇦Wb%:ìx%,K_%!32:ð1,ff%,ff%:íx%:hf%=(df%-K_%!40)◰Wb%:ãx%=ef%-(gf%-hf%)¸K_%!36⇦Wb%:ìx%,K_%!40:ð1,ff%,-ff%:íx% Í:ȉJ_%ÊÉ1:È−530049,,K_%É2:È−281293,,K_%É3:È−284547,,K_%
  30478. Ë:È−262346,,K_%¸bf%:Î:áÚÝò`b(Tb%):êi_%,if%,i%:i_%=¤j_(Tb%):q`%=Tb%:R_%!0=q`%:È−262348,,R_%:if%=R_%!32:xd%=(R_%!64)>>12:ãi%=0¸6:h`%(i%)=(R_%?(36+i%)):íi%:òea(Ra%,4,if%€(1<<1)):òea(Ra%,5,if%€(1<<4)):òea(Ra%,6,if%€(1<<12)):òea(Ra%,7,L`%?i_%) Þòea(Ra%,8,if%€(1<<6)):òea(Ra%,9,if%€(1<<10)):òea(Ra%,10,if%€(1<<11)):òea(Ra%,20,if%€(1<<31)):òea(Ra%,57,if%€(1<<13)):òea(Ra%,59,if%€(1<<8)):òea(Ra%,60,if%€(1<<9)):òea(Ra%,62,if%€(1<<14)):òea(Ra%,63,if%€(1<<15)):ãi%=0¸6*9òea(Ra%,13+i%,if%€(1<<(24+i%))):íi%:ç(if%€(1<<31))=0…-~òea(Ra%,14,(if%€(1<<7))=0):òea(Ra%,13,(if%€(1<<7))=0):òea(Ra%,15,if%€(1<<0)):òea(Ra%,17,if%€(1<<2)):òea(Ra%,19,if%€(1<<3))2€Í:òjf(Ra%,Sa%,¤kf("EDTP",$(J`%+28*i_%))):òha(6,$(f`%+20*xd%)):ãi%=0¸6:òAe(2+i%,h`%(i%)):íi%:òEf(-1):òdc(Ra%,0):òib(Ra%,-1):á=jÝòEf(lf%):êmf%,nf%,of%:mf%=¤Ge(Ra%,20):nf%=¤Ge(Ra%,15):of%=¤Ge(Ra%,17)☓¤Ge(Ra%,19):ç(lf%=-1)☓(lf%=20)…Còpf(Ra%,16,¬mf%)DÍ:ç(lf%=-1)☓(lf%=15)…F6òpf(Ra%,13,¬nf%):òpf(Ra%,14,¬nf%):òpf(Ra%,16,¬nf%)IÍ:ç(lf%<>15)…Kòpf(Ra%,18,mf%€(¬of%))LÍ:áO\Ýòkb:êif%,i_%,i%:R_%!0=q`%:È−262348,,R_%:if%=(R_%!32)€(&1F<<16):ç¤Ge(Ra%,15)…if%+=(1<<0)Uç¤Ge(Ra%,4)…if%+=(1<<1)Vç¤Ge(Ra%,17)…if%+=(1<<2)Wç¤Ge(Ra%,19)…if%+=(1<<3)Xç¤Ge(Ra%,5)…if%+=(1<<4)Yi_%=¤j_(q`%):ç¤Ge(Ra%,7)…[L`%?i_%=1<<5\Ì:L`%?i_%=0^Í:ç¤Ge(Ra%,8)…if%+=(1<<6)`笤Ge(Ra%,14)…if%+=(1<<7)aç¤Ge(Ra%,59)…if%+=(1<<8)bç¤Ge(Ra%,60)…if%+=(1<<9)cç¤Ge(Ra%,9)…if%+=(1<<10)dç¤Ge(Ra%,10)…if%+=(1<<11)eç¤Ge(Ra%,6)…if%+=(1<<12)fç¤Ge(Ra%,57)…if%+=(1<<13)gç¤Ge(Ra%,62)…if%+=(1<<14)hç¤Ge(Ra%,63)…if%+=(1<<15)i-ãi%=0¸7:ç¤Ge(Ra%,13+i%)…if%+=(1<<(24+i%))kRíi%:R_%!32=if%:R_%!64=xd%<<12:ãi%=0¸6:R_%?(36+i%)=h`%(i%):íi%:q`%=¤T_(R_%,1):ávÝòwb(Tb%,Ub%):çUb%=-4…xòqf(Tb%,-4)yÌ:òxb(Tb%):çyb%>0…| çyb%=1…}òqf(Tb%,G`%!0)~Ì:òqf(Tb%,-1)€ÍŴÌ:ç(Ub%>=0)…◰òqf(Tb%,Ub%)☓ÍŶÍŷÍ:á⇨Ýòqf(Tb%,Ub%):êi_%,if%,rf%,sf$,tf$,uf%,vf%,Gc%,wf%:êt$,v$,m$,s$:o`%=Tb%:p`%=Ub%:i_%=¤j_(Tb%):R_%!0=o`%:È−262348,,R_%:ȉUb%Ê‹;É-4:if%=(R_%!60)€&FF000FFF:if%=if%☓&14:ç(if%€(1<<6))=0…„0if%=(if%€&FFF)☓((R_%?36)<<24)☓((R_%?37)<<28)—!Í:rf%=R_%+76:sf$+=¤g`("TBAR")œTÉ-1:òxb(o`%):if%=R_%!(92+32*(G`%!0)+16):rf%=R_%+92+32*(G`%!0)+20:sf$+=¤g`("SEL") I:if%=R_%!(92+32*p`%+16):rf%=R_%+92+32*p`%+20:sf$+=¤kf("ICNR",Ã(Ub%))¤ZË:tf$=¤xf("EDIC",$(J`%+28*i_%),sf$):uf%=(if%€1)>0:vf%=(if%€2)>0:Gc%=(if%€&100)>0:çuf%…ª    çGc%…«6t$=¤Xc(rf%!0):m$=Ã(rf%!8):çrf%!4<>-1…v$=¤Xc(rf%!4)®Ì:t$=À¤Xc(rf%),12)°Í±Í:çvf%€(¬uf%)…³    çGc%…´s$=¤Xc(rf%!0):m$=Ã(rf%!8)¶Ì:s$=À¤Xc(rf%),12)¸Í¹6Í:vd%=(if%>>12)€15:zd%=(if%>>16)€31:ç(if%€(1<<6))…½,`d%=7:Be%=0:òyf((if%>>24)€255,De$,Fe,He)ÀIÌ:`d%=(if%>>24)€15:Be%=(if%>>28)€15:De$="Homerton.Medium":Fe=12:He=12ÆáÍ:òjf(Na%,Oa%,tf$):òea(Na%,12,uf%):òea(Na%,13,vf%):òea(Na%,14,Gc%):òha(0,t$):òha(1,s$):òha(2,v$):òha(3,m$):òea(Na%,15,if%€(1<<2)):òea(Na%,17,if%€(1<<3)):òea(Na%,18,if%€(1<<4)):òea(Na%,16,if%€(1<<5)):òea(Na%,41,if%€(1<<6))Ôâòea(Na%,20,if%€(1<<7)):òea(Na%,19,if%€(1<<9)):òea(Na%,21,if%€(1<<10)):òea(Na%,22,if%€(1<<11)):òea(Na%,39,if%€(1<<22)):òha(4,$(e`%+20*vd%)):òha(5,Ã(zd%)):òAe(0,`d%):òAe(1,Be%):òha(19,De$):òha(20,ÀÃ(Fe),4)):òha(21,ÀÃ(He),4))à?òea(Na%,53,Fe=He):ãi%=12¸14:òpf(Na%,i%,p`%=-1):íi%:çp`%=-1…åãi%=23¸26:òpf(Na%,i%,1):íi%è©Í:òpf(Na%,15,p`%=-4):òpf(Na%,16,p`%=-4):òpf(Na%,20,p`%=-4):òpf(Na%,21,p`%=-4):ãi%=27¸32:òpf(Na%,i%,p`%=-4):íi%:òpf(Na%,39,p`%=-4):òGf(-1):òdc(Na%,0):wf%=-1:çp`%<>-1…õçGc%…wf%=25öçvf%…wf%=24÷çuf%…wf%=23øÍ:òib(Na%,wf%):áü(ÝòGf(lf%):êt%,s%,i%,f%,zf%:çp`%<>-1…ÿç(lf%=-1)☓(lf%<=14)…t%=¤Ge(Na%,12):s%=¤Ge(Na%,13):i%=¤Ge(Na%,14):òpf(Na%,23,¬t%):òpf(Na%,24,(¬s%)☓(t%€i%)):òpf(Na%,25,¬(t%€i%)):òpf(Na%,26,¬i%)Í8Í:f%=¤Ge(Na%,41):zf%=¤Ge(Na%,53):ç(lf%=-1)☓(lf%=41)… Nãi%=33¸38:òpf(Na%,i%,f%):íi%:ãi%=45¸49:òpf(Na%,i%,¬f%):íi%:òpf(Na%,53,¬f%)"Í:ç(lf%=-1)☓(lf%=41)☓(lf%=53)…'ãi%=50¸52:òpf(Na%,i%,(¬f%)☓zf%):íi%&Í:È−262355,,A`%:ç¤gb(A`%!0,A`%!4)…òib(Na%,-1)Í:áiÝòhb(y_%):êif%,_f%,rf%,`f%,Ag%,pe,qe:êBg%,Cg%,Dg%:êi%,t%,s%,Eg%,Fg%,p%:R_%!0=o`%:È−262348,,R_%:ȉp`%Ê&É-4:_f%=R_%+60:rf%=R_%+76)BÉ-1:òxb(o`%):_f%=R_%+92+32*(G`%!0)+16:rf%=R_%+92+32*(G`%!0)+20-:çp`%>=0…/?_f%=R_%+92+32*p`%+16:rf%=R_%+92+32*p`%+20:`f%=R_%+92+32*p`%2Í3=Ë:Ag%=R_%!68:if%=(_f%!0)€(1<<21):ç¤Ge(Na%,15)…if%+=(1<<2)8ç¤Ge(Na%,16)…if%+=(1<<5)9ç¤Ge(Na%,17)…if%+=(1<<3):ç¤Ge(Na%,18)…if%+=(1<<4);ç¤Ge(Na%,19)…if%+=(1<<9)<ç¤Ge(Na%,20)…if%+=(1<<7)=ç¤Ge(Na%,21)…if%+=(1<<10)>ç¤Ge(Na%,22)…if%+=(1<<11)?ç¤Ge(Na%,39)…if%+=(1<<22)@/if%+=(vd%<<12):if%+=(zd%<<16):ç¤Ge(Na%,41)…C;if%+=(1<<6):Bg%=¨(Fe*16):Cg%=¨(He*16):çBg%<=0…Bg%=12*16GçCg%<=0…Cg%=12*16H2È−262273,,Y`%(19),Bg%,Cg%,0,0¸Dg%:çk`%(Dg%)>0…JÈ−262274,Dg%K Í:k`%(Dg%)+=1:if%+=(Dg%<<24)N#Ì:if%+=(`d%<<24):if%+=(Be%<<28)QÍ:ç(p`%>=0)☓(p`%=-4)…SJòGg(_f%!0,rf%):t%=¤Ge(Na%,12):s%=¤Ge(Na%,13):i%=¤Ge(Na%,14):çs%€(¬t%)…XEg%=©($(Y`%(1)))+1YÌ:Eg%=©($(Y`%(0)))+1[
  30479. Í:çi%…]Fg%=»($(Y`%(3)))^ Ì:Fg%=12`Í:çFg%<Eg%…bFg%=Eg%:òha(3,Ã(Fg%))dÍ:ç(¬i%)€(Eg%>12)…f(òea(Na%,14,1):òha(2,""):òGf(14):i%=¹jÍ:çt%…if%+=(1<<0)lçs%…if%+=(1<<1)mçi%…if%+=(1<<8)nçi%…oçs%€(¬t%)…prf%!0=Y`%(1):rf%!4=Ag%r
  30480. Í:çt%…t!rf%!0=Y`%(0):ç©($(Y`%(2)))>0…vrf%!4=Y`%(2)wÌ:rf%!4=-1yÍzÍ:rf%!8=Fg%|
  30481. Ì:çt%…~$(rf%)=$(Y`%(0))
  30482. Ì:çs%…Ŵ$(rf%)=$(Y`%(1))ŵÍ◰Í☓Í:_f%!0=if%:òyc(_f%,rf%) Í:ȉp`%Ê⇨,É-4:R_%?36=`d%:R_%?37=Be%:o`%=¤T_(R_%,1)™É-1:y_%=y_%€(¬&103):çyb%>0…’3ãi%=0¸yb%-1:òhe(o`%,G`%!(4*i%),if%€y_%,y_%):íi%“Ì:òbc(9,"")„Í–:çp`%>=0…−p`%=¤vc(o`%,p`%,`f%-8)ŒÌ:òbc(4,"")†͇Ë:ç¤Ge(Na%,41)…fl òHg(Dg%)¡Í:òtc(¹):á§FݤIg(uf$,Jg%,Kg%):êKc%:È−285634,,uf$¸Kc%:çJg%<>-1…È−285646,Kc%,Jg%«çKg%…È−285644,Kc%,1¬=Kc%®@ݤLg(Fg%,Mg%):êKc%:È−285634,,""¸Kc%:È−285645,,1,Fg%,Mg%:=Kc%µÝòNg(Qc%,Jg%,Og%):çOg%…·#È−285648,Qc%,2,0:È−285643,Jg%,1¹%Ì:È−285648,Qc%,7,0:È−285643,Jg%,0¼Í:á¿®ÝòNb:êi%:È−285632,010,0:È−285633,,"Sprites"¸Pg%:hc%=¤Ig("View/Edit",-1,0):ic%=¤Ig("Re-load",-1,0):kc%=¤Ig("Reset",-1,0):È−285633,,A_$¸Yc%:Qg%=¤Ig("Info",Ia%,0):ç`_%>=300…ËZc%=¤Ig("Help",-1,0)Ì Ì:Zc%=0ÎÜÍ:cc%=¤Ig("Options...",-1,0):ec%=¤Ig("Statistics...",-1,0):gc%=¤Ig("Custom sprites",Pg%,0):lc%=¤Ig("Quit",-1,0):È−285633,,"   Name:   "¸Rg%:oc%=¤Lg(12,0):È−285633,,""¸Sg%:xc%=¤Ig("Copy",Rg%,1):uc%=¤Ig("Rename",Rg%,1)Úå`c%=¤Ig("Delete",-1,0):zc%=¤Ig("Open",-1,0):_c%=¤Ig("Close",-1,0):Yf%=¤Ig("Save",Ua%,1):È−285633,,"Export"¸Tg%:Uf%=¤Ig("Icon names",Za%,1):Tf%=¤Ig("Templates",Ua%,1):È−285633,,A_$¸nc%:qc%=¤Ig("Create",Rg%,1):Ug%=¤Ig("",Sg%,0)æÔBd%=¤Ig("Select all",-1,0):Dd%=¤Ig("Clear selection",-1,0):Vg%=¤Ig("Export",Tg%,1):Ed%=¤Ig("Delete all",-1,0):Gd%=¤Ig("Sort templates",-1,0):Id%=¤Ig("Save",Ua%,1):È−285633,,"Copy"¸Wg%:Ld%=¤Ig("Up    ^U",-1,0)ïÑMd%=¤Ig("Down  ^D",-1,0):Nd%=¤Ig("Left  ^L",-1,0):Od%=¤Ig("Right ^R",-1,0):È−285633,,"No.:"¸Xg%:Pd%=¤Lg(4,Q`%):È−285633,,"Dim."¸Yg%:bd%=¤Ig("Both",-1,0):cd%=¤Ig("X",-1,0):dd%=¤Ig("Y",-1,0):È−285633,,""¸Zg%üÛKd%=¤Ig("Copy      ^C",Wg%,0):Qd%=¤Ig("Renumber",Xg%,0):Td%=¤Ig("Delete    ^X",-1,0):Ud%=¤Ig("Edit...   ^E",-1,0):È−285642,,1:ag%=¤Ig("Align     ^J",da%,0):bg%=¤Ig("Space out ^K",fa%,0):Xf%=¤Ig("Frame     ^F",ja%,1)    ÜVd%=¤Ig("Min. size",Yg%,0):Xd%=¤Ig("Center",Yg%,0):Zd%=¤Ig("Same size",Yg%,0):È−285633,,"Sprites from"¸cg%:pd%=¤Ig("Wimp area",-1,0):rd%=¤Ig("Custom area",-1,0):È−285633,,"Ensure"¸dg%:id%=¤Ig("Inside work area",-1,0)    ákd%=¤Ig("Inside visible area",-1,0):È−285633,,"Deleted"¸eg%:ld%=¤Ig("Undelete",-1,0):md%=¤Ig("Undelete & Move",-1,0):nd%=¤Ig("Purge",-1,0):È−285633,,"Misc"¸fg%:od%=¤Ig("Center to screen",-1,0):gg%=¤Ig("Sprite area",cg%,0)    ßhg%=¤Ig("Ensure icons",dg%,0):ig%=¤Ig("Deleted icons",eg%,0):È−285633,,"Window"¸Jd%:td%=¤Ig("Create icon...",-1,0):jg%=¤Ig("",Zg%,0):ed%=¤Ig("Select all       ^A",-1,0):fd%=¤Ig("Clear selection  ^Z",-1,0):È−285642,fd%,1     äZf%=¤Ig("Work area",ca%,1):gd%=¤Ig("Edit window...   ^W",-1,0):hd%=¤Ig("Edit title...    ^T",-1,0):kg%=¤Ig("Misc",fg%,0):sd%=¤Ig("Close window     ^Q",-1,0):È−285633,,"Button type"¸ud%:ãi%=0¸15:ub%=¤Ig($(e`%+20*i%),-1,0):íi%    +áÈ−285633,,"Button type"¸wd%:ãi%=0¸15:ub%=¤Ig($(f`%+20*i%),-1,0):íi%:yd%=0:_d%=0:òlg:È−285633,,"Size"¸Ee%:È−285634,,"10pt":È−285634,,"12pt":È−285634,,"16pt":È−285634,,"20pt":È−285634,,"24pt":È−285634,,"36pt":mg%=¤Lg(5,R`%)    ?ÍÈ−285633,,"Other"¸ng%:Pe%=¤Ig("Border",-1,0):Qe%=¤Ig("Filled",-1,0):Re%=¤Ig("H centre",-1,0):Se%=¤Ig("V centre",-1,0):Te%=¤Ig("R justified",-1,0):Ue%=¤Ig("Needs help",-1,0):Ve%=¤Ig("Allow adjust",-1,0)    GÝWe%=¤Ig("Half size",-1,0):Xe%=¤Ig("Shaded",-1,0):È−285633,,"Update"¸Ie%:Je%=¤Ig("Button type",-1,0):Ke%=¤Ig("ESG",-1,0):Le%=¤Ig("Fg col",-1,0):Me%=¤Ig("Bg col",-1,0):Ne%=¤Ig("Font",-1,0):Oe%=¤Ig("Other flags",ng%,0):á    S0Ýòog:È−285643,ec%,S`%=0:òNg(gc%,Pg%,Da%=1):á    X7Ýòpg(øce%,øde%,Ub%):êt$:òxb(b_%):ç(yb%=0)€(Ub%>=0)…    \(òea(b_%,Ub%,1):G`%!0=Ub%:yb%=1:Cd%=¹    ` Ì:Cd%=£    b&Í:òNg(Ug%,Sg%,yb%=0):t$="":çyb%>1…    f"t$="Selection":È−285640,Sg%,t$    hÌ:çyb%=1…    jt$=$(J`%+28*(G`%!0))    kÍ:È−285640,Sg%,"Template"    m<Í:È−285643,xc%,yb%<>1:È−285643,uc%,yb%<>1:x`$=t$:çyb%>1…    rÈ−285640,Ug%,"Selection"    s&Ì:È−285640,Ug%,"Template '"+t$+"'"    u™Í:È−285643,Bd%,S`%=0:È−285643,Dd%,yb%=0:È−285643,Ed%,S`%=0:È−285643,Gd%,S`%=0:òNg(Vg%,Tg%,S`%=0):È−285643,Id%,S`%=0:Aa%=£:ce%-=64:çyb%=0…     de%+=22    €Ì:de%+=66    ŵÍ:á    Ŷ?Ýòqg(øce%,øde%,Tb%,Ub%):êt$,rg$:òxb(Tb%):ç(yb%=0)€(Ub%>=0)…    ⇨G`%!0=Ub%:yb%=1    ⇧Í:òNg(jg%,Zg%,yb%=0):ȉyb%Ê    ‰É0:t$="No icon":rg$=t$    ’"É1:t$="Icon #"+Ã(G`%!0):rg$=t$    “(:t$="Selection":rg$=Ã(yb%)+" icons"    –¬Ë:È−285640,Zg%,rg$:È−285643,Qd%,yb%=0:È−285643,ag%,yb%<2:È−285643,bg%,yb%<2:È−285643,Xf%,yb%<2:È−285640,Pd%,Ã(t`%):È−285643,Zd%,yb%<2:R_%!0=Tb%:È−262348,,R_%:çR_%!68=1…    ¢È−285649,cg%,0    £Ì:È−285649,cg%,1    ¥ªÍ:È−285640,jg%,t$:È−285643,ed%,R_%!88=0:È−285643,fd%,yb%=0:òNg(hg%,dg%,R_%!88=0):È−262358,Tb%,I`%,1<<23,1<<23:òNg(ig%,eg%,I`%!0=-1):òNg(gg%,cg%,Da%=1):ce%-=64:çyb%=0…    ¯ de%+=22    °Ì:de%+=66    ²Í:á    µ=Ýòsg(øce%,øde%):È−285649,ud%,vd%:ce%+=16:de%+=22+vd%*44:á    »=Ýòtg(øce%,øde%):È−285649,wd%,xd%:ce%+=16:de%+=22+xd%*44:á    Á*Ýòug(øce%,øde%):çyd%<>0…È−285635,yd%,£    Ã çJ_%=2…    ÄÑÈ−285633,,"ESG"¸yd%:ub%=¤Lg(3,Q`%):È−285640,,Ã(zd%):ub%=¤Ig("16 (Action)",-1,0):ub%=¤Ig("18 (Default action)",-1,0):ub%=¤Ig("19 (Writable)",-1,0):ub%=¤Ig("20 (Display)",-1,0):ub%=¤Ig("21 (Group box)",-1,0)    ÌIub%=¤Ig("24 (24bit colour)",-1,0):ub%=¤Ig("25 (Slider)",-1,0):de%+=22    ÏLÌ:È−285633,,"ESG"¸yd%:ãi%=0¸15:ub%=¤Ig(Ã(i%),-1,0):íi%:de%+=22:çzd%<=15…    Ö È−285649,yd%,zd%:de%+=zd%*44    ØÍ    ÙÍ:ce%+=16:á    ÝFÝòvg(øce%,øde%,Tb%,Ub%):êi%,if%,wg%,xg%,yg%:ç_d%<>0…È−285635,_d%,£    à
  30483. ȉTb%Ê    áÉNa%:ȉUb%Ê    ãÉ34:wg%=`d%    äÉ37:wg%=Be%    åË:xg%=£:yg%=£    èAÉRa%:xg%=¤Ge(Ra%,9):yg%=(Ub%=27)☓(Ub%=39):wg%=h`%((Ub%-27)Ŵ4)    ì Ë:çxg%…    î=È−285633,,"Col"¸_d%:ub%=¤Lg(4,Q`%):È−285640,,Ã(wg%):çyg%…    ó&È−285634,,"None":È−285641,,wg%=255    õÍ    öQÌ:È−285633,,"Col"¸_d%:ãi%=0¸15:È−285634,,Ã(i%):È−285648,,i`%(i%),i%:íi%:çyg%…    þ È−285642,,1:È−285634,,"None"
  30484. Í:çwg%=255…
  30485. È−285649,_d%,16
  30486. Ì:È−285649,_d%,wg%
  30487. Í
  30488. Í:ce%+=16:de%+=22:ç(¬xg%)…
  30489.  
  30490. çwg%=255…
  30491. de%+=16*44+22
  30492. Ì:de%+=wg%*44
  30493. Í
  30494. Í:á
  30495. yÝòlg:êzg%,_g$,`g$,Ah$,p%,Jg%,Qc%:È−285633,,"Font"¸Ce%:`g$="":zg%=0:õ:f$=Ä40," "):È−262289,,m`%,zg%,-1¸,,zg%:çzg%<>-1…
  30496.  f$=$(m`%):p%=§f$,"."):çp%>0…
  30497. Ah$=Áf$,p%+1):f$=Àf$,p%-1)
  30498.  Ì:Ah$="(Regular)"
  30499. "Í:ç(f$<>`g$)€(zg%<>-1)…
  30500. $B`g$=f$:È−285634,Ce%,`g$¸Qc%:È−285633,,`g$¸Jg%:È−285646,Qc%,Jg%
  30501. )Í:È−285634,Jg%,Ah$
  30502. +Í:ýzg%=-1:á
  30503. /$ÝòBh(øce%,øde%,Tb%,Ub%):çUb%=48…
  30504. 1È−285640,mg%,ÀÃ(Fe),5)
  30505. 2Ì:È−285640,mg%,ÀÃ(He),5)
  30506. 4Í:de%+=7*44:á
  30507. 8nÝòCh(øce%,øde%,Tb%,Ub%):ê_g%:_g%=¤Ge(Na%,41):È−285643,Le%,_g%:È−285643,Me%,_g%:È−285643,Ne%,¬_g%:de%+=22:á
  30508. AGÝòYe(ce%,de%,Tb%,Ub%):Ze%=ce%:ae%=de%:v`%=Tb%:w`%=Ub%:u`%=-1:ȉTb%Ê
  30509. HÉ-2:òog:u`%=Yc%
  30510. K!Éb_%:òpg(ce%,de%,Ub%):u`%=nc%
  30511. NÉNa%:ȉUb%Ê
  30512. PÉ9,10:çp`%=-1…
  30513. R òCh(ce%,de%,Tb%,Ub%):u`%=Ie%
  30514. TÍ
  30515. UÉ28:òsg(ce%,de%):u`%=ud%
  30516. XÉ31:òug(ce%,de%):u`%=yd%
  30517. ['É34,37:òvg(ce%,de%,Tb%,Ub%):u`%=_d%
  30518. ^"É45,46:ce%+=16:de%+=22:u`%=Ce%
  30519. b'É48,51:òBh(ce%,de%,Tb%,Ub%):u`%=Ee%
  30520. eË
  30521. fÉRa%:ȉUb%Ê
  30522. hÉ23:òtg(ce%,de%):u`%=wd%
  30523. k6É27,31,35,39,43,47,51:òvg(ce%,de%,Tb%,Ub%):u`%=_d%
  30524. nË
  30525. o:ç¤j_(Tb%)>=0…
  30526. q òqg(ce%,de%,Tb%,Ub%):u`%=Jd%
  30527. sÍ
  30528. tË:çu`%<>-1…
  30529. v3A`%!0=ce%:A`%!4=de%:A`%!12=Tb%:È−285637,u`%,A`%
  30530. zÍ:á
  30531. ~ZÝò_b(Tb%,Dh%,Eh%,Fh%):È−262351,,N_%:È−262356,,Dh%,N_%!0+Eh%,N_%!4+Fh%:v`%=Tb%:w`%=-1:á
  30532. GÝòo_(Zb%,ab%,bb%,cb%):êcf%,df%,i%,Gh%,Hh%:òIh(0):çZb%>bb%…È“Zb%,bb%
  30533. ⇧çab%>cb%…È“ab%,cb%
  30534. …È−262351,,N_%:ȉQ_%Ê
  30535. ‰É0,1:ç¤j_(N_%!12)>=0…
  30536. ‘—R_%!0=N_%!12:È−262348,,R_%:cf%=R_%!4-R_%!20:df%=R_%!16-R_%!24:Zb%-=cf%:ab%-=df%:bb%-=cf%:cb%-=df%:òDc(S_%,Jh%,N_%!12,Zb%,ab%,bb%,cb%):òib(N_%!12,-1)
  30537. ŒÌ:çIb%€(Q_%=0)…
  30538. †+ãi%=0¸yb%-1:òKh(S_%,G`%!(4*i%),1,1):íi%
  30539.  Í
  30540. ¡Í
  30541. ¢‰É2,3:R_%!0=S_%:È−262348,,R_%:cf%=R_%!4-R_%!20:df%=R_%!16-R_%!24:Zb%-=cf%:bb%-=cf%:ab%-=df%:cb%-=df%:ç(R_%!88>0)€((bb%-Zb%)+(cb%-ab%)>=32)…
  30542. ¬rãi%=0¸R_%!88-1:Gh%=R_%+92+i%*32:Hh%=(Gh%!0<bb%)€(Gh%!8>=Zb%):Hh%=Hh%€(Gh%!4<cb%)€(Gh%!12>=ab%):çHh%€(i%<>Jh%)…
  30543. ± çQ_%=2…
  30544. ²òea(S_%,i%,1)
  30545. ³Ì:òhe(S_%,i%,1<<21,0)
  30546. µÍ
  30547. ¶    Í:íi%
  30548. ¸Í
  30549. ¹É4:çLh%…È−271361
  30550. »\K_%!0=256:K_%!12=0:K_%!16=1:K_%!20=N_%!12:K_%!24=N_%!16:K_%!28=N_%!0:K_%!32=N_%!4:ȉS_%Ê
  30551. ÃÉUa%:ç``%…
  30552. ÅK_%!36=1:K_%!40=&FFF
  30553. Ç#Ì:K_%!36=20+112*S`%:K_%!40=&FEC
  30554. ÊÍ:$(K_%+44)=¤Mh($(Va%))
  30555. ÌÉZa%:K_%!36=1:ȉVf%Ê
  30556. ÏÉ0:K_%!40=&FFB
  30557. ÐÉ1,2:K_%!40=&FFF
  30558. ÑË:$(K_%+44)=¤Mh($(aa%))
  30559. Ó#Ë:È−262375,17,K_%,N_%!12,N_%!16
  30560. Õ
  30561. É5,6,7
  30562. ×Ë:Q_%=-1:á
  30563. ÛNÝòNh(Oh%,Tb%,Ub%,Ph%,Qh%):êb%:È−6,161,&1C¸,,b%:Lh%=(b%€2)<>0:çLh%€(Oh%=4)…
  30564. àFA`%!0=Tb%:A`%!4=2:È−262350,,A`%:È−271360,&A1,1,A`%!28,j`%+8,j`%+24
  30565. äÌ:È−262352,1,j`%
  30566. æzÍ:Q_%=Oh%:S_%=Tb%:Jh%=Ub%:Rh%=Ph%:Sh%=Qh%:Th%=“(j`%!16-j`%!8):Uh%=“(j`%!20-j`%!12):È−262351,,N_%:Vh%=N_%!0:Wh%=N_%!4:á
  30567. óÝòfb:çLh%€(Q_%=4)…
  30568. õ È−271361
  30569. öÌ:È−262352,,-1
  30570. øÍ:òIh(0):çQ_%=7…
  30571. û@R_%!0=S_%:È−262347,,R_%:R_%!52=Xh%:R_%!48=Yh%:S_%=¤T_(R_%,¹) Í:Q_%=-1:á 2Ýòje(Tb%):j`%!0=Tb%:j`%!4=1:òNh(5,-1,-1,0,0):á 2Ýòie(Tb%):j`%!0=Tb%:j`%!4=2:òNh(6,-1,-1,0,0):á ”Ýòke(Tb%):R_%!0=Tb%:È−262348,,R_%:Xh%=R_%!52:Yh%=R_%!48:R_%!52=2000:R_%!48=-2000:Tb%=¤T_(R_%,¹):òib(Tb%,-1):j`%!0=Tb%:j`%!4=2:òNh(7,Tb%,-1,0,0):á ÝòZ_(ee%,Tb%,Ub%):ȉee%Ê !É1,256:òxb(Tb%):çyb%>0… $òZh(Tb%,-1) %Ì:çUb%>=0…òZh(Tb%,Ub%) 'Í (É4,1024:òxb(Tb%):çyb%>0… +òah(Tb%,-1) ,Ì:çUb%>=0…òah(Tb%,Ub%) .Í /Ë:á 2nÝòah(Tb%,Ub%):êcf%,df%,Zb%,bb%,ab%,cb%:R_%!0=Tb%:È−262347,,R_%:cf%=R_%!4-R_%!20:df%=R_%!16-R_%!24:çUb%>=0… 9G`%!0=Ub%:yb%=1 ;Ì:òxb(Tb%) =äÍ:òCc(Tb%,Zb%,ab%,bb%,cb%):È−262351,,N_%:j`%!4=5:j`%!8=Zb%+cf%:j`%!12=ab%+df%:j`%!16=bb%+cf%:j`%!20=cb%+df%:j`%!24=j`%!8-N_%!0:j`%!28=j`%!12-N_%!4:j`%!32=bh%+j`%!16-N_%!0:j`%!36=ch%+j`%!20-N_%!4:òNh(0,Tb%,Ub%,Zb%,ab%):òIh(1) Ká M­ÝòZh(Tb%,Ub%):êdh%,eh%,fh%,gh%:êhh%,ih%,jh%,kh%:êa,b,c:êlh%,mh%,nh%,oh%:êph%:êcf%,df%,Zb%,bb%,ab%,cb%:R_%!0=Tb%:È−262347,,R_%:cf%=R_%!4-R_%!20:df%=R_%!16-R_%!24:çUb%>=0… YG`%!0=Ub%:yb%=1 [Ì:òxb(Tb%) ]£Í:òCc(Tb%,Zb%,ab%,bb%,cb%):dh%=cf%+Zb%:fh%=df%+ab%:eh%=cf%+bb%:gh%=df%+cb%:lh%=bb%-Zb%:mh%=cb%-ab%:hh%=dh%:jh%=fh%:ih%=eh%:kh%=gh%:nh%=4:oh%=4:çnh%>lh%…nh%=lh% nçoh%>mh%…oh%=mh% oaR_%!0=Tb%:È−262347,,R_%:a=mh%/lh%:b=fh%-a*dh%:c=gh%+a*dh%:È−262351,,N_%:çN_%!4>(a*(N_%!0)+b)… {çN_%!4>(-a*(N_%!0)+c)… }çR_%!16>gh%…kh%=R_%!16-mh% jh%+=oh%:ph%=2:È“fh%,gh% ŵÌ:çR_%!4<dh%…hh%=R_%!4+lh% Ŷih%-=nh%:ph%=5:È“dh%,eh% ⇦Í ⇨Ì:çN_%!4>(-a*(N_%!0)+c)… …çih%<R_%!12…ih%=R_%!12 ‰hh%-=lh%-nh%:ph%=3 ‘Ì:çjh%>R_%!8…jh%=R_%!8 ›kh%+=mh%-oh%:ph%=4 ”Í „ŷÍ:j`%!4=6:j`%!8=dh%:j`%!12=fh%:j`%!16=eh%:j`%!20=gh%:j`%!24=hh%:j`%!28=jh%:j`%!32=ih%:j`%!36=kh%:òNh(1,Tb%,Ub%,Zb%,ab%):òIh(ph%):á ¤Ýòge(ee%):çQ_%<0… ¦¥È−262351,,N_%:j`%!4=6:j`%!8=N_%!0:j`%!12=N_%!4:j`%!16=N_%!0:j`%!20=N_%!4:R_%!0=N_%!12:È−262347,,R_%:j`%!24=R_%!4:j`%!28=R_%!8:j`%!32=R_%!12:j`%!36=R_%!16:çee%=1… ³òNh(3,N_%!12,N_%!16,0,0) ´Ì:òNh(2,N_%!12,N_%!16,0,0) ¶Í ·Í:á ºàÝòve(Tb%):êcf%,df%:R_%!0=Tb%:È−262347,,R_%:cf%=R_%!4-R_%!20:df%=R_%!16-R_%!24:A`%!0=Tb%:A`%!4=2:È−262350,,A`%:j`%!4=5:j`%!8=A`%!8+cf%:j`%!12=A`%!12+df%:j`%!16=A`%!16+cf%:j`%!20=A`%!20+df%:È−262351,,N_%:j`%!24=j`%!8-N_%!0 ÊZj`%!28=j`%!12-N_%!4:j`%!32=bh%+j`%!16-N_%!0:j`%!36=ch%+j`%!20-N_%!4:òNh(4,Tb%,2,0,0):á ÑMÝòDc(qh%,Ub%,rh%,Zb%,ab%,bb%,cb%):êsh%,th%,uh%,vh%:êwh,xh,yh%,i%:çUb%>=0… ÕG`%!0=Ub%:yb%=1 ×Ì:òxb(qh%) ÙÍ:çyb%>0… ÛãòCc(qh%,sh%,th%,uh%,vh%):wh=(bb%-Zb%)/(uh%-sh%):xh=(cb%-ab%)/(vh%-th%):ãi%=0¸yb%-1:P`%!0=qh%:P`%!4=G`%!(4*i%):È−262350,,P`%:P`%!8=Zb%+¨((P`%!8-sh%)*wh+0.5):P`%!12=ab%+¨((P`%!12-th%)*xh+0.5):P`%!16=Zb%+¨((P`%!16-sh%)*wh+0.5) æ/P`%!20=ab%+¨((P`%!20-th%)*xh+0.5):çqh%=rh%… èyh%=¤vc(qh%,G`%!(4*i%),P`%) ê1Ì:P`%!4=rh%:òyc(P`%+24,P`%+28):yh%=¤zh(P`%+4) ï    Í:íi% ñÍ:á öLݤ_h(`h$,Ai%):__%!0=0:$(__%+4)=`h$+½0:È−262367,__%,Ai%,A_$¸,P_%:=(P_%=1) ü#ÝòI_(Bi%):êee%:êŶ:îŶêÈ−262365:à È−263874:çBi%…     ee%=2  Ì:ee%=3 )Í:ç(¬¤_h(ö$+" (line "+Ã(fi)+")",ee%))… È−262365:à     Í:á $Ýòwc(Ci$):êub%:ub%=¤_h(Ci$,17):á FÝòbc(i_%,Di$):êEi$,Fi$,Gi$,y_%,ce%,de%:Ei$="":Fi$="":Gi$="":ȉi_%Ê GÉ0:$sa%=¤g`("MOD0"):Ei$=¤g`("SAVE"):Fi$=¤g`("DCRD"):Gi$=¤g`("CANC") 7É1:$sa%=¤g`("MOD0"):Ei$=¤g`("DALL"):Gi$=¤g`("CANC")  7É2:$sa%=¤g`("MOD0"):Ei$=¤g`("LNEW"):Gi$=¤g`("CANC") $)É3:$sa%=¤kf("NORM",Di$):Fi$=¤g`("OK") '%É4:$sa%=¤g`("NUPD"):Fi$=¤g`("OK") *%É5:$sa%=¤g`("NOSH"):Fi$=¤g`("OK") -%É6:$sa%=¤g`("NOCH"):Fi$=¤g`("OK") 0)É7:$sa%=¤kf("TIDY",Di$):Fi$=¤g`("OK") 37É8:$sa%=¤g`("MOD0"):Ei$=¤g`("DCRD"):Gi$=¤g`("CANC") 7%É9:$sa%=¤g`("NSEL"):Fi$=¤g`("OK") :&É10:$sa%=¤g`("NFRM"):Fi$=¤g`("OK") =OË:$ta%=Ei$:$ua%=Fi$:$va%=Gi$:y_%=(1<<2)+(1<<5)+(1<<22)+(&FF<<24):ç©(Ei$)=0… C$òHi(ra%,1,(1<<22)+(&11<<24),y_%) EÌ:òHi(ra%,1,wa%,y_%) GÍ:ç©(Fi$)=0… I$òHi(ra%,2,(1<<22)+(&11<<24),y_%) JÌ:òHi(ra%,2,xa%,y_%) LÍ:ç©(Gi$)=0… N$òHi(ra%,3,(1<<22)+(&11<<24),y_%) OÌ:òHi(ra%,3,ya%,y_%) QsÍ:A`%!0=ra%:È−262347,,A`%:ce%=(bh%-(A`%!12-A`%!4))Ŵ2:de%=(ch%+(A`%!16-A`%!8))Ŵ2:È−262356,,ra%,ce%,de%:Bf%=i_%:á \uÝòD`:Ii%=›:È−81¸Ji%:Ki%=Ii%-&8000:È−262380,Ki%+Ji%,-1¸Ki%:Li%=Ki%+&8000:çLi%<=Ii%…Ŷ0,"Can't claim space for heap" dÈ−29,0,Ii%,,Li%-Ii%:á g9ݤH`(Vc%):êMi%,Ni%,Oi%,Pi%:È−29,1,Ii%¸,,Mi%:çVc%>Mi%… kjNi%=1+(Vc%ŴJi%):È−262380,Ki%+Ni%*Ji%,-1¸Ki%:Oi%=Li%:Li%=Ki%+&8000:È−29,5,Ii%,,Li%-Oi%:È−29,1,Ii%¸,,Mi% rÍ:çVc%>Mi%… tòwc(¤g`("NOHP")):Pi%=-1 vÌ:È−29,2,Ii%,,Vc%¸,,Pi% x
  30572. Í:=Pi% {DÝòQi(Pi%):êMi%,Ni%,z_%:È−29,3,Ii%,Pi%:È−29,1,Ii%¸,,Mi%:çMi%>Ji%… €1Ni%=0:õ:È−131101,5,Ii%,,-Ji%¸;z_%:ç(z_%€1)=0… Ŷ
  30573. Ni%+=1 ŷÍ:ý(z_%€1)<>0:çNi%>0… ⇨-È−262380,Ki%-Ni%*Ji%,-1¸Ki%:Li%=Ki%+&8000 …"Í:È−29,5,Ii%,,(Li%-Ii%)-Ii%!12 ‰Í:á “1ݤze(øRi%,Si%,re%,Ti%,Ui%):êVi%:Vi%=Ri%:çre%… — Ri%+=Si% −Ì:Ri%-=Si% œÍ:çRi%>Ui%…Ri%=Ui% ‡çRi%<Ti%…Ri%=Ti% fi=(Vi%<>Ri%) ¡>ݤC`(Ri$):êWi%:È−35,Ri$,A`%,256,0¸,,Wi%:A`%?Wi%=13:=$(A`%) ¨0ݤXi(Yi%,Zi%):êai$,bi%,ci%,di%:çYi%€(1<<31)… «?bi%=(Yi%€(1<<26))>0:ci%=(Yi%€(1<<30))>0:di%=(Yi%€(1<<28))>0 ®>Ì:bi%=(Yi%€(1<<0))>0:ci%=(Yi%€(1<<3))>0:di%=(Yi%€(1<<2))>0 ²Í:ai$="Swin_":çbi%…ai$+="t" µçci%…ai$+="h" ¶çdi%…ai$+="v" ·çZi%…ai$+="o" ¸=ai$ º,ݤei(fi%,v%):êgi%:È−53,fi%,v%¸,,gi%:=gi% ¿›Ýò_a:êhi%,ii%,ji%,ki%:hi%=¤ei(-1,4):ii%=¤ei(-1,5):ji%=¤ei(-1,11):ki%=¤ei(-1,12):rb%=1<<hi%:sb%=1<<ii%:bh%=(ji%+1)*rb%:ch%=(ki%+1)*sb%:çCb%<rb%… Ë Cb%=rb% ÌÌ:Cb%-=(Cb%◰rb%) ÎÍ:çDb%<sb%… Ð Db%=sb% ÑÌ:Db%-=(Db%◰sb%) Ó-Í:òha(28,Ã(Cb%)):òha(29,Ã(Db%)):çFb%<rb%… × Fb%=rb% ØÌ:Fb%-=(Fb%◰rb%) ÚÍ:çGb%<sb%… Ü Gb%=sb% ÝÌ:Gb%-=(Gb%◰sb%) ß;Í:òha(30,Ã(Fb%)):òha(31,Ã(Gb%)):af%=(bh%-100-Ya%)Ŵc_%:á åÝòib(Tb%,Ub%):êl%:çUb%>=0… èNA`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:l%=©($(A`%!28)):È−262354,Tb%,Ub%,,,-1,l% íÌ:È−262354,Tb%,-1,0,0,1<<25 ðÍ:á óÝòIh(i%):ên$,li%,mi%:ȉi%Ê ö#É0:n$="ptr_default":li%=0:mi%=0 ú É1:n$="ptr_hand":li%=7:mi%=6 þ!É2:n$="ptr_sizet":li%=7:mi%=6!É3:n$="ptr_sizer":li%=5:mi%=5!É4:n$="ptr_sizeb":li%=7:mi%=4
  30574. "É5:n$="ptr_sizel":li%=10:mi%=5Ë:n`%!0=&03020100:çi%=0…$È−262377,36,,n$,&2,li%,mi%,0,n`%*Ì:È−46,&100+36,Ga%,n$,&2,li%,mi%,0,n`%Í:ni%=i%:á?Ýòyc(_f%,rf%):êif%,s$,s%,Wi%:if%=_f%!0:ç(if%€&800100)=&100…,s$=¤Xc(rf%!0):Wi%=rf%!8:çWi%>256…Wi%=256 s%=¤H`(Wi%):çs%>0…"1$(s%)=Às$,Wi%-1):rf%!0=s%:ç(if%€1)€(rf%!4>0)…%&s$=¤Xc(rf%!4):s%=¤H`(©s$+1):çs%>0…)$(s%)=s$:rf%!4=s%+Ì:rf%!4=-1-Í.Í/(Ì:_f%!0=_f%!0€(¬(1<<8)):$rf%=Às$,11)3Í4Í:ç(if%€&800040)=&40…6k`%((if%)>>24)+=17Í:á;&ÝòGg(if%,rf%):ç(if%€&800100)=&100…=&òQi(rf%!0):ç(if%€1)€(rf%!(4)<>-1)…?òQi(rf%!4)AÍBÍ:ç(if%€&800040)=&40…DòHg(if%>>24)EÍ:áNjÝòdc(Kc%,oi%):êpi%,qi%,ri%,Wb%,Xb%:A`%!0=Kc%:È−262347,,A`%:pi%=((A`%!32€(1<<16))=0):Wb%=0:Xb%=0:ȉoi%ÊVÉ1,2:ç(oi%=1)☓pi%…XIqi%=bh%Ŵ2:ri%=ch%Ŵ2:Wb%=qi%-(A`%!12+A`%!4)Ŵ2:Xb%=ri%-(A`%!16+A`%!8)Ŵ2]Í^ É3:çpi%…`Wb%=-A`%!4:Xb%=ch%-A`%!16bÍc É4:çpi%…e!Wb%=bh%-A`%!12:Xb%=ch%-A`%!16gÍhkË:A`%!4=A`%!4+Wb%:A`%!8=A`%!8+Xb%:A`%!12=A`%!12+Wb%:A`%!16=A`%!16+Xb%:A`%!28=-1:È−262341,,A`%:çKc%=f_%…pòg_(h_%,-1,A`%!4,A`%!16)qÍ:át0Ýòl_(Kc%):êi%:A`%!0=Kc%:È−262342,,A`%:ȉKc%Êy@Éb_%:A`%!0=Xa%:È−262342,,A`%:A`%!0=qa%:È−262342,,A`%:çS`%>0…ãi%=0¸S`%-1:òk_(i%):íi%ŵÍ◰ Éf_%:A`%!0=h_%:È−262342,,A`%ŷË:á⇨)Ýòg_(Kc%,si%,ti%,ui%):êWb%,Xb%:ȉKc%Ê…Éh_%:Wb%=16:Xb%=-16•‘Ë:A`%!0=Kc%:È−262347,,A`%:A`%!12=ti%+Wb%+(A`%!12-A`%!4):A`%!8=ui%+Xb%-(A`%!16-A`%!8):A`%!4=ti%+Wb%:A`%!16=ui%+Xb%:A`%!28=si%:È−262341,,A`%:áŒÝòsc(i_%):çi_%>=0…†8A`%!0=K`%!(4*i_%):È−262347,,A`%:ç(A`%!32€(1<<16))=0…fl_A`%!28=-1:È−262341,,A`%:$(J`%+28*i_%+14)=¤Xi(A`%!32,1):òHi(b_%,i_%,0,0):çT`%=0…H_%=H_%€(¬1)¤T`%+=1:òib(K`%!(4*i_%),-1)¦ͧÍ:áªÝòk_(i_%):çi_%>=0…¬8A`%!0=K`%!(4*i_%):È−262347,,A`%:ç(A`%!32€(1<<16))>0…¯iÈ−262342,,A`%:È−262347,,A`%:$(J`%+28*i_%+14)=¤Xi(A`%!32,0):òHi(b_%,i_%,0,0):çK`%!(4*i_%)=o`%…òl_(Na%)´çK`%!(4*i_%)=q`%…òl_(Ra%)µT`%-=1:çT`%=0…H_%=H_%☓1·͸Í:á¼@ݤWf(s$):êi%:ãi%=1¸©(s$):a%=–(Ás$,i%,1)):ç(a%>=65)€(a%<=90)…ÁÁs$,i%,1)=½(a%+32)ÂÍ:íi%:=s$ÇAݤvi(s$):êi%:ãi%=1¸©(s$):a%=–(Ás$,i%,1)):ç(a%>=97)€(a%<=122)…ÌÁs$,i%,1)=½(a%-32)ÍÍ:íi%:=s$Ò@ݤMh(f$):êp%,q%:q%=0:õ:p%=q%+1:q%=§f$,".",p%):ýq%=0:=Áf$,p%)Ü7ݤn_(f$):êp%,q%:p%=1:õ:q%=§f$,".",p%):çq%>0…p%=q%+1âýq%=0:=Àf$,p%-2)æGݤXc(s%):êi%,n$:i%=0:È”(s%?i%>31)€(i%<255):n$+=½(s%?i%):i%+=1:Î:=n$ï!ݤRf(f$):êOh%:Oh%=0:ç©(f$)>0…óÈ−8,17,f$¸Oh%ôÍ:=(Oh%=1)øvÝòhe(Tb%,Ub%,wi%,xi%):êyi%,zi%:A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:yi%=A`%!24:zi%=(yi%€¬xi%)ŵwi%:ç(zi%€&800040)=&40…k`%(zi%>>24)+=1Í:ç(yi%€&800040)=&40…òHg(yi%>>24)"Í:A`%!8=wi%:A`%!12=xi%:çJ_%=2…    È−281301,,A`%
  30575. Ì:È−262349,,A`% Í:á[ÝòHi(Tb%,Ub%,wi%,xi%):êyi%,zi%:A`%!0=Tb%:A`%!4=Ub%:A`%!8=wi%:A`%!12=xi%:È−262349,,A`%:áUÝòea(Tb%,Ub%,f%):ê_i%:A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:_i%=(A`%!24)€(1<<21):çf%… A`%!8=1<<21!Ì:A`%!8=0#Í:A`%!12=1<<21:ç_i%<>A`%!8…& çJ_%=2…(È−281301,,A`%)Ì:È−262349,,A`%+Í,Í:á/IݤGe(Tb%,Ub%):A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:=((A`%!24)€(1<<21))>05UÝòpf(Tb%,Ub%,f%):ê_i%:A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:_i%=(A`%!24)€(1<<22):çf%…<A`%!8=(1<<22)=Ì:A`%!8=0?Í:A`%!12=1<<22:ç_i%<>A`%!8…B çJ_%=2…DÈ−281301,,A`%EÌ:È−262349,,A`%GÍHÍ:áKIݤgb(Tb%,Ub%):A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:=((A`%!24)€(1<<22))>0ROÝòPa(`i%,Aj%,Ub%):Y`%(`i%)=Aj%!(92+Ub%*32+20):Z`%(`i%)=Aj%!0:a`%(`i%)=Ub%:áX>Ýòha(`i%,uf$):$(Y`%(`i%))=uf$:òHi(Z`%(`i%),a`%(`i%),0,0):á^OÝòQa(`i%,Aj%,Ub%):b`%(`i%)=Aj%!(92+Ub%*32+20):c`%(`i%)=Aj%!0:d`%(`i%)=Ub%:áe4ÝòAe(`i%,Bj%):êc$,Cj%:c$=Ã(Bj%):çBj%=&FF…c$="--"i#$(b`%(`i%))=c$:Cj%=&07:çBj%<16…lCj%=(Bj%<<4)+i`%(Bj%)m6Í:Cj%=Cj%<<24:òHi(c`%(`i%),d`%(`i%),Cj%,&FF<<24):ás)ÝòFf(`i%,øBj%,Si%,re%,xg%):êDj%:çre%…vDj%=Bj%+Si%wÌ:Dj%=Bj%-Si%y Í:ç(Dj%€&FF)=255…Dj%=Dj%+Si%{    çxg%…|Dj%=Dj%€&FF}Ì:çDj%<0…Dj%=0çDj%>&F…Dj%=&F€Í:çDj%<>Bj%…ŵBj%=Dj%:òAe(`i%,Bj%)☓Í:á⇨Dݤj_(Kc%):êi%:i%=0:È”(K`%!(4*i%)<>Kc%)€(i%<S`%):i%+=1:Î:çi%=S`%…‘çKc%=qa%…’    i%=-2‹ Ì:i%=-1“Í”    Í:=i%—xÝòjf(Kc%,Ej%,tf$):êbb%,cb%:$(Ej%)=tf$:A`%!0=Kc%:È−262368,,A`%:bb%=A`%!12:cb%=A`%!16:È−262347,,A`%:ç(A`%!32€(1<<16))…¡$È−262353,-1,A`%!4,A`%!16,bb%,cb%¢Í:á¦&ÝòAc(Tb%,Fj%):êi%:òxb(Tb%):çyb%>0…ª+ãi%=0¸yb%-1:òKh(Tb%,G`%!(4*i%),1,1):íi%­Ì:çFj%>=0…òKh(Tb%,Fj%,1,1)°Í:yb%=0:á´AÝòKh(Gj%,Ub%,Hj%,Ij%):A`%!0=Gj%:A`%!4=Ub%:È−262350,,A`%:çHj%…¹òGg(A`%!24,A`%+28)ºMÍ:È−262340,,A`%:È−262353,Gj%,A`%!8-20,A`%!12-20,A`%!16+20,A`%!20+20:çIj%…¾ç(Gj%=o`%)€(Ub%=p`%)…¿p`%=-1000ÀÍ:ç(Gj%=v`%)€(Ub%=w`%)…Â
  30576. w`%=-1ÃÍÄÍ:òtc(¹):áÈ(ݤzh(Jj%):êKj%,Lj%,Mj%,Nj%,Kc%:çEb%…ËmKj%=¤Oj(Jj%!4,Fb%):Lj%=¤Oj(Jj%!8,Gb%):Jj%!4=Jj%!4-Kj%:Jj%!8=Jj%!8-Lj%:Jj%!12=Jj%!12-Kj%:Jj%!16=Jj%!16-Lj%Ñ Í:çBb%…ÓQKj%=¤Oj(Jj%!4,Cb%):Lj%=¤Oj(Jj%!8,Db%):Mj%=¤Oj(Jj%!12,Cb%):Nj%=¤Oj(Jj%!16,Db%)×SÌ:Kj%=¤Oj(Jj%!4,rb%):Lj%=¤Oj(Jj%!8,sb%):Mj%=¤Oj(Jj%!12,rb%):Nj%=¤Oj(Jj%!16,sb%)ÜgÍ:Jj%!4=Jj%!4-Kj%:Jj%!8=Jj%!8-Lj%:Jj%!12=Jj%!12-Mj%:Jj%!16=Jj%!16-Nj%:çJj%!4>=Jj%!12…Jj%!12=Jj%!4+4â!çJj%!8>=Jj%!16…Jj%!16=Jj%!8+4ãdÈ−262338,,Jj%¸Kc%:È−262353,Jj%!0,Jj%!4-12,Jj%!8-12,Jj%!12+12,Jj%!16+12:çKc%>D_%…òwc(¤g`("MICX"))æòtc(¹):=Kc%ê'ݤOj(c%,Pj%):êSi%:Si%=c%◰Pj%:çc%<0…îç(-Si%)>(Pj%>>1)…Si%+=Pj%ïÌ:çSi%>(Pj%>>1)…Si%-=Pj%ñ
  30577. Í:=Si%õRÝòvb(Tb%,øUb%,Wc%):êi%,Zb%,ab%,bb%,cb%,Wb%,Xb%,Kc%:òxb(Tb%):ç(yb%=0)€(Ub%>=0)…ùG`%!0=Ub%:yb%=1û%Í:òCc(Tb%,Zb%,ab%,bb%,cb%):ȉWc%ÊþÉ0:Wb%=16:Xb%=-16ÿÉ1:Wb%=0:Xb%=cb%-ab%É2:Wb%=0:Xb%=ab%-cb%É3:Wb%=Zb%-bb%:Xb%=0É4:Wb%=bb%-Zb%:Xb%=0Ë:çyb%>0…Ôãi%=0¸yb%-1:A`%!0=Tb%:A`%!4=G`%!(4*i%):È−262350,,A`%:A`%!4=Tb%:A`%!8=A`%!8+Wb%:A`%!12=A`%!12+Xb%:A`%!16=A`%!16+Wb%:A`%!20=A`%!20+Xb%:òyc(A`%+24,A`%+28):Kc%=¤zh(A`%+4):òea(Tb%,G`%!(4*i%),0):íi%:çUb%>=0…Ub%=Kc% òxb(Tb%)Í:á¾Ý¤T_(Aj%,tc%):êQj%,i_%,Rj%,Sj%,Tj%:Qj%=Aj%!0:È−262355,,A`%:Sj%=(A`%!0=Qj%):i_%=¤j_(Qj%):A`%!0=Qj%:È−262347,,A`%:Rj%=(A`%!32)€(1<<16):È−262339,,Aj%:È−262337,,Aj%+4¸Tj%:Aj%!0=Tj%:çi_%<>-1…'K`%!(4*i_%)=Tj%(Í:çQj%=o`%…*o`%=Tj%:çp`%>=0…,p`%=-1000-Í.Í:çQj%=q`%…q`%=Tj%0çQj%=v`%…1v`%=Tj%:w`%=-13 Í:çRj%…5È−262341,,Aj%6 Í:çSj%…8È−262354,Tj%,-1,0,0,1<<259CÍ:$(J`%+28*i_%+14)=¤Xi(Aj%!32,Rj%):òHi(b_%,i_%,0,0):çtc%…òtc(¹)==Tj%@Zݤvc(Tb%,Ub%,Jj%):êUj%:òKh(Tb%,Ub%,0,0):Jj%!4=Tb%:Uj%=¤zh(Jj%+4):ç(Tb%=o`%)€(Ub%=p`%)…G p`%=Uj%HÍ:ç(Tb%=v`%)€(Ub%=w`%)…J w`%=Uj%K
  30578. Í:=Uj%OTÝòRd(øTb%,Ub%):êi%,Vj%,Wj%,Xj%:R_%!0=Tb%:È−262348,,R_%:çUb%>=R_%!88…Ub%=R_%!88-1Tçt`%>=R_%!88…t`%=R_%!88-1UkVj%=R_%+92+Ub%*32:Wj%=R_%+92+t`%*32:ãi%=0¸28⇦4:Xj%=Vj%!i%:Vj%!i%=Wj%!i%:Wj%!i%=Xj%:íi%:Tb%=¤T_(R_%,1):áa−ÝòSd(øTb%):êi%,j%,f%,l%:òxb(Tb%):òYj(Tb%,1,1,0,0,0,1):È−262358,Tb%,I`%,(1<<21)+(1<<23),1<<21:R_%!0=Tb%:È−262348,,R_%:f%=t`%:l%=t`%+yb%-1:çl%>=R_%!88…kl%=R_%!88-1:f%=l%-(yb%-1)mFÍ:j%=0:ãi%=0¸yb%-1:òZj(R_%,f%+i%,Tb%,G`%!(4*i%)):笤Ge(Tb%,f%+i%)…sSÈ”(I`%!(4*j%)>=f%)€(I`%!(4*j%)<=l%):j%+=1:Î:òZj(R_%,I`%!(4*j%),Tb%,f%+i%):j%+=1y#Í:íi%:Tb%=¤T_(R_%,1):t`%=l%+1:á€AÝòad(Tb%,Fj%,aj%):êi%,pe%,qe%,Kc%:òxb(Tb%):ç(yb%=0)€(Fj%>=0)…☓G`%!0=Fj%:yb%=1ŷÍ:çyb%>0…⇦­òYj(Tb%,1,1,0,0,0,1):P`%!0=Tb%:P`%!4=G`%!0:È−262350,,P`%:pe%=P`%!16-P`%!8:qe%=P`%!20-P`%!12:ãi%=0¸yb%-1:P`%!0=Tb%:P`%!4=G`%!(4*i%):È−262350,,P`%:çaj%<>2…P`%!16=P`%!8+pe%›çaj%<>1…P`%!20=P`%!12+qe%“#Kc%=¤vc(Tb%,G`%!(4*i%),P`%):íi%„Í:጗ÝòZj(Aj%,bj%,Tb%,cj%):ê`f%,dj%,ej%:`f%=Aj%+92+32*bj%:dj%=`f%!(-8):ej%=`f%!(-4):`f%!(-8)=Tb%:`f%!(-4)=cj%:È−262350,,`f%-8:`f%!(-8)=dj%:`f%!(-4)=ej%:᧩Ýòt_:êi_%,t$,i$,Zb$,bb$,ab$,cb$,s$,fj%,gj%,m$:êhj%,Zb%,bb%,ab%,cb%:È−262351,,N_%:i_%=¤j_(N_%!12):t$="":i$="":Zb$="":bb$="":ab$="":cb$="":s$="":m$="":hj%=£:ç(i_%>=0)…¶!t$=$(J`%+28*i_%):çN_%!16>=-1…¸mA`%!0=N_%!12:È−262347,,A`%:fj%=N_%!0-(A`%!4-A`%!20):gj%=N_%!4-(A`%!16-A`%!24):m$=Ã(fj%)+","+Ã(gj%):ȉQ_%ʾVÉ0:i$="...":Zb%=fj%-(Vh%-j`%!8):ab%=gj%-(Wh%-j`%!12):bb%=Zb%+Th%:cb%=ab%+Uh%:hj%=¹Æ>É1:i$="...":Zb%=Rh%:ab%=Sh%:bb%=Zb%+Th%:cb%=ab%+Uh%:ȉni%ÊÎÉ2:cb%+=(N_%!4-Wh%)ÏÉ3:bb%+=(N_%!0-Vh%)ÐÉ4:ab%+=(N_%!4-Wh%)ÑÉ5:Zb%+=(N_%!0-Vh%)Ò Ë:hj%=¹Ô:çN_%!16>=0…×ii$=Ã(N_%!16):A`%!0=N_%!12:A`%!4=N_%!16:È−262350,,A`%:Zb%=A`%!8:bb%=A`%!16:ab%=A`%!12:cb%=A`%!20:hj%=¹àÍá Ë:çhj%…ãLZb$=Ã(Zb%):bb$=Ã(bb%):ab$=Ã(ab%):cb$=Ã(cb%):s$=Ã(bb%-Zb%)+"x"+Ã(cb%-ab%)èÍéÍêÍ:çt$<>$(Y`%(7))…òha(7,t$)ìçi$<>$(Y`%(8))…òha(8,i$)íçZb$<>$(Y`%(9))…òha(9,Zb$)î çbb$<>$(Y`%(26))…òha(26,bb$)ï çab$<>$(Y`%(10))…òha(10,ab$)ð çcb$<>$(Y`%(27))…òha(27,cb$)ñçs$<>$(Y`%(11))…òha(11,s$)òçm$<>$(Y`%(24))…òha(24,m$)óáõfiÝòxe(Tb%):êij%,jj%,Oh%,i%,kj%,lj%:êmj%,nj%,oj%,pj%,Kc%:ij%=¤Ge(da%,8):jj%=(31<<16)+(1<<21):È−262358,da%,G`%,jj%,(1<<16)+(1<<21):Oh%=G`%!0:òxb(Tb%):çyb%>1…þ
  30579. ȉOh%ÊÿÉ2,3:òYj(Tb%,0,0,1,0,1,1)É4:òYj(Tb%,0,1,0,0,1,1)É5,6:òYj(Tb%,1,1,0,1,0,0)É7:òYj(Tb%,1,0,1,1,1,1)0Ë:P`%!0=Tb%:P`%!4=G`%!0:È−262350,,P`%:ȉOh%ÊÉ2:kj%=P`%!8
  30580. !É3:kj%=P`%!8+(P`%!16-P`%!8)Ŵ2 É4:kj%=P`%!16É5:lj%=P`%!20#É6:lj%=P`%!12+(P`%!20-P`%!12)Ŵ2É7:lj%=P`%!12YË:ãi%=1¸yb%-1:P`%!0=Tb%:P`%!4=G`%!(4*i%):È−262350,,P`%:mj%=0:nj%=0:oj%=0:pj%=0:ȉOh%Ê!É2:mj%=kj%-P`%!8:çij%…nj%=mj%!4É3:mj%=kj%-(P`%!8+(P`%!16-P`%!8)Ŵ2):çij%…nj%=mj%$"É4:nj%=kj%-P`%!16:çij%…mj%=nj%'"É5:pj%=lj%-P`%!20:çij%…oj%=pj%*6É6:oj%=lj%-(P`%!12+(P`%!20-P`%!12)Ŵ2):çij%…pj%=oj%-"É7:oj%=lj%-P`%!12:çij%…pj%=oj%0jË:P`%!8=P`%!8+mj%:P`%!12=P`%!12+oj%:P`%!16=P`%!16+nj%:P`%!20=P`%!20+pj%:çP`%!16<=P`%!8…P`%!16=P`%!8+326$çP`%!20<=P`%!12…P`%!20=P`%!12+327#Kc%=¤vc(Tb%,G`%!(4*i%),P`%):íi%9Í:á= Ýòye:ç¤Ge(da%,3)☓¤Ge(da%,6)…?òpf(da%,9,1)@Ì:òpf(da%,9,0)B3Í:òpf(da%,3,¤Ge(da%,9)):òpf(da%,6,¤Ge(da%,9)):áG†Ýòpb(Tb%):êjj%,Oh%,i%,qj%,rj%,`f%,sj%,Wb%,Xb%,Kc%:ga%=»($(Y`%(18))):jj%=(31<<16)+(1<<21):È−262358,fa%,G`%,jj%,(1<<16)+(1<<21):Oh%=G`%!0:òxb(Tb%):çyb%>1…O çOh%=2…PòYj(Tb%,0,0,1,0,1,0)QÌ:òYj(Tb%,1,0,1,1,1,0)SÍ:ç¤Ge(fa%,4)…U qj%=ga%V%Ì:R_%!0=Tb%:È−262348,,R_%:çOh%=2…\@rj%=R_%!(92+32*(G`%!(4*(yb%-1)))):rj%-=R_%!(92+32*(G`%!0)+8)^EÌ:rj%=R_%!(92+32*(G`%!(4*(yb%-1)))+4):rj%-=R_%!(92+32*(G`%!0)+12)aÍ:çyb%>2…d4ãi%=1¸(yb%-2):`f%=R_%+92+32*(G`%!(4*i%)):çOh%=2…grj%-=(`f%!8-`f%!0)hÌ:rj%-=(`f%!12-`f%!4)j    Í:íi%lÍ:qj%=rj%Ŵ(yb%-1):yb%-=1o0Í:P`%!0=Tb%:P`%!4=G`%!0:È−262350,,P`%:ȉOh%ÊtÉ2:sj%=P`%!16uÉ3:sj%=P`%!20vVË:ãi%=1¸yb%-1:sj%+=qj%:P`%!0=Tb%:P`%!4=G`%!(4*i%):È−262350,,P`%:Wb%=0:Xb%=0:ȉOh%ÊÉ2:Wb%=sj%-P`%!8€É3:Xb%=sj%-P`%!12ŴRË:P`%!8=P`%!8+Wb%:P`%!12=P`%!12+Xb%:P`%!16=P`%!16+Wb%:P`%!20=P`%!20+Xb%:ȉOh%ÊÉ2:sj%=P`%!16⇦É3:sj%=P`%!20⇨%Ë:Kc%=¤vc(Tb%,G`%!(4*i%),P`%):íi%…Í:á•=Ýòia:êtj%,i%:tj%=¤Ge(fa%,8):ãi%=5¸7:òpf(fa%,i%,tj%):íi%:á–⇨Ýòqb(Tb%):êi%,j%,Zb%,ab%,bb%,cb%,Kc%,h%,w%:ka%=»($(Y`%(32))):la%=»($(Y`%(33))):ma%=»($(Y`%(34))):na%=»($(Y`%(35))):ç¤Ge(ja%,5)…ka%=-1fiç¤Ge(ja%,15)…ma%=-1flXòxb(Tb%):j%=0:ãi%=0¸yb%-1:Ub%=G`%!(4*i%):G`%!(4*j%)=Ub%:ç(Ub%<>ka%)€(Ub%<>ma%)…j%+=1¦íi%:çj%=0…¨òbc(10,""):áªKÍ:òCc(Tb%,Zb%,ab%,bb%,cb%):Zb%-=la%:ab%-=la%:bb%+=la%:cb%+=la%:çka%=-1…±mR_%!0=Tb%:È−262347,,R_%:R_%!8=R_%!16-(cb%-ab%):R_%!12=R_%!4+(bb%-Zb%):R_%!20=Zb%:R_%!24=cb%:È−262341,,R_%¹1Ì:P`%!0=Tb%:P`%!4=ka%:È−262350,,P`%:çma%<>-1…¿JA`%!0=Tb%:A`%!4=ma%:È−262350,,A`%:w%=(A`%!16-A`%!8):h%=(A`%!20-A`%!12)Ä
  30581. Ì:h%=0ÆVÍ:P`%!8=Zb%:P`%!12=ab%:P`%!16=bb%:P`%!20=cb%+(h%Ŵ2):Kc%=¤vc(Tb%,ka%,P`%):çma%<>-1…Í3P`%!0=Tb%:P`%!4=ma%:È−262350,,P`%:ç¤Ge(ja%,20)…ÒP`%!8=(Zb%+bb%-w%)Ŵ2ÔÌ:P`%!8=Zb%+na%×FÍ:P`%!12=cb%:P`%!16=P`%!8+w%:P`%!20=P`%!12+h%:Kc%=¤vc(Tb%,ma%,P`%)ÜÍÝÍ:áà@Ýòzb:ka%=G`%!0:òha(32,Ã(ka%)):ma%=G`%!4:òha(34,Ã(ma%)):ò_e:áèÉÝò_e:êuj%,vj%,wj%,i%:uj%=¤Ge(ja%,5):vj%=uj%☓¤Ge(ja%,15):wj%=vj%☓¤Ge(ja%,20):ãi%=7¸9:òpf(ja%,i%,uj%):íi%:òpf(ja%,15,uj%):òpf(ja%,16,uj%):ãi%=17¸21:òpf(ja%,i%,vj%):íi%:ãi%=22¸24:òpf(ja%,i%,wj%):íi%:áúpݤjd(Tb%,xj%):êyj%,Zb%,bb%,ab%,cb%,zj%:ê_j%,`j%,Ak%,Bk%,Wb%,Xb%,i%,Kc%:R_%!0=Tb%:È−262348,,R_%:yj%=0:çxj%=2…GZb%=R_%!20:cb%=R_%!24:bb%=Zb%+(R_%!12-R_%!4):ab%=cb%-(R_%!16-R_%!8)1Ì:Zb%=R_%!44:ab%=R_%!48:bb%=R_%!52:cb%=R_%!56
  30582. Í:çR_%!88>0… S_j%=R_%+92:`j%=_j%:Ak%=_j%+32*(R_%!88):Bk%=0:È”_j%<Ak%:zj%=¹:Wb%=0:Xb%=0:ȉxj%ÊÉ1,2:ç((_j%!16)€(1<<23))=0…ç_j%!0<Zb%…Wb%=Zb%-_j%!0ç_j%!4<ab%…Xb%=ab%-_j%!4ç_j%!8>bb%…Wb%=bb%-_j%!8ç_j%!12>cb%…Xb%=cb%-_j%!12ç(Wb%<>0)☓(Xb%<>0)…yj%+=1ÍÉ3,4:ç((_j%!16)€(1<<23))…!._j%!16=(_j%!16)€¬(1<<23):ç(_j%!16)€(1<<8)…#5_j%!20=¤H`(_j%!28):$(_j%!20)="":ç(_j%!16)€(1<<0)…'_j%!24=-1(Ì:_j%!24=R_%!68*Í+Í:çxj%=4…-Wb%=-100000:Xb%=-100000/ Í:yj%+=11Í2É5:ç((_j%!16)€(1<<23))…4zj%=£:yj%+=16Í7 Ë:çzj%…9q_j%!0=_j%!0+Wb%:_j%!4=_j%!4+Xb%:_j%!8=_j%!8+Wb%:_j%!12=_j%!12+Xb%:ãi%=0¸28⇦4:`j%!i%=_j%!i%:íi%:`j%+=32:Bk%+=1CÍ:_j%+=32:Î:çyj%=0…Gòbc(6,"")H-Ì:R_%!88=Bk%:Kc%=¤T_(R_%,1):òbc(7,Ã(yj%))LÍM
  30583. Í:=Kc%PÅÝòob:êCk%,Dk%,pe%,qe%,Zb%,ab%:R_%!0=v`%:È−262348,,R_%:Ck%=»($(Y`%(12))):Dk%=»($(Y`%(13))):pe%=»($(Y`%(14))):qe%=»($(Y`%(15))):Zb%=»($(Y`%(16)))€&FFFF:ab%=»($(Y`%(17)))€&FFFF:ç(pe%<32)☓(qe%<32)…[òwc(¤g`("IWAS"))\Ì:çZb%>pe%…^Zb%=pe%:òha(16,Ã(Zb%))`Í:çab%>qe%…bab%=qe%:òha(17,Ã(ab%))d]Í:R_%!44=Ck%:R_%!48=Dk%-qe%:R_%!52=Ck%+pe%:R_%!56=Dk%:R_%!72=(ab%<<16)+Zb%:v`%=¤T_(R_%,1)kÍ:ánYÝòYd(Tb%,Fj%,aj%):êZb%,ab%,bb%,cb%,Ek%,Fk%,Wb%,Xb%,i%,Kc%:òxb(Tb%):ç(yb%=0)€(Fj%>=0)…rG`%!0=Fj%:yb%=1tÍ:çyb%>0…v©òCc(Tb%,Zb%,ab%,bb%,cb%):A`%!0=Tb%:È−262347,,A`%:Ek%=(A`%!12-A`%!4)-(bb%-Zb%):Wb%=A`%!20+(Ek%Ŵ2)-Zb%:Fk%=(A`%!16-A`%!8)-(cb%-ab%):Xb%=A`%!24-(Fk%Ŵ2)-cb%:çaj%=2…Wb%=0~çaj%=1…Xb%=0fiãi%=0¸yb%-1:P`%!0=Tb%:P`%!4=G`%!(4*i%):È−262350,,P`%:P`%!8=P`%!8+Wb%:P`%!12=P`%!12+Xb%:P`%!16=P`%!16+Wb%:P`%!20=P`%!20+Xb%:Kc%=¤vc(Tb%,G`%!(4*i%),P`%):íi%⇨Í:á’5Ýòv_(Oh%):êGk%,z_%,Hk$,Ik$:Gk%=J_%:J_%=Oh%:ȉOh%Ê„-É1:Hk$="Interface":Ik$="InterfaceManager"– É2:Hk$="AEH":Ik$="AEHmodule"—(É3:Hk$="WimpExt":Ik$="WimpExtension"−Ë:çOh%<>0…œ笤ac(Ik$)…†J_%=Gk%:òbc(3,Hk$)fiÍflÍ:çJ_%<>Gk%…¡
  30584. ȉGk%Ê£É2:È−412370,-1¥É3:È−415617,M_%§ Ë:ȉOh%ʪÉ2:È−412370,1¬'É3:È−415616,16,M_%,1+(1<<8)+(1<<10)®    Ë:ò`e°<Í:òea(h_%,9,J_%=1):òea(h_%,10,J_%=2):òea(h_%,34,J_%=3):á·2ݤac(Jk$):êz_%:È−131102,18,Jk$¸;z_%:=(z_%€1)=0½Ýò`e:êi%:çS`%>0…ÀCãi%=0¸(S`%-1):K_%!0=K`%!(4*i%):È−262347,,K_%:ç(K_%!32€(1<<16))…Ä)È−262353,-1,K_%!4,K_%!8,K_%!12,K_%!16Å    Í:íi%ÇÍ:áÊ$ÝòRb(x_$):m_$=x_$:çCa%…x_$+=" *"Íòjf(b_%,Ka%,x_$):áÑÝòtc(Og%):êtf$:çCa%<>Og%…Ô    çOg%…Õtf$=$(Ka%)+" *"ÖÌ:tf$=À$(Ka%),©($(Ka%))-2)ØÍ:òjf(b_%,Ka%,tf$):Ca%=Og%ÛÍ:áßAݤSf(i_%,Ub%):êYb$,p%:Yb$="Template '"+$(J`%+28*i_%):çUb%>=0…ã`Yb$+="', Icon #"+Ã(Ub%)+"|M":A`%!0=K`%!(4*i_%):A`%!4=Ub%:È−262350,,A`%:if%=A`%!24:ȉ(if%€3)Êé"É0:Yb$+="Non-text, non-sprite"êÉ1:Yb$+="Text"ëÉ2:Yb$+="Sprite"ìÉ3:Yb$+="Text + Sprite"í!Ë:Yb$+=" icon, ":ç(if%€&100)…ð;Yb$+="Indirected (max. size "+Ã(A`%!36)+")|M":ç(if%€1)…òçA`%!32=-1…óYb$+="No validation string"ô/Ì:Yb$+="Validation string: '"+$(A`%!32)+"'"öÍ÷ÍøÌ:Yb$+="Non-indirected|M "úbÍ:Yb$+="|MButton type: '"+$(e`%+20*((if%>>12)€&F)):Yb$+="', ESG: "+Ã((if%>>16)€&1F):ç`_%>=300…þHp%=§Yb$,"\"):È”p%<>0:Yb$=ÀYb$,p%)+"\"+ÁYb$,p%+1):p%=§Yb$,"\",p%+2):ÎÍxÌ:R_%!0=K`%!(4*i_%):È−262348,,R_%:Yb$+="', Window background|MButton type: '":Yb$+=$(f`%+20*(((R_%!64)>>12)€&F))+"'"
  30585.  
  30586. Í:=Yb$Ýòmc:H_%=H_%€(¬1):F_%=¹:á`Ýòjb(Kk$):K_%!0=256:K_%!12=0:K_%!16=&43B00:$(K_%+20)="Help_Word "+Kk$+½0:È−262375,17,K_%,0:áCÝòmb(Mf$):êKc%,Lk%,i_%:êŶ:ç(§Mf$,".")=0)€(Mf$<>"<Wimp$Scrap>")…"òwc(¤g`("ISLF"))#5Ì:È−263872:òMk(Mf$,S`%,Kc%,Lk%):îŶêÙ#Kc%:òI_(0):á'(ãi_%=0¸S`%-1:ç(¬_`%)☓(¤Ge(b_%,i_%))…)òNk(i_%,Kc%,Lk%)*@Í:íi_%:òOk(Kc%,Lk%):È−8,18,Mf$,&FEC:È−263873:çMf$=m_$…òtc(£)0Í:çAa%…òmc2á4€ÝòMk(Mf$,Pk%,øKc%,øLk%):êi%:Qk%=16:ãi%=0¸N`%-1:O`%?i%=0:íi%:ãi%=0¸255:l`%?i%=0:íi%:Rk%=0:O`%!0=-1:Lk%=16+Pk%*24+4:Kc%=®Mf$:áD⇦ÝòNk(i_%,Kc%,øLk%):êBk%,i%,Sk%,`f%:O`%!(Qk%)=Lk%:O`%!(Qk%+8)=1:$(O`%+Qk%+12)=$(J`%+28*i_%):R_%!0=K`%!(4*i_%):È−262348,,R_%:çL`%?i_%…LR_%!32=R_%!32☓(1<<5)MFÍ:Bk%=R_%!88:Sk%=88+32*Bk%:R_%!68=1:òTk(R_%+60,R_%+76,Sk%):çBk%>0…S=ãi%=0¸Bk%-1:`f%=R_%+92+i%*32:òTk(`f%+16,`f%+20,Sk%):çHb%…W`f%!16=`f%!16€(¬(1<<21))X    Í:íi%Z_Í:È−12,1,Kc%,R_%+4,88+32*Bk%,Lk%¸,,,,Lk%:È−262348,,R_%:òUk(R_%!(60),R_%+76,Kc%,Lk%):çBk%>0…_Bãi%=0¸Bk%-1:òUk(R_%!(92+i%*32+16),R_%+92+i%*32+20,Kc%,Lk%):íi%b)Í:O`%!(Qk%+4)=Lk%-O`%!(Qk%):Qk%+=24:áhCÝòTk(_f%,rf%,øSk%):êif%,Vk%,Dg%,Wk%:if%=_f%!0:ç(if%€(1<<23))>0…l&_f%!0=&07800001:$(rf%)="<Deleted>"oÌ:ç(if%€&100)=&100…rȉ(if%€3)Ês É0:rf%!0=Sk%:Sk%+=1:rf%!4=-1w3É2:Vk%=©($(rf%!0)):rf%!0=Sk%:Sk%+=Vk%+1:rf%!4=1|9É1,3:Vk%=©($(rf%!0)):rf%!0=Sk%:Sk%+=Vk%+1:çrf%!4<>-1…Ŵ(Vk%=©($(rf%!4)):rf%!4=Sk%:Sk%+=Vk%+1☓ÍŶËŷÍ:çif%€(1<<6)…⇨#Dg%=if%>>24:Wk%=l`%?Dg%:çWk%=0……Rk%+=1:Wk%=Rk%:l`%?Dg%=Wk%•#Í:_f%!0=(if%€&FFFFFF)☓(Wk%<<24)’Í‹Í:á„=ÝòUk(if%,rf%,Kc%,øLk%):êVk%:A`%!0=13:ç(if%€&800100)=&100…Œ çif%€3…œ>Vk%=©($(rf%!0)):È−12,1,Kc%,rf%!0,Vk%+1,Lk%¸,,,,Lk%:çif%€1…fiçrf%!4<>-1…fl6Vk%=©($(rf%!4)):È−12,1,Kc%,rf%!4,Vk%+1,Lk%¸,,,,Lk%¡Í¢Í£"Ì:È−12,1,Kc%,A`%,1,Lk%¸,,,,Lk%¦Í§Í:᪠ÝòOk(Kc%,Lk%):êi%,j%:çRk%>0…®sO`%!0=Lk%:ãi%=1¸Rk%:j%=0:È”l`%?j%<>i%:j%+=1:Î:È−262275,j%,m`%+8¸,,m`%!0,m`%!4:È−12,1,Kc%,m`%,48,Lk%¸,,,,Lk%:íi%¸$Í:È−12,1,Kc%,O`%,Qk%+4,0:Ù#Kc%:áÀ/Ýòrc(Ec$,Xk%,Sb%):êi_%,Yk%,Ic%,i%:çS`%=C_%…Ãòwc(¤g`("MTPX"))ÄàÌ:i_%=S`%:L`%?i_%=(Xk%!32)€(1<<5):Xk%!32=(Xk%!32)€¬(1<<5):È−262337,,Xk%+4¸K`%!(4*i_%):S`%+=1:A`%!0=b_%:A`%!4=8+c_%*(i_%◰d_%):A`%!12=(A`%!4)+(c_%-8)-16*(11-©(Ec$)):A`%!16=-8-La%*(i_%Ŵd_%):A`%!8=(A`%!16)-(La%-8):A`%!20=Ma%ÐyYk%=J`%+28*i_%:$(Yk%)=Ec$:A`%!24=Yk%:Ic%=J`%+28*i_%+14:$(Ic%)=¤Xi(Xk%!32,0):A`%!28=Ic%:A`%!32=16:È−262338,,A`%:ç¬`a%…Ù4i%=0:È”$(J`%+28*i%)<>Ec$:i%+=1:Î:çi%<i_%…òAd(i%)ÞÍ:çSb%…òSbàòHi(b_%,S`%-1,0,0)áÍ:áäÝòFd:êi%:È−263872:çS`%>0…èãi%=S`%-1¸0⇦-1:òAd(i%):íi%ë(Í:òRb("Templates"):òtc(£):È−263873:áñbÝòAd(i_%):êi%,j%,Rj%,Qj%:Qj%=K`%!(4*i_%):R_%!0=Qj%:È−262348,,R_%:òGg(R_%!60,R_%+76):çR_%!88>0…ø?ãi%=0¸(R_%!88-1):òGg(R_%!(92+i%*32+16),R_%+92+i%*32+20):íi%ûNÍ:È−262339,,R_%:R_%!0=b_%:È−262348,,R_%:Rj%=(R_%!32)€(1<<16):çi_%<(S`%-1)…¶ãi%=i_%¸S`%-2:`f%=R_%+92+32*i%:ãj%=0¸16⇦4:`f%!j%=`f%!(j%+32):íj%:K`%!(4*i%)=K`%!(4*(i%+1)):$(J`%+28*i%)=$(J`%+28*(i%+1)):$(J`%+28*i%+14)=$(J`%+28*(i%+1)+14):L`%?i%=L`%?(i%+1):íi%VÍ:R_%!88=R_%!88-1:È−262339,,R_%:È−262337,,R_%+4¸b_%:S`%-=1:òtc(S`%>0):òe_(£):çRj%…)R_%!0=b_%:È−262348,,R_%:È−262341,,R_%Í:çQj%=o`%…òl_(Na%)çQj%=q`%…òl_(Ra%)çQj%=v`%…v`%=-1çS`%=0…òl_(oa%)á 6ÝòSb:êZk%,pe%,ak%:Zk%=1+((S`%-1)Ŵd_%):çZk%<2…Zk%=2$ çS`%=0…%pe%=8+c_%&Ì:çS`%<af%…(pe%=8+S`%*c_%)Ì:pe%=8+af%*c_%+Í,+Í:ak%=128+16*©($(Ka%)):çpe%<ak%…pe%=ak%/BA`%!0=0:A`%!4=-8-La%*Zk%:A`%!8=pe%:A`%!12=0:È−262359,b_%,A`%:á7^Ýòe_(bk%):êRj%,i%,`f%,pe%,qe%:R_%!0=b_%:È−262348,,R_%:Rj%=((R_%!32)€(1<<16))<>0:çR_%!88>0…=¯ãi%=0¸(R_%!88-1):`f%=R_%+92+32*i%:pe%=(c_%-8)-16*(11-©($(J`%+i%*28))):qe%=`f%!12-`f%!4:`f%!0=8+c_%*(i%◰d_%):`f%!8=(`f%!0)+pe%:`f%!12=-8-La%*(i%Ŵd_%):`f%!4=(`f%!12)-qe%:íi%F5Í:È−262339,,R_%:È−262337,,R_%+4¸b_%:òSb:çbk%€Rj%…K<R_%!0=b_%:È−262348,,R_%:ç(R_%!20+(R_%!12-R_%!4))>R_%!52…O+R_%!20=R_%!52-(R_%!12-R_%!4):çR_%!20<0…Q!R_%!12=R_%!12+R_%!20:R_%!20=0SÍT&Í:ç(R_%!24-(R_%!16-R_%!8))<R_%!48…V+R_%!24=R_%!48+(R_%!16-R_%!8):çR_%!24>0…XR_%!8=R_%!8+R_%!24:R_%!20=0ZÍ[Í:È−262341,,R_%]Í:á`WÝòQb(Mf$,ck%):êi%,dk%,Ec$,Kc%,ek%,fk%,ai$:È−263872:È−263877,1:ãi%=0¸255:çk`%(i%)>0…f l`%?i%=1hÌ:l`%?i%=0jÍ:íi%:çS`%=0…mçMf$="<Wimp$Scrap>"…n òRb(Pf$)oÌ:òRb(Mf$)qÍr"Í:çck%€(¤Mh(Mf$)="Templates")…t*ai$=¤n_(Mf$)+".Sprites"+Ob$:ç¤Rf(ai$)…v òjc(ai$)w2Ì:ai$=¤n_(Mf$)+".Sprites":ç(Ob$<>"")€¤Rf(ai$)…z òjc(ai$){Í|Í}Í:fk%=¤H`(E_%):çfk%>0…€Kc%=‰Mf$:çKc%>0…ŵKÈ−12,3,Kc%,O`%,N`%,0:Ù#Kc%:È−262361,,Mf$:ek%=O`%+24:dk%=0:õ:çek%!0>M`%…⇩òwc(¤kf("TTLB",$(ek%+12)))⇧"Ì:ògk(dk%,Ec$,fk%,E_%):çdk%>0…‰òrc(Ec$,R_%,0)•Í‘?Í:ek%+=24:ý(dk%<=0)☓(S`%=C_%):È−262362:çMf$="<Wimp$Scrap>"…”È−8,6,Mf$„Í:òQi(fk%):òSb−ÍŒZÍ:ãi%=0¸255:È”l`%?i%>1:È−262274,i%:l`%?i%-=1:Î:íi%:È−263873:òdc(b_%,3):çs_%…òdc(Xa%,4)¥á§LÝògk(ødk%,øn$,p%,hk%):êWb%,Xb%,Ub%,ik%,`f%:êŶ:îŶêÈ−262362:òI_(0):dk%=0:á«Kn$="*"+Ä11,½0):È−262363,,R_%+4,p%,p%+hk%,l`%,n$,dk%¸,,,,,n$,dk%:çdk%>0…®#Wb%=0:Xb%=0:çR_%!4<0…Wb%=-R_%!4²çR_%!8<0…Xb%=-R_%!8³çR_%!12>bh%…Wb%=bh%-R_%!12´çR_%!16>(ch%-Pb%)…µXb%=ch%-Pb%-R_%!16¶eÍ:R_%!4=R_%!4+Wb%:R_%!8=R_%!8+Xb%:R_%!12=R_%!12+Wb%:R_%!16=R_%!16+Xb%:R_%!68=Da%:çR_%!32€(1<<31)…¾ik%=R_%!32€(1<<26)¿Ì:ik%=R_%!32€(1<<0)Á Í:çik%…Ã-òyc(R_%+60,R_%+76):òjk(R_%!60,R_%+76,Da%)Å'Ì:R_%!60=&3D:$(R_%+76)="<Untitled>"ÉÍ:ç(R_%!88)>0…ËVãUb%=0¸(R_%!88)-1:`f%=R_%+92+Ub%*32:òyc(`f%+16,`f%+20):òjk(`f%!16,`f%+20,Da%):íUb%ÑÍÒÍ:áÖÝòHd:êi%,j%,`i%,kk%,lk$,Ec$:i%=0:È”i%<(S`%-1):kk%=i%:lk$=¤vi($(J`%+i%*28)):ãj%=i%+1¸(S`%-1):Ec$=¤vi($(J`%+j%*28)):çEc$<lk$…àkk%=j%:lk$=Ec$âqÍ:íj%:ãj%=0¸(28-4)⇦4:È“J`%!(i%*28+j%),J`%!(kk%*28+j%):íj%:È“K`%!(4*i%),K`%!(4*kk%):È“L`%?i%,L`%?kk%:i%+=1:Î:áñWÝòxb(Tb%):È−262358,Tb%,G`%,(1<<21)+(1<<23),1<<21:yb%=0:È”G`%!(4*yb%)<>-1:yb%+=1:Î:áúbÝòtb(Tb%):êi%:È−262358,Tb%,G`%,(1<<21)+(1<<23),0:i%=0:È”G`%!i%<>-1:òea(Tb%,G`%!i%,1):i%+=4:Î:ácÝòBc(Tb%,mk%):êi%:È−262358,Tb%,G`%,1<<21,1<<21:i%=0:È”G`%!i%<>-1:çG`%!i%<>mk%…òea(Tb%,G`%!i%,0) i%+=4:Î:yb%=0:á^ÝòYj(Tb%,nk%,ok%,pk%,qk%,rk%,sk%):êi%,j%,tk%,uk%,`f%:êvk%,wk%,kk%,xk%,yk%,zk%:i%=0:çnk%=0…    tk%=0 Ì:tk%=4Í:çok%…tk%+=8 çqk%=0…     uk%=0! Ì:uk%=4#Í:çrk%…uk%+=8%¸R_%!0=Tb%:È−262348,,R_%:È”i%<(yb%-1):kk%=i%:`f%=R_%+92+32*(G`%!(4*i%)):xk%=`f%!(tk%):yk%=`f%!(uk%):ãj%=i%+1¸(yb%-1):`f%=R_%+92+32*(G`%!(4*j%)):vk%=`f%!(tk%):wk%=`f%!(uk%):çxk%=vk%…2    çsk%…4zk%=(wk%<yk%)5Ì:zk%=(wk%>yk%)7Í8 Ì:çpk%…:zk%=(vk%<xk%);Ì:zk%=(vk%>xk%)=Í> Í:çzk%…@kk%=j%:xk%=vk%:yk%=wk%C,Í:íj%:È“G`%!(4*kk%),G`%!(4*i%):i%+=1:Î:áL´ÝòCc(Tb%,øZb%,øab%,øbb%,øcb%):êi%:A`%!0=Tb%:A`%!4=G`%!0:È−262350,,A`%:Zb%=A`%!8:ab%=A`%!12:bb%=A`%!16:cb%=A`%!20:ãi%=0¸yb%-1:A`%!4=G`%!(4*i%):È−262350,,A`%:çZb%>A`%!8…Zb%=A`%!8Zçab%>A`%!12…ab%=A`%!12[çbb%<A`%!16…bb%=A`%!16\çcb%<A`%!20…cb%=A`%!20]    íi%:ábkÝò_k:s_%=¹:`a%=¹:Ab%=¹:Lb%=0:Bb%=¹:Cb%=2:Db%=4:Eb%=£:Fb%=2:Gb%=4:Hb%=£:Ib%=£:Jb%=¹:Mb%=¹:Kb%=¹:òwe(2):áu/Ýòza:êf%,`k%:êŶ:f%=‰(B`$+".Options"):çf%=0…zò_k{Ì:îŶêÙ#f%:òI_(0):ò_k:á}jè#f%,s_%,`a%,Ab%,Lb%:è#f%,Bb%,Cb%,Db%:è#f%,Eb%,Fb%,Gb%:è#f%,Hb%,Ib%,Jb%,Mb%:è#f%,Kb%,`k%:òwe(`k%):Ù#f%☓Í:á<ÝòAf:êf%:êŶ:f%=®(B`$+".Options"):îŶêçf%<>0…Ù#f%:òI_(0):á…cñ#f%,s_%,`a%,Ab%,J_%:ñ#f%,Bb%,Cb%,Db%:ñ#f%,Eb%,Fb%,Gb%:ñ#f%,Hb%,Ib%,Jb%,Mb%:ñ#f%,Kb%,Vf%:Ù#f%:á„GÝòfc:êRj%,qe%,Al%,Bl%,i%,Cl%,Dl%,j%,`f%:È−263872:òxb(oa%):çG`%!0=2…œ    Oh%=2† Ì:Oh%=1fiÝÍ:R_%!0=oa%:È−262348,,R_%:Rj%=(R_%!32)€(1<<16):È−262339,,R_%:R_%!88=15:qe%=204+S`%*40:R_%!8=R_%!16-R_%!24-qe%:R_%!48=-qe%:È−262337,,R_%+4¸oa%:R_%!0=oa%:òPa(25,R_%,5):òPa(22,R_%,7):òPa(23,R_%,9):Al%=0:Bl%=0:ãi%=0¸S`%-1¯UR_%!0=K`%!(4*i%):È−262348,,R_%:Cl%=88+32*R_%!88:Dl%=¤El(R_%!60,R_%+76):çR_%!88>0…´Aãj%=0¸(R_%!88-1):`f%=R_%+92+32*j%:Dl%+=¤El(`f%!16,`f%+20):íj%¸‰Í:òFl(10,$(J`%+i%*28),i%):òFl(11,¤Gl(R_%!88),i%):òFl(12,¤Gl(Cl%),i%):òFl(13,¤Gl(Dl%),i%):òFl(14,¤Gl(Cl%+Dl%),i%):Cl%+=Dl%:çAl%<Cl%…Al%=Cl%ÀGBl%+=Dl%:íi%:òha(25,Ã(S`%)):òha(22,¤Gl(Al%)):òha(23,¤Gl(Bl%)):çRj%…Æòdc(oa%,0)ÇÌ:òdc(oa%,1)ÉÍ:È−263873:áÎ+ݤEl(if%,rf%):êVc%:ç(if%€&800100)=&100…Ñ#Vc%=rf%!8:ç(if%€1)€(rf%!4<>-1)…ÓVc%=Vc%+©($(rf%!4))+1ÔÍÕ Ì:Vc%=0×
  30587. Í:=Vc%Û½ÝòFl(Hl%,s$,Il%):A`%!0=oa%:A`%!4=Hl%:È−262350,,A`%:A`%!12=A`%!12-4-40*(Il%+1):A`%!20=A`%!12+40:A`%!24=(A`%!24€&FFFFFF)☓pa%:A`%!24=A`%!24€(¬&100):$(A`%+28)=s$:A`%!4=oa%:È−262338,,A`%+4:áêݤGl(Jl%):ês$:çMb%…ís$=Ã(Jl%)îÌ:s$="&"+Ã~(Jl%)ð    Í:=s$õ&ÝòHg(_g%):k`%(_g%)-=1:çk`%(_g%)=0…øÈ−262274,_g%ùÍ:áü&Ýòu_:êi%,j%:ãi%=0¸255:çk`%(i%)<>0…È−262274,i% Í:íi%:á_Ýòyf(Dg%,øEc$,øpe,øqe):êBg%,Cg%:È−262275,Dg%,m`%¸,,Bg%,Cg%:Ec$=$(m`%):pe=Bg%/16:qe=Cg%/16:áAÝòWd(Tb%,Fj%,aj%):êi%,pe%,qe%,Kc%:òxb(Tb%):ç(yb%=0)€(Fj%>=0)…G`%!0=Fj%:yb%=1Í:çyb%>0…mãi%=0¸yb%-1:òKl(Tb%,G`%!(4*i%),pe%,qe%):P`%!0=Tb%:P`%!4=G`%!(4*i%):È−262350,,P`%:çaj%<>2…P`%!16=P`%!8+pe%çaj%<>1…P`%!20=P`%!12+qe%#Kc%=¤vc(Tb%,G`%!(4*i%),P`%):íi%!Í:á$ÜÝòKl(Tb%,Ub%,øTc%,øUc%):êLl%,if%,rf%,uf%,vf%,Gc%:êMl%,Nl%,Ol%,Pl%,p%,gi$,ai$,t$:êZb%,ab%,bb%,cb%:êl$,Ql%,Rl%,b$:R_%!0=Tb%:È−262348,,R_%:Ll%=R_%!68:A`%!0=Tb%:A`%!4=Ub%:È−262350,,A`%:if%=A`%!24:rf%=A`%+28:uf%=(if%€1)>028vf%=(if%€2)>0:Gc%=(if%€&100)>0:çGc%€uf%€(rf%!4<>-1)…5gi$=$(rf%!4)6 Í:çvf%…8    çGc%…9    çuf%…:(ai$=¤Sl(gi$,"S"):p%=§ai$,","):çp%>0…>ai$=Áai$,2,p%-2)?Ì:ai$=Áai$,2)AÍBÌ:ai$=$(rf%!0):Ll%=rf%!4EÍFÌ:ai$=$(rf%)H$Í:ç©(ai$)>0…òTl(ai$,Ll%,Ml%,Nl%)J Í:çuf%…L    çGc%…Mt$=$(rf%!0)NÌ:t$=$(rf%)PÍ:çif%€(1<<6)…RmÈ−262282,(if%>>24):È−262295,,t$¸,Zb%,ab%,bb%,cb%:È−262280,,bb%-Zb%,cb%-ab%¸,Ol%,Pl%:Ol%+=2*rb%:Pl%+=2*sb%XÌ:ç(`_%<350)☓Kb%…ZOl%=16*©(t$)+4\Ì:È−262393,1,t$¸Ol%:Ol%+=8` Í:Pl%=32bÍ:l$=¤Sl(gi$,"L"):ç©(l$)>0…eQl%=»(Ál$,2)):çQl%=0…Ql%=40h?Rl%=(Ol%-1)Ŵ(A`%!16-A`%!8):Ol%=A`%!16-A`%!8:Pl%=Ql%*(Rl%+1)kÍlÍ:çif%€(1<<4)…nTc%=Ml%+Ol%:çTc%=0…pTc%=A`%!16-A`%!8qÌ:çuf%€vf%…Tc%+=6sçNl%>Pl%…Uc%=Nl%⇧Uc%=Pl%tÍuÌ:çMl%>Ol%…Tc%=Ml%⇧Tc%=Ol%wUc%=Nl%+Pl%xÍ:çif%€(1<<2)…zb$=¤Sl(gi$,"R"):ç©(b$)=0…}Tc%+=16:Uc%+=16Ì:ȉ»(Áb$,2))ÊŵÉ3,4:Tc%+=24:Uc%+=24ŶÉ6,7:Tc%+=32:Uc%+=32⇦:Tc%+=16:Uc%+=16⇧Ë…Í™Í:çTc%<16…Tc%=16•çUc%<16…Uc%=16‘á›0ÝòTl(Ec$,Ul%,øpe%,øqe%):êVl%,ji%,ki%:çUl%=1…„(È−393449,40,,Ec$¸,,,ji%,ki%,,Vl%;z_%–8Ì:È−131118,296,Ul%,Ec$¸,,,ji%,ki%,,Vl%;z_%:ç(z_%€1)…Œ(È−393449,40,,Ec$¸,,,ji%,ki%,,Vl%;z_%†Í‡Í:ç(z_%€1)…flpe%=0:qe%=0¡-Ì:pe%=ji%<<¤ei(Vl%,4):qe%=ki%<<¤ei(Vl%,5)¤Í:á¨flݤSl(v$,Sc$):êWl$,Xl$,p%:Wl$=½(–(Sc$)€&DF):Xl$=½(–(Sc$)☓&20):È”(Àv$,1)<>Wl$)€(Àv$,1)<>Xl$)€(©(v$)>0):p%=§v$,";"):ç(p%>1)€(Áv$,p%-1,1)="\")…p%=§v$,";",p%+1)¯
  30588. çp%=0…°    v$=""±Ì:v$=Áv$,p%+1)³&Í:Î:p%=§v$,";"):çp%>0…v$=Àv$,p%-1)·=v$»LÝòE`:êMf$,if%,Vc%,Fc%:Mf$=B`$+".Messages":È−267520,,Mf$¸if%,,Vc%:çif%€1…À    Fc%=0ÁÌ:Fc%=¤H`(Vc%)Ã@Í:Yl%=¤H`(17+©(Mf$)):$(Yl%+16)=Mf$:È−267521,Yl%,Yl%+16,Fc%:áÉÝòw_:È−267524,Yl%:Yl%=0:áÎ0ݤg`(Zl$):êal$:È−267522,Yl%,Zl$,0¸,,al$:=al$Ó?ݤkf(Zl$,bl$):êal$:È−267522,Yl%,Zl$,A`%,&100,bl$¸,,al$:=al$ØGݤxf(Zl$,cl$,dl$):êal$:È−267522,Yl%,Zl$,A`%,&100,cl$,dl$¸,,al$:=al$àÝòjc(Mf$):êi_%:çDa%<>1…ã òQi(Da%):ç¤ac("OLESupport")…åÈ−"OLE_DeLinkFile",1,M_%,0æÍçÍ:çMf$=""…é    Da%=1êÌ:Da%=¤Ha(Mf$)ìÍ:çS`%>0…î*ãi_%=0¸S`%-1:òqd(K`%!(4*i_%),Da%):íi_%ñÍ:çDa%=1…ó
  30589. Ea$=""ô!Ì:Ea$=Mf$:ç¤ac("OLESupport")…÷;È−"OLE_SimulateSession",&FF9:È−"OLE_LinkFile",Mf$,M_%,0ùÍúÍ:áýQݤHa(Mf$):êOh%,el%,Qf%,Nf%,Ul%:È−8,17,Mf$¸Oh%,,el%,,Qf%:ç(el%>>20)€&FFF=&FFF…Nf%=(el%>>8)€&FFF Ì:Nf%=-1Í:ç(Oh%<>1)☓(Nf%<>&FF9)…òwc(¤kf("NOSF",Mf$)):Ul%=1"Ì:Qf%+=16:Ul%=¤H`(Qf%):çUl%>0… 9Ul%!0=Qf%:Ul%!8=16:È−46,256+9,Ul%:È−46,256+10,Ul%,Mf$ Ì:Ul%=1Í
  30590. Í:=Ul%aÝòqd(Kc%,Ul%):êUb%,`f%:R_%!0=Kc%:È−262348,,R_%:R_%!68=Ul%:òjk(R_%!60,R_%+76,Ul%):ç(R_%!88)>0…CãUb%=0¸(R_%!88)-1:`f%=R_%+92+Ub%*32:òjk(`f%!16,`f%+20,Ul%):íUb%!Í:Kc%=¤T_(R_%,0):á%3Ýòjk(if%,rf%,Ul%):ç((if%€3)=2)€((if%€&100)<>0)…'rf%!4=Ul%(Í:á-?Ýòlb(Mf$):êKc%,i_%:êŶ:ç(§Mf$,".")=0)€(Mf$<>"<Wimp$Scrap>")…1òwc(¤g`("ISLF"))2)Ì:È−263872:Kc%=®Mf$:îŶêÙ#Kc%:òI_(0):á6(ãi_%=0¸S`%-1:ç(¬_`%)☓(¤Ge(b_%,i_%))…8]Õ#Kc%,Ä48,"-"):Õ#Kc%,"Template name: "+$(J`%+28*i_%):Õ#Kc%,Ä48,"-"):òfl(i_%,Kc%):Õ#Kc%,""=)Í:íi_%:Ù#Kc%:È−8,18,Mf$,&FFF:È−263873BÍ:áEÕÝòfl(i_%,Kc%):êBk%,i%,`f%:R_%!0=K`%!(4*i_%):È−262348,,R_%:Õ#Kc%,"Visible area   "+¤gl(R_%+4,8):Õ#Kc%,"Work area      "+¤gl(R_%+44,8):Õ#Kc%,"Scroll offset  "+¤hl(R_%!20,8)+¤hl(R_%!24,8):Õ#Kc%,"Minimum size   ";MÆÕ#Kc%,¤hl((R_%!72)€&FFFF,8);:Õ#Kc%,¤hl((R_%!72)>>16,8):Õ#Kc%,"Flags          "+¤il(R_%!32,i_%):Õ#Kc%,"Button type    "+$(f`%+20*((R_%!64)>>12)):Õ#Kc%,"Colours:":Õ#Kc%,"  Title fg     "+Ã(R_%?36)SâÕ#Kc%,"  Title bg     "+Ã(R_%?37):Õ#Kc%,"  Work fg      "+Ã(R_%?38):Õ#Kc%,"  Work bg      "+Ã(R_%?39):Õ#Kc%,"  Scroll outer "+Ã(R_%?40):Õ#Kc%,"  Scroll inner "+Ã(R_%?41):Õ#Kc%,"  Input focus  "+Ã(R_%?42):Õ#Kc%,"Title bar:"ZJòjl(R_%!60,R_%+76,1):Bk%=R_%!88:Õ#Kc%,"No. of icons   "+Ã(Bk%):çBk%>0…^}Õ#Kc%,"":ãi%=0¸Bk%-1:Õ#Kc%,"Icon #"+Ã(i%)+":":`f%=R_%+92+i%*32:Õ#Kc%,"  Position    "+¤gl(`f%,8):òjl(`f%!16,`f%+20,0):íi%eÍ:áh;ݤil(f%,i_%):êf$:f$=Ä32,½183):ç(f%€(1<<0))…Áf$,1,1)="t"lç(f%€(1<<1))…Áf$,2,1)="M"mç(f%€(1<<2))…Áf$,3,1)="v"nç(f%€(1<<3))…Áf$,4,1)="h"oç(f%€(1<<4))…Áf$,5,1)="A"pç(L`%?i_%)…Áf$,6,1)="P"qç(f%€(1<<6))…Áf$,7,1)="N"rç(f%€(1<<7))…Áf$,8,1)="b"sç(f%€(1<<8))…Áf$,9,1)="A"tç(f%€(1<<9))…Áf$,10,1)="1"uç(f%€(1<<10))…Áf$,11,1)="G"vç(f%€(1<<11))…Áf$,12,1)="B"wç(f%€(1<<12))…Áf$,13,1)="H"xç(f%€(1<<13))…Áf$,14,1)="S"yç(f%€(1<<14))…Áf$,15,1)="X"zç(f%€(1<<15))…Áf$,16,1)="Y"{1Áf$,17,8)=Ä8,"x"):ç(f%€(1<<24))…Áf$,25,1)="B"}ç(f%€(1<<25))…Áf$,26,1)="C"~ç(f%€(1<<26))…Áf$,27,1)="T"ç(f%€(1<<27))…Áf$,28,1)="T"€ç(f%€(1<<28))…Áf$,29,1)="V"Ŵç(f%€(1<<29))…Áf$,30,1)="A"ŵç(f%€(1<<30))…Áf$,31,1)="H"◰ç(f%€(1<<31))…Áf$,32,1)="N"☓=f$ŷ>Ýòjl(if%,rf%,bi%):êf$,t%,s%,i%,x_$,kl%,ll%:ç(if%€(1<<23))…⇨Õ#Kc%,"  ** DELETED **"⇩-Ì:f$=Ä23,½183):ç(if%€(1<<0))…Áf$,1,1)="T"™ç(if%€(1<<1))…Áf$,2,1)="S"‰ç(if%€(1<<2))…Áf$,3,1)="B"•ç(if%€(1<<3))…Áf$,4,1)="H"‘ç(if%€(1<<4))…Áf$,5,1)="V"’ç(if%€(1<<5))…Áf$,6,1)="F"‹ç(if%€(1<<6))…Áf$,7,1)="O"›ç(if%€(1<<7))…Áf$,8,1)="N"“ç(if%€(1<<8))…Áf$,9,1)="I"”ç(if%€(1<<9))…Áf$,10,1)="R"„ ç(if%€(1<<10))…Áf$,11,1)="A"– ç(if%€(1<<11))…Áf$,12,1)="H"—2Áf$,13,9)=Ä9,"x"):ç(if%€(1<<21))…Áf$,22,1)="S"Œ ç(if%€(1<<22))…Áf$,23,1)="F"œ    çbi%…†8Áf$,3,1)="x":Áf$,6,1)="x":Áf$,8,1)="x":Áf$,11,1)="x" UÍ:Õ#Kc%,"  Flags        "+f$:t%=(if%€1)<>0:s%=(if%€1<<1)<>0:i%=(if%€1<<8)<>0:çt%…¦Õ#Kc%,"  Text         ";§"Ì:çs%…Õ#Kc%,"  Sprite       ";©Í:çt%☓s%…«çi%…¬)Õ#Kc%,"'"+$(rf%!0)+"'":çt%€(rf%!4>0)…®,Õ#Kc%,"  Validation   "+"'"+$(rf%!4)+"'"¯&Í:Õ#Kc%,"  Max. length  "+Ã(rf%!8)±Ì:Õ#Kc%,"'"+$rf%+"'"³Í´Í:çbi%=0…¶\Õ#Kc%,"  Button type  "+$(e`%+20*((if%>>12)€15)):Õ#Kc%,"  ESG          "+Ã((if%>>16)€31)¸Í:ç(if%€(1<<6))…ºbòyf((if%>>24)€255,x_$,kl%,ll%):Õ#Kc%,"  Font         "+x_$+", ";:Õ#Kc%,Ã(kl%)+"x"+Ã(ll%)+" pt"½Ì:çbi%=0…¿SÕ#Kc%,"  Fg colour    "+Ã((if%>>24)€15):Õ#Kc%,"  Bg colour    "+Ã((if%>>28)€15)ÁÍÂÍÃÍ:áƕݤgl(p%,ml%):ês$:s$=¤hl(p%!0,ml%):s$+=¤hl(p%!4,ml%):s$+=¤hl(p%!8,ml%):s$+=¤hl(p%!12,ml%):s$+="    ("+Ã(p%!8-p%!0)+"x"+Ã(p%!12-p%!4)+")":=s$Ï>ݤhl(x%,ml%):ês$:s$=Ã(x%):ç©(s$)<ml%…s$=Äml%-©(s$)," ")+s$Ó=s$×Ýòwe(Oh%):Vf%=Oh%:ȉOh%ÊÚÉ0:$(ba%)="file_ffb"ÛÉ1,2:$(ba%)="file_fff"Ü'Ë:òHi(Za%,2,0,0):òea(Za%,3+Oh%,1):ááCÝònb(Mf$):êKc%,i_%,Il%:êŶ:ç(§Mf$,".")=0)€(Mf$<>"<Wimp$Scrap>")…åòwc(¤g`("ISLF"))æ/Ì:È−263872:Il%=1:Kc%=®Mf$:îŶêÙ#Kc%:òI_(0):áë
  30591. ȉVf%Êì3É0:ònl(Kc%,½(&DD)+" "+½(&F2)+"iconnumbers",Il%)î!É1:Õ#Kc%,"/* icon numbers */"ðÉ2:Õ#Kc%,"# icon numbers"ò6Ë:Il%+=1:ãi_%=0¸S`%-1:òol(Kc%,i_%,Il%):íi_%:ȉVf%Êø=É0:ònl(Kc%,½(&E1),Il%):Õ#Kc%,13:Õ#Kc%,&FF:È−8,18,Mf$,&FFBýÉ1,2:È−8,18,Mf$,&FFFÿË:Ù#Kc%:È−263873Í:ájÝòol(Kc%,i_%,øIl%):êpl$,Bk%,i%,n$:pl$=$(J`%+28*i_%):R_%!0=K`%!(4*i_%):È−262348,,R_%:Bk%=R_%!88:çBk%>0… Dãi%=0¸Bk%-1:`f%=R_%+92+i%*32:ç((`f%!16€&101)=&101)€(`f%!24<>-1)…'n$=Á¤Sl($(`f%!24),"N"),2):ç©(n$)>0…
  30592. ȉVf%Ê.É0:ònl(Kc%,¤Wf(pl$+"_"+n$)+"%="+Ã(i%),Il%)7É1:n$="#define "+¤vi(pl$+"_"+n$)+" "+Ã(i%):Õ#Kc%,n$,É2:n$=¤vi(pl$+"_"+n$)+":"+Ã(i%):Õ#Kc%,n$ Ë:Il%+=1Í    Í:íi%Í:á"NÝònl(Kc%,l$,ql%):Õ#Kc%,13:Õ#Kc%,ql%>>8:Õ#Kc%,ql%:Õ#Kc%,©(l$)+4:Õ#Kc%,l$;:áÿWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!!ReadMeGÿÿÿ`e5OSaveWimpSpDûÿÿæ,5N©Sprites2DDùÿÿK2|†(StyleGuideGýÿÿ0òÙà⇦8Templs2DGìÿÿŒ¶0 i:⇧Use2DDëÿÿ¹:»QUse3DDëÿÿ2Ë:»G!!ReadMeGÿÿÿ`e5OSaveWimpSpDûÿÿæ,5N©Sprites2DDùÿÿK2|†(StyleGuideGýÿÿ0òÙà⇦8Templs2DGìÿÿŒ¶0 i:⇧Use2DDëÿÿ¹:»QUse3DDëÿÿ2Ë:»GŶExtrasExtrasNick,The "Extras" directory contains the following files:
  30593.  
  30594. !!ReadMe       This file
  30595. StyleGuide     The standard icons that are listed in the RiscOS Style
  30596.                Guide
  30597. SaveWimpSpr    Small Basic program to save the sprites in the Wimp
  30598.                sprite area to a file; sprites from the ROM and RAM
  30599.                part are saved separately
  30600. Sprites2D      Sprites file to replace the default (3D) sprites file
  30601.                if you want to use TemplEd with windows in 2D-look
  30602. Templs2D       Templates file for the same purpose. To get 2D-windows,
  30603.                rename the files "Sprites" and "Templates" in the
  30604.                TemplEd application directory, and replace them with
  30605.                copies of "Sprites2D" and "Templs2D"
  30606. Use2D, Use3D   A couple of small Obey files for easy switching between
  30607.                standard and 2D templates WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ô >SaveWimpSpAô Program to save the sprites in the Wimp sprite area to disc+ô ROM and RAM area are saved separately5È− "Wimp_BaseOfSprites" ¸ romsprites%,ramsprites%6è "Save ROM sprites to: (no name = don't save) "F$ç ©(F$)>0 …    *  È− "OS_SpriteOp",&10C,romsprites%,F$
  30608. Í 6è "Save RAM sprites to: (no name = don't save) "F$ ç ©(F$)>0 …*  È− "OS_SpriteOp",&10C,ramsprites%,F$Íàÿks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ,—modify_u,, wwwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿwwÿÿÿÿ÷ÿÿÿw0wÿÿÿ÷ÿÿw0wÿÿ÷ÿw0wÿ÷ÿwwwwwwwwÿ÷ÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwww—modify_d,, wwwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿ÷ÿwwwwwwwwÿ÷ÿw0wÿ÷ÿÿw0wÿÿ÷ÿÿÿw0wÿÿÿ÷ÿÿÿÿwwÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwww…modify_l ,, wwwwwwww÷ÿÿÿÿÿÿ÷ÿÿÿwÿ÷ÿÿ4pÿ÷ÿ4pÿ÷4pÿ÷4pÿ÷ÿ4pÿ÷ÿÿ4pÿ÷ÿÿÿwÿ÷ÿÿÿÿÿÿwwwwwwww…modify_r ,, wwwwwwww÷ÿÿÿÿÿÿ÷ÿw÷ÿÿÿ÷ÿC÷ÿÿ÷ÿC÷ÿ÷ÿC÷÷ÿC÷÷ÿC÷ÿ÷ÿC÷ÿÿ÷ÿw÷ÿÿÿ÷ÿÿÿÿÿÿwwwwwwww4optoff
  30609. ,° PUUUUUUUUUpwwwwwwwwwWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ4opton
  30610. ,° uwwwwwwwwwU"""""""""U"""""""""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U""»»»»»""U"""""""""U"""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4radiooff
  30611. ,° 03333w3w3w3w3wwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4radioon
  30612. ,° wðw"3w"""3w""»""3w""»»»""3w""»»»»»""33""»»»""3""»""3"""3"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXptr_sizet
  30613. ,,P‘@”V©j¤‘ÿýÿXptr_sizeb
  30614. ,,ÿýÿ‘¤©j@”V‘PXptr_sizel
  30615. ,,<<@<@<Uj=©ªUj=@<@<<<Xptr_sizer
  30616. ,,<<<@<“|©U“ªj|©U<“<@<<Xptr_hand
  30617. ,,@AAPPPPPTU¤ªU©ªV©ªT©ªV“ªj@UUwin_hvo    ,¤ wwwwwwwwwp–−−−−−−7sp–−−−−−−7sp–−−−−−−7sp–−−−−−−qp–−−−−−−q–−−−−−−7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_vo    ,¤ wwwwwwwwwp–−−−−−−7sp–−−−−−−wwp–−−−−−−7sp–−−−−−−q–−−−−−−qp–−−−−−−7sp–−−−−−−wwp–−−−−−−7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_ho    ,¤ wwwwwwwwww–−−−−−−−yw–−−−−−−−yw–−−−−−−−yw–−−−−−−−y–−−−−−−−yw–−−−−−−−ywwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_o    ,¤ wwwwwwwwwp–−−−−−−−yp–−−−−−−−yp–−−−−−−−y–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−ypwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_thv    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp7spqpq7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tv    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp7spqqp7spwwp7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_th    ,¤ wwwwwwwwww73333337swwwwwwwwwwwpwppwpwwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_t    ,¤ wwwwwwwwwp73333333spwwwwwwwwwppppppppppppwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_hv    ,¤ wwwwwwwwwp7sp7sp7spqpq7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_    ,¤ wwwwwwwwwppppppppppppppppwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_v    ,¤ wwwwwwwwwp7sp7sp7spqqp7spwwp7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_h    ,¤ wwwwwwwwwwpwpwpwppwpwwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_thvo    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp–−−−−−−7sp–−−−−−−qp–−−−−−−q–−−−−−−7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tvo    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp–−−−−−−7sp–−−−−−−q–−−−−−−qp–−−−−−−7sp–−−−−−−wwp–−−−−−−7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tho    ,¤ wwwwwwwwww73333337swwwwwwwwwww–−−−−−−−yw–−−−−−−−y–−−−−−−−yw–−−−−−−−ywwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_to    ,¤ wwwwwwwwwp73333333spwwwwwwwwwp–−−−−−−−y–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−ypwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀ…tomenu ,, wwwwwwwwqwqCqCqCqCqCqCqwqqwwwwwwwwrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  30618. | Obey file to replace TemplEd's 3D-look templates with
  30619. | the standard (2D-look) templates
  30620. |
  30621. Rename <TemplEd$Dir>.Templates <TemplEd$Dir>.Extras.Templs3D
  30622. Rename <TemplEd$Dir>.Extras.Templs2D <TemplEd$Dir>.Templates
  30623. Rename <TemplEd$Dir>.Sprites <TemplEd$Dir>.Extras.Sprites3D
  30624. Rename <TemplEd$Dir>.Extras.Sprites2D <TemplEd$Dir>.Sprites
  30625. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |
  30626. | Obey file to replace TemplEd's standard templates with
  30627. | the 3D-look templates
  30628. |
  30629. Rename <TemplEd$Dir>.Templates <TemplEd$Dir>.Extras.Templs2D
  30630. Rename <TemplEd$Dir>.Extras.Templs3D <TemplEd$Dir>.Templates
  30631. Rename <TemplEd$Dir>.Sprites <TemplEd$Dir>.Extras.Sprites2D
  30632. Rename <TemplEd$Dir>.Extras.Sprites3D <TemplEd$Dir>.Sprites
  30633. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickNewIconsEÿÿÿ½_F⇦3ReadMeEÿÿÿÎ0ÍŶÛ⇦3SpritesEùÿÿ⇦Øs3X⇨TemplatesEìÿÿ*t3\8⇩NewIconsEÿÿÿ½_F⇦3ReadMeEÿÿÿÎ0ÍŶÛ⇦3SpritesEùÿÿ⇦Øs3X⇨TemplatesEìÿÿ*t3\8⇩StyleGuideStyleGuideNickRISC OS 3 - New 3D-style Icons
  30634. ------------------------------
  30635.  
  30636. Written by Neil Spellings at Five Star Software based on information contained
  30637. in the RISC OS 3 style-guide.
  30638.  
  30639. (Note:  sizes are in OS units,pixels. 8 OS units should be left between icons)
  30640. (       Positioning key : V = vertically aligned, H = horizontally aligned)
  30641.  
  30642.  
  30643. Display Fields
  30644. --------------
  30645. Used to show information the user can't change by typing in the field.
  30646.  
  30647. x-size                  : as needed,width of text+3 either side
  30648. y-size                  : 52,13
  30649. Button type             : Never
  30650. Background colour       : 1
  30651. Foreground colour       : 7
  30652. Positioning             : Normally V + H
  30653. Type                    : Indirected + Border
  30654. Validation string       : R2
  30655.  
  30656. Action buttons
  30657. --------------
  30658. A button that the user clicks on to cause an action to occur.
  30659.  
  30660. x-size                  : as needed,width of text+3 either side
  30661. y-size                  : 52,13
  30662. Button type             : Click
  30663. Background colour       : 1
  30664. Foreground colour       : 7
  30665. Positioning             : V + H
  30666. Type                    : Text(Indirected) + Border
  30667. Validation string       : R5,3
  30668.  
  30669. Default action buttons 
  30670. ----------------------   
  30671. A button that shows what action will take place if Return is pressed. There
  30672. must be only one per dialogue box.
  30673.  
  30674. x-size                  : as needed,width of text + 9 either side
  30675. y-size                  : 68, 17
  30676. Button type             : Click
  30677. Background colour       : 7
  30678. Foreground colour       : 1
  30679. Positioning             : V + H
  30680. Type                    : Text(Indirected) + Border
  30681. Validation string       : R6,3
  30682.  
  30683. Writable field
  30684. --------------
  30685. Used when the user has to type text to give a value or name.
  30686.  
  30687. x-size                  : as needed,width of text + 3 either side
  30688. y-size                  : 52,13
  30689. Button type             : Writable
  30690. Background colour       : 0
  30691. Foreground colour       : 7
  30692. Positioning             : V + H
  30693. Type                    : Text(Indirected) + Border
  30694. Validation string       : Ktar;Pptr_write
  30695.  
  30696.  
  30697. Option buttons
  30698. --------------
  30699. Can either be on or off. May have associated text to the right of it.
  30700.  
  30701. x-size                  : as needed
  30702. y-size                  : 44
  30703. Button type             : Radio
  30704. Background colour       : -
  30705. Foreground colour       : 7
  30706. Positioning             : V
  30707. Type                    : Text(Indirected) + Sprite, Not filled
  30708. Validation string       : soptoff,opton
  30709.  
  30710.  
  30711. Radio buttons
  30712. -------------
  30713. One of a group of mutually exclusive icons. May have associated text to the
  30714. right of it.
  30715.  
  30716. x-size                  : as needed
  30717. y-size                  : 44
  30718. Button type             : Action
  30719. Background colour       : -
  30720. Foreground colour       : 7
  30721. Positioning             : V
  30722. Type                    : Text(Indirected) + Sprite,Not filled
  30723. Validation string       : sradiooff,radioon
  30724.  
  30725.  
  30726. Adjuster arrows
  30727. ---------------
  30728. Used to increase or decrease a numeric value. May be used in conjunction with
  30729. a slider.
  30730.  
  30731. x-size                  : 32
  30732. y-size                  : 32
  30733. Button type             : Auto-repeat
  30734. Background colour       : -
  30735. Foreground colour       : -
  30736. Positioning             :
  30737. Type                    : Text(Indirected) + Sprite, Not filled
  30738. Validation string       : Up arrow   : R5;sup,pup
  30739.                           Down arrow : R5;sdown,pdown
  30740.                           etc...
  30741.                           
  30742. Popup-menu button
  30743. -----------------
  30744. Used to activate a icon-specific menu.
  30745.  
  30746. x-size                  : 44
  30747. y-size                  : 44
  30748. Button type             : Click
  30749. Background colour       : -
  30750. Foreground colour       : -
  30751. Positioning             : V
  30752. Type                    : Text(Indirected) + Sprite, Both filled
  30753. Validation string       : R5;sgright,pgright
  30754.  
  30755. Label or Comment
  30756. ----------------
  30757. Used to add a comment or label to other icons
  30758.  
  30759. x-size                  : as needed,width of text
  30760. y-size                  : 40,9
  30761. Button type             : Never
  30762. Background colour       : -
  30763. Foreground colour       : 7
  30764. Positioning             : V (+H)
  30765. Type                    : Text
  30766.  
  30767. Group box or frame
  30768. ------------------
  30769. Used to enclose a group of icons relating to a similar subject.
  30770.  
  30771. x-size                  : as needed
  30772. y-size                  : as needed
  30773. Button type             : Never
  30774. Background colour       : -
  30775. Foreground colour       : -
  30776. Positioning             : -
  30777. Type                    : Text(Indirected)
  30778. Validation string       : R4
  30779.                         : May have a label attached to it.
  30780. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ReadMe
  30781. ======
  30782.  
  30783. This archive contains templates that are shown in the RISC OS 3 Style Guide.
  30784. The templates are named by the relevant page number rather than a specific
  30785. name. A description of the templates is given below.
  30786.  
  30787. icons          Standard components of dialogue boxes (Writable/Slider/etc.)
  30788. 20             'About this program'
  30789. 25             'About this file'
  30790. 41a/57a        'Save as' (with option to save selection)
  30791. 41b            'Export as'
  30792. 52a            Set grid (spacing&options)
  30793. 52b            'Choices' dbox for word processor (Spelling/Units)
  30794. 56a            Simple 'Print' dbox
  30795. 56b            More complex 'Print' dbox
  30796. 56c            'Save as'
  30797. 57b            'Scale view'
  30798. 58             Find/Replace
  30799. 59             RGB colour selector
  30800. 60             Font selector
  30801. 61             Quit-with-unsaved-edits (Discard/Cancel/Save)
  30802. 62b,62c,63a-d  Examples for wording of dialogue boxes
  30803.  
  30804. The templates are basically the ones provided by Acorn as illustration to the
  30805. Style Guide, except that:
  30806.  
  30807.   * the page numbers are now correct
  30808.   * the Action buttons now have button type 'Click' instead of 'Click/Drag'
  30809.     (as prescribed by the Style Guide (sic!))
  30810.  
  30811. The file 'NewIcons' by Neil Spellings describes the standard icons in more
  30812. detail.
  30813.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     \4optoff,, BTTTTTTTTTTTTTTTTTT DDDDDDDDDTBUUUUUUUUUU4opton,,UUUUUUUUUU$EDDDDDDDDDEEEEqEGEQEuEAGEr%ETwErAGEAGq7EuwEcWEQGE!%EE$<<radiooff,4»»»»»»»»»»»»»»»»»»»»»»»»»"»»»»»»»"3»»»»» 3#»»»»!D»»» B´»»1%»»!E»»U»»e»»e»»"V»»21F»»;Q'»»;#tµ»»»CAw»»»»K42u·»»»»»TUUfW»»»»»»+TfE²»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿ<radioon,4»»»»»»»»»»»»»»»»»»»»»»»»»+TfE²»»»»»»ufUUE»»»»»{W#!C´»»»»w!4»»»[GSw52³»»rQwww1³»»dswww7#»»euwwwW"»»Vwwwww!»»Vwwwww»»UuwwwW»»Tswww7»»RQwww»»K$Sw5°»»»D»»»»23°»»»»»3"»»»»»»»"±»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<4gright,,@DDD•UUUUUD•QD⇦⇦⇦#""QD•QD•UUUUUDQD%!!QDQD%!QDQD%QD%QD%!QDUUUUUDDDDDDDDDDDDD@DDDDDDDDDD4pgright,,DDDDDDDDDDDDDDDDDDDDD−−−−−−−−−D−−−−−−−−−D−•−UUUUU−D−•—Q−D⇦⇦⇦#""Q−D−•—Q−D−•−UUUUU−D−−−Q−D−−−%!!Q−D−−−Q−D−−−%!Q−D−−−Q−D−−−%Q−D−−−%Q−D−−−%!Q−D−−−UUUUU−D−−−−−−−−−D−−−−−−−−−Dì€ ,…1 b 6Q!d10G 6b% dubG0& ÿðÿÿðÿÿÿððÿððÿðÿÿÿÿÿÿÿÿðÿðÿÌ⇨    ,|%E%5C%5"C%5""C%5"""5""5"%ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlswitcher',L⇦⇦⇦⇦⇦⇦(¢=#⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦¢ÚÓÝ$⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦(ª­=Ý]ŵ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦¢:ÚÚÓÝ%⇦⇦⇦⇦⇦⇦⇦⇦⇦(ª£­­=Ý]⇦⇦⇦⇦⇦⇦⇦⇦⇦(ªÚÚÚÚÓ]☓⇦⇦⇦⇦⇦⇦⇦⇦¢ª£­­­=Ý%⇦⇦⇦⇦⇦⇦⇦⇦¢:ÚÚÚÚÓÓE⇦⇦⇦⇦⇦⇦⇦(ªª­­­­=Ý]ŵ⇦⇦⇦⇦⇦⇦(ªÚÚÚÚÚÚÓ]◰⇦⇦⇦⇦⇦⇦¨ª:­­­­==ÝŶ⇦⇦⇦⇦⇦⇦¨ªÚÚÚÚÚÚÓÝ%⇦⇦⇦⇦⇦⇦¢ª£­­­­­=Ý5⇦⇦⇦⇦⇦⇦¢ªÚÚÚÚÚÚÓÝ]⇦⇦⇦⇦⇦⇦ªª£­­­­­=Ý]ŵ⇦⇦⇦⇦⇦ª:ÚÚÚÚÚÚÓÝ]◰⇦⇦⇦⇦⇦ªª£­­­­­=Ý]☓⇦⇦⇦⇦⇦ª:ÚÚÚÚÚÚÓÝ]Ŷ⇦⇦⇦⇦⇦ªª­­­­­==Ý]Ŷ⇦⇦⇦⇦⇦2CDTUVfffVV☓⇦⇦⇦⇦⇦!3CDUeefffeŵ⇦⇦⇦⇦⇦ªª­­­­­­=Ý]◰⇦⇦⇦⇦⇦ª:ÚÚÚÚÚÚÓÝ]◰⇦⇦⇦⇦⇦ªª­­­­­­=Ý]ŵ⇦⇦⇦⇦⇦¢:ÚÚÚÚÚÚÓÝ]⇦⇦⇦⇦⇦⇦¨ª£­­­­­ÝÝ5⇦⇦⇦⇦⇦⇦(ªÚÚÚÚÚÚÝ]Ŷ⇦⇦⇦⇦⇦⇦⇦¢ª­­­­ÝÝU⇦⇦⇦⇦⇦⇦⇦⇦(£ÚÚÚÓÝ]Ŷ⇦⇦⇦⇦⇦⇦⇦⇦⇦2==ÝÝ]5⇦⇦⇦⇦⇦⇦⇦¨ª⇩⇦ØÝÝ]5ŵ⇦⇦⇦⇦⇦⇦⇦⇦¨Ý­⇩¨]¥⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÓÝ­ÚŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦2]ÝÝ⇩⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦(ÔÕݪ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦BUݪ⇩⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦8UÝ­⇩⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦8UÝ¥⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦HU⇩⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿ,up,¬$$AA$$AA$$AA0CCCCCC#0444444$ððÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,down,¬ AAA44AAD4AAD4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðð,left,¬ 1C4C4C4DC4D4@4DC@4D4@4DC@4D4@4DC@44ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿðÿÿðÿ,right,¬1D1D1DC1DC1DC1DCDC@Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pup,¬0@CD0“    @“    C−−D−−0“−−    @“−−    C−−−−D−−−−0“−−−−    @“−−−−    Cððÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pdown,¬CCCCCCC34444444D›−−−−    4“−−−−    DD−−−−DC−−−−DD“−−    D4“−−    DDD−−DDC−−DDD“    DD4“    DDDDDDDCDDDDDDD4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðð,pleft,¬D3D3DD3D›D3D›−D3D›−−D3D›−−−3D›−−−−D›−−−−−‘−−−−−‘−−−−‘−−−‘−−‘−‘ðÿðÿÿðÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pright,¬D3D3D3D4)D3DC−)D3D4−−)D3C−−−)D34−−−−)D3C−−−−−)D4−−−−−    C−−−−    4−−−    C−−    4−    C    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ptr_write,,UTi¥”YP@@@@@@@@@@@@P”Yi¥UUrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ,8 ¢icons®20²    .25à –41a/57aw”41b ñ52aý.52b+ŷ56a±Í56b~?56c½D57b÷58øç59ß&960. 618/%62b]0‡62cú1¯63a©3 63bI5@63c⇨6£63d,ÖÔìÿÿÿÿÿÿÿÿ üÿÿ=0Øÿÿÿÿ  ÿÿÿÄÿÿÿãä(Lþÿÿ—tþÿÿVolumeÿ ¶þÿÿêþÿÿ=1çö¸þÿÿHèþÿÿAùú<¨ÿÿÿØÿÿÿ9ÿÿÿÿ(þÿÿØ(þÿÿbFont cachePþÿÿt&þÿÿ!èúýÿÿH.þÿÿ=ñ*/ pþÿÿ“&þÿÿ!EFfiþÿÿ
  30814. (þÿÿ`ÇKBytesÿ4lÿÿÿЗÿÿÿ±QVlÿÿÿÜ—ÿÿÿ±hq    8ÿÿÿ´dÿÿÿ±◰$ýÿÿ :ýÿÿ±−¤ 4ýÿÿ:ýÿÿ±¶À
  30815. 48ÿÿÿØdÿÿÿ±ÒÙ(²ýÿÿxÞýÿÿqëý(zýÿÿx¦ýÿÿq@düÿÿ……üÿÿÇ1ÿÿÿÿ‹^üÿÿ ‹üÿÿ=ñEH  ¸üÿÿ¤àüÿÿAuthorÿ¤²üÿÿ€æüÿÿ=aSoÄLþÿÿtþÿÿars ÐXþÿÿúhþÿÿ8`Untitled>ÐXþÿÿehþÿÿ8`VUntitled>(¼þÿÿ—äþÿÿVoiceÿÿPþÿÿ0pþÿÿ!'€ŴfiPþÿÿ¾pþÿÿ!'‹›New WindowR4WaveSynth-BeepR2Sgright,pgright;R5Printer portR5;sdown,pdown1024a0-9;KARTN;Pptr_writeR5;sup,pupNoneSradiooff,radioonParallelSradiooff,radioonNetSradiooff,radioonQuiet beepsradiooff,radioonLoud beepsradiooff,radioonSerialSradiooff,radioonHorizontal scrollN7/;soptoff,optonVertical scrollN7/;soptoff,optonDefault screen mode27Pptr_write© Acorn Computers Ltd, 1993R2N5//23/24;R2R5;sright,prightR5;sleft,pleftH|È´ÿÿÿÿR☓  üÿÿ=—ÿÿÿÿ
  30816. —Èÿÿÿtüÿÿÿ=a«° —Pÿÿÿt☓ÿÿÿ=a³Ï(—ÿÿÿtHÿÿÿ=aÒÞ>ÌÿÿÿŒôÿÿÿNameled>þ‘ÿÿÿŒ¸ÿÿÿPurpose>þTÿÿÿŒ|ÿÿÿAuthord>þ ÿÿÿ—@ÿÿÿLicence—Úþÿÿtÿÿÿ=aáò—…ÿÿÿtÀÿÿÿ=aõ Þþÿÿ—ÿÿÿVersionAbout this programEditR2© Acorn Computers Ltd, 1993R2Single UserR21.45 (09-Jul-93)R2Text editorR2“VÄþÿÿÿÐÿÿÿÿÿÿÿR☓  þÿÿÿüÿÿ=¸ÿÿÿÿ rÿÿÿ"4ÿÿÿ=`×OKtitled>ŷ ÿÿÿ4Tÿÿÿ5cÈâÿ`—ÿÿÿ4Ìÿÿÿ=aåè `\ÿÿÿ4‘ÿÿÿ=aëødäþÿÿ4ÿÿÿ=aûd¨þÿÿ4Üþÿÿ=aJlÿÿÿfiÄÿÿÿÄ—ÿÿÿ`ÈÿÿÿModified?þ\ÿÿÿ^…ÿÿÿTypeled>þäþÿÿ^ÿÿÿ$ÿÿÿÿ¨þÿÿ`Øþÿÿ)ÿÿÿÿAbout this fileADFS::IDEDisc4.4.TextFileR2NOR2Text   (fff)R21024R211:41:15 24-Jun-1993R2file_fffSizeDateØPxÿÿÿÿR☓  pþÿÿ‘=8ÿÿÿÿ     6ÿÿÿâbÿÿÿ± @J íþÿÿ…#ÿÿÿ=aX_$pÿÿÿ¤ÿÿÿ=ñhq…ÿÿÿ<¬ÿÿÿ€<Deleted>z¯ÿÿÿºõÿÿÿ:a€pÿÿÿ<‘ÿÿÿ€<Deleted>¨åþÿÿ(+ÿÿÿ=a⇨‰Save asSelectionsoptoff,optonCancelN1/;R5,3TextFilea~ ;Pptr_writefile_fffSaveN1/;R6,3îD$lÿÿÿÿR☓  pþÿÿ‘=8ÿÿÿÿ
  30817.  6ÿÿÿâbÿÿÿ±BL íþÿÿ…#ÿÿÿ=aZa$pÿÿÿ¤ÿÿÿ=ñjoz°ÿÿÿºôÿÿÿ:a~z¯ÿÿÿºõÿÿÿ€<Deleted>pÿÿÿ<‘ÿÿÿ€<Deleted>¨åþÿÿ(+ÿÿÿ=a…Export asSelectionsoptoff,optonCancelN1/;R5,3Drawa~ ;Pptr_writefile_affSaveN1/;R6,3FòÔÿÿÿÿ☓ üÿÿ=0xÿÿÿÿ    ¸Âÿÿÿøöÿÿÿ=ñ}€ Þ‰ÿÿÿ`ºÿÿÿ³…’(‰ÿÿÿªºÿÿÿ³ fl¤Ü:ÿÿÿfi~ÿÿÿ=a²µBÿÿÿÊvÿÿÿ=a¾ÅÌÿÿÿ$ìÿÿÿ!ÇÎÏ &ÌÿÿÿFìÿÿÿ!Çåæ BÄÿÿÿzôÿÿÿÇmmÿÿÿÿ*Èÿÿÿ¦ðÿÿÿÇSpacingGrid10a0-9.a-zA-ZLockSoptoff,optonShowSoptoff,optonOKN1/;R6,3CancelN1/;R5,3N11//6;R5;sdown,pdownR5;sup,pupR†òtÿÿÿÿŶ üÿÿ=0Øÿÿÿÿ
  30818. Jÿÿÿ‘âÿÿÿaÇàá ,Îÿÿÿ´öÿÿÿ9aêÿÿÿÿ    
  30819. “þÿÿ‘$ÿÿÿaÇóô ,ÿÿÿ☓8ÿÿÿ9aýÿÿÿÿ$Ôþÿÿ€ÿÿÿPageÿÿÿfÔþÿÿ¾ÿÿÿ±ÔÔþÿÿ(ÿÿÿ±ŷfiþÿÿÞÎþÿÿ±-0öfiþÿÿPÎþÿÿ±"BEffiþÿÿ¾Îþÿÿ±WZÔfiþÿÿ&Îþÿÿ±lo>þÿÿ„ŵþÿÿ=aŴŶŷÔþÿÿÞÿÿÿ±!‰’—ÿÿÿÞÄÿÿÿ³£¼²FþÿÿHzþÿÿ=aÊÏFþÿÿ¤zþÿÿ=aØàdÿÿÿn‘ÿÿÿ³ éû¨þÿÿ€ÈþÿÿRulerÿÿVFþÿÿìzþÿÿ=a    öÔþÿÿLÿÿÿ±ChoicesN9//1;R4SpellingN9//3;R4Unitsinsradiooff,radioonptsradiooff,radiooncmsradiooff,radioonmmsradiooff,radiooninsradiooff,radioonptsradiooff,radioonSetN1/;R6,3cmsradiooff,radioonLoad spelling dictionarySoptoff,optonSaveN1/;R5,3DefaultN1/;R5,3Check as you typeSoptoff,optonCancelN1/;R5,3mmsradiooff,radioonÒÄ„tÔÿÿÿÿÿÿÿŶ …þÿÿÐ=08ÿÿÿÿÂ⇩ÿÿÿ¾ÿÿÿ=ñBÿÿÿÿ>‘ÿÿÿ¼¸ÿÿÿÇCopiesÿ“ÿÿÿ>´ÿÿÿ!ÇDE @“ÿÿÿ`´ÿÿÿ!Ç[\ :ÿÿÿÚnÿÿÿ=agnò2ÿÿÿ´vÿÿÿ=aw}‘ÿÿÿN¼ÿÿÿ€<Deleted>Apple LW+1N11//3;R5;sdown,pdownR5;sup,pupCancelN1/;R5,3PrintN1/;R6,3Þ¨¸4ÿÿÿÿŶ ¤úÿÿ¸=0Øÿÿÿÿ Êÿÿÿ€öÿÿÿ±âæ JÌÿÿÿvôÿÿÿÇtoÿÿÿÿrRÿÿÿ‰zÿÿÿÇ%ÿÿÿÿ ÿÿÿ¼Fÿÿÿ±/ø ¼ÿÿÿ☓Fÿÿÿ± Ø⇦ÿÿÿ$¼ÿÿÿ=ñ-ÿÿÿÿT‰ÿÿÿÒ¶ÿÿÿÇCopiesÿ.‹ÿÿÿN²ÿÿÿ!Ç/0 P‹ÿÿÿp²ÿÿÿ!ÇFG ØLÿÿÿ$€ÿÿÿ=ñRÿÿÿÿPRÿÿÿÎzÿÿÿÇScaleÿÿ.VÿÿÿNvÿÿÿ!ÇVW PVÿÿÿpvÿÿÿ!Çno üÆÿÿÿHúÿÿÿ=ñzÿÿÿÿ Þþÿÿ¾
  30820. ÿÿÿq|ŵ…þÿÿàÀþÿÿ=a“œø☓þÿÿºÈþÿÿ=a¤ªxÆÿÿÿÄúÿÿÿ=ñ³ÿÿÿÿ¢þÿÿÂÖþÿÿ€<Deleted>€Êÿÿÿúöÿÿÿ±.¶» Apple LW+Allsradiooff,radioonUprightsradiooff,radioonSidewayssradiooff,radioon1N11//8;R5;sdown,pdownR5;sup,pup100N11//12;R5;sdown,pdownR5;sup,pup1DraftN7/;soptoff,optonCancelN1/;R5,3PrintN1/;R6,310Fromsradiooff,radioon⇦¾ÿÿÿÿR☓  ´ýÿÿ>=0øÿÿÿÿVÿÿÿ
  30821. Œÿÿÿ€<Deleted>|§ÿÿÿ¼íÿÿÿ:aªÿÿÿ*Yÿÿÿ=a    ÿÿÿ‰Qÿÿÿ=a&hÿÿÿ†ÿÿÿ=ñ'0Save asfile_fffSaveN1/;R6,3CancelN1/;R5,3TextFilea~ ;Pptr_write°¢ ÿÿÿÿŶ üÿÿ=0¸ÿÿÿÿ ¬ÿÿÿ€ÔÿÿÿÇScaleÿÿ$ÿÿÿÖhÿÿÿ=aÃÉÄ°ÿÿÿäÐÿÿÿ!ÇÒÓ æ°ÿÿÿÐÿÿÿ!Çéê 4Àÿÿÿŷøÿÿÿ=aõù¬ÿÿÿ$ÔÿÿÿÇ%ÿÿÿÿ‰Àÿÿÿàøÿÿÿ=a4€ÿÿÿŷ¸ÿÿÿ=a,ÿÿÿÚ`ÿÿÿ=a$‰€ÿÿÿà¸ÿÿÿ=a-2x¦ÿÿÿÀÚÿÿÿ=ñ;?Scale viewScaleN1/;R6,3N11//3;R5;sdown,pdownR5;sup,pup33%N1/;R5,380%N1/;R5,3100%N1/;R5,3CancelN1/;R5,3120%N1/;R5,3100A0-9DP8ÿÿÿÿŶ üÿÿ=0xÿÿÿÿ     (öþÿÿê*ÿÿÿ=a}⇨ 0öþÿÿò*ÿÿÿ=a‹−&îþÿÿè2ÿÿÿ=a¢¬
  30822. 2ÿÿÿ®^ÿÿÿ€<Deleted>ìºÿÿÿöîÿÿÿ=ñµ¶ì~ÿÿÿö²ÿÿÿ=ñÁÂ…ÀÿÿÿèèÿÿÿFindÿÿÿ ☓ÿÿÿè¬ÿÿÿÍÿÿÿÿìDÿÿÿ pÿÿÿ3±ÚéFindReplace allN1/;R5,3CancelN1/;R5,3Find nextN1/;R6,3Pptr_writePptr_writeReplace withCase sensitivesoptoff,opton"“LÿÿÿÿŶ …úÿÿÚ=Øÿÿÿÿd,—ÒþÿÿÒþþÿÿ<0w…t < €¨þÿÿºÔþÿÿ<0§…t < ¸¨þÿÿòÔþÿÿ<0·…t < ð¨þÿÿ*Ôþÿÿ<0Ç…t < (¨þÿÿbÔþÿÿ<0×…t < `¨þÿÿŒÔþÿÿ<0ç…t < —¨þÿÿÒÔþÿÿ<0÷…t < PÀÿÿÿlðÿÿÿÇ%t < ¨þÿÿJÔþÿÿ<0…t < VþÿÿÐŒþÿÿ=aßâ^þÿÿà‹þÿÿ=aëòÿÿÿÈ4ÿÿÿqû¾ÄÿÿÿÚìÿÿÿ×Rt < „Äÿÿÿ‹ìÿÿÿa ¢Ðÿÿÿŷàÿÿÿ8`Untitled>¢Ðÿÿÿàÿÿÿ8`VUntitled>¸Òþÿÿòþþÿÿ<07…t < ìÿÿÿÎ<ÿÿÿ<`7ÿÿÿÿÒþÿÿJþþÿÿ<0…t < HÒþÿÿŵþþÿÿ<0…t < €Òþÿÿºþþÿÿ<0'…t < ŒÈÿÿÿºèÿÿÿ!' !pÈÿÿÿ‘èÿÿÿ!'23ðÒþÿÿ*þþÿÿ<0G…t < ¾⇦ÿÿÿÚ°ÿÿÿ×Gÿÿÿÿ„⇦ÿÿÿ‹°ÿÿÿaBC ¢“ÿÿÿŷ¤ÿÿÿ8`Untitled>¢“ÿÿÿ¤ÿÿÿ8`VUntitled>Œ…ÿÿÿº¬ÿÿÿ!'PQp…ÿÿÿ‘¬ÿÿÿ!'bcP☓ÿÿÿl´ÿÿÿÇ%t < (Òþÿÿbþþÿÿ<0W…t < ¾LÿÿÿÚtÿÿÿ×Bÿÿÿÿ„Lÿÿÿ‹tÿÿÿars ¢Xÿÿÿŷhÿÿÿ8`Untitled>¢Xÿÿÿhÿÿÿ8`VUntitled>ŒPÿÿÿºpÿÿÿ!'€ŴpPÿÿÿ‘pÿÿÿ!'‹›PHÿÿÿlxÿÿÿÇ%t < `ÒþÿÿŒþþÿÿ<0g…t < ¾ÿÿÿNòÿÿÿ5ó¢¥ŵÿÿÿN¶ÿÿÿ5ó¹¼FÿÿÿNzÿÿÿ5óÐÓH¨þÿÿŵÔþÿÿ<0–…t < ColourOKN1/;R6,3CancelN1/;R5,3NoneN7/;soptoff,optonN5//14/15;R2R5;sright,prightR5;sleft,pleftN5//26/27;R2R5;sright,prightR5;sleft,pleftN5//34/35;R2R5;sright,prightR5;sleft,pleft50N4/;A0-9;Pptr_write50N4/;A0-9;Pptr_write50N4/;A0-9;Pptr_writez°èàÿÿÿÿÿÿÿŶ üÿÿ=0xÿÿÿÿ )ŵþÿÿ$ºÿÿÿaÇ◰☓ 6¦ÿÿÿ~Îÿÿÿ9a™ÿÿÿÿ:ŵþÿÿxºÿÿÿaÇ‹› \¦ÿÿÿ¤Îÿÿÿ9a†ÿÿÿÿ“þþÿÿÔ2ÿÿÿ=1¡¨“RÿÿÿÔŷÿÿÿ=1«³‹ªþÿÿÔÞþÿÿ=1¶¾Hàþÿÿ¬ÿÿÿÇHeightÿüäþÿÿÿÿÿ!ÇÁ äþÿÿ>ÿÿÿ!ÇØÙ H†þÿÿ¬ÄþÿÿÇAspectÿ@†þÿÿ\ÄþÿÿÇ%ÿÿÿÿ¶„þÿÿøÊþÿÿ=ñäèü þÿÿÀþÿÿ!Çíî  þÿÿ>Àþÿÿ!Ç ,þÿÿt`þÿÿ=aÑýÿÿx/þÿÿ€<Deleted>‹þþÿÿÔ2ÿÿÿ€<Deleted>(°þÿÿ‰ØþÿÿÇStyleÿÿ(Xÿÿÿ‰€ÿÿÿÇFontÿÿÿâÿÿÿ.ÿÿÿ;1' â®þÿÿÚþÿÿ;1'23 $¸ýÿÿæüýÿÿ=aFL‹PÿÿÿÔ☓ÿÿÿ€<Deleted>´Àýÿÿvôýÿÿ=aU\Rþÿÿø~þÿÿ€<Deleted>Rþÿÿ ~þÿÿ€<Deleted>âVÿÿÿŵÿÿÿ;1'ef ¶Úþÿÿøÿÿÿ=ñy|Âoÿÿÿò‡ÿÿÿ=aŴ☓úoÿÿÿ*‡ÿÿÿ=a™‘2oÿÿÿb‡ÿÿÿ=a−†⇩oÿÿÿ¶‡ÿÿÿ=a¥¨Roÿÿÿŵ‡ÿÿÿ=a±³(ÿÿÿ‰,ÿÿÿÇWeightÿÂ+ÿÿÿòYÿÿÿ=a¼¿ú+ÿÿÿ*Yÿÿÿ=aÈË2+ÿÿÿbYÿÿÿ=aÔ×⇩+ÿÿÿºYÿÿÿ=aàãR+ÿÿÿŵYÿÿÿ=aìïzþÿÿxuþÿÿ}ñø&.Type styleN9//1;R4FontN9//3;R4SizeMediumR2TrinityR2(Plain)R2N11//9;R5;sdown,pdownR5;sup,pup100A0-9N11//14;R5;sdown,pdownR5;sup,pupTryN1/;R5,3R5;sgright,pgrightR5;sgright,pgrightApplyN1/;R6,3CancelN1/;R5,3R5;sgright,pgright12A0-912N1/;R5,314N1/;R5,318N1/;R5,310N1/;R5,38N1/;R5,336N1/;R5,348N1/;R5,372N1/;R5,328N1/;R5,324N1/;R5,3The quick brown fox jumped over the lazy dog.N4/;Pptr_write;f07J(,<ÿÿÿÿ☓  üÿÿ=0Øÿÿÿÿöþÿÿ¢:ÿÿÿ=1Ýâ FÿÿÿÞüÿÿÿaçBþþÿÿÐ2ÿÿÿ=1 ,þþÿÿ¼2ÿÿÿ=1 EditSaveR6,3This file has been modifiedl40DiscardR5,3CancelR5,3†~ÿÿÿÿ☓  üÿÿ=0Øÿÿÿÿ0ÿÿÿÞüÿÿÿè
  30823. ÿÿÿl>ÿÿÿ€<Deleted>À
  30824. ÿÿÿŵNÿÿÿ=a     zÿÿÿ<Fÿÿÿ=aNetwork managerErase network user password?l40OKN1/;R6,3CancelN1/;R5,3&è@ÿÿÿÿ☓  üÿÿ=0ØÿÿÿÿLÿÿÿüÿÿÿèq
  30825. ÿÿÿl>ÿÿÿ€<Deleted>†
  30826. ÿÿÿ²Nÿÿÿ=au☓VÿÿÿlFÿÿÿ=a™“Network managerRemoving your user access password will allow unrestricted access to your network account. Are you sure you wish to erase your password?l40Erase passwordN1/;R6,3CancelN1/;R5,3Ö8ŵ ÿÿÿÿ ☓ üÿÿ=0Xÿÿÿÿ²¤ÿÿÿòØÿÿÿ=ñ`c $ªÿÿÿ ÒÿÿÿÇLeadingŷÿÿÿ`ºÿÿÿ€<Deleted>ŷÿÿÿªºÿÿÿ€<Deleted>Ü:ÿÿÿfi~ÿÿÿ=aosBÿÿÿÊvÿÿÿ=a|◰þ®ÿÿÿÎÿÿÿ!Ç…™  ®ÿÿÿ@Îÿÿÿ!Ç£¤ Options12a0-9.a-zA-ZSetN1/;R6,3CancelN1/;R5,3N11//7;R5;sdown,pdownR5;sup,pupÚ4ŷ ÿÿÿÿ ☓ üÿÿ=08ÿÿÿÿö¨ÿÿÿ6Üÿÿÿ=ñ@C Ü:ÿÿÿfi~ÿÿÿ=aOS¬ÿÿÿþÔÿÿÿ€<Deleted>BÿÿÿÊvÿÿÿ=a\cB²ÿÿÿbÒÿÿÿ!Çlm d²ÿÿÿ☓Òÿÿÿ!Ç◰☓ ®ÿÿÿìÖÿÿÿc•†Options12a0-9.a-zA-ZSetN1/;R6,3CancelN1/;R5,3N11//5;R5;sdown,pdownR5;sup,pupLine spacingN2/Ìø® ÿÿÿÿ ☓  üÿÿ=0¸ÿÿÿÿ 0ÿÿÿÞüÿÿÿÄ#z
  30827. ÿÿÿ<>ÿÿÿ=a'*ª
  30828. ÿÿÿl>ÿÿÿ=a37SpreadsheetRelcalculating the entire spreadsheet may take many minutes. Are you sure you wish to proceed?l40NoN1/;R5,3YesN1/;R5,3ŵpd☓ÿÿÿÿ ☓  üÿÿ=0øÿÿÿÿ øþÿÿÀ,ÿÿÿ€<Deleted>¤úþÿÿ~<ÿÿÿ=a 0ÿÿÿÞüÿÿÿ•pÿÿÿJ4ÿÿÿ=a›Œúþÿÿ®*ÿÿÿ€<Deleted>SpreadsheetRecalculateN1/;R6,3Relcalculating the entire spreadsheet may take many minutes. Are you sure you wish to proceed with the recalculation?l40CancelN1/;R5,3ÀÀTrinity.Medium1:Qf%!4=1 N:É1,3:uj%=©    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ¬…Align8XDefaultWin‘òDialogueŵfi    IconEdit  IconInfo@ÙInfo¨OptionsÁ¬OptPanemÕSaveBoxB"SpaceOutdÀStats$ †TemplatesÀ K WindowEdit ,öWorkArea1|Export}2‰Frame 7^Palette¢ð(dÿÿÿÿ ☓üÿÿ=Align icons PÿÿÿxøÿÿÿÌLÔL ÐþÿÿxHÿÿÿÜLäLÀÿÿÿ¸ìÿÿÿ±¸½ ‘ÿÿÿ¸¼ÿÿÿ±Ð× `ÿÿÿ¸…ÿÿÿ±êð ÌÀÿÿÿlìÿÿÿ± Ì‘ÿÿÿl¼ÿÿÿ±! Ì`ÿÿÿl…ÿÿÿ±4; ÿÿÿî<ÿÿÿ±NY àþÿÿ ÿÿÿ±lyö“þÿÿzÄþÿÿ=‘ÇOK<NLeftSradiooff,radioon;H centSradiooff,radioon;RightSradiooff,radioon;TopSradiooff,radioon;V centSradiooff,radioon;BottomSradiooff,radioon;Move iconsSradiooff,radioon;Resize iconsSradiooff,radioon;„<0ÿÿÿÿ ÿ XüÿÿÔ=<Untitled>e>⇦Àxÿÿÿÿ ☓  üÿÿ=0TemplEd>ePÿÿÿxøÿÿÿ=ØÚÿÿÿÈHÿÿÿ=’ÇÞÿÿÿÿ àÿÿÿ Hÿÿÿ=’Çãÿÿÿÿ ¸ÿÿÿxHÿÿÿ=’Çëÿÿÿÿ ?L40SaveDiscardCancel†¶Èÿÿÿÿÿ Ôýÿÿ´=ñÿÿÿÿ@6 àþÿÿ¨ôÿÿÿ☓ÿ´ ÿÿÿ¨ôÿÿÿ☓ÿ lþÿÿ¨Øþÿÿ☓ÿ ÿÿÿüDÿÿÿValidation ÿÿÿ“@ÿÿÿ2Max size¬þÿÿ€ÌþÿÿButton type‘¬þÿÿüÌþÿÿESGolour¸¬þÿÿ ÌþÿÿFg colr4¬þÿÿ†ÌþÿÿBg colrÀäþÿÿ<ÿÿÿ=‘ÇUpdateÿLäþÿÿ4ÿÿÿ=’Ç"ÿÿÿÿCäþÿÿŒÿÿÿ=‘ÇExiteÿ¼ÿÿÿ‘èÿÿÿ±05⇦ÿÿÿ¬´ÿÿÿ±CJTÿÿÿð€ÿÿÿ±XcÀ¼ÿÿÿXèÿÿÿ±qxÀ…ÿÿÿX¸ÿÿÿ±ŷ™À\ÿÿÿ⇦⇦ÿÿÿµœ¥À,ÿÿÿ⇦Xÿÿÿ±³½¨¼ÿÿÿ‘èÿÿÿµËר…ÿÿÿ€¸ÿÿÿ±åð¨\ÿÿÿ¤⇦ÿÿÿ±þ ¨,ÿÿÿpXÿÿÿ±#°¸ÿÿÿ—èÿÿÿ=ñ1>ÿ°☓ÿÿÿ—´ÿÿÿ=ñR_ìþÿÿüÿÿÿ=ñyzÿ ìþÿÿ—ÿÿÿ=ñ‰•    xþÿÿ8¨þÿÿ modify_lÿ4xþÿÿd¨þÿÿ=1¨º`xþÿÿ€¨þÿÿ modify_rÿ‘xþÿÿ°¨þÿÿ modify_lÿ¬xþÿÿà¨þÿÿ=1ÈËÜxþÿÿü¨þÿÿ modify_rÿ´xþÿÿÔ¨þÿÿ modify_lÿÐxþÿÿ¨þÿÿ=1ÙÚxþÿÿ ¨þÿÿ modify_rÿ0xþÿÿP¨þÿÿ modify_lÿLxþÿÿ€¨þÿÿ=1èé|xþÿÿ†¨þÿÿ modify_rÿ|þÿÿ¨¨þÿÿ±÷þ Üýÿÿ¨`þÿÿ☓ÿ(þÿÿ Tþÿÿ±         Ðèýÿÿ`þÿÿFont sizeepèýÿÿ⇦þÿÿXze XtypeLèýÿÿhþÿÿYze Ytype$þÿÿtTþÿÿ51'    ?    (|$þÿÿ†Tþÿÿ;1M    N    “èýÿÿ´þÿÿ modify_lÿ°èýÿÿþÿÿ=1d    j    èýÿÿ0þÿÿ modify_rÿtèýÿÿ“þÿÿ modify_lÿ‘èýÿÿôþÿÿ=1x    ~    ðèýÿÿþÿÿ modify_rÿ4ìýÿÿ—þÿÿ±…    ‘    Edit IconUpdate & ExitTextSoptoff,optonSpriteSoptoff,optonIndirectedSoptoff,optonBorderSoptoff,optonFilledSoptoff,optonH centredSoptoff,optonV centredSoptoff,optonR justifiedSoptoff,optonNeeds helpSoptoff,optonAllow adjustSoptoff,optonHalf sizeSoptoff,optonAbcdefghijklKrat;Pptr_write,3,5AbcdefghijklA~ #*;Krat;Pptr_write,3,5Krat;Pptr_write,3,5A0-9;Krat;Pptr_write,3,5Double/Click/DragPptr_menu,6,331Pptr_menu,6,3Pptr_menu,6,3Pptr_menu,6,3ShadedSoptoff,optonOutline fontSoptoff,optonHomerton.Medium.ObliquePptr_menu,6,3Stomenu;Pptr_menu,6,3246.8Pptr_menu,6,3246.8Pptr_menu,6,31:1Soptoff,opton⇩|þÔÿÿÿÿ • Èþÿÿt=Icon infoeÔÿÿÿ‘üÿÿÿTemplate>¨ÿÿÿ‘ÐÿÿÿIconate>Pÿÿÿ‘xÿÿÿPosition>´8ÿÿÿP“ÿÿÿ4Position>øþÿÿ‘ ÿÿÿSizeion>Ìþÿÿ‘ôþÿÿMouse att—Ôÿÿÿlüÿÿÿÿÿÿÿ —¨ÿÿÿlÐÿÿÿÿÿÿÿÎ|ÿÿÿ6¤ÿÿÿ9ÿÿÿÿ—Lÿÿÿ|ÿÿÿ1ÿÿÿÿLÿÿÿl|ÿÿÿ1ÿÿÿÿÎ$ÿÿÿ6Lÿÿÿ9ÿÿÿÿ—øþÿÿl ÿÿÿÿÿÿÿ—Ìþÿÿlôþÿÿÿÿÿÿ—|f☓ÿÿÿÿ ☓ øþÿÿ&=—ÿÿÿÿ
  30829. †ÌÿÿÿÈüÿÿÿ=TemplEdr†—ÿÿÿÈÈÿÿÿ=«ÿÿÿÿ†dÿÿÿÈ“ÿÿÿ=»ÿÿÿÿ†0ÿÿÿÈ`ÿÿÿ=Èÿÿÿÿ†üþÿÿÈ,ÿÿÿ=FreeWareÐÿÿÿ—øÿÿÿNameled>þ†ÿÿÿ—ÄÿÿÿPurpose>þhÿÿÿ—‘ÿÿÿAuthord>þ4ÿÿÿ—\ÿÿÿVersion>þÿÿÿ—(ÿÿÿStatus>þAbout this ProgramTemplate EditorDick Alstein*.** (dd-mmm-yy)òØnÔÿÿÿÿ XüÿÿÔ='—ÿÿÿÿxþÿÿP@þÿÿ=‘ÇSave & Exit—þÿÿ@þÿÿ=‘ÇExittled>ÿTemplEd options$4Äÿÿÿÿ ‘ ðûÿÿ4=<Untitled>$ìþÿÿ$äÿÿÿ<Untitled>ÿ,Ìÿÿÿ¸øÿÿÿ9Øÿÿÿÿ<þÿÿ$Ðþÿÿ<Untitled>ÿ,¸þÿÿØäþÿÿ9Templates(ýÿÿ$ þÿÿ<Untitled>ÿ,þÿÿ—4þÿÿ9Iconsÿÿüÿÿ$ ýÿÿ<Untitled>ÿ,ôüÿÿ⇦ ýÿÿ9Gridÿÿ—ÿÿÿøÄÿÿÿ±àùdÿÿÿô‘ÿÿÿ±"0ÿÿÿ—\ÿÿÿ±0E€þÿÿ¨¬þÿÿ±SiLþÿÿxþÿÿ±w“Ôýÿÿ4þÿÿ±¢± ýÿÿÔÌýÿÿ±¿Ølýÿÿø—ýÿÿ±æÀüÿÿpìüÿÿ3±\⇦üÿÿ¸¸üÿÿXsizeÿÿ¼⇦üÿÿܸüÿÿ modify_lÿØ⇦üÿÿ ¸üÿÿ=,ÿÿÿÿ⇦üÿÿ(¸üÿÿ modify_rÿD⇦üÿÿ¤¸üÿÿYsizee¨⇦üÿÿȸüÿÿ modify_lÿÄ⇦üÿÿø¸üÿÿ=/ÿÿÿÿô⇦üÿÿ¸üÿÿ modify_rÿLüÿÿpxüÿÿ3±2E\üÿÿ¸DüÿÿXsizeÿÿ¼üÿÿÜDüÿÿ modify_lÿØüÿÿ Düÿÿ=Sÿÿÿÿüÿÿ(Düÿÿ modify_rÿDüÿÿ¤DüÿÿYsizee¨üÿÿÈDüÿÿ modify_lÿÄüÿÿøDüÿÿ=VÿÿÿÿôüÿÿDüÿÿ modify_rÿüþÿÿÒ(ÿÿÿ±Yr4ýÿÿ`ýÿÿ±€fiGeneralDouble-click starts editSoptoff,optonSupport 'Interface' moduleSoptoff,optonSupport 'AEH' moduleSoptoff,optonAllow duplicate namesSoptoff,optonHatch user-redrawn templatesSoptoff,optonShow icon infoSoptoff,optonSave icons as unselectedSoptoff,optonDelete icons moved outsideSoptoff,optonIcon size gridSoptoff,opton3232Icon position gridSoptoff,opton3232Support 'WimpExt' moduleSoptoff,optonMin.size: Ignore desktop fontSoptoff,opton(N,æÿÿÿÿ ☓ üÿÿ='Save aseÐpÿÿÿü ÿÿÿ=‘ÇOKD3pÿÿÿÈ ÿÿÿ=ñ¸¹\¬ÿÿÿ ôÿÿÿ:aÌ    A~ ;Pptr_write,5,3file_fecì\<ÿÿÿÿ ☓üÿÿ=Space Out
  30830. €ÿÿÿPøÿÿÿ†“ ôþÿÿPxÿÿÿ…☓Àÿÿÿìÿÿÿ3±—¥‘ÿÿÿô¼ÿÿÿ3±¸Ã @ÿÿÿ¬lÿÿÿ3±Öݶ<ÿÿÿÖlÿÿÿ modify_lÿÔ<ÿÿÿlÿÿÿ=ñïó<ÿÿÿ:lÿÿÿ modify_rÿÿÿÿ 0ÿÿÿ3±̸þÿÿPèþÿÿ=‘ÇOKdHorizontallySradiooff,radioon;VerticallySradiooff,radioon;Space:Sradiooff,radioon999Pptr_write,3,5Use availableSradiooff,radioon2ÄÞ‘ÿÿÿÿ2 ¿ 4ÿÿÿ¬=¬8ÿÿÿÿlÿÿÿÀøÿÿÿ☓ÿ¸ÿÿÿ¸äÿÿÿ3±KS |ÿÿÿx¨ÿÿÿ3±fj Èlÿÿÿ¤øÿÿÿ☓ÿÔÄÿÿÿ,ìÿÿÿ}ÿÿÿÿ0Äÿÿÿ†ìÿÿÿ’ÿÿÿÿ Ô†ÿÿÿ,Äÿÿÿ›ÿÿÿÿ$0†ÿÿÿ†Äÿÿÿ¦ÿÿÿÿ Ôtÿÿÿ,†ÿÿÿ¨ÿÿÿÿ$0tÿÿÿ††ÿÿÿ¾ÿÿÿÿ <ÿÿÿÄdÿÿÿ1@Template--È<ÿÿÿ$dÿÿÿ1@Iconsed>(<ÿÿÿ¤dÿÿÿ1@Sizesed>¨<ÿÿÿ$dÿÿÿ1@Indir.ed>(<ÿÿÿ¤dÿÿÿ1@Totaled>TemplEd statisticsDecimalSradiooff,radioon;HexSradiooff,radioon;Number of templates0Largest definition0Indirected data total0öÔÿÿÿÿ ¿ üÿÿ='`xÿÿÿÿÈÿÿÿððÿÿÿ3Ŷ› Browser windowAnyTemplateSwin_thv—¶@ÿÿÿÿÿ Xýÿÿ´=ñXÿÿÿÿ@@ ÿÿÿôÿÿÿlÁtÁ xÿÿÿ¬ôÿÿÿ|Á☓Á èýÿÿÄþÿÿ…Á“Á dýÿÿ¬pÿÿÿ†Á¤Á¸ÿÿÿÔäÿÿÿ±dm⇦ÿÿÿ´ÿÿÿ±{XÿÿÿÔ☓ÿÿÿ±”fi¸ÿÿÿ‰äÿÿÿ±¬±⇦ÿÿÿØ´ÿÿÿ±¿É¨týÿÿ  ýÿÿ±×äXÿÿÿø☓ÿÿÿ±òþ dýÿÿ ÜýÿÿüÂÃdýÿÿÜýÿÿ ÃÃ…þÿÿ—¸þÿÿ3±         \þÿÿ†⇦þÿÿ±    %    ,þÿÿÜXþÿÿ±3    =    üýÿÿ´(þÿÿ±K    R    ø…þÿÿ°¸þÿÿ±`    i    ø\þÿÿà⇦þÿÿ±w    ~    ø,þÿÿ¸Xþÿÿ±…    ”    ôýÿÿè þÿÿ±£    ®    (Àÿÿÿ‘èÿÿÿa¼    ÿÿÿÿ(…ÿÿÿH¼ÿÿÿ modify_lÿD…ÿÿÿt¼ÿÿÿ=1È    Ú    t…ÿÿÿ“¼ÿÿÿ modify_rÿ,ÿÿÿ \ÿÿÿcè    ÿÿÿÿ(,ÿÿÿH\ÿÿÿ modify_lÿD,ÿÿÿ€\ÿÿÿ=1ù    ú    |,ÿÿÿ†\ÿÿÿ modify_rÿðþÿÿ  ÿÿÿc
  30831. ÿÿÿÿ(ðþÿÿH ÿÿÿ modify_lÿDðþÿÿ€ ÿÿÿ=1
  30832. 
  30833. |ðþÿÿ† ÿÿÿ modify_rÿ$´þÿÿ äþÿÿc(
  30834. ÿÿÿÿ(´þÿÿHäþÿÿ modify_lÿD´þÿÿ€äþÿÿ=18
  30835. 9
  30836. |´þÿÿ†äþÿÿ modify_rÿ$xþÿÿ ¨þÿÿcG
  30837. ÿÿÿÿ(xþÿÿH¨þÿÿ modify_lÿDxþÿÿ€¨þÿÿ=1W
  30838. X
  30839. |xþÿÿ†¨þÿÿ modify_rÿ$<þÿÿ lþÿÿcf
  30840. ÿÿÿÿ(<þÿÿHlþÿÿ modify_lÿD<þÿÿ€lþÿÿ=1v
  30841. w
  30842. |<þÿÿ†lþÿÿ modify_rÿ$þÿÿ 0þÿÿcŶ
  30843. ÿÿÿÿ(þÿÿH0þÿÿ modify_lÿDþÿÿ€0þÿÿ=1”
  30844. |þÿÿ†0þÿÿ modify_rÿPÄýÿÿ ôýÿÿc¤
  30845. ÿÿÿÿ(ÄýÿÿHôýÿÿ modify_lÿDÄýÿÿ€ôýÿÿ=1°
  30846. ±
  30847. |Äýÿÿ†ôýÿÿ modify_rÿÔþÿÿ“ÿÿÿ=‘ÇUpdate¤Ôþÿÿ…ÿÿÿ=’Ç¿
  30848. ÿÿÿÿ†Ôþÿÿôÿÿÿ=‘ÇExitÆtýÿÿ— ýÿÿ=‘ÇDefault(ÿÿÿ2Tÿÿÿ±Í
  30849. Ü
  30850. ¤ýÿÿþÐýÿÿê
  30851. ÿÿÿÿtýÿÿ² ýÿÿ±ø
  30852. ÿ
  30853. ¼týÿÿ ýÿÿ±   ¤ýÿÿôÐýÿÿ ÿÿÿÿ4týÿÿz ýÿÿ±+ - “týÿÿÚ ýÿÿ±; = Edit WindowMoveableSoptoff,optonAuto-redrawSoptoff,optonHot keysSoptoff,optonPaneSoptoff,optonNo boundsSoptoff,optonGCOL coloursSoptoff,optonBack windowSoptoff,optonBackSoptoff,optonCloseSoptoff,optonTitle barSoptoff,optonToggleSoptoff,optonV scrollSoptoff,optonAdjustSoptoff,optonH scrollSoptoff,optonNew formatSoptoff,optonButton typeDouble/Click/DragPptr_menu,6,3Title foregroundPptr_menu,6,3Title backgroundPptr_menu,6,3Work foregroundPptr_menu,6,3Work backgroundPptr_menu,6,3Scrollbar outerPptr_menu,6,3Scrollbar innerPptr_menu,6,3Input focusPptr_menu,6,3Update & ExitKeep on screenSoptoff,optonScroll eventsRepeatSoptoff,opton1Soptoff,optonIgnore extentHSoptoff,optonVSoptoff,optonxxøÀÿÿÿÿ ☓üÿÿ=Work Areae|ÿÿÿtøÿÿÿ<Untitled>e¼þÿÿttÿÿÿ<Untitled>eüýÿÿt´þÿÿ<Untitled>e¸ÿÿÿ¼èÿÿÿTop left X⇦ÿÿÿ¼¸ÿÿÿYp left X8ÿÿÿ¼hÿÿÿSize     Xÿÿÿ¼4ÿÿÿYp left Xxþÿÿ¼¨þÿÿMin.size XDþÿÿ¼tþÿÿYp left X̼ÿÿÿììÿÿÿ: modify_l>ÿè¼ÿÿÿLìÿÿÿ=ñ8>H¼ÿÿÿhìÿÿÿ: modify_r>ÿÌ⇦ÿÿÿì¸ÿÿÿ: modify_l>ÿè⇦ÿÿÿL¸ÿÿÿ=ñY_H⇦ÿÿÿh¸ÿÿÿ: modify_r>ÿÌ8ÿÿÿìhÿÿÿ: modify_l>ÿè8ÿÿÿLhÿÿÿ=ñz€H8ÿÿÿhhÿÿÿ: modify_r>ÿÌÿÿÿì4ÿÿÿ: modify_l>ÿèÿÿÿL4ÿÿÿ=ñ−flHÿÿÿh4ÿÿÿ: modify_r>ÿÌxþÿÿì¨þÿÿ: modify_l>ÿèxþÿÿL¨þÿÿ=ñ¸¾Hxþÿÿh¨þÿÿ: modify_r>ÿÌDþÿÿìtþÿÿ: modify_l>ÿèDþÿÿLtþÿÿ=ñ×ÝHDþÿÿhtþÿÿ: modify_r>ÿÌÈþÿÿhøþÿÿ=‘ÇMinimizeÌþÿÿh8þÿÿ=‘ÇMaximizeÀýÿÿÀðýÿÿ=‘ÇDefaultÀýÿÿtðýÿÿ=‘ÇOKimize>r-0000A0-9\-;Krat;Pptr_write,5,3-0000A0-9\-;Krat;Pptr_write,5,300000A0-9;Krat;Pptr_write,5,300000A0-9;Krat;Pptr_write,5,300000A0-9;Krat;Pptr_write,5,300000A0-9;Krat;Pptr_write,5,3⇩²‘æÿÿÿÿ ☓ üÿÿ='Export aseÐpÿÿÿü ÿÿÿ=‘ÇOKD3pÿÿÿÈ ÿÿÿ=ñ\¬ÿÿÿ ôÿÿÿ:a,    ,ÿÿÿðXÿÿÿ±5;ÿÿÿð,ÿÿÿ±MOÔþÿÿðÿÿÿ±aj    A~ ;Pptr_write,5,3file_ffdBasicSradiooff,radioonCSradiooff,radioonMsgTransSradiooff,radioonfî€øÿÿÿÿ☓ XüÿÿÔ='xÿÿÿÿ xÿÿÿ
  30854. ôÿÿÿ           (ÿÿÿ
  30855. pÿÿÿ           <þÿÿ
  30856.  ÿÿÿ ô ⇩þÿÿ
  30857. 4þÿÿ=‘ÇOK¼ ¸ÿÿÿ¬èÿÿÿFrame is:°¸ÿÿÿ¦èÿÿÿ±⇦”°☓ÿÿÿF´ÿÿÿ±§®⇩☓ÿÿÿâ´ÿÿÿ=ñÀÁn☓ÿÿÿ‰´ÿÿÿ modify_lÿÞ☓ÿÿÿþ´ÿÿÿ modify_rÿ4ÿÿÿLdÿÿÿÖÿÿÿÿ⇩4ÿÿÿâdÿÿÿ=ñêën4ÿÿÿ‰dÿÿÿ modify_lÿÞ4ÿÿÿþdÿÿÿ modify_rÿäþÿÿ¬ÿÿÿLabel is:°äþÿÿ&ÿÿÿ±°°þÿÿbàþÿÿ±⇩°þÿÿâàþÿÿ=ñ01n°þÿÿ‰àþÿÿ modify_lÿÞ°þÿÿþàþÿÿ modify_rÿì|þÿÿ¢¬þÿÿ±FO    ìHþÿÿbxþÿÿ±af⇩Hþÿÿâxþÿÿ=ñxynHþÿÿ‰xþÿÿ modify_lÿÞHþÿÿþxþÿÿ modify_rÿFrame selectionVisible areaSradiooff,radioonIcon #Sradiooff,radioonKtar;Pptr_write;A0-9Space around icons:Ktar;Pptr_write;A0-9NoneSradiooff,radioonIcon #Sradiooff,radioonKtar;Pptr_write;A0-9CenteredSradiooff,radioonLeftSradiooff,radioonKtar;Pptr_write;A0-9ŷ"þÿÿÿÿ züÿÿ='`¸ÿÿÿÿ¼ÿÿÿÜìÿÿÿ=Åÿÿÿÿ8“þÿÿ ÿÿÿ` <` \|ÿÿÿ¨ÿÿÿ±ÊÑfièþÿÿÿÿÿ=‘ÇOK¼ \Àÿÿÿòìÿÿÿ±ãêèþÿÿ‘ÿÿÿ=‘ÇCancel88ÿÿÿ|`ÿÿÿ1øùDDÿÿÿpTÿÿÿ80
  30858. Untitled>DDÿÿÿÚTÿÿÿ80YUntitled><ÿÿÿ0\ÿÿÿ!üý☓<ÿÿÿ¤\ÿÿÿ! xÿÿÿt¨ÿÿÿÿÿÿÿxxÿÿÿ0¨ÿÿÿ=ñ$%<¤þÿÿÐÔþÿÿ=ñ5=Ô¤þÿÿÐþÿÿ: rightÿÿ ¤þÿÿ8Ðþÿÿ: leftÿÿLôþÿÿ ÿÿÿ9FrameÿÿLøþÿÿÂ$ÿÿÿ€<Deleted>Ê(ÿÿÿpÿÿÿ:aU    Icon paletteDataChoiceSradiooff,radioonOptionSoptoff,optonR2r5;sleft,pleftr5;sright,prightLabelKtar;Pptr_write-999.99Ktar;Pptr_write;A0-9.\-file_fffks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  30859.  
  30860.                             TemplEd User Manual
  30861.                             -------------------
  30862.  
  30863.  
  30864. 0. Contents
  30865. ___________
  30866.  
  30867.   1. About TemplEd
  30868.   2. About this manual
  30869.   3. Starting the program and loading files
  30870.   4. Opening and closing a template window
  30871.   5. Selecting icons
  30872.   6. Moving and resizing icons
  30873.   7. The "Icon Edit" dialogue window
  30874.   8. Moving and resizing windows
  30875.   9. The "Window Edit" dialogue window
  30876.   10. TemplEd's menus
  30877.   11. Shortcuts
  30878.   12. "Hidden" features
  30879.   13. Customizing
  30880.   14. Credits
  30881.   15. Copyright notice
  30882.   16. Addresses
  30883.   17. Finally
  30884.  
  30885.  
  30886. 1. About TemplEd
  30887. ________________
  30888.  
  30889. TemplEd is a template editor. With it, you can create and edit Template
  30890. files, which contain definitions of the windows used by an application. It
  30891. is therefore only useful for people who write programs that run in the
  30892. desktop.
  30893.  
  30894. If you want to know what can be in template definitions, and how they can
  30895. be read by a program, read the information about the SWIs
  30896. Wimp_CreateWindow, Wimp_CreateIcon and Wimp_LoadTemplate. This can be found
  30897. in the RiscOS PRM (Programmer's Reference Manual), and on-line in Guttorm
  30898. Vik's !StrongHlp application.
  30899.  
  30900. TemplEd is FreeWare. For conditions of use, read the copyright notice at the
  30901. end of this manual.
  30902.  
  30903.  
  30904. 2. About this manual
  30905. ____________________
  30906.  
  30907. If you are an experienced user, the !Help file will probably contain enough
  30908. information for you to get started. You may want to skip the boring
  30909. discussion of TemplEd's operation that follows. However, there are some
  30910. technical details that may be of interest. These have been marked with <TD>.
  30911. There is also a list of operation shortcuts and "hidden" features at the end
  30912. of this manual.
  30913.  
  30914.  
  30915. 3. Starting the program and loading files
  30916. _________________________________________
  30917.  
  30918. After you have double-clicked on the application, the program installs
  30919. itself on the icon bar. A double-click on a Template file also starts
  30920. TemplEd, after which TemplEd loads the file.
  30921.  
  30922. You can load a template file by:
  30923.  
  30924. * Double-clicking on a Template file. If TemplEd is running and has not
  30925. loaded any templates, it loads the file. Otherwise, a new copy of TemplEd is
  30926. started.
  30927.  
  30928. * Dropping the file on the TemplEd icon on the icon bar. TemplEd deletes the
  30929. currently loaded templates, and loads the new file. If the current templates
  30930. have been modified, TemplEd first asks you to confirm before deleting them.
  30931.  
  30932. * Dropping the file in the Templates window. TemplEd adds the templates in
  30933. the file to the currently loaded ones.
  30934.  
  30935. If the file is called "Templates", then TemplEd will look for a sprite file
  30936. called "Sprites" in the same directory. If there is such a file, TemplEd
  30937. will assume that it contains the sprites to be used with the templates, and
  30938. automatically loads the sprite file as well.
  30939.  
  30940. Other sprite files with sprites used in the templates, can be loaded by
  30941. dropping them on the icon bar icon.
  30942.  
  30943. When you drop an application on the icon bar icon, TemplEd will load the
  30944. file "Templates" in the application directory (if present). If there is a
  30945. sprite file called "Sprites" in that directory, TemplEd will also load it.
  30946.  
  30947.  
  30948. 4. Opening and closing a template window
  30949. ________________________________________
  30950.  
  30951. A click with Select on the TemplEd icon on the icon bar opens the Templates
  30952. window. This lists the currently loaded templates. A small window icon
  30953. before the name indicates what type of window it is (scrollbars, title). A
  30954. yellow background of this icon means that it is currently open.
  30955.  
  30956. You can open a template by double-clicking on its name. If the template was
  30957. already open, it is closed. The "Open" and "Close" entries in the menu serve
  30958. the same purpose.
  30959.  
  30960.  
  30961. 5. Selecting icons
  30962. __________________
  30963.  
  30964. Many operation on icons can be done on a single icon but also on a selection
  30965. of icons. There are several ways to select (and deselect) icons:
  30966.  
  30967. * Click with Select to select a single icon while deselecting the others. A
  30968. click on the background of the window clears the current selection.
  30969.  
  30970. * Click with Adjust to select an icon, without changing the rest of the
  30971. selection. If the icon was already selected, it is deselected.
  30972.  
  30973. * A drag with the mouse creates a drag-box in the window area. When you
  30974. release the mouse button, all icons within the box are selected.
  30975.  
  30976. * There are "Select all" and "Clear selection" items in the menu.
  30977.  
  30978. <TD> Like most other template editors, TemplEd creates a window for each
  30979. template, and creates icons exactly as they have been defined. This means
  30980. that the Wimp reacts to the mouse just as it would when a program was using
  30981. the template. That's why a menu icon is hard to select: you can click on
  30982. it, but if you move the pointer away from the icon, the icon is deselected
  30983. again. The Wimp also interferes if you want to select several radio buttons
  30984. from the same ESG. Even if you click with Adjust, the Wimp deselects the
  30985. other buttons (unless their 'Allow adjust' bit is set). You can select these
  30986. "difficult" icons with a drag-select.
  30987.  
  30988. <TD> If you want to check the behaviour of icons to mouse clicks, without
  30989. TemplEd reacting to the clicks, press a combination of keys (e.g. Shift +
  30990. Alt) while clicking. That way you can check if the ESGs of radio buttons
  30991. are set right, if option buttons are switched on and off, etc.
  30992.  
  30993.  
  30994. 6. Moving and resizing icons
  30995. ____________________________
  30996.  
  30997. To move an icon or a selection, click inside the window with Select while
  30998. holding down the Shift key. An outline appears around the icon(s) that moves
  30999. with the pointer until you release the mouse button. During the operation,
  31000. the pointer shape is changed to a hand.
  31001.  
  31002. To resize an icon or a selection, click on it with Shift+Adjust. A "rubber
  31003. box" drag is started, allowing you to move one side. The side that is moved
  31004. is the one that was nearest to the pointer when you clicked. It is also
  31005. indicated by the pointer shape. Though a resize operation will usually be
  31006. done on a single icon, it is possible to resize more than one icon at a
  31007. time; the icons are scaled according to the size of the drag-box.
  31008.  
  31009. An alternative way to move or resize icons is by clicking on them without
  31010. using the Shift key, and keeping the mouse button pressed for about half a
  31011. second.
  31012.  
  31013. During the drag, you can move the pointer with the cursor keys. The left,
  31014. right, up and down keys move the pointer 1 pixel (in the expected
  31015. direction). If you press a cursor key in combination with the Shift key, the
  31016. movement is 4 times as fast.
  31017.  
  31018. Pressing the cursor keys without starting a drag first moves the selected
  31019. icons.
  31020.  
  31021.  
  31022. 7. The "Icon Edit" dialogue window
  31023. __________________________________
  31024.  
  31025. Except for size, position and number, all properties of an icon can be set
  31026. from the "Icon Edit" dialogue window. To open this window, click with
  31027. Shift+Menu, or choose the "Icon ⇨ Edit..." entry in the menu.
  31028.  
  31029. Icon flags can be set by clicking on the buttons, text and sprite names can
  31030. be entered in the appropriate fields. Use the up and down arrow keys to move
  31031. the cursor around. Some fields (e.g. button type, colours, font name) can
  31032. contain a limited number of values. These can be selected either by clicking
  31033. on the arrow icons to the left and right, or by clicking a mouse button
  31034. while the pointer is over the field. This pops up a menu from which you can
  31035. select a value.
  31036.  
  31037. <TD> The "1:1" button for the font is the only button not connected to an
  31038. icon flag. When on, it keeps X and Y size of the font equal, so you don't
  31039. have to set them both.
  31040.  
  31041. The changes to the icon only take effect if you press the "Update" icon.
  31042. "Exit" closes the window, leaving the icon as it was since the last update,
  31043. and "Update & Exit" combines the two.
  31044.  
  31045. <TD> If the indirected text that you entered is longer than the "Max
  31046. size" field allows, TemplEd automatically increases the maximum. It also
  31047. sets the "Indirected" flag if the text or sprite name uses more than 12
  31048. characters.
  31049.  
  31050. When you edit a selection of icons, not all fields can be modified (to be
  31051. exact: only the icon flags). The unchangeable fields are shaded. When you
  31052. press "Update" or "Update & Exit", the changeable fields are modified in
  31053. all selected icons.
  31054.  
  31055. In some cases, you may only want to change one field (e.g. set the button
  31056. type of all icons). To do this, click Menu above the "Update" or
  31057. "Update & Exit" button. A menu pops up from which you can select the flags
  31058. that must be changed.
  31059.  
  31060.  
  31061. 8. Moving and resizing windows
  31062. ______________________________
  31063.  
  31064. Usually, you can move a window by dragging the title bar, and you resize it
  31065. by dragging its resize icon. But some windows don't have a resize icon, and
  31066. some don't even have a title bar. You could of course edit the windows, give
  31067. them a title bar or resize icon, and remove these when you are done. But in
  31068. TemplEd, it is also possible (and much faster) to move and resize windows
  31069. directly. Use Ctrl+Select to move a window, and Ctrl+Adjust to resize it.
  31070.  
  31071. The work area of the window can also be resized with the mouse, with
  31072. Ctrl+Alt+Adjust. When you release the mouse button, the work area is set so,
  31073. that it stretches to the bottom-right corner of the visible part of the
  31074. window.
  31075.  
  31076. <TD> To enable the work area to expand, it is made very large at the start
  31077. of the drag. This is visible if your window has a scroll bar. At the end of
  31078. the drag, the area is shrunk again to the desired size.
  31079.  
  31080. Just as with moving and resizing icons, the cursor keys can be used during
  31081. the drag to position the mouse pointer.
  31082.  
  31083.  
  31084. 9. The "Window Edit" dialogue window
  31085. ____________________________________
  31086.  
  31087. Editing the data of a window is split in two parts. Flags, colours and
  31088. button type are edited in the "Window Edit" dialogue window. This window
  31089. is opened when you click Ctrl+Menu over the window, The contents of the
  31090. title bar are edited separately, using the "Icon Edit" window. It is
  31091. accessible with a Shift+Menu click while the pointer is over the title bar.
  31092. Both dialogue windows can also be opened from the menu.
  31093.  
  31094. <TD> The "transparent" colour number 255, that has a special meaning as the
  31095. title foreground colour or as the work background colour, is only selectable
  31096. from the colour menu, not by clicking on the arrow icons.
  31097.  
  31098.  
  31099. 10. TemplEd's menus
  31100. ___________________
  31101.  
  31102. Most entries in the menus ought to speak for themselves. Some others may
  31103. take a small explanation:
  31104.  
  31105. 10.1 The "Window" menu
  31106.  
  31107.   Create icon...
  31108.  
  31109.   Opens the Palette window. In the Palette, you can select one or more icons,
  31110.   and copy these to one of your templates (by Shift-dragging them).
  31111.  
  31112.   You can change the contents of the Palette, see the section "Customizing"
  31113.   at the end of this manual.
  31114.  
  31115.   Icon/Selection ⇨ Renumber ⇨
  31116.  
  31117.   You can renumber single icons or selections. When a selection is
  31118.   renumbered, the icons are numbered from top to bottom and from left to
  31119.   right.
  31120.  
  31121.   <TD> It is not possible to give an icon a number that is equal to or
  31122.   higher than the number of icons in the template. If for instance there
  31123.   are 10 icons, they are always numbered from 0 to 9. You may enter a
  31124.   higher number but TemplEd will decrease it to 9. (In fact, what TemplEd
  31125.   does when renumbering is swap the definitions of two icons: the one that
  31126.   you want to renumber, and the one carrying the new number.)
  31127.  
  31128.   <TD> After renumbering an icon, TemplEd increases the new number by one
  31129.   and stores it. You can see this the next time you open the menu. This
  31130.   feature comes in handy when you renumber using Alt+Select (see
  31131.   "Shortcuts")
  31132.  
  31133.   Icon/Selection ⇨ Align ⇨
  31134.  
  31135.   Changes the selected icons so that they are lined up. There is a choice
  31136.   of aligning the left-hand sides, right-hand sides, top, bottom, and the
  31137.   centres (in either the horizontal or vertical direction).
  31138.  
  31139.   The icons can be either moved or resized. When resized, the coordinates
  31140.   of the icons stay the same except for the side that must be aligned.
  31141.  
  31142.   <TD> As an anchor for aligning, the outer icon is chosen. For horizontal
  31143.   aligning this is the leftmost icon, for top aligning the topmost, etc.
  31144.   This ensures that if the icons were inside the visible area before the
  31145.   aligning, they will remain fully visible afterwards (except for some cases
  31146.   when you align the centres).
  31147.  
  31148.   Icon/Selection ⇨ Space out ⇨
  31149.  
  31150.   Moves the selected icons so that there is a constant space between the
  31151.   icons. You can choose between horizontal and vertical distribution, and
  31152.   between setting a fixed space and using the available space between the
  31153.   outer icons. For example:
  31154.  
  31155.   Suppose you have four icons, positioned
  31156.  
  31157.      -----               -------  ---        ---
  31158.     |  A  |             |   B   || C |      | D |
  31159.      -----               -------  ---        ---
  31160.  
  31161.   Using a fixed space gives you something like
  31162.  
  31163.      -----    -------    ---    ---
  31164.     |  A  |  |   B   |  | C |  | D |
  31165.      -----    -------    ---    ---
  31166.  
  31167.   and choosing "Use available" results in
  31168.  
  31169.      -----        -------        ---         ---
  31170.     |  A  |      |   B   |      | C |       | D |
  31171.      -----        -------        ---         ---
  31172.  
  31173.   <TD> Before doing a Space out operation, TemplEd sorts the icons on their
  31174.   minimum coordinate. This means that the leftmost (or bottommost) icon
  31175.   always remains in place. It also means that if some icons have equal
  31176.   minimum X (or Y) coordinates, they may end up in any order.
  31177.  
  31178.   <TD> Both the "Align" and the "Space out" operations change the position
  31179.   of icons in only one direction. So if you do a horizontal Space out, the Y
  31180.   coordinates of the icons remain the same.
  31181.  
  31182.   Icon/Selection ⇨ Frame ⇨
  31183.  
  31184.   Puts a frame around the selected icons. The frame is used for grouping
  31185.   icons with related functions together. You have a choice of:
  31186.     * Taking the window itself as frame, or appointing one of the selected
  31187.       icons as 'frame' icon.
  31188.     * Using another icon as 'label', or none. The center of the label icon
  31189.       will be vertically aligned with the top of the frame icon.
  31190.     * Putting the label horizontally centered on the frame, or putting it at
  31191.       a fixed distance from the left of the frame.
  31192.  
  31193.   <TD> The icon with the lowest icon number is taken as the default frame
  31194.   icon; the next one in the selection is taken as the label icon.
  31195.  
  31196.   Icon/Selection ⇨ Min. size
  31197.  
  31198.   Minimizes the size of icons, keeping their bottomleft corner at the same
  31199.   position.
  31200.  
  31201.   <TD> It is very complicated to calculate the minimum size correctly,
  31202.   especially for icons with outline fonts, 3D borders or multi-line text.
  31203.   The procedure used may not always give the best results.
  31204.  
  31205.   Icon/Selection ⇨ Center
  31206.  
  31207.   Centers the icon (or icon selection) in the window, relative to the
  31208.   area that is currently visible.
  31209.  
  31210.   Icon/Selection ⇨ Same size
  31211.  
  31212.   Sets the size of the selected icons to be equal to the topleft one. The
  31213.   bottomleft corner is kept at the same position.
  31214.  
  31215.   Work area ⇨
  31216.  
  31217.   Leads to a window in which you can set the dimensions of the window work
  31218.   area. The "Minimize" button limits the work area to the maximum
  31219.   coordinates that are currently visible. The "Maximize" button sets the
  31220.   minimum size equal to the current window size. The "Default" button resets
  31221.   all values to those of a standard full-screen window.
  31222.  
  31223.   Misc ⇨ Sprite area
  31224.  
  31225.   Enables you to choose from which sprite area the sprites in the template
  31226.   are read. This can be either the Wimp area or a private area that is
  31227.   created when you drop a sprite file on the TemplEd icon.
  31228.  
  31229.   <TD> When saving templates, TemplEd always sets the sprite area to 1 (i.e.
  31230.   the Wimp area). If your program is using a private sprite area, it will
  31231.   have to re-direct the sprite area pointers after it has loaded the
  31232.   template.
  31233.  
  31234.   Misc ⇨ Ensure icons ⇨
  31235.  
  31236.   From this submenu, you can let TemplEd check the position of the icons,
  31237.   and move them if needed. The first item in the submenu make sure that all
  31238.   icons are within the work area, the second ensures that they are in the
  31239.   currently visible part of the window.
  31240.  
  31241.   Misc ⇨ Deleted icons ⇨
  31242.  
  31243.   Normally, when you delete an icon, it is only marked as deleted. Most of
  31244.   the icon data is retained, and the numbering of the other icons stays the
  31245.   same. If, later on, you create an icon, it may get the number of a
  31246.   deleted icon. Until that time, it is possible to "undelete" the icon.
  31247.   From this submenu, you can:
  31248.     * Undelete the deleted icons (e.g. if you accidentally deleted them)
  31249.     * Undelete them and move them outside the work area. This can be handy
  31250.       if you want to avoid that the icon numbers are used again when you
  31251.       edit other icons
  31252.     * Purge the deleted icons, so that there are no gaps in the numbering
  31253.  
  31254.   Note that for indirected icons, the indirected data can not be retrieved.
  31255.  
  31256. 10.2 The "Templates" menu
  31257.  
  31258.   Export ⇨ Icon names
  31259.  
  31260.   This leads to a save-box from where you can save the icon names. The point of
  31261.   icon naming is that it allows your program to address icons by their name,
  31262.   instead of by the icon number (which may change when editing the template).
  31263.   That way, you don't have to adapt the source code after you modified the
  31264.   templates. The file with icon names can be read by the program when it starts
  31265.   up, or by a C compiler.
  31266.  
  31267.   You give an icon a name by putting an 'N'-command in the validation string.
  31268.   The format of the icon names in an exported file is
  31269.     <template name> + "_" + <icon name>
  31270.  
  31271.   You can save the names in 3 formats:
  31272.     * Basic    - creates a Basic file with a procedure PROCiconnames.
  31273.     * C        - creates a C header file in which the names are #define'd
  31274.     * MsgTrans - creates a text file which can be read by the MsgTrans module 
  31275.  
  31276.   NB: This is an 'unofficial' feature, since icon names are not part of the
  31277.   template definition. The 'N'-command is not recognized by RiscOS, and has
  31278.   no effect on the appearance of the icon.
  31279.  
  31280.   Export ⇨ Templates
  31281.  
  31282.   This creates a textual description of the templates.
  31283.  
  31284. 10.3 The icon bar menu
  31285.  
  31286.   Options...
  31287.  
  31288.     Opens a window in which you can set a number of options:
  31289.     * Double click starts edit
  31290.         When on, TemplEd reacts to double-clicks on icons, window title bar
  31291.         or background, by opening the appropriate Edit window.
  31292.     * Support 'Interface'/'AEH'/'WimpExt' module
  31293.         Provides limited support for one of these modules, by making the
  31294.         appropriate calls for redrawing icons. The modules provide a number
  31295.         of enhancements to the Wimp, among which icon borders with 3D look.
  31296.         Addresses of the people who made these modules are listed at the end
  31297.         of this file.
  31298.         <TD> Support is limited to redrawing icons, including selecting and
  31299.         deselecting them upon a click. Other features are not supported.
  31300.     * Allow duplicate template names
  31301.         If this option is off and a template is added with a name that
  31302.         already exists, the old template is deleted. Renaming a template to
  31303.         an existing name will also be refused.
  31304.     * Hatch user-redrawn templates
  31305.         When on, the background of windows of which the "Auto-redraw"
  31306.         flag is cleared, will be shown with a cross-hatch pattern.
  31307.     * Show icon info
  31308.         Enables or disables the Icon info window that shows information
  31309.         on the icon that the pointer is currently over.
  31310.     * Save icons as unselected
  31311.         When on, TemplEd stores all icons as unselected when you save any
  31312.         templates. Otherwise, the "selected" state of icons is saved with
  31313.         the rest of the data to the file, and when your program uses the
  31314.         templates, it will have to make sure that the correct icons are
  31315.         selected.
  31316.     * Delete icons moved outside
  31317.         If you move icons, and drop them outside a template window, they
  31318.         will be deleted if this option is on. When off, nothing happens to
  31319.         the icons. This option allows for fast deletion of icons.
  31320.     * Min. size: Ignore desktop font
  31321.         This option is only meaningful if you are working under RiscOS 3.50
  31322.         or later, where you can use an outline font for the desktop. If the
  31323.         option is off, and TemplEd is calculating the minimum icon size, it
  31324.         takes the text width in the Desktop font. However, that width may not
  31325.         be enough for other users, who use a different font. That ruins the
  31326.         layout. With this option on, TemplEd takes the text width for the
  31327.         system (BBC) font, which is usually wider than outline fonts.
  31328.     * Grid
  31329.         Locks the position of icons that are created or modified to
  31330.         a grid (as in !Draw). This makes it easier to get icons lined
  31331.         up properly. The grid size can be set by clicking on the arrow
  31332.         icons. There are two grids:
  31333.           - Icon size grid
  31334.             Locks all four corners of an icon, so that its size will be a
  31335.             multiple of the grid size
  31336.           - Icon position grid
  31337.             Locks only the bottomleft corner of the icon; this can be handy
  31338.             if you want to keep icons lined up, but want to keep their sizes
  31339.             unchanged
  31340.         Normally, the Icon position grid will be at least as large as the
  31341.         Icon size grid.
  31342.         <TD> If you are working in a high-resolution screen mode, it is
  31343.         advisable to use at least an Icon size grid of 2x4, so that your
  31344.         templates look the same in medium-resolution modes (like 12 and 15)
  31345.         <TD> TemplEd automatically adjusts the grid size in case of a mode
  31346.         change; the grid size must be at least equal to the number of OS
  31347.         units per pixel.
  31348.  
  31349.     The "Save & Exit" button stores the current settings to a file in
  31350.     the application directory, then closes the window. The "Exit" button
  31351.     just closes the window.
  31352.  
  31353.   Statistics...
  31354.  
  31355.     Opens the statistics window, showing the amount of memory that the
  31356.     templates will need if you use them in a program. The amounts can be
  31357.     shown in decimal or hexadecimal numbers.
  31358.  
  31359.     <TD> Note that the statistics window does not change as you modify your
  31360.     templates. The figures are re-calculated only when the window is opened
  31361.     or when you click on the "Decimal" or "Hex" buttons.
  31362.  
  31363.   Custom sprites ⇨ View/Edit
  31364.  
  31365.     "Run"s the file with the custom sprites that your templates are using.
  31366.     This normally means that !Paint will load the file.
  31367.  
  31368.   Custom sprites ⇨ Re-load
  31369.  
  31370.     Reads the sprite file again, e.g. after you have edited it with !Paint.
  31371.  
  31372.   Custom sprites ⇨ Reset
  31373.  
  31374.     Removes the sprites from memory; the templates will use the sprites from
  31375.     the Wimp area.
  31376.  
  31377.  
  31378. 11. Shortcuts
  31379. _____________
  31380.  
  31381. * Opening the Icon Edit and Window Edit windows can be done from the menu,
  31382. but a faster way is to click on them while pressing a key. Shift+Menu opens
  31383. the Icon Edit window. Ctrl+Menu opens the Window Edit window. To edit the
  31384. title bar icon, click Shift+Menu on the title bar.
  31385.  
  31386. * The Edit windows can also be opened with a double-click with the Select
  31387. button. Double-clicks on an icon, on the background of a window, or on the
  31388. title bar open the appropriate Edit window. This only works if the
  31389. corresponding option is on.
  31390.  
  31391. * Inside the Icon Edit and Window Edit windows, pressing the F2, F3 and F4
  31392. keys has the same effect as clicking on the Update, Update&Exit and Exit
  31393. icons, respectively. The Escape key has the usual function which is exiting
  31394. without doing anything. Escape works not only in these two cases, but in all
  31395. windows with writable icons, such as the Save, Space Out and Options
  31396. windows.
  31397.  
  31398. * Many operations on icons can also be done with a control-key:
  31399.  
  31400.       Ctrl-A    Select all
  31401.       Ctrl-C    Copy selection
  31402.       Ctrl-D    Copy icons downward
  31403.       Ctrl-E    Edit selection
  31404.       Ctrl-F    Frame selection
  31405.       Ctrl-J    Open "Align" box
  31406.       Ctrl-K    Open "SpaceOut" box
  31407.       Ctrl-L    Copy icons to left
  31408.       Ctrl-Q    Close window (Ctrl-F2 works, too)
  31409.       Ctrl-R    Copy icons to right
  31410.       Ctrl-T    Edit title bar
  31411.       Ctrl-U    Copy icons upward
  31412.       Ctrl-W    Edit window
  31413.       Ctrl-X    Delete selection
  31414.       Ctrl-Z    Clear selection
  31415.  
  31416. (This only works if the window has the input focus, of course)
  31417.  
  31418. * Renumbering icons can also be done faster. Click Alt+Select on an icon,
  31419. and the icon gets the number that is visible when you open the "Icon ⇨
  31420. Renumber" menu. After the renumbering, this number is increased by one, so
  31421. you can number the icons sequentially by clicking on them one by one. A
  31422. click with Alt+Adjust does the same, except that the number is decreased
  31423. after the renumbering.
  31424.  
  31425. * A fast way to delete icons is by moving them outside the template. (This
  31426. only works if you have set the "Delete icons moved outside" option on.)
  31427.  
  31428.  
  31429. 12. "Hidden" features
  31430. _____________________
  31431.  
  31432. TemplEd has a number of features that may not be immediately visible, but
  31433. can come in handy. (That's not counting the bugs ;-)
  31434.  
  31435. * It is possible to copy icons to other templates; just move the icons and
  31436. drop them into the other template. This makes it easy to use icons from
  31437. other templates.
  31438.  
  31439. * Extended icon info. When TemplEd starts, the Icon info window is small,
  31440. showing only the name of the template and number of the icon that the mouse
  31441. is over. If you click on the "toggle size" icon, it becomes full size and
  31442. also shows the dimensions of the icon plus the mouse position in window
  31443. coordinates. Still more icon info can be gotten from !Help, Acorn's
  31444. interactive help application. Open the help window, and move the pointer
  31445. over an icon.
  31446.  
  31447. * Fine-tuning when moving and resizing icons and windows is possible with
  31448. the cursor keys. The up, down, left and right keys move the pointer 1 pixel
  31449. (or 4 pixels, if Shift is pressed).
  31450.  
  31451. * Pressing Esc during dragging (icon move, resize, etc.) aborts the
  31452. operation.
  31453.  
  31454. * In the Icon Edit window, clicking Adjust on "Max Size" (the text itself,
  31455. not the writable icon) minimizes the value of the "Max Size" field.
  31456.  
  31457. * Closing the Templates window with the Adjust button opens a Filer window
  31458. of the parent directory of the file you are editing. Shift+Adjust also opens
  31459. the Filer window but does not close the Templates window. (This is, in fact,
  31460. standard Acorn practice for editor-like applications.)
  31461.  
  31462.  
  31463. 13. Customizing
  31464. _______________
  31465.  
  31466. Apart from setting the options, you can also customize TemplEd's menu of
  31467. standard icons. Load the file "Templates" in the application directory into
  31468. TemplEd. The template "StdIcons" contains the definitions of the standard
  31469. icons. TemplEd loads them at program startup. You can change these
  31470. definitions to your liking.
  31471.  
  31472. For those who prefer windows without the 3D-look, there is an alternative
  31473. set of templates and sprites. To make TemplEd use them, rename them to the
  31474. default "Templates" and "Sprites", after you have given the standard "3D"
  31475. files a different name. (Note: you need Risc OS version 3.10 or later to
  31476. get the 3D effect.) Alternatively, run the "Use2D" Obey file in the "Extras"
  31477. directory; run "Use3D" to switch back to standard templates.
  31478.  
  31479.  
  31480. 14. Credits
  31481. ___________
  31482.  
  31483. Although the edit-dialogue windows are my own idea, not all features
  31484. implemented in TemplEd are. Some have been borrowed from RiscForm (the
  31485. version of !FormEd by The Risc Squad), some from Jonathan Marten's excellent
  31486. !DrawPlus (notably the Align and Space Out windows).
  31487.  
  31488. Martin Ebourne made the hires sprites file (!Sprites22). The MenuUtils
  31489. module which TemplEd uses was written by Alex Petrov.
  31490.  
  31491. TemplEd has also been much improved by the testing, comments and suggestions
  31492. of Stephen Burke, Martin Ebourne, Michael Ellis, Edwin Hautus, Paul Hobbs,
  31493. Rupert Johnson, Merlin Hughes, Olaf Krumnow, Paul Lebeau, Ian Palmer, John
  31494. Pullan, Niklas RÖjemo, John Tytgat, Julian Wright, and I'm sure I forgot
  31495. some others.
  31496.  
  31497.  
  31498. 15. Copyright notice
  31499. ____________________
  31500.  
  31501. This program is FreeWare. This means that I retain the copyright. You may
  31502. freely copy and distribute it, provided that it is complete with all
  31503. original files, and that you do not sell it. PD libraries may charge a
  31504. nominal fee for the cost of duplication, postage etc. When you use the
  31505. program, you do so entirely at your own risk. You may change the program to
  31506. suit your own needs. If it's a bug fix, or if you think it's an improvement,
  31507. then please send the changes to me at the address below.
  31508.  
  31509. The MenuUtils module is © Alex Petrov.
  31510.  
  31511.  
  31512. 16. Addresses
  31513. -------------
  31514.  
  31515. Here are contact addresses for software used by or supported by TemplEd
  31516. Note that these are the most recent that I know, so they may be out of date. 
  31517.  
  31518. The MenuUtils module (PD):
  31519.     Alex Petrov
  31520.     Bld. 1, Flat 107
  31521.     Kavkazsky
  31522.     boulevard, 29
  31523.     Moscow 115541
  31524.     RUSSIA.
  31525.     (e-mail: APetrov@misis.msk.su)
  31526.  
  31527. The Interface module (PD):
  31528.     SoftWare Interrupt Developments.
  31529.     40 Castle Ings Gardens,
  31530.     New Farnley,
  31531.     LEEDS,
  31532.     LS12 5EG
  31533.     UK.
  31534.  
  31535. The AEH module (Shareware):
  31536.     Andrew Hersee
  31537.     The Red House
  31538.     Tallington
  31539.     Nr.STAMFORD
  31540.     Lincs.
  31541.     PE9 4RP
  31542.     UK.
  31543.     (e-mail: ahersee@warwick.ac.uk)
  31544.  
  31545. The WimpExt module (PD):
  31546.     Jon Ribbens
  31547.     39 Nutkins Way
  31548.     Chesham
  31549.     Bucks.
  31550.     HP5 2BE
  31551.     UK.
  31552.  
  31553. StrongHelp (PD):
  31554.     Guttorm Vik
  31555.     Hølbekken 208
  31556.     N-5262 Arnatveit
  31557.     NORWAY
  31558.     (e-mail: guttorm@vestnett.no)
  31559.  
  31560.  
  31561. 17. Finally
  31562. ___________
  31563.  
  31564. If you have any questions, bug reports or suggestions for improvements,
  31565. you can contact me at the following address:
  31566.  
  31567. Lijnslagerstraat 204
  31568. NL-5625BP  Eindhoven
  31569. The Netherlands
  31570.  
  31571. or by e-mail: wsinda@info.win.tue.nl
  31572.  
  31573. Dick Alstein
  31574. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     lì,6SÀ[¤¨MenuUtilsMenuUtils    0.12 (27 Feb 1993)MenuUtils   tThis module provides interface to WIMP menu handlerMenuUtilInitialiseNewAddDeleteDecodeShowShowSubMenuInfoTextTickDotsFadeWarningWritableSubMenuColourMenuColoursTickOnlyêæUnknown MenuUtils operationÀ[Too old module versionÀ[Menu area corruptedÀ[Menu not foundÀ[Item not foundÀ[MenuUtils data corruptedÀ[MenuUtils not yet initialisedS1ãð ÿO-éÀ†å-éçëj6ã-ùÿ•½è@-é †å2ã ãø0 ãï
  31575. j£ ãøŵâ0 áÃä3áüÿÿflåŵå ãŵ堅倽èWork:ãð L-éÀ†å …â`Œå6ã-Újøÿÿ   áèë…½èÀ†å[ãO"òfi#ÿC-é @ áèë>j4ã
  31576. -y³{9j6ã O@5
  31577. 4ã4
  31578. 0ãŷ„4 àà-éâë)j
  31579. € á ‘ á P—å-éõë#j
  31580. p áñ•àJUMPê!êGêqê⇨êÇêÖêÚêYêÜêÛêÚêÙêØêðêøêoêuê
  31581. @ á Pã    OÂ
  31582. Ê-éŴëj6ã-›-yì{j  ãÿ◰½x™åÿC½èòfiã‘ŷâ0−倠ãP áùëöÿÿj0⇦åP flå ⇦å  ã  ⇦å ⇦å ⇦â ° ã -éë0•â  ⇦â$° ã -é#ë „å ⇩â ŷå ⇦å
  31583. àáŷå™åÿ◰ýèMenu°,€!@<dummy>PŶâÕëÒÿÿj  ã°⇦⌵+à7ã p  °K€ --éëÆÿÿj
  31584. p á P⇦å/ë àáààáŷå™åÿ◰ýè7ã ⇦ °  -    è
  31585.  –å-é?ë³ÿÿj –åã   –
  31586. Rá  ÁEËëÿ◰ýè7ã  á-    L ¥ÿÿj
  31587. €-éfë¡ÿÿj5ã°   0°⇦”º+  á|OpGp°K€ -éÑëPEâ P⇦åþëÿ◰ýè …âoë‰ÿÿj
  31588. @ á  ã° ã  ŵç°⇧â [ãûÿÿºP ãp’äwã+
  31589. 0⇦âpŵå€Câ☓¡å°—å :á P —P— ◰Ⱐ㜧'àpŵå –å ã  –  ŵ  ŵå ‘ ° -    † 0°⇧àŵåP‘ áp’äwã
  31590.  ŵâ° ã -éŒë0−åsã}S×ÿÿÊ Oâ¯@âWÿÿê á@™å ™å™åÿ◰ýè1ã † 0†
  31591.  ’åzã0’¶ `0⇧ ’å@ Bâ …å 0…å⇦âÔïAÿÿê ’å0’å⇦âèï<ÿÿê⇦âp™å™åÿ◰ýè    @DâL •â☓ ⇩à‘ÚåÚå  ã− á7ãP ëj4ã-     j  À -y){ôÿÿzÿ◰ýè⇦+qãQà-IÓKÿÿj⇩Båÿ◰ýè0 á  ãÁ[ï-yÊ{ÿÿj
  31592. € á<@•â0 ⇦â½ ã -éGë  ⇦å  „åã  -éëÿÿj ⇦åmë™åÿ◰ýè!0r%!1 ¤!'2%>!73ld!@4A!P5 r!`6mo!p7on!€8A!–9op! 10%!°110!Ç12T!Ð13p!ç14:€!÷15p7ã O²@œþÿ
  31593. Ŵà Çåÿ◰ýè7ãQá O¢Ö@¢‹þÿª  á°ë ávë –u Ês uúÿÿz ’å ⇩ã Ŵåÿ◰ýè°™âH-éé@flå …â`Œå6ã
  31594. °„å;á°„å;á ŷõÿÿ Ýè Oâ?@âЙâ`‡èòfiãTask°™âH-éé „å:ã°  -jøÿÿ „堀堠áë ÝxЙâ`‡èòfiã@-é ã
  31595.   áï€ýxЙâ@½èòfiã@-é…â  ã Ŵå  ã  Ŵå Ŵå ã  ãçï ’u€ýxЙâ@½èòfiã°™âH-éét&åàá  á°ŷâ œå:ã    
  31596. 0Œå3á     O+@0Œå0á°⇩óÿÿ Ýè     Oâq@âЙâ`‡èòfiã°™âH-ééàá  á0ã  
  31597.  ’å0Ŵâ:ã
  31598. °’å°å 0á JŴ÷ÿÿ  á Ýè     OâÂ@âЙâ`‡èòfiã°™âH-éé  ã ° ã -é2ë j⇩å ⇩å ±å°⇩å° ã°⇩å°⇩å°⇩å°⇩å°†å°⇩å …å ÝèЙâ`‡èòfiã'@-é5ãP Ŷ Ŷà⇩¡ á0 ⇩â-éë!j ⇨å8ã
  31599. € 
  31600. 8
  31601. 7ã°G p⇩⇩â€⇦âŷâ ’å2ã
  31602.  ‹åð·å :á
  31603. O⇧@ P‹å5ã
  31604. 0 ŵâ°Œå;á⇩PUâ ⇩ùÿÿŵâêÿÿê€@â'€ýèЙâ&@½èòfiã °™âH-éé0ã ÐZ  Ó  Ó Áä Râøÿÿ Ýè °™âH-éé2ãP    
  31605. €°@²Ŵ°A²°à³° Ã  Ðæ  Áæ Râûÿÿ Ýè°™âH-ééd flå å  ã å å  å å-é1ëj  „åã  -é¬ëj °–å  å „å ⇩â ŷå  å ÝèЙâ`‡èòfiã!@-é⇦â0 ã-éÃë
  31606.  á€â  —å2ã
  31607.  ‘å ã  €  ‘-é¸ëZá
  31608.  Á ‘åãD0◰,0◰ R†Ê€ ⇩ €äîÿÿ¢ á$ ⇦å° á€ýè°™âH-éé-é¤ë
  31609.  q{° q -yŒÿÿ{ ÝxЙâ`‡èòfiã@-é å°⇩â  –å:ã J -éŵë ⇩r  u€ýx@½èòfiã°™âH-é
  31610. é ’å
  31611. ¨àá-é
  31612. ÿÿëj:á O@ Œå ⇧å @’å4ã
  31613. 0 Ŵâ -é    ëj@Tâ ŵùÿÿ  áàþÿë ÝxЙâ`‡èòfiã°™âH-éé ’å ã
  31614. ’å  „åã å:ãÏþÿ @rÍþÿ{j2ã’p    P@Âòßc-ÉÉÿÿË ÝxЙâ`‡èòfiã@-é…âÏï ’u 
  31615. r€ýx@½èòfiã@-é5ãPE  2€ý@½èòfiã°™âH-éé0ã    
  31616. -é<ë
  31617.   á–å-é'ë
  31618.  qu-y/ÿÿ{ ÝxЙâ`‡èòfiã °™âH-éé –ç1ã Ê ⇩ ç Ýè°™âH-éé ã0ã- 
  31619.   - j
  31620.  -ÿÿ  á ÝèЙâ`‡èòfiãp ã0°⇦⌷'àð á°™âH-é éRã ³º å JâZá
  31621. 0C° ³¿  á ÝxЙâ `‡èòfiã°™âH-ééÿ  ã0ã°Ð[ ZÂûÿÿʬjâ ÝèWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     %¸)Xptr_sizet
  31622. ,,P‘@”V©j¤‘ÿýÿXptr_sizeb
  31623. ,,ÿýÿ‘¤©j@”V‘PXptr_sizel
  31624. ,,<<@<@<Uj=©ªUj=@<@<<<Xptr_sizer
  31625. ,,<<<@<“|©U“ªj|©U<“<@<<Xptr_hand
  31626. ,,@AAPPPPPTU¤ªU©ªV©ªT©ªV“ªj@UUwin_hvo    ,¤ wwwwwwwwwp–−−−−−−7sp–−−−−−−7sp–−−−−−−7sp–−−−−−−qp–−−−−−−q–−−−−−−7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_vo    ,¤ wwwwwwwwwp–−−−−−−7sp–−−−−−−wwp–−−−−−−7sp–−−−−−−q–−−−−−−qp–−−−−−−7sp–−−−−−−wwp–−−−−−−7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_ho    ,¤ wwwwwwwwww–−−−−−−−yw–−−−−−−−yw–−−−−−−−yw–−−−−−−−y–−−−−−−−yw–−−−−−−−ywwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_o    ,¤ wwwwwwwwwp–−−−−−−−yp–−−−−−−−yp–−−−−−−−y–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−ypwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_thv    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp7spqpq7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tv    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp7spqqp7spwwp7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_th    ,¤ wwwwwwwwww73333337swwwwwwwwwwwpwppwpwwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_t    ,¤ wwwwwwwwwp73333333spwwwwwwwwwppppppppppppwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_hv    ,¤ wwwwwwwwwp7sp7sp7spqpq7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_    ,¤ wwwwwwwwwppppppppppppppppwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀwin_v    ,¤ wwwwwwwwwp7sp7sp7spqqp7spwwp7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_h    ,¤ wwwwwwwwwwpwpwpwppwpwwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_thvo    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp–−−−−−−7sp–−−−−−−qp–−−−−−−q–−−−−−−7spwwwwwwwwwp73137spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tvo    ,¤ wwwwwwwwwp73333337spwwwwwwwwwp–−−−−−−7sp–−−−−−−q–−−−−−−qp–−−−−−−7sp–−−−−−−wwp–−−−−−−7spwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ@win_tho    ,¤ wwwwwwwwww73333337swwwwwwwwwww–−−−−−−−yw–−−−−−−−y–−−−−−−−yw–−−−−−−−ywwwwwwwwwww73137swwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDwin_to    ,¤ wwwwwwwwwp73333333spwwwwwwwwwp–−−−−−−−y–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−yp–−−−−−−−ypwwwwwwwwwðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÀ4optoff,, BTTTTTTTTTTTTTTTTTT DDDDDDDDDTBUUUUUUUUUU4opton,,UUUUUUUUUU$EDDDDDDDDDEEEEqEGEQEuEAGEr%ETwErAGEAGq7EuwEcWEQGE!%EE$<<radiooff,4»»»»»»»»»»»»»»»»»»»»»»»»»"»»»»»»»"3»»»»» 3#»»»»!D»»» B´»»1%»»!E»»U»»e»»e»»"V»»21F»»;Q'»»;#tµ»»»CAw»»»»K42u·»»»»»TUUfW»»»»»»+TfE²»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿ<radioon,4»»»»»»»»»»»»»»»»»»»»»»»»»+TfE²»»»»»»ufUUE»»»»»{W#!C´»»»»w!4»»»[GSw52³»»rQwww1³»»dswww7#»»euwwwW"»»Vwwwww!»»Vwwwww»»UuwwwW»»Tswww7»»RQwww»»K$Sw5°»»»D»»»»23°»»»»»3"»»»»»»»"±»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<Lgright,,@DDD•UUUUUD•QD⇦⇦⇦#""QD•QD•UUUUUDQD%!!QDQD%!QDQD%!QDQD%QD%QD%!QDUUUUUDDDDDDDDDDDDD@DDDDDDDDDDLpgright,,DDDDDDDDDDDDDDDDDDDDD−−−−−−−−−D−−−−−−−−−D−•−UUUUU−D−•—Q−D⇦⇦⇦#""Q−D−•—Q−D−•−UUUUU−D−−−Q−D−−−%!!Q−D−−−Q−D−−−%!!Q−D−−−Q−D−−−%!Q−D−−−Q−D−−−%Q−D−−−%Q−D−−−%!Q−D−−−UUUUU−D−−−−−−−−−D−−−−−−−−−D,left,¬ 1C4C4C4DC4D4@4DC@4D4@4DC@4D4@4DC@44ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿðÿÿÿðÿÿðÿ,right,¬1D1D1DC1DC1DC1DCDC@Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,up,¬$$AA$$AA$$AA0CCCCCC#0444444$ððÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,down,¬ AAA44AAD4AAD4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðð,pleft,¬D3D3DD3D›D3D›−D3D›−−D3D›−−−3D›−−−−D›−−−−−‘−−−−−‘−−−−‘−−−‘−−‘−‘ðÿðÿÿðÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pright,¬D3D3D3D4)D3DC−)D3D4−−)D3C−−−)D34−−−−)D3C−−−−−)D4−−−−−    C−−−−    4−−−    C−−    4−    C    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pup,¬0@CD0“    @“    C−−D−−0“−−    @“−−    C−−−−D−−−−0“−−−−    @“−−−−    Cððÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,pdown,¬CCCCCCC34444444D›−−−−    4“−−−−    DD−−−−DC−−−−DD“−−    D4“−−    DDD−−DDC−−DDD“    DD4“    DDDDDDDCDDDDDDD4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿðð¬modify_l,ìQ5Q5Q5Q5Q5#1#1#1#1#1ÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿ¬modify_r,ì4D11111ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Version history
  31627. ---------------
  31628.  
  31629. 1.32 Additions:
  31630.       . New icons created by picking from Palette window, instead of a menu
  31631.       . Possibility to put a frame around a selection of icons
  31632.      Bugs fixed:
  31633.       . !RunImage was not StrongARM compatible (because it was a self-
  31634.         decompressing Absolute file, created with !Crunch)
  31635.       . TemplEd expected strings in icons to be CR-terminated, when it should
  31636.         be able to handle ctrl-terminated strings
  31637.  
  31638. 1.31 Additions:
  31639.       . Export icon names. The name of an icon should be stored in the
  31640.         validation string, in the 'N' command
  31641.       . New interactive help data, can be run from the iconbar menu. To be
  31642.         used with StrongHelp version 2
  31643.      Bugs fixed:
  31644.       . Text in title bar of 'Icon Edit' window was missing
  31645.       . Error 'Unknown or missing variable' when doing a Save from the
  31646.         'Save/Discard/Cancel' box
  31647.  
  31648. 1.30 Bugs fixed:
  31649.       . 'Pane' flag of templates could be messed up when deleting a template
  31650.       . 'Divide by zero' error when moving an action button of type 'Click/Drag'
  31651.      Additions:
  31652.       . Option 'Min. size: Ignore desktop font'. When calculating the minimum
  31653.         icon size, and this is on, the desktop outline font is ignored; text
  31654.         width is calculated for the System font (which is usually wider). This
  31655.         is of course only useful on RiscOS 3.5 and later.
  31656.  
  31657. 1.29 Bugs fixed:
  31658.       . Did not check for proper file type when trying to load sprite file
  31659.         called 'Sprites'
  31660.       . Weird behaviour when clicking all mouse buttons above Statistics
  31661.         window
  31662.       . WindowEdit window showed flags for 'Scroll events' wrongly (when
  31663.         'repeat' button was on, the '1' flag was set, and vice versa);
  31664.         flags were set correctly, though
  31665.      Additions:
  31666.       . Export templates as text file
  31667.       . Loads sprite file 'Sprites22' or 'Sprites23' instead of 'Sprites'
  31668.         when present (and provided you have configured the appropiate
  31669.         monitor type)
  31670.  
  31671. 1.28 Bugs fixed:
  31672.       . Got error on startup when support for WimpExt was in Options file
  31673.      Additions:
  31674.       . Archive 'StyleGuide' in the 'Extras' directory, contains example
  31675.         templates from the RiscOS 3 Style Guide
  31676.       . New set of standard icons (in the 3D templates) by Neil Spellings.
  31677.         These conform to the Style Guide and are suited for RiscOS 3.5.
  31678.         Neil also provided an overview of the standard icons, as listed in
  31679.         the Style Guide (see the file 'NewIcons' in the 'StyleGuide'
  31680.         archive)
  31681.       . Statistics window: choice of decimal/hex numbers saved in Options
  31682.         file
  31683.  
  31684. 1.27 Bugs fixed:
  31685.       . Deleting icons by dragging them outside a window had stopped
  31686.         working (since v. 1.24)
  31687.       . Gave error when trying to edit title bar with outline font in it
  31688.       . Corrected calculation of minimum icon size for text+sprite icons
  31689.         with empty text string
  31690.      Additions:
  31691.       . Fast resizing of work area, with Ctrl+Alt+Adjust
  31692.  
  31693. 1.26 NOTE: For this version the source code has been left out of the
  31694.         distribution, because the archive was getting rather large.
  31695.         (From version 1.27 on, the source is distributed separately.)
  31696.      Bugs fixed:
  31697.       . Decreased minimum size of drag-box when resizing icons. Old
  31698.         minimum (16x32) made it difficult to create sliders.
  31699.      Additions:
  31700.       . Added support for the WimpExt module. Like the Interface and AEH
  31701.         module, this contains a number of extensions to the Wimp (3D
  31702.         buttons, pointer change), plus a lot of other support for Wimp
  31703.         applications.
  31704.       . Can use the OLESupport module: changes in the file with custom
  31705.         sprites (e.g. with !Paint) are signalled by the module; TemplEd
  31706.         then re-loads the sprite file. (So you don't need to select
  31707.         'Re-load' from the menu)
  31708.  
  31709. 1.25 Bugs fixed:
  31710.       . Move icons with cursor keys only (i.e. no drag) gave error if
  31711.         you hadn't dragged any icons in the same window first
  31712.       . Gave 'Mistake' when deleting a template (though deleting did work)
  31713.       . 'Min size' on sprite icons: looks for sprite in Wimp area if not
  31714.         found in custom area
  31715.      Additions:
  31716.       . 'Keep on Screen' and 'Ignore extent' window flags can be edited
  31717.         (these flags are for RO3 only)
  31718.       . 'Tidy icons' replaced by multiple options
  31719.       . From Acorn's !NewLook: 3D sprites, and the BorderUtils module
  31720.         (contains fix for the '3D-button bug')
  31721.  
  31722. 1.24 Bugs fixed:
  31723.       . Font usage counting revised again. Version 1.23 might lose a font
  31724.         while still in use for an icon, resulting in 'Illegal font handle'
  31725.         error
  31726.       . Incorrect PROC call within PROCsetworkarea. No one complained, so
  31727.         apparently the line is rarely executed
  31728.       . Gave an error if an icon resize-drag ended outside the template
  31729.      Additions:
  31730.       . Pressing the cursor keys moves the currently selected icons
  31731.         (without needing to drag with Shift+Select)
  31732.       . When editing multiple icons, you can now set just 1 aspect: click
  31733.         with Menu on 'Update' or 'Update & Exit'; then choose which flags
  31734.         you want to change. The other settings of the icons remain the same
  31735.       . Menu items to View/Re-load/Reset the custom sprites. (The 'View'
  31736.         item just Filer_Runs the sprite file; use 'Re-load' after editing
  31737.         the sprites; 't would be nice if !Paint supported the External Edit
  31738.         protocol...)
  31739.       . (Due to popular demand:) Pointer changes above appropriate icons in
  31740.         the Icon Edit and Window Edit windows (was: only if using the 3D
  31741.         templates). Not for RiscOS 2
  31742.       . To minimize the 'Max size' field, click with Adjust on the
  31743.         'Max size' text icon (sets number to length of text + 1)
  31744.      
  31745. 1.23 Bugs fixed:
  31746.       . PLEASE NOTE: Use of function keys in the Edit windows has changed:
  31747.           F2 = Update
  31748.           F3 = Update & Exit
  31749.           F4 = Exit
  31750.         F1 is for activating interactive help, be it !StrongHelp or RiscOS
  31751.         !Help. (This also follows Acorn guidelines)
  31752.       . If a drag-select ended with the pointer over another window, the
  31753.         icons in that window were selected (instead of in the window where
  31754.         the drag started ...)
  31755.       . Input focus wasn't shown correctly for templates with 'Pane' bit set
  31756.         (instead, the non-pane window that was last opened, was highlighted)
  31757.       . Count of font usage not always correct; sometimes caused the
  31758.         counting by the FontManager to be too high
  31759.       . Extended icon info (via !Help) gave wrong ESG number
  31760.      Additions:
  31761.       . During icon move/resize, Icon info window shows coords of drag-box
  31762.         (thanks to Paul Hobbs for showing that it can be done)
  31763.         This means that for single icons you can see the new position and
  31764.         size during the drag.
  31765.       . Interactive help for Icon Edit and Window Edit windows: press F1
  31766.         with pointer above a button, to get help on the flag that this
  31767.         button represents (!StrongHelp and !TemplHlp must be loaded first)
  31768.       . Double grid:
  31769.           - 'Icon size' grid locks all corners of the icons
  31770.           - 'Icon position' grid locks the bottomleft corner, leaving the
  31771.             size unchanged
  31772.       . 'Same size' for icon selections
  31773.       . Cooperates in desktop save (RiscOS 3)
  31774.       . TAB key can be used to move the caret in dialogue windows
  31775.  
  31776. 1.22 Bugs fixed:
  31777.       . Copying templates caused an error, due to a brilliant new bug in
  31778.         version 1.21
  31779.       . Better calculation of minimum icon size
  31780.       . Revised renumbering of icon selection
  31781.      Additions:
  31782.       . Filer-like browser window
  31783.       . Hotkeys for Align, Space Out and for Copy Up/Down/Left/Right
  31784.       . When editing title bar, you can set its colours from the Icon
  31785.         Edit window (was: from Window Edit window only)
  31786.       . Pressing Esc during a drag aborts it
  31787.       . Moving icons to other templates is equivalent to copying
  31788.       . Prevents desktop shutdown if data is changed & not saved
  31789.       . Menus over Edit windows (Button type, ESG, Font etc.) pop up
  31790.         when ANY mouse button is pressed (was: only for Menu button)
  31791.  
  31792. 1.21 Bugs fixed:
  31793.       . Sprite area pointer of windows was not reset to 1 (Wimp area) when
  31794.         saving
  31795.       . Saving to other applications (via Wimp$Scrap) now properly supported
  31796.         Now it is possible to exchange templates between 2 copies of TemplEd
  31797.       . Another bug in Wimp_LoadTemplate (#$&$#%@!!!): it expects some
  31798.         indirected data for an indirected non-text, non-sprite icon.
  31799.         Although the indirected data is not used, it won't digest an
  31800.         invalid pointer.
  31801.      Additions:
  31802.       . Uses DragASprite in save windows
  31803.       . Hotkeys for some functions (^Z, ^X, ^C etc.)
  31804.       . Windows can be centered to the screen
  31805.       . Icons can be centered to the window
  31806.       . Support for AEH module
  31807.       . 'Minimize size' for icons
  31808.       . Using cursor keys to move pointer now also works for moving/
  31809.         resizing windows (when done using Ctrl+Select/Ctrl+Adjust)
  31810.       . When loading a templates file called 'Templates', TemplEd
  31811.         automatically loads the 'Sprites' file from same directory, if such
  31812.         a file exists
  31813.       . MaxFonts% limit removed: font menu can contain any number of font
  31814.         families
  31815.       . If browser window is closed, all template windows are closed, too
  31816.  
  31817. 1.20 Bugs fixed:
  31818.       . Templates with deleted, indirected icons were saved without any
  31819.         indirected data; Wimp_LoadTemplate gave an error when reading this,
  31820.         because it expects some indirected data. (Weird...)
  31821.       . TemplEd's own templates may now contain outline fonts (including
  31822.         the custom icons for the 'Create icon' submenu)
  31823.       . Would not run together with Joris Rölings !FontSelect utility; the
  31824.         FontLister module did not like the way TemplEd (v1.11) reads the
  31825.         font names.
  31826.      Additions:
  31827.       . Resizing of a selection of icons
  31828.       . Reads 'Templates' and 'Sprites' file of an application when its icon
  31829.         is dropped on the icon bar
  31830.       . Renumbering of a selection of icons
  31831.       . Moving the mouse pointer during icon move/resize: cursor keys move
  31832.         the pointer 1 pixel, or 4 pixels when combined with the Shift key
  31833.       . When creating standard icons (from the 'Create icon' submenu), you
  31834.         can now create several icons with one click.
  31835.         (NOTE: the way standard icons are defined has changed. If you
  31836.         already have a set of custom icons, DON'T just copy them into the
  31837.         Templates file. Read the section on customizing in the Manual.)
  31838.       . Option 'Delete icons moved outside'
  31839.       . Alternative sets of templates and sprites, with 3D look
  31840.       . Possibility to resize icons when aligning
  31841.       . Icon resizing now only in 1 dimension (x or y) at a time
  31842.       . Double-click on icon, title bar or background opens the appropriate
  31843.         Edit window
  31844.       . Drag-selecting of templates in 'Templates' window
  31845.       . Souped-up 'Templates' window: templates appear as sprite+name
  31846.       . Direction (up/down/left/right) for copying of icons in menu
  31847.       . Extended icon info, such as button type and validation string, is
  31848.         sent to !Help (Acorn's interactive help application).
  31849.       . Help files for !StrongHlp
  31850.       . Possibility to set coordinates of topleft corner (min.X & max.Y) of
  31851.         work area (were fixed to 0,0 in old version)
  31852.  
  31853. 1.11 Removed automatic minimizing of WimpSlot at startup, since it seemed
  31854.      to give problems with RiscOS 2
  31855.      Grid size now adapts to mode changes
  31856.  
  31857. 1.10 First distributed version
  31858.  
  31859. 1.00 Test version
  31860.  
  31861.  
  31862. Known bugs
  31863. ----------
  31864.  
  31865. * In some cases, you may find it difficult to click-select an icon:
  31866.      - When its button type is 'Menu' (icon is deselected when pointer
  31867.        moves away from the icon)
  31868.      - When it has border type 'R5' in its validation string (icon is
  31869.        deselected after a short delay)
  31870.      - When the icon is shaded (no reaction to a click)
  31871.      - When the icon is part of a selection group (ESG), and the 'Allow
  31872.        adjust' flags are cleared (click-selecting with Adjust deselects
  31873.        the other icons)
  31874.   In all cases, you can drag-select the icon, or you can use 'Select all'
  31875.   and deselect some other icons.
  31876.  
  31877. * Double-clicking on an icon to open the Icon Edit window does not work
  31878. smoothly with all button types; the Wimp interferes with TemplEd's
  31879. reactions to clicks. For the same reason, double-clicking on the title bar
  31880. has the weird effect that the Icon Edit window is opened, and immediately
  31881. the template window is re-opened on top. I have made the double-click thingy
  31882. optional; if you don't like it, you can switch it off.
  31883.  
  31884.  
  31885. Limitations
  31886. -----------
  31887.  
  31888. * Limits on the number of templates and the number of icons per template.
  31889. This can be changed by setting the variables MaxTemplates% and MaxIcons%.
  31890. There is also a limit on the size of indirected data that is stored with a
  31891. template. Current settings:
  31892.     MaxTemplates% = 100
  31893.     MaxIcons%     = 200
  31894.     MaxIndirSize% = 8000
  31895. Note: files contain only actual contents; an empty indirected string with
  31896. max size of 1000 takes up 1 byte (the CR terminator) in the file.
  31897.  
  31898. * TemplEd can't handle indirected strings longer than 255 bytes. You can set
  31899. the maximum length above this limit, but TemplEd can't put more than 255
  31900. characters in a text area.
  31901.  
  31902. * You can't set the sprite area for each icon separately; all sprites in a
  31903. template are read from the same area.
  31904.  
  31905. * TemplEd is a single-file editor.
  31906.  
  31907.  
  31908. Possible future additions
  31909. -------------------------
  31910.  
  31911. Future versions MAY have one or more of the following features:
  31912.  
  31913. * Show grid
  31914. * Multi-file editing
  31915. * Grouping of icons
  31916. * On fatal error, save templates in <Wimp$ScrapDir>
  31917. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿĆAlign`XDefaultWin¸Dialogue¼xExport4FrameF ç    IconEdit- IconInfoMùInfoFÃOptions    æOptPaneï!©Palette—%ÑSaveBoxi&NSpaceOut·(ÈStats+)StdIcons¨3†TemplatesD4Ŵ WindowEditÅ@EWorkArea2⇦ ÿÿÿÿ☓üÿÿ=Align icons Tÿÿÿ|øÿÿÿ¸¹Ôþÿÿ|Hÿÿÿ¼½Àÿÿÿ¸ìÿÿÿ±ÀÅ‘ÿÿÿ¸¼ÿÿÿ±Øß`ÿÿÿ¸…ÿÿÿ±òøÌÀÿÿÿlìÿÿÿ± Ì‘ÿÿÿl¼ÿÿÿ±")Ì`ÿÿÿl…ÿÿÿ±<Cÿÿÿî<ÿÿÿ±Va àþÿÿ ÿÿÿ±tŴì†þÿÿpÌþÿÿ=1“–R4R4LeftSradiooff,radioon;H centSradiooff,radioon;RightSradiooff,radioon;TopSradiooff,radioon;V centSradiooff,radioon;BottomSradiooff,radioon;Move iconsSradiooff,radioon;Resize iconsSradiooff,radioon;OKR5,3„<0ÿÿÿÿ ÿ XüÿÿÔ=<Untitled>e>⇦Àxÿÿÿÿ☓  üÿÿ=TemplEd>ePÿÿÿxøÿÿÿ=ØÚÿÿÿÈHÿÿÿ=1áæ àÿÿÿ Hÿÿÿ=1ëó ¸ÿÿÿxHÿÿÿ=1øÿ ?L40;R2SaveR5,3DiscardR5,3CancelR5,3„N¦‘ÿÿÿÿ ☓ üÿÿ='Export aseª¬ÿÿÿüðÿÿÿ=1`ÿÿÿü ÿÿÿ=ñ !4¬ÿÿÿxôÿÿÿ:a(     ÿÿÿðLÿÿÿ±17ôþÿÿð ÿÿÿ±IKÈþÿÿðôþÿÿ±]f    OKR6,3A~ ;R7file_ffdBasicSradiooff,radioonCSradiooff,radioonMsgTransSradiooff,radioonŷ,¼ÿÿÿÿ ☓ XüÿÿÔ='xÿÿÿÿ tÿÿÿ ôÿÿÿ⇦⇨ ÿÿÿ hÿÿÿ…™ (þÿÿ ÿÿÿ‘’ªØýÿÿþÿÿ=1“–´ÿÿÿ¬èÿÿÿFrame is:°´ÿÿÿ¦èÿÿÿ±†©°€ÿÿÿF´ÿÿÿ±»Ân€ÿÿÿÆ´ÿÿÿ=ñÔÕÖ€ÿÿÿö´ÿÿÿ!êëô€ÿÿÿ´ÿÿÿ!úû(ÿÿÿL\ÿÿÿÿÿÿÿn(ÿÿÿÆ\ÿÿÿ=ñÖ(ÿÿÿö\ÿÿÿ!01ô(ÿÿÿ\ÿÿÿ!@AÐþÿÿ¬ÿÿÿLabel is:°Ðþÿÿbÿÿÿ±LQ°†þÿÿbÐþÿÿ±cjn†þÿÿÆÐþÿÿ=ñ|}Ö†þÿÿöÐþÿÿ!‹›ô†þÿÿÐþÿÿ!¢£ìhþÿÿ¢†þÿÿ±®·    ì4þÿÿbhþÿÿ±ÉÎn4þÿÿÆhþÿÿ=ñàáÖ4þÿÿöhþÿÿ!ö÷ô4þÿÿhþÿÿ!Frame selectionR4R4R4OKR6,3Visible areaSradiooff,radioonIcon #Sradiooff,radioonKtar;Pptr_write;A0-9r5;sdown,pdownr5;sup,pupSpace around icons:Ktar;Pptr_write;A0-9r5;sdown,pdownr5;sup,pupNoneSradiooff,radioonIcon #Sradiooff,radioonKtar;Pptr_write;A0-9r5;sdown,pdownr5;sup,pupCenteredSradiooff,radioonLeftSradiooff,radioonKtar;Pptr_write;A0-9r5;sdown,pdownr5;sup,pup¬<ÿÿÿÿÿ —üÿÿ=ñÿÿÿÿ@6ÿÿÿøôÿÿÿ"#þÿÿø¬þÿÿ&'xýÿÿøôýÿÿ*+ÈÀÿÿÿäàÿÿÿValidation Tÿÿÿ tÿÿÿ0Max sizepÄýÿÿ,äýÿÿButton type☓ÄýÿÿîäýÿÿESGolourÄýÿÿhäýÿÿFg colur|ÄýÿÿàäýÿÿBg colur<´þÿÿìøþÿÿ=1.5 ¼þÿÿ ðþÿÿ=1:H@¼þÿÿÀðþÿÿ=1MR´ÿÿÿ‹àÿÿÿ±W\hÿÿÿ®“ÿÿÿ±jqÿÿÿòHÿÿÿ±⇩ pþÿÿ°†þÿÿ±—fl@þÿÿ°lþÿÿ±­´äpþÿÿ¬†þÿÿµÂÌ
  31918. ä@þÿÿ¬lþÿÿ±Úä
  31919. àpþÿÿȆþÿÿµòþ à@þÿÿ¸lþÿÿ±  àþÿÿÜ<þÿÿ±%2äþÿÿ¨<þÿÿ±@J
  31920. ¼¤ÿÿÿ¤äÿÿÿ=ñXeÿ¼\ÿÿÿ¤†ÿÿÿ=ñ|⇨È€ÿÿÿäÀÿÿÿ=ñ¦§ÿ ÿÿÿ Tÿÿÿ=ñ¾¿    …ýÿÿ4¼ýÿÿ modify_lÿ4…ýÿÿX¼ýÿÿ=1ÛíX…ýÿÿx¼ýÿÿ modify_rÿ€…ýÿÿ ¼ýÿÿ modify_lÿ …ýÿÿÔ¼ýÿÿ=1þ    Ô…ýÿÿô¼ýÿÿ modify_rÿü…ýÿÿ¼ýÿÿ modify_lÿ…ýÿÿP¼ýÿÿ=1        P…ýÿÿp¼ýÿÿ modify_rÿt…ýÿÿ“¼ýÿÿ modify_lÿ“…ýÿÿȼýÿÿ=1$    %    È…ýÿÿè¼ýÿÿ modify_rÿþÿÿ°<þÿÿ±6    =     üÿÿølýÿÿK    L    0ýÿÿ\ýÿÿ±O    \    t¸üÿÿ¼èüÿÿSizesizeeظüÿÿðèüÿÿXze Xtype¨¸üÿÿÀèüÿÿYze YtypeXøüÿÿ¬(ýÿÿ51j    ŵ    (¸øüÿÿè(ýÿÿ;1›    “    ô¸üÿÿèüÿÿ modify_lÿ¸üÿÿtèüÿÿ=1§    ­    t¸üÿÿ“èüÿÿ modify_rÿĸüÿÿäèüÿÿ modify_lÿä¸üÿÿDèüÿÿ=1¾    Ä    D¸üÿÿdèüÿÿ modify_rÿx¼üÿÿÜèüÿÿ±Õ    Ù    Edit IconR4R4R4UpdateR6,3Update & ExitR5,3ExitR5,3TextSoptoff,optonSpriteSoptoff,optonIndirectedSoptoff,optonBorderSoptoff,optonFilledSoptoff,optonH centredSoptoff,optonV centredSoptoff,optonR justifiedSoptoff,optonNeeds helpSoptoff,optonAllow adjustSoptoff,optonHalf sizeSoptoff,optonAbcdefghijklKrat;R7;Pptr_write,3,5AbcdefghijklA~ #*;Krat;R7;Pptr_write,3,5Krat;R7;Pptr_write,3,5A0-9;Krat;R7;Pptr_write,3,5Double/Click/DragR2;Pptr_menu,6,331R2;Pptr_menu,6,3R2;Pptr_menu,6,3R2;Pptr_menu,6,3ShadedSoptoff,optonR4Outline fontSoptoff,optonHomerton.Medium.ObliqueR2;Pptr_menu,6,3R5;Sgright,pgright246.8R2;Pptr_menu,6,3246.8R2;Pptr_menu,6,31:1Soptoff,optonx…ìäÿÿÿÿ • Èþÿÿt=Icon infoeÔÿÿÿ‘üÿÿÿTemplate>¨ÿÿÿ‘ÐÿÿÿIconate>Pÿÿÿ‘xÿÿÿPosition>´8ÿÿÿP“ÿÿÿPosition>øþÿÿ‘ ÿÿÿSizeion>Ìþÿÿ‘ôþÿÿMouse att—Ôÿÿÿlüÿÿÿÿÿÿÿ —¨ÿÿÿlÐÿÿÿÿÿÿÿÎ|ÿÿÿ6¤ÿÿÿ9ÿÿÿÿ—Lÿÿÿ|ÿÿÿ1ÿÿÿÿLÿÿÿl|ÿÿÿ1ÿÿÿÿÎ$ÿÿÿ6Lÿÿÿ9ÿÿÿÿ—øþÿÿl ÿÿÿÿÿÿÿ—ÌþÿÿlôþÿÿÿÿÿÿlÌ:Ôÿÿÿÿ☓ øþÿÿ&=—ÿÿÿÿ
  31921. †ÌÿÿÿÈüÿÿÿ=«³†—ÿÿÿÈÈÿÿÿ=¶Æ†dÿÿÿÈ“ÿÿÿ=ÉÖ†0ÿÿÿÈ`ÿÿÿ=Ùê†üþÿÿÈ,ÿÿÿ=íö    Ðÿÿÿ—øÿÿÿNameled>þ†ÿÿÿ—ÄÿÿÿPurpose>þhÿÿÿ—‘ÿÿÿAuthord>þ4ÿÿÿ—\ÿÿÿVersion>þÿÿÿ—(ÿÿÿStatus>þAbout this ProgramTemplEdR2Template EditorR2Dick AlsteinR2*.** (dd-mmm-yy)R2FreeWareR2B¾üÿÿÿÿ  XüÿÿÔ='—ÿÿÿÿ|þÿÿTDþÿÿ=1¨´ “þÿÿDþÿÿ=1¹¾TemplEd optionsSave & ExitR5,3ExitR5,3RXŵìÿÿÿÿ ‘ üÿÿ0=<Untitled>$ðþÿÿ$èÿÿÿØÙ,Ðÿÿÿ¸üÿÿÿÜÿÿÿÿ
  31922. @þÿÿ$Øþÿÿæç,ÀþÿÿØìþÿÿêÿÿÿÿ 0ýÿÿ$(þÿÿö÷,þÿÿ—<þÿÿúÿÿÿÿ üÿÿ$ýÿÿ,ýÿÿ⇦,ýÿÿÿÿÿÿ †ÿÿÿüÈÿÿÿ±& hÿÿÿø“ÿÿÿ±4O 4ÿÿÿ†`ÿÿÿ±]r ⇦þÿÿ¬´þÿÿ±€„ Pþÿÿ|þÿÿ±¤Á Üýÿÿ8þÿÿ±ÏÞ ¨ýÿÿØÔýÿÿ±ì týÿÿü ýÿÿ±. Ìüÿÿ4øüÿÿ±<K`—üÿÿ¸ÈüÿÿXsizeÿÿ¼—üÿÿÜÈüÿÿ modify_lÿÜ—üÿÿÈüÿÿ=Y\—üÿÿ0Èüÿÿ modify_rÿ@—üÿÿ—ÈüÿÿYsizeÿÿ†—üÿÿ¼Èüÿÿ modify_lÿ¼—üÿÿðÈüÿÿ=_bð—üÿÿÈüÿÿ modify_rÿ Tüÿÿt€üÿÿ±ex` üÿÿ¸PüÿÿXsizeÿÿ¼ üÿÿÜPüÿÿ modify_lÿÜ üÿÿPüÿÿ=ŷ⇨ üÿÿ0Püÿÿ modify_rÿ@ üÿÿ—PüÿÿYsizeÿÿ† üÿÿ¼Püÿÿ modify_lÿ¼ üÿÿðPüÿÿ=…•ð üÿÿPüÿÿ modify_rÿ ÿÿÿÖ,ÿÿÿ±‹« @ýÿÿlýÿÿ±¹ØR4 General R4 Templates R4 Icons R4 Grid Double-click starts editSoptoff,optonSupport 'Interface' moduleSoptoff,optonSupport 'AEH' moduleSoptoff,optonAllow duplicate namesSoptoff,optonHatch user-redrawn templatesSoptoff,optonShow icon infoSoptoff,optonSave icons as unselectedSoptoff,optonDelete icons moved outsideSoptoff,optonIcon size gridSoptoff,opton32R232R2Icon position gridSoptoff,opton32R232R2Support 'WimpExt' moduleSoptoff,optonMin. size: Ignore desktop fontSoptoff,optonŷ"þÿÿÿÿ züÿÿ='`¸ÿÿÿÿ¼ÿÿÿÜðÿÿÿ=ÅÊæ¼ÿÿÿðÿÿÿÍÎ\|ÿÿÿ¨ÿÿÿ±áèfiàþÿÿ$ÿÿÿ=1úý\Àÿÿÿòìÿÿÿ±    èþÿÿ‘ÿÿÿ=188ÿÿÿ|`ÿÿÿ1#$DDÿÿÿpTÿÿÿ80
  31923. Untitled>DDÿÿÿÚTÿÿÿ80YUntitled><ÿÿÿ0\ÿÿÿ!'(☓<ÿÿÿ¤\ÿÿÿ!78|ÿÿÿt¨ÿÿÿIÿÿÿÿxtÿÿÿ0¬ÿÿÿ=ñOP—þÿÿ¤Ðþÿÿ=ñ`h°¤þÿÿÐÄþÿÿ!€ŴΤþÿÿîÄþÿÿ!‘’<†þÿÿÿÿÿ†‡LøþÿÿÂ$ÿÿÿ9FrameÿÿÊ(ÿÿÿpÿÿÿ:a     Icon paletteDataR2R5;sgright,pgrightChoiceSradiooff,radioonOKR6,3OptionSoptoff,optonCancelR5,3R2r5;sleft,pleftr5;sright,prightLabelKtar;Pptr_write-999.99Ktar;Pptr_write;A0-9.\-r5;sdown,pdownr5;sup,pupR4file_fff„঑ÿÿÿÿ☓ üÿÿ='Save aseª¬ÿÿÿüðÿÿÿ=1¸»`ÿÿÿü ÿÿÿ=ñÀÁ6¬ÿÿÿzôÿÿÿ:aÈ    OKR6,3A~ ;R7file_fec¼ xÿÿÿÿ ☓üÿÿ=Space Out
  31924. ☓ÿÿÿXøÿÿÿ—−ðþÿÿXxÿÿÿ†‡Àÿÿÿìÿÿÿ± ­‘ÿÿÿð¼ÿÿÿ±ÀË 8ÿÿÿ¨dÿÿÿ±Þå 4ÿÿÿ,dÿÿÿ!÷ø®0ÿÿÿhÿÿÿ=ñ (4ÿÿÿHdÿÿÿ!üþÿÿ(ÿÿÿ±&4à þÿÿLäþÿÿ=1FIR4R4HorizontallySradiooff,radioon;VerticallySradiooff,radioon;Space:Sradiooff,radioonR5;Sdown,pdown999Pptr_write,3,5R5;Sup,pupUse availableSradiooff,radioonOKR6,32ÄÞ‘ÿÿÿÿ¿ 4ÿÿÿ¬=¬8ÿÿÿÿlÿÿÿÀøÿÿÿKL¸ÿÿÿ¸äÿÿÿ±OW |ÿÿÿx¨ÿÿÿ±jn Èlÿÿÿ¤øÿÿÿŴŵÔÄÿÿÿ,ìÿÿÿŶÿÿÿÿ$0Äÿÿÿ†ìÿÿÿ−ÿÿÿÿ Ô†ÿÿÿ,Äÿÿÿœÿÿÿÿ$0†ÿÿÿ†Äÿÿÿ®ÿÿÿÿ Ôtÿÿÿ,†ÿÿÿ°ÿÿÿÿ$0tÿÿÿ††ÿÿÿÆÿÿÿÿ <ÿÿÿÄdÿÿÿTemplate--È<ÿÿÿ$dÿÿÿIconsed>(<ÿÿÿ¤dÿÿÿSizesed>¨<ÿÿÿ$dÿÿÿIndir.ed>(<ÿÿÿ¤dÿÿÿTotaled>TemplEd statisticsR4DecimalSradiooff,radioon;HexSradiooff,radioon;R4Number of templates0Largest definition0Indirected data total0:4Rºÿÿÿÿ ÿ züÿÿ=øÿÿÿÿ-ÐÿÿÿH9'ÿÿÿÿ@—ÿÿÿ Ìÿÿÿ=`ÿÿÿH‘ÿÿÿ9'ÿÿÿÿfÿÿÿæXÿÿÿ=1,/ÜþÿÿH ÿÿÿ9'4ÿÿÿÿf þÿÿæÔþÿÿ=1@GdþÿÿH“þÿÿ9'LÿÿÿÿN0þÿÿä\þÿÿ±SZôýÿÿH$þÿÿ9'hÿÿÿÿNÀýÿÿäìýÿÿ±nu€ýÿÿH°ýÿÿ9'ÿÿÿÿzLýÿÿÎxýÿÿ™ÿÿÿÿýÿÿH@ýÿÿ9'›ÿÿÿÿHÐüÿÿýÿÿ=ñ†‡\Ðÿÿÿ¤9'­ÿÿÿÿð¤ÿÿÿÄÿÿÿ!·¸\`ÿÿÿ¤‘ÿÿÿ9'Éÿÿÿÿð4ÿÿÿTÿÿÿ!ÓÔ\Üþÿÿ¤ ÿÿÿ9'ãÿÿÿÿð¬þÿÿÌþÿÿ!íî\dþÿÿ¤“þÿÿ9'ùÿÿÿÿð8þÿÿXþÿÿ!^ôýÿÿ¦$þÿÿ9'ÿÿÿÿrLýÿÿfiØýÿÿ ŵ¼ýÿÿæèýÿÿ9#ÿÿÿÿ\ýÿÿ¤@ýÿÿ9')ÿÿÿÿŷÔüÿÿRýÿÿ=5<\Ôüÿÿ⇩ýÿÿ?@¸Ðÿÿÿ9'Sÿÿÿÿ<¤ÿÿÿ\Äÿÿÿ!`aZ¤ÿÿÿzÄÿÿÿ!pq¸`ÿÿÿ‘ÿÿÿ9'|ÿÿÿÿø0ÿÿÿPÿÿÿ!…™ 0ÿÿÿÀPÿÿÿ!†‡¸Üþÿÿ ÿÿÿ9'®ÿÿÿÿРþÿÿ4Ìþÿÿ½ÿÿÿÿ8†þÿÿðÔþÿÿ=ñÃĸdþÿÿ“þÿÿ9'Ôÿÿÿÿº0þÿÿþXþÿÿ1ÛÜÆ<þÿÿòLþÿÿ80
  31925. Untitled>Æ<þÿÿ\Lþÿÿ80YUntitled>¸ôýÿÿ$þÿÿ9'ßÿÿÿÿâ´ýÿÿvìýÿÿ=ñíõŵÀýÿÿ¢àýÿÿ! ÀýÿÿÀàýÿÿ!Standard IconsDisplay fieldDataR2Default actionOKR6,3Action iconCancelR5,3OptionOptionSoptoff,optonRadioChoiceSradiooff,radioonLabelLabelWritableKtar;Pptr_writeArrow (⇨)r5;sright,prightArrow (⇦)r5;sleft,pleftArrow (⇧)r5;sup,pupArrow (⇩)r5;sdown,pdownFrame+LabelR4TitlePop-up menuChoiceR2R5;sgright,pgrightUp/Down pairr5;sdown,pdownr5;sup,pupLeft/Right pairr5;sleft,pleftr5;sright,prightLabel+WritableLabelKtar;Pptr_writeSliderR2Numeric field-999.99Ktar;Pptr_write;A0-9.\-r5;sdown,pdownr5;sup,pup8ÂÔÿÿÿÿ ¿ üÿÿ='`xÿÿÿÿÌÿÿÿôôÿÿÿŶ› Browser windowAnyTemplateSwin_thvlÜÿÿÿÿÿ XýÿÿÚ=ñXÿÿÿÿ@@ ÿÿÿôÿÿÿde xÿÿÿÐôÿÿÿhi äýÿÿÀþÿÿlm dýÿÿÐpÿÿÿpq¸ÿÿÿÔäÿÿÿ±t}    ⇦ÿÿÿ´ÿÿÿ±⇧– XÿÿÿÔ☓ÿÿÿ±¥®    ¸ÿÿÿ‰äÿÿÿ±¼Á⇦ÿÿÿØ´ÿÿÿ±ÏÙ
  31926. ¼týÿÿ´ ýÿÿ±çôXÿÿÿø☓ÿÿÿ±         dýÿÿ Üýÿÿ        dýÿÿÜýÿÿ     !    ⇦þÿÿ—´þÿÿ3±$    )    Xþÿÿ†☓þÿÿ±7    =    (þÿÿÜTþÿÿ±K    U    
  31927. øýÿÿ´$þÿÿ±c    j    ø⇦þÿÿ°´þÿÿ±x    Ŵ        øXþÿÿà☓þÿÿ±•    „    ø(þÿÿ¸Tþÿÿ±¤    ­        ôýÿÿè þÿÿ±»    Æ     $ÀÿÿÿhèÿÿÿaÔ    ÿÿÿÿ x“ÿÿÿ—´ÿÿÿ!à    á    $…ÿÿÿh¼ÿÿÿ=1ð    
  31928. —“ÿÿÿ¸´ÿÿÿ!
  31929. 
  31930. ,ÿÿÿ$\ÿÿÿc
  31931. ÿÿÿÿx4ÿÿÿ—Tÿÿÿ!0
  31932. 1
  31933. ,,ÿÿÿh\ÿÿÿ=1@
  31934. A
  31935. —4ÿÿÿ¸Tÿÿÿ!R
  31936. S
  31937. ðþÿÿ$ ÿÿÿc^
  31938. ÿÿÿÿxøþÿÿ—ÿÿÿ!o
  31939. p
  31940. ,ðþÿÿh ÿÿÿ=1
  31941. —øþÿÿ¸ÿÿÿ!’
  31942. (´þÿÿ$äþÿÿc‡
  31943. ÿÿÿÿx¼þÿÿ—Üþÿÿ!­
  31944. ®
  31945. ,´þÿÿhäþÿÿ=1½
  31946. ¾
  31947. —¼þÿÿ¸Üþÿÿ!Ï
  31948. Ð
  31949. (xþÿÿ$¨þÿÿcÛ
  31950. ÿÿÿÿx€þÿÿ— þÿÿ!ë
  31951. ì
  31952. ,xþÿÿh¨þÿÿ=1û
  31953. ü
  31954. —€þÿÿ¸ þÿÿ!  (<þÿÿ$lþÿÿc ÿÿÿÿxDþÿÿ—dþÿÿ!) * ,<þÿÿhlþÿÿ=19 : —Dþÿÿ¸dþÿÿ!K L (þÿÿ$0þÿÿcW ÿÿÿÿxþÿÿ—(þÿÿ!g h ,þÿÿh0þÿÿ=1w x —þÿÿ¸(þÿÿ!⇨ ⇩ TÄýÿÿ$ôýÿÿc” ÿÿÿÿ xÌýÿÿ—ìýÿÿ!¡ ¢ ,Äýÿÿhôýÿÿ=1± ² —Ìýÿÿ¸ìýÿÿ!Ã Ä Èþÿÿ¢ ÿÿÿ=1Ï Ö °Ðþÿÿ—ÿÿÿ=1Û é ¤Ðþÿÿüÿÿÿ=1î ó týÿÿ  ýÿÿ=1ø $ÿÿÿ2Pÿÿÿ±  ¤ýÿÿþÐýÿÿ  ÿÿÿÿtýÿÿ² ýÿÿ±. 5 ¼týÿÿ ýÿÿ±C E  ¤ýÿÿôÐýÿÿS ÿÿÿÿ4týÿÿz ýÿÿ±a c “týÿÿÚ ýÿÿ±q s Edit WindowR4R4R4R4MoveableSoptoff,optonAuto-redrawSoptoff,optonHot keysSoptoff,optonPaneSoptoff,optonNo boundsSoptoff,optonGCOL coloursSoptoff,optonBack windowSoptoff,optonR4R4BackSoptoff,optonCloseSoptoff,optonTitle barSoptoff,optonToggleSoptoff,optonV scrollSoptoff,optonAdjustSoptoff,optonH scrollSoptoff,optonNew formatSoptoff,optonButton typeR5;sdown,pdownDouble/Click/DragR2;Pptr_menu,6,3R5;Sup,pupTitle foregroundr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupTitle backgroundr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupWork foregroundr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupWork backgroundr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupScrollbar outerr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupScrollbar innerr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupInput focusr5;sdown,pdownR2;Pptr_menu,6,3r5;sup,pupUpdateR6,3Update & ExitR5,3ExitR5,3DefaultR5Keep on screenSoptoff,optonScroll eventsRepeatSoptoff,opton1Soptoff,optonIgnore extentHSoptoff,optonVSoptoff,opton
  31955. ü¢Ôÿÿÿÿ ☓üÿÿ=Work AreaePÿÿÿ‘øÿÿÿ89hþÿÿ‘Hÿÿÿ<=€ýÿÿ‘`þÿÿ@A°ÿÿÿÄàÿÿÿTop left XlÿÿÿȆÿÿÿYp left XÿÿÿÄ0ÿÿÿSize X  X¸þÿÿÄèþÿÿYp left XþÿÿÄDþÿÿMin.size XÌýÿÿÄüýÿÿYp left XÌ°ÿÿÿìàÿÿÿ modify_l>ÿì¨ÿÿÿ`èÿÿÿ=ñDJ`°ÿÿÿ€àÿÿÿ modify_r>ÿÌlÿÿÿì†ÿÿÿ modify_l>ÿì`ÿÿÿ` ÿÿÿ=ñhn`hÿÿÿ€—ÿÿÿ modify_r>ÿÌÿÿÿì0ÿÿÿ modify_l>ÿìøþÿÿ`8ÿÿÿ=ñ…‹`ÿÿÿ€0ÿÿÿ modify_r>ÿ̸þÿÿìèþÿÿ modify_l>ÿì°þÿÿ`ðþÿÿ=ñ®´`¸þÿÿ€èþÿÿ modify_r>ÿÌþÿÿìHþÿÿ modify_l>ÿìþÿÿ`Pþÿÿ=ñÐÖ`þÿÿ€Hþÿÿ modify_r>ÿÌÐýÿÿìþÿÿ modify_l>ÿìÈýÿÿ`þÿÿ=ñòø`Ðýÿÿ€þÿÿ modify_r>ÿÚxþÿÿr¨þÿÿ=1    Ú‘ýÿÿrÀýÿÿ=1"+    $8ýÿÿÄlýÿÿ=108à0ýÿÿxtýÿÿ=1=@R4R4R400000A0-9\-;Krat;R7;Pptr_write,3,500000A0-9\-;Krat;R7;Pptr_write,3,500000A0-9;Krat;R7;Pptr_write,3,500000A0-9;Krat;R7;Pptr_write,3,500000A0-9;Krat;R7;Pptr_write,3,500000A0-9;Krat;R7;Pptr_write,3,5MinimizeR5,3MaximizeR5,3DefaultR5,3OKR6,3s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     HELP(Ëÿÿÿÿ,ýÿÿ $DIR$((TGýÿÿùÎ? ⇨!RootàGýÿÿʪD¾Address GýÿÿÖë@ ¬AlignÐ-Fýÿÿ(ÎaCenterIcon4.Fýÿÿþ:ý/Creditsd0FýÿÿbümCtrlKeysÔ1FýÿÿÛBüdCursorKeys82FýÿÿëÀCustomSpritesø2Fýÿÿ,    hDeletedIcons`3Fýÿÿ§¢EditIcon6Fýÿÿ¡ÃMEditkeysT6Fýÿÿ»®ÀEditWin8Fýÿÿs
  31956.     ¯EnsureIconsÄ8Gýÿÿ@ì@ ‘IconInfo_ì[GýÿÿÄê? §IconPos“\FýÿÿV_qLicence^FýÿÿÄR>LoadAndSaveH`FýÿÿfXëLoadSprites4aFýÿÿÕ;⇨MinSizeÀaFýÿÿ⇨0²MiscellaneoustbFýÿÿ^ùMouse…eFýÿÿ1\%MoveIcon´gFýÿÿ[gÃMoveWindowxhGýÿÿuí@ @Remark8nFýÿÿ–◰ResizeIcon¼oFýÿÿ(m¯ResizeWindowlpGýÿÿÆí@ ¬SpaceOut—–Gýÿÿýí@ …TechInfo_ì†Gýÿÿ(î@  WinInfo_X«Gýÿÿ®Ù@ xFrameDATA⇨Help on TemplEd
  31957. #Background Wimp 1; #Sprite 40,0 !templed
  31958. #Indent 9
  31959. TemplEd
  31960. v 1.32
  31961. #Indent 0; Line
  31962.  •     <Loading & Saving=>LoadAndSave>
  31963.  •     <Mouse operation=>Mouse>
  31964.  •     <Positioning icons=>IconPos>
  31965.  •     <Editing icons=>EditIcon>
  31966.  •     <Editing windows=>EditWin>
  31967.  •     <Miscellaneous>
  31968.  •     <Technical info=>TechInfo_>
  31969.  •     <Licence>
  31970.  •     <Credits>
  31971. #Line; Align Centre
  31972. (c) <Dick Alstein=>Address>DATA¾Address
  31973. You can send your comments, bug reports, questions, postcards, etc. to:
  31974.  
  31975. #Indent 2
  31976. Dick Alstein
  31977. Lijnslagerstraat 204
  31978. NL-5625BP  Eindhoven
  31979. The Netherlands
  31980.  
  31981. e-mail: dal@dasc.nlDIR$¬¬LFýÿÿ‡£:!Root⇦Fýÿÿ·ÛXmpld    Eÿúÿ¹»Œë$ Xmpl1⇦Eÿúÿ¶µŒë$ Xmpl2¬!Eÿúÿ3ÉŒë$ Xmpl3DATA:Aligning icons
  31982. Changes the selected icons so that they are lined up. You can align their left-hand sides, right-hand sides, top, bottom, or the centres (in either the horizontal or vertical direction).
  31983.  
  31984. "Move icons"    change the icon position
  31985. "Resize icons"    move only 1 side of the icon
  31986.  
  31987. <Example=>AlignXmpl>DATAÛExample of Align
  31988. #Wrap Off
  31989. #Draw 12,52 AlignXmpl1
  31990. #Draw 12,180 AlignXmpl2
  31991. #Draw 12,304 AlignXmpl3
  31992. Original position:
  31993.  
  31994.  
  31995.  
  31996. Top-Aligned with "Move icons":
  31997.  
  31998.  
  31999.  
  32000. Top-Aligned with "Resize icons":
  32001.                      
  32002.  
  32003.  
  32004. DATA$ DrawÉDrawPlus    n#n#t®jlÛF%5nfl›Xÿÿÿÿ@  ÛF›Xnfl›Xnfl%5ÛF%5ÛF›XlÜÂÜFJæJjÿÿÿÿ@  ÜÂJjJæJjJæÜFÜÂÜFÜÂJjl¸    n#“PÜFÿÿÿÿ@  ¸    ÜF“PÜF“Pn#¸    n#¸    ÜFTn#Jjt®jÿÿÿÿÝÀ          n#JjtJje…
  32005. ð?@º™º™··e8
  32006. ÿÿÿeD
  32007. ÿÿÿÿÿÿÿÿ  eä
  32008.         $$$                    $$        $    $            Standardep
  32009. DATA$ DrawÉDrawPlus    n#ÜFt®jlÛFÜFnflJjÿÿÿÿ@  ÛFJjnflJjnflÜFÛFÜFÛFJjlÜÂÜFJæJjÿÿÿÿ@  ÜÂJjJæJjJæÜFÜÂÜFÜÂJjl¸    ÜF“PJjÿÿÿÿ@  ¸    Jj“PJj“PÜF¸    ÜF¸    JjTn#Jjt®jÿÿÿÿÝÀ          n#JjtJje…
  32010. ð?@º™º™··e8
  32011. ÿÿÿeD
  32012. ÿÿÿÿÿÿÿÿ  eä
  32013.         $$$                    $$        $    $            Standardep
  32014. DATA$ DrawÉDrawPlus    n#o#t®jlÛF&5nflKjÿÿÿÿ@  ÛFKjnflKjnfl&5ÛF&5ÛFKjlÜÂÜFJæJjÿÿÿÿ@  ÜÂJjJæJjJæÜFÜÂÜFÜÂJjl¸    o#“PJjÿÿÿÿ@  ¸    Jj“PJj“Po#¸    o#¸    JjTn#Jjt®jÿÿÿÿÝÀ          n#JjtJje…
  32015. ð?@º™º™··e8
  32016. ÿÿÿeD
  32017. ÿÿÿÿÿÿÿÿ  eä
  32018.         $$$                    $$        $    $            Standardep
  32019. DATAaCentering icons
  32020. Centers the icon (or selected icons) to the currently visible window areaDATA/Credits
  32021. #Wrap On
  32022. Thanks are due to The Risc Squad, Jonathan Marten and Tim Browse for writing applications from which I have "borrowed" ideas for TemplEd.
  32023.  
  32024. Alex Petrov wrote the MenuUtils module, Martin Ebourne created the hires sprites.
  32025.  
  32026. TemplEd has also been much improved by the testing, comments and suggestions of Stephen Burke, Martin Ebourne, Michael Ellis, Edwin Hautus, Paul Hobbs,
  32027. Rupert Johnson, Merlin Hughes, Olaf Krumnow, Paul Lebeau, Ian Palmer, John Pullan, Niklas Röjemo, John Tytgat, Julian Wright, and I'm sure I forgot some others.DATAmKeyboard shortcuts
  32028. ^A    Select all icons
  32029. ^Z    Clear icon selection
  32030. ^X    Delete selected icons
  32031. ^C    Copy selected icons
  32032. ^E    Edit selected icons
  32033.  
  32034. ^L    Copy selected icons to left
  32035. ^R    Copy selected icons to right
  32036. ^U    Copy selected icons upward
  32037. ^D    Copy selected icons downward
  32038.  
  32039. ^Q,^F2    Close window
  32040. ^T    Edit title bar
  32041. ^W    Edit window
  32042.  
  32043. ^J    Open "Align" box
  32044. ^K    Open "SpaceOut" boxDATAdCursor Keys
  32045. #Wrap Off
  32046. The cursor keys move the pointer 1 pixel.
  32047. When Shift is held: 4 pixelsDATAÀCustom sprites
  32048. View/Edit    Run the file with custom sprites (i.e. make !Paint load it)
  32049. Re-load    Read the file again (after you have edited it)
  32050. Reset    Discard the sprites, use the Wimp areaDATAhDeleted icons
  32051. To retrieve icons that have been marked as deleted, or to definitively remove themDATA¢The "Icon Edit" window
  32052. Remarks:
  32053. #Wrap On
  32054.  •     Some fields (button type, colours, font) can contain a limited number of values. These can be set either by clicking on the arrow icons to the left and right, or from a menu (click on the field to get the menu)
  32055.  •     You can use the <function keys=>Editkeys> as shortcuts for the "Update", "Update & Exit" and "Exit" buttons
  32056.  •     You can get <info=>IconInfo_Flags> on the meaning of the various buttons in the window by pressing F1 while the pointer is over the button
  32057.  •     When editing a selection, you can change only the icon flags. To change a single flag, click Menu over "Update" or "Update & Exit" and choose the flag.DATAMFunction keys
  32058. #Wrap Off
  32059. F2    =    Update
  32060. F3    =    Update & Exit
  32061. Esc, F4    =    ExitDATAÀThe "Window Edit" window
  32062. Remarks:
  32063. #Wrap On
  32064.  •     The contents of the title bar are edited separately, using the "Icon Edit" window; click Shift+Menu while the pointer is over the title bar
  32065.  •     You can use the <function keys=>Editkeys> as shortcuts for the "Update", "Update & Exit" and "Exit" buttons
  32066.  •     You can get <info=>WinInfo_Flags> on the meaning of the various buttons in the window by pressing F1 while the pointer is over the buttonDATA¯Ensure icons
  32067. Check the position of icons, making sure that they are
  32068.  •     within the window's work area, or
  32069.  •     within the currently visible area
  32070. and move them if neededDIR$‘‘T;FýÿÿÓBFlagsX?Fýÿÿ›1
  32071. ÑBorder,@Fýÿÿ‰†1
  32072. nFilled†@Fýÿÿͦ1
  32073. †Hcentred8AFýÿÿ5ÙKVcentred☓AFýÿÿŒ¡†Rjustified BFýÿÿëÔ`xNeedshelp—BFýÿÿ¢‘1
  32074. µAllowadjustPCFýÿÿ4â`eHalfsize¸CFýÿÿ⇦a>ButtontypeøGFýÿÿ¾¤(ESG IFýÿÿf³1
  32075. aShaded☓IFýÿÿ|R¤Fgcol(JEýÿÿ{Vë(BgcolPJFýÿÿ<Ê¥ValidationøJFýÿÿ5 þMaxsizeøKFýÿÿ"|‡Indirected—MGýÿÿ³ì@ HValidStr$[Fýÿÿ®¿`ÆFontDATAIcon flags
  32076. Flag    Meaning
  32077. #Line; Wrap On
  32078. Text    Icon contains text
  32079. Sprite    Icon contains a sprite
  32080. <Border=>IconInfo_Border>    Icon has a border
  32081. <H centred=>IconInfo_Hcentred>    Contents centered horizontally
  32082. V centred    Contents centered vertically
  32083. <Filled=>IconInfo_Filled>    Icon has a filled background
  32084. <Outline font=>IconInfo_Font>    Text is in anti-aliased font
  32085. <Needs help=>IconInfo_Needshelp>    Icon requires task's help to be redrawn
  32086. <Indirected=>IconInfo_Indirected>    Icon data is indirected
  32087. <R justified=>IconInfo_Rjustified>    Text is right-justified
  32088. <Allow adjust=>IconInfo_Allowadjust>    If selected with Adjust, don't cancel other icons in same <ESG=>IconInfo_ESG>
  32089. <Half size=>IconInfo_Halfsize>    Display sprite at half size
  32090. <Button type=>IconInfo_Buttontype>    Icon button type
  32091. <ESG=>IconInfo_ESG>    Exclusive Selection Group
  32092. Selected    Icon is selected by user (inverted)
  32093. <Shaded=>IconInfo_Shaded>    Icon un-selectable (greyed out)
  32094. Deleted    Icon has been deleted
  32095. <Fg colour=>IconInfo_Fgcol>    Foreground colour
  32096. Bg colour    Background colourDATAÑ'Border' flag
  32097. ON:    Icon has a rectangular border
  32098.  
  32099. The border type is set in the validation string, with the <'R' command=>IconInfo_ValidStrCmdR>. Default border is simple rectangle in foreground colour.DATAn'Filled' flag
  32100. #Wrap On
  32101. ON:    Fill icon with background colour when it is redrawn
  32102. OFF:    'Transparent' iconDATA†'H centred' flag
  32103. #Wrap On
  32104. ON:    Icon contents (text/sprite) are horizontally centred
  32105.  
  32106. For left-justifying: set 'H centred' and 'R justified' flags offDATAK'V centred' flag
  32107. Icon contents (text/sprite) are centred verticallyDATA†'R justified' flag
  32108. #Wrap On
  32109. Icon contents (text and/or sprite) are right-justified
  32110.  
  32111. For left-justifying: set 'H centred' and 'R justified' flags offDATAx'Needs help' flag
  32112. #Wrap On
  32113. ON:    Icon requires the help of the task to be redrawn
  32114. OFF:    Wimp redraws icon by itselfDATAµ'Allow adjust' flag
  32115. #Wrap On
  32116. ON:    Allow selecting more than 1 icon in this <ESG=>IconInfo_ESG>, by clicks with Adjust
  32117. OFF:    Clicking Adjust always deselects other icons in ESGDATAe'Half size' flag
  32118. ON:    Draw the sprite (if present) at half its size
  32119. OFF:    Sprite at normal sizeDATA>Icon button type
  32120. #Wrap On
  32121. Determines when the task is notified of mouse clicks
  32122.  
  32123. Button type    Meaning
  32124. #Line
  32125. Never    Ignore all clicks on the icon
  32126. Always    Notify continuously while the mouse is over the icon
  32127. Auto-repeat    Notify of click, then auto-repeat
  32128. Click    Notify once
  32129. Release    Click selects, move away deselects. Notify of release
  32130. Double click    Click selects. Double-click notifies task.
  32131. Click\/Drag    As 'Click' + Notify of drag (returns button*16)
  32132. Release\/Drag    As 'Release' + Notify of drag (button*16)
  32133. Double\/Drag    As 'Double click' + Notify of drag (button*16)
  32134. Menu    Notify once. Select while the mouse is over the icon
  32135. Double\/Click\/Drag    Notify of Click (*256), Drag (*16), Doubleclick (*1)
  32136. Radio    Click toggles selection (*1), Drag notifies (*16)
  32137. Write\/Click\/Drag    As 'Click\/Drag' + Gain caret when clicked
  32138. Writable    As 'Click' + Gain caret when clicked
  32139.  
  32140. (Clicks with the Menu button are always passed on to the task)
  32141.  
  32142. Behaviour of writable icons can be controlled in the validation string, with the <'A' command=>IconInfo_ValidStrCmdA> and <'K' command=>IconInfo_ValidStrCmdK>DATA(ESG
  32143. #Wrap On
  32144. ESG means Exclusive Selection Group, and is a number from 0-31
  32145.  
  32146. If the ESG of an icon is > 0, then clicking the icon with Select deselects other icons with the same ESG number
  32147.  
  32148. The effect of a click with Adjust is determined by the '<Allow adjust=>IconInfo_Allowadjust>' flagDATAa'Shaded' flag
  32149. ON:    Icon is shaded; it is shown in grey, and mouse clicks on it are ignoredDATA¤Fgcol
  32150. #Wrap On
  32151. Sets the foreground colour of
  32152.  •     Icon text (if not using an outline font)
  32153.  •     Standard icon border (if '<Border=>IconInfo_Border>' flag set)DATA(Bgcol
  32154. Sets the background colourDATA¥Validation string
  32155. Controls several aspects of behaviour and appearance of an icon.
  32156.  •     <Commands=>IconInfo_ValidStrCmd>
  32157.  •     <Syntax=>IconInfo_ValidStrSyntax>DATAþ'Max size' field
  32158. #Wrap On
  32159. Indicates the maximum size of indirected data.
  32160.  
  32161. For writable icons, this determines the maximum length of the input text. Your program should never write longer strings into the buffer! (Add 1 for the string terminator.)DATA‡'Indirected' flag
  32162. #Wrap On
  32163. Is needed if:
  32164.  •     you need more than 12 bytes to store the icon text or sprite name
  32165.  •     you want to use a <validation string=>IconInfo_Validation>
  32166.  •     you want both text and a sprite in the icon (use the <'S' command=>IconInfo_ValidStrCmdS> in the validation string)
  32167.  
  32168. The indirected data is stored in a buffer. The buffer size is set in the '<Max size=>IconInfo_Maxsize>' field.DIR$HHàNFýÿÿ§S„CmdxPFýÿÿ¢.aCmdA…QFýÿÿôxÀCmdDLRFýÿÿ5´`ÿCmdFLSFýÿÿg?aCmdK\UFýÿÿH÷õCmdLTVFýÿÿ?ŵ`–CmdRìWFýÿÿo7CmdSôXFýÿÿ<.ÛSyntaxÐYFýÿÿÃQCmdPDATA„Validation string commands
  32169. A    <Allow/disallow characters=>IconInfo_ValidStrCmdA>
  32170. D    <Display characters=>IconInfo_ValidStrCmdD>
  32171. F    <Set outline font colours=>IconInfo_ValidStrCmdF>
  32172. K    <Handle editing keys=>IconInfo_ValidStrCmdK>
  32173. L    <Multi-line text icon=>IconInfo_ValidStrCmdL>
  32174. P    <Change pointer shape=>IconInfo_ValidStrCmdP>
  32175. R    <Border type=>IconInfo_ValidStrCmdR>
  32176. S    <Sprite name=>IconInfo_ValidStrCmdS>DATAValidation string - 'A' command
  32177. Syntax:    A\{allowed chars\}|~\{disallowed chars\}
  32178.  
  32179. Controls the input of characters in writable icons
  32180.  
  32181. Examples:    A0-9    Allow only digits
  32182.     A~$#\/    Allow all characters, except $ # \/
  32183.     A~\\-    Don't allow the minus
  32184.     A~    Disallow all charactersDATAÀValidation string - 'D' command
  32185. Syntax:    D\{character\}
  32186.  
  32187. Display all characters in a string as a \{character\}. Useful when entering passwords
  32188.  
  32189. Example:    D*    Show text as row of asterisksDATAÿValidation string - 'F' command
  32190. Syntax:    F\{background colour\}\{foreground colour\}
  32191.  
  32192. Sets the colours of the outline font used for the icon Colours are entered in hexadecimal.
  32193.  
  32194. Examples:    F07    Black on White (the default)
  32195.     F7C    Cream on Black (yuck!)DATAValidation string - 'K' command
  32196. Syntax:    K\{A,R,T,D,N or a combination thereof\}
  32197.  
  32198. Handles keypresses according to Acorn guidelines:
  32199.  
  32200. A    for Up and Down keys; move the caret to the previous\/next writable icon
  32201. R    for Return key; move caret to next writable icon, or notify task when in last icon
  32202. T    for Tab and Shift-Tab keys; move caret to previous\/next writable icon
  32203. D    handle keys as in RiscOS 2 (Left, Right, Delete, Ctrl-U, etc.) but also notify task
  32204. N    notify task of all keys
  32205.  
  32206. This command is not available in RiscOS 2DATAõValidation string - 'L' command
  32207. Syntax: L[\{number\}]
  32208.  
  32209. Turns the icon into a multi-line text icon. The number indicates the line spacing, but this is not implemented yet (in RiscOS 3.50). The default is 40. Outline fonts can not be used.DATA–Validation string - 'R' command
  32210. Syntax:    R\{border type\}[,\{slab in colour\}]
  32211.  
  32212. Selects the border type:
  32213.    R0    Standard single pixel border
  32214.    R1    Slab out
  32215.    R2    Slab in
  32216.    R3    Ridge
  32217.    R4    Channel
  32218.    R5    Action button
  32219.    R6    Default action button
  32220.    R7    Writable field
  32221.  
  32222. The slab in colour is shown when the icon is selected (type R5 and R6). Default: 14 (orange)
  32223.  
  32224. This command is not available in RiscOS 2DATAValidation string - 'S' command
  32225. Syntax:    S\{sprite name\}[,\{sprite name\}]
  32226.  
  32227. For Text+Sprite icons. Tells the Wimp what sprite to display. The second sprite is displayed when the icon is selected.
  32228.  
  32229. Example:    Soptoff,opton    Usual setting for an 'Option' iconDATAÛValidation string syntax
  32230. Validation string    =    Commands, separated by ";"
  32231. Command    =    Single letter + command-dependent contents
  32232.  
  32233. There are 4 special characters \\ ; - ~ In a command, they must be preceded by a "\\"DATAQValidation string - 'P' command
  32234. Syntax:    P\{sprite name\},\{active_x\},\{active_y\}
  32235.  
  32236. Changes the shape of the pointer while over the icon. The sprite must be present in the Wimp sprite area. The numbers active_x and active_y are the offset for the "active point" from the topleft corner.
  32237.  
  32238. This command is not available in RiscOS 2DATAÆ'Outline font' flag
  32239. #Wrap On
  32240. ON:    Display icon text in outline font. Font colours are set in validation string, with <'F' command=>IconInfo_ValidStrCmdF>
  32241. OFF:    Display icon text in system fontDATA§Icon positioning
  32242. #Background Wimp 1
  32243. #Table Columns 2
  32244. <Move=>MoveIcon>
  32245. <Resize=>ResizeIcon>
  32246. <Align>
  32247. <Space out=>SpaceOut>
  32248. <Frame>
  32249. <Center=>CenterIcon>
  32250. #EndTableDATAqCopyright notice
  32251. TemplEd is FreeWare, which means:
  32252. •     You may freely copy and distribute it.
  32253. •     You may modify it for personal use, but copies that you distribute must contain all original files.
  32254. •     I don't charge anything for it. If you paid a PD library for this and it cost you more than the price of a floppy plus a stamp, you have probably been ripped off.DATA>Loading and saving
  32255. Loading a template file:
  32256. •     Double-click on a template file (starts a new copy of TemplEd if it has already loaded some templates), or
  32257. •     Drop the file on the icon bar icon (removes the current templates and loads new ones), or
  32258. •     Drop an application on the icon bar (loads the file "Templates" in the application directory)
  32259.  
  32260. Adding the contents of a template file:
  32261. •     Drop the file on the browser window
  32262.  
  32263. Saving the templates:
  32264. •     From the menu (as usual)
  32265.  
  32266. TemplEd can also <load Sprites files=>LoadSprites> that contain sprites for the templates.DATAëLoading sprites files
  32267. To make TemplEd use sprites from a file:
  32268. •     Drop the file on the icon bar icon.
  32269.  
  32270. When a templates file named "Templates" is loaded, the file "Sprites" in the same directory is automatically loaded with it.DATA⇨Min. size
  32271. Minimizes the icon size, in X-, Y- or both dimensions.
  32272.  
  32273. The bottomleft corner of the icons is kept at the same positionDATA²Miscellaneous
  32274. #Background Wimp 1
  32275. #Table Columns 2
  32276. <Min. size=>MinSize>
  32277. <Custom sprites=>CustomSprites>
  32278. <Ensure icons=>EnsureIcons>
  32279. <Deleted icons=>DeletedIcons>
  32280. #EndTableDATAMouse operation
  32281. Function    Button    Remark
  32282. #Line
  32283. Select icon(s) (exclusive)    Select    <1=>Remark1>
  32284. Select icon(s) (toggle)    Adjust    <1=>Remark1>
  32285. <Move icon(s)=>MoveIcon>    Shift+Select    <2=>Remark2>, <3=>Remark3>
  32286. <Resize icon(s)=>ResizeIcon>    Shift+Adjust    <2=>Remark2>, <3=>Remark3>
  32287. <Edit icon(s)=>EditIcon>    Shift+Menu    <3=>Remark3>, <4=>Remark4>, <5=>Remark5>
  32288. <Move window=>MoveWindow>    Ctrl+Select    <6=>Remark6>
  32289. <Resize window=>ResizeWindow>    Ctrl+Adjust    <6=>Remark6>
  32290. Resize work area    Ctrl+Alt+Adjust    <6=>Remark6>
  32291. <Edit window=>EditWin>    Ctrl+Menu    <7=>Remark7>
  32292. Edit title bar    Ctrl+Menu    <8=>Remark8>, <9=>Remark9>
  32293. Renumber icon(s) (count up)    Alt+Select    <10=>Remark10>
  32294. Renumber icon(s) (count down)    Alt+Adjust    <11=>Remark11>
  32295. #Line; Align Centre
  32296.       Some functions have a <keyboard shortcut=>Ctrlkeys>DATA%Moving icons
  32297. Click Shift+Select to start the Move. (for details see remarks <2=>Remark2> and <3=>Remark3>)
  32298.  
  32299. Drag the outline around the icon(s) to the desired position. During the drag, you can also use the <cursor keys=>CursorKeys> to move the pointer. 
  32300.  
  32301. Pressing the cursor keys without dragging moves the selected icons.
  32302.  •     If you drop the icons in another template window, they will be copied to that window.
  32303.  •     If you move them outside any template window, they will be deleted (only if the "Delete icons moved outside" option is on).DATAÃMoving windows
  32304. Select-click on a window with Ctrl pressed, to drag the window to the desired position. During the drag, you can also use the <cursor keys=>CursorKeys> to move the pointer.DIR$@@¸iFýÿÿÓª1djFýÿÿ}}j10ÐjFýÿÿ²ŷj11<kFýÿÿ4’u2´kFýÿÿ´ë34lFýÿÿ
  32305. ]4“lFýÿÿflU5ìlFýÿÿ=G64mFýÿÿ)b7—mFýÿÿ03A8ÜmFýÿÿÀFZ9DATAªRemark 1
  32306. #Wrap On
  32307. Clicking selects a single icon. This does not work for some button types (e.g. Menu).
  32308.  
  32309. Dragging the mouse selects all icons within the drag-box.DATAjRemark 10
  32310. #Wrap Off
  32311. When repeating this, next icon number is:
  32312. (number issued on last renumber) + 1DATAjRemark 11
  32313. #Wrap Off
  32314. When repeating this, next icon number is:
  32315. (number issued on last renumber) - 1DATAuRemark 2
  32316. #Wrap On
  32317. Also works for click without Shift, if you press the mouse button for more than 0.5 secondsDATARemark 3
  32318. #Wrap On
  32319. Function operates on all selected icons, or (if no icons are selected) on the icon under the pointer.DATA]Remark 4
  32320. #Wrap On
  32321. If more than 1 icon is edited, only the icon flags can be modified.DATAURemark 5
  32322. #Wrap On
  32323. Can also be done by a double-click with Select on the icon.DATAGRemark 6
  32324. Only works if the "Movable"-flag of the window is set.DATAbRemark 7
  32325. #Wrap On
  32326. Can also be done by a double-click with Select on the window background.DATAARemark 8
  32327. #Wrap On
  32328. The pointer must be over the title bar.DATAZRemark 9
  32329. #Wrap On
  32330. Can also be done by a double-click with Select on the title bar.DATA◰Resizing icons
  32331. Click Shift+Adjust to start the Resize. (for details see remarks <2=>Remark2> and <3=>Remark3>)
  32332.  
  32333. Drag the "rubber box" outline around the icon(s). You can move one side of the icon(s) at a time; the side that is moved is the one that was nearest to the pointer when you clicked.
  32334.  
  32335. During the drag, you can also use the <cursor keys=>CursorKeys> to move the pointer.DATA¯Resizing windows
  32336. Adjust-click on a window with Ctrl pressed, to resize the window. During the drag, you can also use the <cursor keys=>CursorKeys> to move the pointer.DIR$¬¬qFýÿÿfKþÏ!RootèqFýÿÿ¯¬#    ùXmplärEÿúÿ|–ë< Xmpl1 Eÿúÿn—ë< Xmpl2\⇧Eÿúÿ⇩—ë< Xmpl3DATAÏSpace Out
  32337. Moves the selected icons so that there is a constant space (horizontal or vertical) between them.
  32338.  
  32339. "Use available" uses the available space between the outer icons.
  32340.  
  32341. <Example=>SpaceOutXmpl>DATAùExample of Space Out
  32342. #Draw 12,48 SpaceOutXmpl1
  32343. #Draw 12,144 SpaceOutXmpl2
  32344. #Draw 12,240 SpaceOutXmpl3
  32345. #Wrap Off
  32346. Suppose you have four icons, positioned
  32347.  
  32348.  
  32349. Using a fixed space gives you something like
  32350.  
  32351.  
  32352. and choosing "Use available" results in
  32353.  
  32354. DATA< DrawÉDrawPlus    ÛFÜFqJjlÛFÜFnflJjÿÿÿÿ@  ÛFJjnflJjnflÜFÛFÜFÛFJjloÜFÝ>Jjÿÿÿÿ@  oJjÝ>JjÝ>ÜFoÜFoJjl“PÜFp–Jjÿÿÿÿ@  “PJjp–Jjp–ÜF“PÜF“PJjlðÜFqJjÿÿÿÿ@  ðJjqJjqÜFðÜFðJje…
  32355. ð?@ÝFÝF··e8
  32356. ÿÿÿeD
  32357. ÿÿÿÿÿÿÿÿ  eä
  32358.         $$$                    $$        $    $            Standardep
  32359. DATA< DrawÉDrawPlus    ÛFÜFKbJjlÛFÜFnflJjÿÿÿÿ@  ÛFJjnflJjnflÜFÛFÜFÛFJjl%±ÜF›ÔJjÿÿÿÿ@  %±Jj›ÔJj›ÔÜF%±ÜF%±JjlJæÜF&-Jjÿÿÿÿ@  JæJj&-Jj&-ÜFJæÜFJæJjlÝ>ÜFKbJjÿÿÿÿ@  Ý>JjKbJjKbÜFÝ>ÜFÝ>Jje…
  32360. ð?@ÝFÝF··e8
  32361. ÿÿÿeD
  32362. ÿÿÿÿÿÿÿÿ  eä
  32363.         $$$                    $$        $    $            Standardep
  32364. DATA< DrawÉDrawPlus    ÛFÜFqJjlÛFÜFnflJjÿÿÿÿ@  ÛFJjnflJjnflÜFÛFÜFÛFJjl1ìÜFflJjÿÿÿÿ@  1ìJjflJjflÜF1ìÜF1ìJjlb\ÜF>£Jjÿÿÿÿ@  b\Jj>£Jj>£ÜFb\ÜFb\JjlðÜFqJjÿÿÿÿ@  ðJjqJjqÜFðÜFðJje…
  32365. ð?@ÝFÝF··e8
  32366. ÿÿÿeD
  32367. ÿÿÿÿÿÿÿÿ  eä
  32368.         $$$                    $$        $    $            Standardep
  32369. DIR$……$—Fýÿÿt³!Root¤—FýÿÿüxCIconè−FýÿÿsÃ1
  32370. qTempl\œFýÿÿ|ù‰WindowDATATechnical info
  32371. #Background Wimp 1
  32372. <Windows=>TechInfo_Window>    <Icons=>TechInfo_Icon>
  32373. <Template files=>TechInfo_Templ>DATACIcons
  32374. In general, an icon is just a rectangular area in a window. It consists of:
  32375.  •    Coordinates of the bounding box (min. X, min. Y, max. X, max. Y)
  32376.  •    <Icon flags=>IconInfo_Flags>
  32377.  •    Other icon data (depends on the 'Text', 'Sprite' and 'Indirected' icon flags)
  32378.  
  32379. See also SWI <Wimp_CreateIcon=>SWI.Wimp_CreateIcon>DATAqTemplate files
  32380. #Sprite 0,0 file_fec
  32381. #Wrap Off; Indent 5
  32382. Template files contain window definitions that
  32383. are almost identical to the definition blocks
  32384. used for the SWI <Wimp_CreateWindow=>SWI.Wimp_CreateWindow>
  32385. #Indent 0
  32386. Your program can read the Templates from a file
  32387. with <Wimp_OpenTemplate=>SWI.Wimp_OpenTemplate> and <Wimp_LoadTemplate=>SWI.Wimp_LoadTemplate>DATA‰Windows
  32388. A window definition contains:
  32389.  •     Current position and scroll offset
  32390.  •     <Window flags=>WinInfo_Flags>
  32391.  •     <Colours=>WinInfo_Colours> of title bar, scroll bars, etc.
  32392.  •     Title bar data
  32393.  •     Sprite area pointer, for sprites in icons
  32394.  •     <Minimum size=>WinInfo_Minsize> of the window
  32395.  •     Maximum size (extent) of the window
  32396.  
  32397. See also the SWI <Wimp_CreateWindow=>SWI.Wimp_CreateWindow>.DIR$  øfiEýÿÿ☓RëÖFlagsРFýÿÿ×\1
  32398. “Moveabled¡Fýÿÿ"I1
  32399. €Auto-redrawä¡FýÿÿïX1
  32400. ◰Hotkeysh¢Fýÿÿ§~ýScrollh£Fýÿÿ¤x1
  32401. \PaneÄ£Fýÿÿæm1
  32402. sNobounds8¤FýÿÿSL1
  32403. aBackwindow†¤Fýÿÿï`1
  32404. ^Newformatü¤FýÿÿS1
  32405. ÚGCOLØ¥Fýÿÿ `ÈButtontype ¨Fýÿÿîp1
  32406. ìNoExtent…©Fýÿÿ—`ºOnScreenHªFýÿÿ—tColours¼ªFýÿÿfäœMinsizeDATAÖWindow flags
  32407. #Table 10 16
  32408. <Moveable=>WinInfo_Moveable>
  32409. <Auto-redraw=>WinInfo_Auto-redraw>
  32410. <Hot keys=>WinInfo_Hotkeys>
  32411. <Pane=>WinInfo_Pane>
  32412. <No bounds=>WinInfo_Nobounds>
  32413. <Back window=>WinInfo_Backwindow>
  32414. <Keep on Screen=>WinInfo_OnScreen>
  32415. <Button type=>WinInfo_Buttontype>
  32416. <GCOL colours=>WinInfo_GCOL>
  32417. <Scroll=>WinInfo_Scroll>
  32418. Back 
  32419. Close 
  32420. Title bar 
  32421. Toggle 
  32422. V scroll 
  32423. Adjust 
  32424. H scroll 
  32425. <New format=>WinInfo_Newformat>
  32426.  
  32427. <Ignore Extent=>WinInfo_NoExtent>
  32428. #EndTableDATA“'Moveable' flag
  32429. ON:    Window can be dragged around by clicking on the title bar
  32430. OFF:    Window can only be opened at another place by the programDATA€'Auto-redraw' flag
  32431. ON:    Wimp redraws window without asking help from the task
  32432. OFF:    Task gets Redraw events from Wimp_PollDATA◰'Hot keys' flag
  32433. ON:    Task is notified of 'Hot key' presses
  32434. OFF:    Window only gets KeyPress events when it has the input focusDATAý'Scroll' flags
  32435. ON:    Task gets Scroll_Request events when user clicks on scrollbar
  32436.      •    repeat    :    repeat events until button is released
  32437.      •    1    :    debounced, 1 event per click
  32438. OFF:    Clicks on scrollbar are handled in standard way (scroll+redraw window)DATA\'Pane' flag
  32439. ON:    Window is a 'Pane' (toolbox) window - see the PRM
  32440. OFF:    Normal windowDATAs'No bounds' flag
  32441. ON:    Window can be opened/dragged outside the screen area
  32442. OFF:    Window stays fully on-screenDATAa'Back window' flag
  32443. ON:    Other windows can not be opened below this one (for e.g. backdrop)DATA^'New format' flag
  32444. OFF:    window flags are in old (pre-RiscOS) format.
  32445.  
  32446. Just leave it on!DATAÚ'GCOL colours' flag
  32447. ON:    Treat colour numbers as GCOL colours; colour numbers can be from 0-254 in 256-colour modes (not colour 255: it is used as 'transparent')
  32448. OFF:    Colours from standard 16-colour Wimp paletteDATAÈWindow button type
  32449. Determines when the task is notified of mouse clicks on the window background
  32450.  
  32451. Button type    Meaning
  32452. #Line
  32453. Never    Ignore all clicks on the window
  32454. Always    Notify continuously while mouse is over the window
  32455. Auto-repeat    Notify of click, then auto-repeat
  32456. Click    Notify once
  32457. Release    Notify of release
  32458. Double click    Notify of double-click
  32459. Click\/Drag    As 'Click' + Notify of drag (returns button*16)
  32460. Release\/Drag    As 'Release' + Notify of drag (button*16)
  32461. Double\/Drag    As 'Double click' + Notify of drag (button*16)
  32462. Double\/Click\/Drag    Notify of Click (*256), Drag (*16), Doubleclick (*1)
  32463. Writable    As 'Click' + Gain caret when clicked
  32464.  
  32465. (Clicks with the Menu button are always passed on to the task)DATAì'Ignore extent' flags
  32466. ON:    Ignore window extent when resizing it; mouse movement is unbounded to the right (H flag) or to bottom (V flag)
  32467. OFF:    Bounded drag-box, calculated from window extent
  32468.  
  32469. These flags are not known in RiscOS 2DATAº'Keep on Screen' flag
  32470. ON:    When moving or resizing, visible area is kept fully within screen area
  32471. OFF:    Window can be dragged partly off-screen
  32472.  
  32473. This flags is not known in RiscOS 2DATAtWindow colours
  32474. The Title foreground and Work background colours can be set to 255, which means 'transparent'DATAœMinimum size
  32475. If both X and Y size are set to 0, the minimum size is determined by the contents of the title bar, and by the presence of scroll barsDATAxFraming icons
  32476. Puts a frame around the selected icons. The frame is used for grouping icons with related functions together.
  32477. "Visible area"        re-open and scroll the window, so that the window border is the frame
  32478. "Icon #"        resize the icon so that it is a frame around the other selected icons
  32479. "Space around icons"    amount of space between the frame and the icons inside
  32480. "Label is"        use an icon as 'label'; the center of the label icon will be vertically aligned with the top of the frame icon
  32481. "Centered"        put the label horizontally centered on the frame
  32482. "Left"            putting the label at a fixed distance from the left of the frame
  32483. ø⇦ÌÌù−ÝÝúªîîû»ÿÿüÌÿþÿ8ðÿ7WQ™    
  32484.  `4PROGRAMMERI p$€ÐD`T€ ‘6ÐÀ# pRÀ
  32485. h/@ — Ü€°Ð~@EG     ,Ŵ&<Ŵ(0ªÀÈ[  |Æ@p¤Ŵ5´Ŵ7⇦s ÜäŴ=Ðþ@ Ŷ ,ŵFð"Á$¨– lŵNð    BÁ((§ ¬ŵVð
  32486. bÁ,¨· Ø½à◰aP p ‹`Œð ¢0€jàd€mèÀ7ãPÎA:XíàÄ0êpò`ô◰` (Ŵ☓°!"L☓⇩ÀE #l☓‰ð☓0€ô Source code for !TemplEd>ô This application is FreeWare. (c) 1992-1995 Dick AlsteinAppl$="TemplEd"Version$="1.32 (20-Oct-96)"@ô The following maximum values can be set to suit your needs7MaxTemplates%=100  : ô max number of user templates    AMaxIcons%=200      : ô max number of icons in a user template
  32487. GMaxIndirSize%=8000 : ô space for indirected data (only for loading)  .ô *** main program and top-level procs *** Quit%=£    òinit2PollMask%=(1<<0)+(1<<4)+(1<<5)+(1<<11)+(1<<12)î Ŷ òerror(0)õ  ç Support%=3 …    È− "WimpExt_PrePoll"/    È− "Wimp_Poll",PollMask%,Blk% ¸ reason%<    È− "WimpExt_Action",ThisTask%,Blk%,reason% ¸ reason%  Ì/    È− "Wimp_Poll",PollMask%,Blk% ¸ reason%  Í  È‰ reason% Ê     É 0,      È− "Wimp_GetPointerInfo",,PtrInfo%1      ç (PtrInfo%!8>0) € Mbuttons_Released% …*        ô signal press of mouse button         Mbuttons_Released%=£N        òclick(PtrInfo%!0,PtrInfo%!4,PtrInfo%!8,PtrInfo%!12,PtrInfo%!16,0)        Ì!        ç PtrInfo%!8=0 …"9          ç (¬ Mbuttons_Released%) € (Drag_Type%=7) …#M            ô detected end of workarea-resize - set bottomright corner of$9            ô work area to currently visible position%#            WinBlk%!0=Drag_Win%&1            È− "Wimp_GetWindowState",,WinBlk%':            WinBlk%!52=WinBlk%!12-WinBlk%!4+WinBlk%!20(=            WinBlk%!48=-(WinBlk%!16-WinBlk%!8-WinBlk%!24))4            Drag_Win%=¤redefinewindow(WinBlk%,¹)*          Í+"          Mbuttons_Released%=¹,          Drag_Type%=-1-"          TimedDrag_Enabled%=£.        Ì/G          ô button still pressed - test if OK to start "timed drag"0H          ç “(PtrInfo%!0-ThisClickX%)+“(PtrInfo%!4-ThisClickY%)>16 …1@            TimedDrag_Enabled%=£ : ô moved mouse since click2          Í3$          ç TimedDrag_Enabled% …4I            ç ((’-ThisClickTime%)>DragInterval%) € (PtrInfo%!16>=0) …5&              È− "Wimp_DragBox",-16D              òstarticondrag(PtrInfo%!8,PtrInfo%!12,PtrInfo%!16)7&              TimedDrag_Enabled%=£8            Í9          Í:        Í;       Í<    É 1 : òredraw(Blk%!0)=     É 2 >      ç (Blk%!0=TemplW%)…?/        c%=(Blk%!12-Blk%!4) Ŵ TemplW_IconX%@        ç c%<1 … c%=1A         ç TemplW_Cols%<>c% …B          TemplW_Cols%=c%C!          òredefinebrowser(£)D          Blk%!0=TemplW%E        ÍF       ÍG      ç Blk%!0=OptionsW% …H7        òopenpane(OptPaneW%,Blk%!28,Blk%!4,Blk%!16)I        Blk%!28=OptPaneW%J       ÍK$      È− "Wimp_OpenWindow",,Blk%L      ç Blk%!0=OptionsW% …M7        òopenpane(OptPaneW%,Blk%!28,Blk%!4,Blk%!16)N       ÍO     É 3P$      no%=¤whichtemplate(Blk%!0)Q      ç no%>=0 …R        òclosetemplate(no%)S       ÌT        ç ¬ (¦ -1) …U"          òclosewindow(Blk%!0)V        ÍW.        È− "Wimp_GetPointerInfo",,PtrInfo%XD        ç (Blk%!0=TemplW%)€(PtrInfo%!8=1)€(§MainFname$,".")>0) …YG          È− "Wimp_StartTask","Filer_OpenDir "+¤dirname(MainFname$)Z        Í[       Í\<    É 6 : òclick(Blk%!0,Blk%!4,Blk%!8,Blk%!12,Blk%!16,¹)]7    É 7 : òfinishdrag(Blk%!0,Blk%!4,Blk%!8,Blk%!12)^)    É 8 : òkey(Blk%!0,Blk%!4,Blk%!24)_    É 9 : òmenuselect(Blk%)`     É 17,18 : òreceive(Blk%)a  Ëb  ç IcInfo_Active% …c    òicinf_updated  Íe ý Quit%fòfont_loseallgòsupport(0)hòmsg_exitiÈ− "Wimp_CloseDown"jàkl Ý òinitmê p%,fn$,i%,mask%,flg%nÞ ErrBlk% &100oCÈ− "Wimp_Initialise",200,&4B534154,Appl$ ¸ OSversion%,ThisTask%pî Ŷ òerror(1)qBÞ ScrapBlk% &100      : ô block to hold various temporary datar'ApplDir$=¤readvarval("TemplEd$Dir")s,òheap_init           : ô initialize heapt/òmsg_init            : ô load Messages fileu%ô lower bounds for Max* variablesv'ç MaxTemplates%<4 … MaxTemplates%=4w!ç MaxIcons%<64 … MaxIcons%=64x/ç MaxIndirSize%<&1000 … MaxIndirSize%=&1000y;ô declaration of data blocks and arrays (variable size)zSelBlkSize%=4*MaxIcons%{KSelBlk%=¤heap_get(SelBlkSize%)       : ô to hold list of selected icons|#SelBlk2%=¤heap_get(SelBlkSize%)}MTemplNames%=¤heap_get(MaxTemplates%*28) : ô to store template + icon name~MTemplHandle%=¤heap_get(4*MaxTemplates%) : ô handles of the user templatesPPaneFlag%=¤heap_get(MaxTemplates%)   : ô array for 'Pane' flags of templates€EMaxTemplateSize%=92+32*MaxIcons%      : ô max size for a templateŴMMaxTemplateSize%+=MaxIndirSize%       : ô extra space for indirected dataŵ'WinBlk%=¤heap_get(MaxTemplateSize%)◰(FileIndexSize%=16+MaxTemplates%*24+4☓NFileIndex%=¤heap_get(FileIndexSize%) : ô contains index of a template fileŶ8ô declaration of data blocks and arrays (fixed size)ŷÞ IconBlk% 40<Þ Blk% &100           : ô for data returned by Wimp_Poll⇦3Þ PtrInfo% 20         : ô to store pointer info⇨EÞ NumValidStr% 8      : ô validation string for entering a number⇩$NumValidStr%="A0-9"⇧BÞ FpNumValidStr% 8    : ô for entering a floating point number…$FpNumValidStr%="A0-9."™INrTemplates%=0                   : ô current number of user templates‰KTemplatesOpen%=0                 : ô number of templates currently open•NSysIndirSize%=&1800         : ô size of indirected data for system windows‘Þ IndirBlk% SysIndirSize%’@IndirEnd%=IndirBlk%         : ô pointer to first unused byte‹HIndirFree%=SysIndirSize%    : ô remaining free space after IndirEnd%›CÞ IconText%(36)           : ô pointers to indirected text icons“>Þ IconTextWhdl%(36)       : ô corresponding window handles”<Þ IconTextIhdl%(36)       : ô corresponding icon handles„IÞ CselText%(12)           : ô pointers to text in colour-select boxes–>Þ CselTextWhdl%(12)       : ô corresponding window handles—<Þ CselTextIhdl%(12)       : ô corresponding icon handles−AÞ IcButton% 20*16         : ô names of button types for iconsŒCÞ WinButton% 20*16        : ô names of button types for windowsœã i%=0 ¸ 15†3  $(IcButton%+20*i%)=¤msg_lookup0("ICBT"+Ã(i%))‡4  $(WinButton%+20*i%)=¤msg_lookup0("WNBT"+Ã(i%))fií i%fl?Þ WinEd_Col%(6)      : ô colours in the colour-select boxes JÞ InverseColour%(15) : ô to display text in colour boxes / colour menu¡ã i%=0 ¸ 15¢  È‰ i% Ê£    É 0,1,2,3,9,12,14¤      InverseColour%(i%)=7¥        ¦      InverseColour%(i%)=0§  Ë¨í i%©7Þ DragBlk% 40     : ô data block for starting dragsª@Þ FontUsage%(256) : ô counts number of icons that use a font«KÞ Fra% 256        : ô font reference array for loading+saving templates¬6Þ FontData% 64    : ô buffer for reading font data­JÞ Mouse_Ptt% 16        : ô pixel translation table for pointer changes®!ô initialise global variables¯/IcEd_Win%=-1000          : ô invalid values°IcEd_Icon%=-1000±WinEd_Win%=-1²5Mbuttons_Released%=£ : ô to debounce mouse clicks³?ThisClickTime%=’      : ô to store data of last mouse click´ThisClickX%=-1000µThisClickY%=-1000¶ThisClickButton%=0·ITimedDrag_Enabled%=£ : ô can I start "timed drag" from current click?¸LDragInterval%=50         : ô interval after which "timed drag" can start¹JDclickInterval%=50       : ô max time between clicks of a double-clickºHNextIconNr%=0            : ô for semi-automatic renumbering of icons»:LastMenu%=-1             : ô handle of last menu shown¼FLastMenu_Win%=-31        : ô window above which last menu was made½4LastMenu_Icon%=-1        : ô icon handle of same¾;MainFname$="Templates"   : ô save all templates as ....¿@SelFname$="Selection"    : ô save template selection as ....À@ExportTname$="TemplText" : ô save exported templates as ....ÁAExportIname$="IconNames" : ô save exported icon names as ....ÂHSavingSelection%=£   : ô was last save dialogue to save a selection?ÃFExporting%=£         : ô was last save dialogue to export as text?ÄBQuitAfterSave%=£     : ô quit program after current save proc?ÅGNewFname$=""             : ô name of new template file to be loadedÆBChangesMade%=£       : ô have current templates been modified?ÇKUserSprites%=1  : ô sprites in user templates from Wimp area (at first)ÈBSpriteFname$="" : ô name of sprite file if not using Wimp areaÉCDrag_Type%=-1   : ô type of current drag operation (-1 => none)ÊLSupport%=0      : ô is in setup, but must exist before loading templatesËô create icon on icon barÌIconBlk%!0=-1ÍIconBlk%!4=0 : IconBlk%!8=0Î#IconBlk%!12=68 : IconBlk%!16=68ÏIconBlk%!20=&7000301AÐ$(IconBlk%+24)="!templed"Ñ-È− "Wimp_CreateIcon",,IconBlk% ¸ BarIcon%Òô load system spritesÓ4SysSprites%=¤loadspritefile(ApplDir$+".Sprites")Ô&ô initialise font reference arraysÕã i%=0 ¸ 255Ö  Fra%?i%=0×í i%Ø?ô load system templates and set pointers to indirected dataÙ1È− "Wimp_OpenTemplate",,ApplDir$+".Templates"Ú?InfoW%=¤loadtemplate("Info",WinBlk%,IndirEnd%,IndirFree%,1)Û$$(WinBlk%!(92+3*32+20))=Version$ÜOTemplW%=¤loadtemplate("Templates",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)ÝDTemplTbar%=WinBlk%!76           : ô pointer to text in title barÞ$(TemplTbar%)=MainFname$ßi%=WinBlk%+92àITemplW_IconX%=i%!8-i%!0 + 8     : ô size of an icon in browser windowá TemplW_IconY%=i%!12-i%!4 + 8â2TemplW_IconFlags%=i%!16         : ô icon flagsãDTemplW_Cols%=(WinBlk%!12-WinBlk%!4) Ŵ TemplW_IconX% : ô #columnsä%ç TemplW_Cols%<1 … TemplW_Cols%=1åScrapBlk%!0=TemplW%æScrapBlk%!4=0çEÈ− "Wimp_DeleteIcon",,ScrapBlk% : ô icon is only used to set sizeèMIcEdW%=¤loadtemplate("IconEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)éIcEdTbar%=WinBlk%!76ê8òlinkicontext(0,WinBlk%,23)  : ô text in a text iconë5òlinkicontext(1,WinBlk%,24)  : ô name of a spriteì6òlinkicontext(2,WinBlk%,25)  : ô validation stringí-òlinkicontext(3,WinBlk%,26)  : ô max sizeî5òlinkicontext(4,WinBlk%,28)  : ô icon button typeï(òlinkicontext(5,WinBlk%,31)  : ô esgð.òlinkicontext(19,WinBlk%,45) : ô font nameñ0òlinkicontext(20,WinBlk%,48) : ô font x sizeò0òlinkicontext(21,WinBlk%,51) : ô font y sizeó6òlinkcseltext(0,WinBlk%,34)  : ô foreground colourô6òlinkcseltext(1,WinBlk%,37)  : ô background colourõPWinEdW%=¤loadtemplate("WindowEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)öWinEdTbar%=WinBlk%!76÷7òlinkicontext(6,WinBlk%,23)  : ô window button typeø<òlinkcseltext(2,WinBlk%,27)  : ô title foreground colourù<òlinkcseltext(3,WinBlk%,31)  : ô title background colourú@òlinkcseltext(4,WinBlk%,35)  : ô work area foreground colourû@òlinkcseltext(5,WinBlk%,39)  : ô work area background colourü;òlinkcseltext(6,WinBlk%,43)  : ô scrollbar inner colourý;òlinkcseltext(7,WinBlk%,47)  : ô scrollbar outer colourþ7òlinkcseltext(8,WinBlk%,51)  : ô input focus colourÿDDefW%=¤loadtemplate("DefaultWin",WinBlk%,IndirEnd%,IndirFree%,1)BSaveW%=¤loadtemplate("SaveBox",WinBlk%,IndirEnd%,IndirFree%,1)GFileName%=WinBlk%!(92+1*32+20)  : ô pointer to file name in savebox>SaveFileIcon%=WinBlk%!(92+2*32+20) : ô draggable file-iconEIcInfoW%=¤loadtemplate("IconInfo",WinBlk%,IndirEnd%,IndirFree%,1)&IcInfo_Width%=WinBlk%!12-WinBlk%!42òlinkicontext(7,WinBlk%,6)   : ô template name0òlinkicontext(8,WinBlk%,7)   : ô icon number9òlinkicontext(9,WinBlk%,9)   : ô minimum x coordinate9òlinkicontext(26,WinBlk%,10) : ô maximum x coordinate    9òlinkicontext(10,WinBlk%,11) : ô minimum y coordinate
  32488. 9òlinkicontext(27,WinBlk%,8)  : ô maximum y coordinate .òlinkicontext(11,WinBlk%,12) : ô icon size 5òlinkicontext(24,WinBlk%,13) : ô pointer positionCExportW%=¤loadtemplate("Export",WinBlk%,IndirEnd%,IndirFree%,1)EExportName%=WinBlk%!(92+1*32+20)  : ô pointer to export-file name@ExportFileIcon%=WinBlk%!(92+2*32+20) : ô draggable file-iconMWorkW%=¤loadtemplate("WorkArea",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)5òlinkicontext(12,WinBlk%,10) : ô top left X coord5òlinkicontext(13,WinBlk%,13) : ô top left Y coord5òlinkicontext(14,WinBlk%,16) : ô work area X size5òlinkicontext(15,WinBlk%,19) : ô work area Y size/òlinkicontext(16,WinBlk%,22) : ô min X size/òlinkicontext(17,WinBlk%,25) : ô min Y sizeKAlignW%=¤loadtemplate("Align",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)6òselecticon(AlignW%,2,1)     : ô set align-left on/òselecticon(AlignW%,8,1)     : ô move iconsOOptionsW%=¤loadtemplate("Options",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)OOptPaneW%=¤loadtemplate("OptPane",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)9òlinkicontext(28,WinBlk%,19) : ô iconsize grid X size9òlinkicontext(29,WinBlk%,23) : ô iconsize grid Y size8òlinkicontext(30,WinBlk%,28) : ô iconpos grid X size8òlinkicontext(31,WinBlk%,32) : ô iconpos grid Y size NSpaceW%=¤loadtemplate("Spaceout",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)!;òselecticon(SpaceW%,3,1)    : ô set space-vertically on"8òselecticon(SpaceW%,4,1)    : ô set to fixed spacing#7òlinkicontext(18,WinBlk%,6) : ô space between icons$SpaceOut_Space%=4%'òseticontext(18,Ã(SpaceOut_Space%))&òspace_shadeicons'KFrameW%=¤loadtemplate("Frame",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)(1òlinkicontext(32,WinBlk%,7)  : ô frame icon #)7òlinkicontext(33,WinBlk%,11) : ô space around icons*1òlinkicontext(34,WinBlk%,17) : ô label icon #+9òlinkicontext(35,WinBlk%,22) : ô left space for label,7òselecticon(FrameW%,6,1)     : ô use icon for frame--òselecticon(FrameW%,15,1)    : ô no label.6òselecticon(FrameW%,21,1)    : ô left-spaced label/Frame_IconNo%=00Frame_Space%=241Frame_LabelNo%=02Frame_LeftSpace%=323$òseticontext(33,Ã(Frame_Space%))4(òseticontext(35,Ã(Frame_LeftSpace%))5JStatW%=¤loadtemplate("Stats",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)64Stat_Colours%=(WinBlk%!(92+5*32+16)) € &FF0000007EPaletteW%=¤loadtemplate("Palette",WinBlk%,IndirEnd%,IndirFree%,1)8CDialW%=¤loadtemplate("Dialogue",WinBlk%,IndirEnd%,IndirFree%,1)9Dial_Msg%=WinBlk%!(92+20):IDial_Button1%=WinBlk%!(92+1*32+20) : ô pointer to text in left button;KDial_Button2%=WinBlk%!(92+2*32+20) : ô pointer to text in middle button<JDial_Button3%=WinBlk%!(92+3*32+20) : ô pointer to text in right button=.ô store colours and border flag of buttons>!mask%=(1<<2)+(1<<5)+(&FF<<24)?3Dial_ButtonCol1%=(WinBlk%!(92+1*32+16)) € mask%@3Dial_ButtonCol2%=(WinBlk%!(92+2*32+16)) € mask%A3Dial_ButtonCol3%=(WinBlk%!(92+3*32+16)) € mask%BÈ− "Wimp_CloseTemplate"Cô initialise font usageDã i%=0 ¸ 255E  ç Fra%?i%>0 …F=    FontUsage%(i%)=1 : ô font is used by system templatesG  ÌH    FontUsage%(i%)=0I  ÍJí i%Kòsetup_loadLòreadscreenvarsM,òselecticon(OptPaneW%,13,IcInfo_Active%)N(òselecticon(OptPaneW%,11,DuplNames%)O$òselecticon(OptPaneW%,12,Hatch%)P,òselecticon(OptPaneW%,16,Grid_SizeLock%)Q#òseticontext(28,Ã(Grid_SizeX%))R#òseticontext(29,Ã(Grid_SizeY%))S+òselecticon(OptPaneW%,25,Grid_PosLock%)T"òseticontext(30,Ã(Grid_PosX%))U"òseticontext(31,Ã(Grid_PosY%))V.òselecticon(OptPaneW%,14,Save_Unselected%)W,òselecticon(OptPaneW%,15,DeleteOutside%)X(òselecticon(OptPaneW%,8,TrapDclick%)Y-òselecticon(OptPaneW%,35,IgnoreDeskFont%)Zòsupport(Setup_Support%)[(òselecticon(StatW%,1,Stats_Decimal%)\*òselecticon(StatW%,2,¬ Stats_Decimal%)]òpreparemenus^KÈ− "OS_ReadModeVariable",27,0 ¸ ;flg% : ô test if hires modes available_ç (flg% € 2)=0 …`  SprSuffix$="22"aÌb  SprSuffix$=""cÍd#ô calculate height of title bareWinBlk%!0=DefW%f%È− "Wimp_GetWindowState",,WinBlk%gWinBlk%!28=-2h!È− "Wimp_OpenWindow",,WinBlk%ii%=WinBlk%!12j'È− "Wimp_GetWindowOutline",,WinBlk%kTBarHeight%=WinBlk%!12-i%l"È− "Wimp_CloseWindow",,WinBlk%m:ô get filename that was given as argument with commandnÈ− "OS_GetEnv" ¸ fn$op%=§fn$,"-quit")p'ç p%>0 … p%=§fn$,½34,p%+©("-quit"))qç p%>0 … p%=§fn$,½34,p%+1)r ç p%>0 …s  õt    fn$=Áfn$,p%+1)u    p%=§fn$," ")v   ý p%=0w  ç ©(fn$)>0 …xA    òtempl_loadfile(fn$,1) : ô found filename - load the filey    òsetmainfname(fn$)z  Í{Ì|  òsetextent}Í~á€Ý òkey(window%,icon%,key%)ŴIê i%,waslast%,dx%,dy%,no%,help$,xmin%,ymin%,xmax%,ymax%,xstep%,ystep%ŵ$ç (key%=27) € (Drag_Type%<>-1) …◰  òabortdrag☓ÌŶ  È‰ window% Êŷ    É IcEdW%      È‰ key% Ê⇦0        É &18E,&18A,13 : ô down, tab, return⇨          ç icon%>0 …⇩            i%=icon%⇧            waslast%=£…            õ™              ç i%=26 …‰                i%=23•5                waslast%=¹ : ô caret went "round"‘              Ì’                i%+=1‹              Í›9            ý (¬ ¤iconshaded(IcEdW%,i%)) ☓ (i%=icon%)“(            ç waslast% € (key%=13) …”)              òselecticon(IcEdW%,9,1)„#              òiced_readwin(-1)–)              òselecticon(IcEdW%,9,0)—              i%=icon%−            ÍŒ$            òsetcaret(IcEdW%,i%)œ          Í†)        É &18F,&19A : ô up, shift+tab‡          ç icon%>0 …fi            i%=icon%fl            õ               ç i%=23 …¡                i%=26¢              Ì£                i%-=1¤              Í¥9            ý (¬ ¤iconshaded(IcEdW%,i%)) ☓ (i%=icon%)¦$            òsetcaret(IcEdW%,i%)§          Í¨        É &181 : ô F1©0          È− "Wimp_GetPointerInfo",,PtrInfo%ª$          ç PtrInfo%!12=IcEdW% …«            help$=""¬             È‰ PtrInfo%!16 Ê­6              É 14            : help$="Indirected"®6              É 3,25          : help$="Validation"¯3              É 4,26          : help$="Maxsize"°2              É 15            : help$="Border"±2              É 16            : help$="Filled"²4              É 17            : help$="Hcentred"³4              É 18            : help$="Vcentred"´6              É 19            : help$="Rjustified"µ5              É 20            : help$="Needshelp"¶7              É 21            : help$="Allowadjust"·4              É 22            : help$="Halfsize"¸6              É 5,27,28,29    : help$="Buttontype"¹/              É 6,30,31,32    : help$="ESG"º2              É 39            : help$="Shaded"»1              É 7,33,34,35    : help$="Fgcol"¼1              É 8,36,37,38    : help$="Bgcol"½0              É 41            : help$="Font"¾1              É 1             : help$="Flags"¿            ËÀ            ç help$<>"" …Á5              òaskhelp("TemplEd.IconInfo_"+help$)            Íà         ÍÄ        É &182 : ô F2Å%          òselecticon(IcEdW%,9,1)Æ          òiced_readwin(-1)Ç%          òselecticon(IcEdW%,9,0)È        É &183 : ô F3É&          òselecticon(IcEdW%,10,1)Ê          òiced_readwin(-1)Ë&          òselecticon(IcEdW%,10,0)Ì"          òclosewindow(IcEdW%)Í%          òsetcaret(IcEd_Win%,-1)Î!        É &184,27 : ô F4, EscÏ&          òselecticon(IcEdW%,11,1)Ð"          òclosewindow(IcEdW%)Ñ&          òselecticon(IcEdW%,11,0)Ò%          òsetcaret(IcEd_Win%,-1)Ó        Ô'          È− "Wimp_ProcessKey",key%Õ       ËÖ    É WinEdW%×      È‰ key% ÊØ        É &181     Ù0          È− "Wimp_GetPointerInfo",,PtrInfo%Ú%          ç PtrInfo%!12=WinEdW% …Û            help$=""Ü             È‰ PtrInfo%!16 ÊÝ4              É 4             : help$="Moveable"Þ7              É 5             : help$="Auto-redraw"ß3              É 6             : help$="Hotkeys"à0              É 7             : help$="Pane"á4              É 8             : help$="Nobounds"â0              É 9             : help$="GCOL"ã6              É 10            : help$="Backwindow"ä6              É 1,21,22,23,24 : help$="Buttontype"å5              É 20            : help$="Newformat"æ4              É 57            : help$="OnScreen"ç2              É 11,58,59,60   : help$="Scroll"è4              É 12,61,62,63   : help$="NoExtent"é            Ëê            ç help$<>"" …ë4              òaskhelp("TemplEd.WinInfo_"+help$)ì            Íí          Íî        É &182,13ï'          òselecticon(WinEdW%,53,1)ð          òwined_readwinñ'          òselecticon(WinEdW%,53,0)ò        É &183ó'          òselecticon(WinEdW%,54,1)ô          òwined_readwinõ'          òselecticon(WinEdW%,54,0)ö#          òclosewindow(WinEdW%)÷&          òsetcaret(WinEd_Win%,-1)ø        É &184,27ù'          òselecticon(WinEdW%,55,1)ú#          òclosewindow(WinEdW%)û'          òselecticon(WinEdW%,55,0)ü&          òsetcaret(WinEd_Win%,-1)ý        þ'          È− "Wimp_ProcessKey",key%ÿ       Ë    É SaveW%      È‰ key% Ê        É 13%          òselecticon(SaveW%,0,1)          ç Exporting% ….            òexporttemplates($(FileName%))          Ì$            ç SavingSelection% …(              SelFname$=$(FileName%)    +              òsavetemplates(SelFname$)
  32489.             Ì -              òsetmainfname($(FileName%)) ,              òsavetemplates(MainFname$)            Í          Í%          òselecticon(SaveW%,0,0)&          È− "Wimp_CreateMenu",,-1        '          È− "Wimp_ProcessKey",key%       Ë    É ExportW%      È‰ key% Ê        É 13'          òselecticon(ExportW%,0,1)/          òexport_savenames($(ExportName%))'          òselecticon(ExportW%,0,0)&          È− "Wimp_CreateMenu",,-1        '          È− "Wimp_ProcessKey",key%       Ë    É WorkW%      È‰ key% Ê         É &18E,&18A,13!          ç icon%=25 …"            ç key%=13 …#*              òselecticon(WorkW%,30,1)$              òsetworkarea%*              òselecticon(WorkW%,30,0)&*              È− "Wimp_CreateMenu",,-1'            Ì(&              òsetcaret(WorkW%,10))            Í*          Ì+)            òsetcaret(WorkW%,icon%+3),          Í-        É &18F,&19A.          ç icon%=10 …/$            òsetcaret(WorkW%,25)0          Ì1)            òsetcaret(WorkW%,icon%-3)2          Í3        É 274&          È− "Wimp_CreateMenu",,-15        6'          È− "Wimp_ProcessKey",key%7       Ë8    É SpaceW%9      ç key%=13 …:$        òselecticon(SpaceW%,9,1);&        òspaceicons(LastMenu_Win%)<$        òselecticon(SpaceW%,9,0)=$        È− "Wimp_CreateMenu",,-1>       Ì?%        È− "Wimp_ProcessKey",key%@       ÍA    É FrameW%B      ç key%=13 …C$        òselecticon(FrameW%,3,1)D$        È− "Wimp_CreateMenu",,-1E&        òframeicons(LastMenu_Win%)F$        òselecticon(FrameW%,3,0)G       ÌH%        È− "Wimp_ProcessKey",key%I       ÍJ        K      È‰ Drag_Type% ÊL        É 0,1,5,6,7M          dx%=0N          dy%=0O          È‰ key% ÊP(            É &18C : dx%=-PixToOS_X%Q'            É &18D : dx%=PixToOS_X%R(            É &18E : dy%=-PixToOS_Y%S'            É &18F : dy%=PixToOS_Y%T*            É &19C : dx%=-4*PixToOS_X%U)            É &19D : dx%=4*PixToOS_X%V*            É &19E : dy%=-4*PixToOS_Y%W)            É &19F : dy%=4*PixToOS_Y%X-             : È− "Wimp_ProcessKey",key%Y          ËZ0          È− "Wimp_GetPointerInfo",,PtrInfo%[4          È– ¸ (PtrInfo%!0)+dx%,(PtrInfo%!4)+dy%\        É -1])          no%=¤whichtemplate(window%)^          ç no%>=0 …_            È‰ key% Ê`@              É 1        : òsel_all(window%)          : ô ^Aa              É 3b                dummy%=-1cC                òcopyiconsel(window%,dummy%,0)           : ô ^Cd              É 4e                dummy%=-1fC                òcopyiconsel(window%,dummy%,2)           : ô ^Dg@              É 5       : òiced_start(window%,-1)     : ô ^Eh              É 6iC                òsel_get(window%)                        : ô ^Fj&                ç NrSelected%>=2 …k$                  òframe_fillwinl<                  òcreatewinmenu(window%,FrameW%,-80,80)m                Ín              É 10oC                òsel_get(window%)                        : ô ^Jp&                ç NrSelected%>=2 …q<                  òcreatewinmenu(window%,AlignW%,-80,80)r                Ís              É 11tC                òsel_get(window%)                        : ô ^Ku&                ç NrSelected%>=2 …v<                  òcreatewinmenu(window%,SpaceW%,-80,80)w                Íx              É 12y                dummy%=-1zC                òcopyiconsel(window%,dummy%,3)           : ô ^L{D              É 17,&1A2 : òclosetemplate(no%)         : ô ^Q,^F2|              É 18}                dummy%=-1~C                òcopyiconsel(window%,dummy%,4)           : ô ^R@              É 20      : òiced_start(window%,-4)     : ô ^T€              É 21Ŵ                dummy%=-1ŵC                òcopyiconsel(window%,dummy%,1)           : ô ^U◰@              É 23      : òwined_fillwin(window%)     : ô ^W☓@              É 24      : òdeleteiconsel(window%,-1)  : ô ^XŶ@              É 26      : òsel_clear(window%,-1)      : ô ^Zŷ;              É &18C,&18D,&18E,&18F,&19C,&19D,&19E,&19F%                òsel_get(window%)⇦%                ç NrSelected%>0 …⇨?                  òsel_box(window%,xmin%,ymin%,xmax%,ymax%)⇩'                  ç Grid_PosLock% …⇧)                    xstep%=Grid_PosX%…)                    ystep%=Grid_PosY%™                  Ì‰*                    ç Grid_SizeLock% …•,                      xstep%=Grid_SizeX%‘,                      ystep%=Grid_SizeY%’                    Ì‹+                      xstep%=PixToOS_X%›+                      ystep%=PixToOS_Y%“                    Í”                  Í„&                  È‰ (key% € &F) Ê–*                    É &C : dx%=-xstep%—)                    É &D : dx%=xstep%−*                    É &E : dy%=-ystep%Œ)                    É &F : dy%=ystep%œ                  Ë†$                  ç key% € &10 …‡!                    dx%=dx%*4fi!                    dy%=dy%*4fl                  Í                    xmin%+=dx%¡                   xmax%+=dx%¢                   ymin%+=dy%£                   ymax%+=dy%¤M                  òmoveresize(window%,-1,window%,xmin%,ymin%,xmax%,ymax%)¥                Í¦2                  : È− "Wimp_ProcessKey",key%§            Ë¨          Ì©)            È− "Wimp_ProcessKey",key%ª          Í«       Ë¬  Ë­Í®á¯°7Ý ¤loadtemplate(name$,buf%,ø indir%,ø free%,spptr%)±ê oldindir%,handle%²ê Ŷ³-î Ŷ ê È− "Wimp_CloseTemplate" : òerror(1)´oldindir%=indir%µname$=name$+Ä12,½0)¶NÈ− "Wimp_LoadTemplate",,buf%+4,indir%,indir%+free%,Fra%,name$,0 ¸ ,,indir%·free%-=(indir%-oldindir%)¸buf%!68=spptr%¹ç buf%!88>0 …º  ã i%=0 ¸ buf%!88»    f%=buf%!(92+i%*32+16)¼    ç (f% € &103)=&102 …½#      buf%!(92+i%*32+24)=spptr%¾        Í¿
  32490.   í i%ÀÍÁ,È− "Wimp_CreateWindow",,buf%+4 ¸ handle%Âbuf%!0=handle%à =handle%ÄÅÝ òmenuselect(selection%)ÆBê adjust%,selinfo%,itemnr%,item%,item$,parentitem%,parentitem$Ç&ê cmd$,i%,j%,minx%,miny%,size,dir%ÈAÈ− "MenuUtil_Decode",LastMenu%,selection% ¸ ,adjust%,selinfo%Éitemnr%=selinfo%!0Êitem%=selinfo%!8Ëitem$=¤str(selinfo%!12)Ìparentitem%=selinfo%!24Í4ç parentitem%<>0 … parentitem$=¤str(selinfo%!28)Îȉ LastMenu% ÊÏ  É MainMenu%Р   È‰ item% ÊÑ      É item_help%Ò,        ç ¤modulepresent("StrongHelp") …ÓC          È− "Wimp_StartTask","Filer_Run <TemplEd$Dir>.TemplEd"Ô        ÌÕ          òdialogue(5,"")Ö        Í×      É item_options%Ø$        òopenwindow(OptionsW%,2)Ù      É item_stats%Ú        òstat_fillwinÛ-      É item_customsprites%,item_sprview%Ü        ç UserSprites%<>1 …Ý&          cmd$="Run "+SpriteFname$Þ4          ç OSversion%>=300 … cmd$="Filer_"+cmd$ß          ÿ cmd$à        Íá      É item_sprreload%â*        òloadusersprites(SpriteFname$)ã      É item_sprreset%ä         òloadusersprites("")å      É item_quit%æ        ç ChangesMade% …ç          òdialogue(0,"")è        Ìé          òprequitê        Íë        Ëì  É TemplMenu%í    È‰ item% Êî      É item_templname%ï        È‰ parentitem% Êð!          É item_createtempl%ñ            ç ©(item$)>0 …ò!              WinBlk%!0=DefW%ó2              È− "Wimp_GetWindowInfo",,WinBlk%ôJ              $(WinBlk%+76)=item$ : ô title bar equal to template nameõ              WinBlk%!88=0ö-              òtempl_add(item$,WinBlk%,1)÷/              òopentemplate(NrTemplates%-1)ø               òsetchanged(¹)ù            Íú!          É item_renametempl%û            ç ©(item$)>0 …ü              j%=0ý0              ô check if name already existsþF              È” (j%<NrTemplates%) € ($(TemplNames%+28*j%)<>item$)ÿ                j%+=1              Î4              ç (j%=NrTemplates%) ☓ DuplNames% …                 i%=SelBlk%!0.                $(TemplNames%+28*i%)=item$&                IconBlk%!0=TemplW%!                IconBlk%!4=i%4                È− "Wimp_GetIconState",,IconBlk%O                IconBlk%!16=(IconBlk%!8)+(TemplW_IconX%-8)-16*(11-©(item$))=                dummy%=¤redefineicon(TemplW%,i%,IconBlk%)    "                òsetchanged(¹)
  32491.               Ì 3                òcomplain(¤msg_lookup0("TAEX"))               Í            Í          É item_copytempl%            ç ©(item$)>0 …#              òsel_get(TemplW%)8              WinBlk%!0=TemplHandle%!(4*(SelBlk%!0))2              È− "Wimp_GetWindowInfo",,WinBlk%0              ç PaneFlag%?(SelBlk%!(4*i%)) …G                WinBlk%!32=WinBlk%!32 ☓ (1<<5) : ô copy 'Pane' flag              Í5              òiconrealloc(WinBlk%+60,WinBlk%+76)"              ç WinBlk%!88>0 …)                ã i%=0 ¸ WinBlk%!88-1K                  òiconrealloc(WinBlk%+92+32*i%+16,WinBlk%+92+32*i%+20)                í i%              Í-              òtempl_add(item$,WinBlk%,1)/              òopentemplate(NrTemplates%-1)               òsetchanged(¹)            Í         Ë!      É item_opentempl%"        òsel_get(TemplW%)#'        ã i%=NrSelected%-1 ¸ 0 ⇦ -1$+          òopentemplate(SelBlk%!(4*i%))%        í i%&      É item_closetempl%'        òsel_get(TemplW%)('        ã i%=NrSelected%-1 ¸ 0 ⇦ -1),          òclosetemplate(SelBlk%!(4*i%))*        í i%+      É item_deletetempl%,        È− "Hourglass_On"-        òsel_get(TemplW%).'        ã i%=NrSelected%-1 ¸ 0 ⇦ -1/+          òtempl_delete(SelBlk%!(4*i%))0        í i%1"        òsel_clear(TemplW%,-1)2!        LastMenu_Win%=TemplW%3        LastMenu_Icon%=-14        È− "Hourglass_Off"5      É item_selalltempl%6        òsel_all(TemplW%)7!        TemplMenu_Deselect%=£8      É item_clearseltempl%9"        òsel_clear(TemplW%,-1):!        TemplMenu_Deselect%=£;      É item_deleteall%<        ç ChangesMade% …=          òdialogue(1,"")>        Ì?          òtempl_deleteall@#          LastMenu_Win%=TemplW%A          LastMenu_Icon%=-1B        ÍC      É item_sorttempl%D"        òsel_clear(TemplW%,-1)E        òtempl_sortF        òredefinebrowser(¹)G!        LastMenu_Win%=TemplW%H        LastMenu_Icon%=-1I      É item_save%J        SavingSelection%=£K&        òsavetemplates(MainFname$)L        ËM6    ç TemplMenu_Deselect% … òsel_clear(TemplW%,-1)N  É UserMenu%O    È‰ item% ÊPE      É item_copyicon%,item_up%,item_down%,item_left%,item_right%Q        È‰ item% ÊR'          É item_copyicon% : dir%=0S'          É item_up%       : dir%=1T'          É item_down%     : dir%=2U'          É item_left%     : dir%=3V'          É item_right%    : dir%=4W        ËX;        òcopyiconsel(LastMenu_Win%,LastMenu_Icon%,dir%)Y+      É item_iconnr%,item_renumbericon%Z7        ç item%=item_iconnr% … NextIconNr%=»(item$)[#        òsel_get(LastMenu_Win%)\        È‰ NrSelected% Ê]          É 0^;            òrenumbericon(LastMenu_Win%,LastMenu_Icon%)_*            LastMenu_Icon%=NextIconNr%`            NextIconNr%+=1a          É 1b6            òrenumbericon(LastMenu_Win%,SelBlk%!0)c          d/            òrenumbericonsel(LastMenu_Win%)e        Ëf      É item_deleteicon%g8        òdeleteiconsel(LastMenu_Win%,LastMenu_Icon%)h      É item_editicon%i5        òiced_start(LastMenu_Win%,LastMenu_Icon%)j      É item_minsize%k<        òminimizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)l      É item_centericon%m:        òcentericonsel(LastMenu_Win%,LastMenu_Icon%,0)n      É item_samesize%o<        òsamesizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)p,      É item_both%,item_xdim%,item_ydim%q        È‰ parentitem% Êr          É item_minsize%sF            òminimizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)t           É item_centericon%uD            òcentericonsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)v          É item_samesize%wF            òsamesizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)x        Ëy      É item_selallicons%z#        òsel_all(LastMenu_Win%){      É item_clearselicons%|(        òsel_clear(LastMenu_Win%,-1)}      É item_editwindow%~)        òwined_fillwin(LastMenu_Win%)      É item_edittitle%€)        òiced_start(LastMenu_Win%,-4)Ŵ      É item_tidy1%ŵ5        LastMenu_Win%=¤tidyicons(LastMenu_Win%,1)◰      É item_tidy2%☓5        LastMenu_Win%=¤tidyicons(LastMenu_Win%,2)Ŷ      É item_tidy3%ŷ5        LastMenu_Win%=¤tidyicons(LastMenu_Win%,3)      É item_tidy4%⇦5        LastMenu_Win%=¤tidyicons(LastMenu_Win%,4)⇨      É item_tidy5%⇩5        LastMenu_Win%=¤tidyicons(LastMenu_Win%,5)⇧      É item_centerwin%…(        òopenwindow(LastMenu_Win%,1)™      É item_wimparea%‰2        òwindow_setspritearea(LastMenu_Win%,1)•      É item_customarea%‘=        òwindow_setspritearea(LastMenu_Win%,UserSprites%)’      É item_closewin%‹9        òclosetemplate(¤whichtemplate(LastMenu_Win%))›      É item_createicon%“$        òopenwindow(PaletteW%,0)”        Ë„  É IcButtonMenu%–    IcEd_Button%=itemnr%—4    òseticontext(4,$(IcButton%+20*IcEd_Button%))−  É WinButtonMenu%Œ    WinEd_Button%=itemnr%œ6    òseticontext(6,$(WinButton%+20*WinEd_Button%))†  É EsgMenu%‡    IcEd_Esg%=»(Àitem$,2))fi$    òseticontext(5,Ã(IcEd_Esg%))fl  É ColourMenu%     ç item$="None" …¡      j%=255¢        Ì£      j%=»(item$)¤        Í¥    È‰ LastMenu_Win% Ê¦      É IcEdW%§        È‰ LastMenu_Icon% Ê¨          É 34©            IcEd_Fgcol%=j%ª#            òsetcolourbox(0,j%)«          É 37¬            IcEd_Bgcol%=j%­#            òsetcolourbox(1,j%)®        Ë¯      É WinEdW%°&        i%=(LastMenu_Icon%-27) Ŵ 4±        WinEd_Col%(i%)=j%²"        òsetcolourbox(2+i%,j%)³        Ë´  É FontMenu%µ    ç ©(parentitem$)>0 …¶      ç item$="(Regular)" …·"        IcEd_Font$=parentitem$¸       Ì¹,        IcEd_Font$=parentitem$+"."+item$º       Í»%      òseticontext(19,IcEd_Font$)¼        Í½  É FontSizemenu%¾    size=»(item$)¿    ç size>0 …À      ç LastMenu_Icon%=48 …Á        IcEd_Xsize=sizeÂ.        òseticontext(20,ÀÃ(IcEd_Xsize),4))Ã(        ç ¤iconselected(IcEdW%,53) …Ä#          IcEd_Ysize=IcEd_XsizeÅ0          òseticontext(21,ÀÃ(IcEd_Ysize),4))Æ        ÍÇ       ÌÈ        IcEd_Ysize=sizeÉ.        òseticontext(21,ÀÃ(IcEd_Ysize),4))Ê       ÍË        ÍÌ  É Updatemenu%Í    È‰ item% ÊÎ1      É item_updbt%   : òiced_readwin(&F<<12)Ï2      É item_updesg%  : òiced_readwin(&1F<<16)Ð:      É item_updfg%   : òiced_readwin((&F<<24)+(1<<6))Ñ:      É item_updbg%   : òiced_readwin((&F<<28)+(1<<6))Ò;      É item_updfont% : òiced_readwin((&FF<<24)+(1<<6))Ó7      É item_updrest% : òiced_readwin(&EFC+(1<<22))Ô/      É item_updbo%:  : òiced_readwin(1<<2)Õ/      É item_updfi%:  : òiced_readwin(1<<5)Ö/      É item_updhc%:  : òiced_readwin(1<<3)×/      É item_updvc%:  : òiced_readwin(1<<4)Ø/      É item_updrj%:  : òiced_readwin(1<<9)Ù/      É item_updnh%:  : òiced_readwin(1<<7)Ú0      É item_updaa%:  : òiced_readwin(1<<10)Û0      É item_updhs%:  : òiced_readwin(1<<11)Ü0      É item_updsh%:  : òiced_readwin(1<<22)Ý        ËÞ    ç LastMenu_Icon%=10 …ß      òclosewindow(IcEdW%)à!      òsetcaret(IcEd_Win%,-1)á      adjust%=£â        ÍãËäç adjust% …åG  òcreatemenu(LastMenu_X%,LastMenu_Y%,LastMenu_Win%,LastMenu_Icon%)æÌç  LastMenu%=-1èÍéáêë8Ý òeditaction(xpos%,ypos%,button%,window%,icon%,no%)ìê key%,dclick%í
  32492. key%=0îdclick%=£ï-ç (¦ -1) … key%+=1 : ô bit 0 -> Shift keyð,ç (¦ -2) … key%+=2 : ô bit 1 -> Ctrl keyñ+ç (¦ -3) … key%+=4 : ô bit 2 -> Alt keyò+TimedDrag_Enabled%=(key%=0)€(icon%>=-1)óç button%>256 …ô@  button%=button%>>8 : ô clicked on icon with button type 10õÍöȉ key% Ê÷"  É 0 : ô mouse button, no keyø    ç button%>0 …ù4      dclick%=(’-ThisClickTime%)<DclickInterval%úA      dclick%=dclick% € (ThisClickButton%=button%) € (no%>=0)ûJ      dclick%=dclick% € (“(ThisClickX%-xpos%)+“(ThisClickY%-ypos%))<32ü      ThisClickTime%=’ý      ThisClickX%=xpos%þ      ThisClickY%=ypos%ÿ"      ThisClickButton%=button%        Í    È‰ button% Ê      É 1,4        È‰ icon% Ê          É -47            ç dclick% € TrapDclick% € (button%=4) …,              òiced_start(window%,icon%)            Í          É -1    4            ç button%=4 … òsel_clear(window%,-1)
  32493. 7            ç dclick% € TrapDclick% € (button%=4) … )              òwined_fillwin(window%)             Ì&              òdragselect(button%)2              ç no%>=0 … òsetcaret(window%,-1)            Í                      ç icon%>=0 …              ç button%=1 …-                ô toggle "selected" state'                ScrapBlk%!0=window%%                ScrapBlk%!4=icon%5                È− "Wimp_GetIconState",,ScrapBlk%2                È‰ ((ScrapBlk%!24)>>12) € 15 ÊM                  É 4,9      : ô selecting useless for these button types;                  É 5,7,8,11 : ô selecting done by wimp<                   òseticonstate(window%,icon%,1<<21,0)                Ë              Ì(                ô "exclusive" select-                òsel_clear(window%,icon%)6                ç ¬ ¤iconselected(window%,icon%) … 2                  òselecticon(window%,icon%,1)!                Í"              Í#9              ç dclick% € TrapDclick% € (button%=4) …$.                òiced_start(window%,icon%)%              Ì&(                òdragselect(button%)'4                ç no%>=0 … òsetcaret(window%,-1)(              Í)            Í*        Ë+        Ë,"  É 1 : ô shift + mouse button-    È‰ button% Ê.      É 1,4/,        ç no%>=0 … òsetcaret(window%,-1)0&        ç (no%>=0) ☓ (button%=4) …13          òstarticondrag(button%,window%,icon%)2        Í3      É 241        ç no%>=0 … òiced_start(window%,icon%)5        Ë6!  É 2 : ô ctrl + mouse button7    È‰ button% Ê8      É 19        ç no%>=0 …:#          òsetcaret(window%,-1);)          òstartwindowresize(window%)<        Í=      É 2>        ç no%>=0 …?          ç icon%=-4 …@*            òiced_start(window%,icon%)A          ÌB'            òwined_fillwin(window%)C          ÍD        ÍE      É 4F        ç no%>=0 …G#          òsetcaret(window%,-1)H'          òstartwindowmove(window%)I        ÍJ        ËK   É 4 : ô alt + mouse buttonL    È‰ button% ÊM      É 1N%        ç (icon%>=0) € (no%>=0) …O*          òrenumbericon(window%,icon%)P.          ç NextIconNr%>0 … NextIconNr%-=1Q        ÍR      É 4S%        ç (icon%>=0) € (no%>=0) …T*          òrenumbericon(window%,icon%)U          NextIconNr%+=1V        ÍW        ËX'  É 6 : ô alt + ctrl + mouse buttonY    È‰ button% ÊZ      É 1[6        ç (no%>=0) … òstartworkarearesize(window%)\        Ë]  ^    ç (button%>0) …_      È‰ Support% Ê`%        É 1 : ô support Interfacea          ô invert iconb!          ScrapBlk%!8=button%c"          ScrapBlk%!12=window%d           ScrapBlk%!16=icon%e-          È− "Wimp_BorderIcon",,ScrapBlk%f          ô back to normalg          ScrapBlk%!8=0h"          ScrapBlk%!12=window%i           ScrapBlk%!16=icon%j-          È− "Wimp_BorderIcon",,ScrapBlk%k        É 2 : ô support AEHl!          ScrapBlk%!8=button%m"          ScrapBlk%!12=window%n           ScrapBlk%!16=icon%o,          È− "AEH_RedrawIcon",,ScrapBlk%p$          È− "AEH_ReleaseIcon",0q#        É 3 : ô support WimpExtr3          È− "WimpExt_SlabIcon",,,window%,icon%s       Ët        ÍuËváwx:Ý òclick(xpos%,ypos%,button%,window%,icon%,wimpclick%)yê no%,key%z"Mbuttons_Released%=(button%=0){TimedDrag_Enabled%=£|no%=¤whichtemplate(window%)}ç button%=2 …~>  ô "steal" clicks with Menu if Shift, Ctrl or Alt pressed   È− "OS_Byte",121,0 ¸ ,key%€  ç key%>=3 …Ŵ=    ç wimpclick% … òcreatemenu(xpos%,ypos%,window%,icon%)ŵ  Ì◰F    ç no%<>-1 … òeditaction(xpos%,ypos%,button%,window%,icon%,no%)☓  ÍŶÌŷ  ç no%<>-1 …:    òeditaction(xpos%,ypos%,button%,window%,icon%,no%)⇦  Ì⇨D    ç wimpclick% … òiconclick(xpos%,ypos%,button%,window%,icon%)⇩  Í⇧ͅᙉ3Ý òiconclick(xpos%,ypos%,button%,window%,icon%)•7ê select%,menu%,adjust%,i%,j%,xsize%,ysize%,up%,lo%‘select%=(button%=4)’menu%=(button%=2)‹adjust%=(button%=1)›ȉ window% Ê“
  32494.   É -2”    ç select% …„      òredefinebrowser(£)–       òopenwindow(TemplW%,3)—4      ç IcInfo_Active% … òopenwindow(IcInfoW%,4)−        ÍŒ  É IcEdW%œ6    òiced_click(xpos%,ypos%,select%,adjust%,icon%)†  É WinEdW%‡7    òwined_click(xpos%,ypos%,select%,adjust%,icon%)fi  É StatW%fl!    ç (icon%=1) ☓ (icon%=2) … "      Stats_Decimal%=(icon%=1)¡%      òselecticon(StatW%,icon%,1)¢      òstat_fillwin£        Í¤  É TemplW%¥,    ç (select% ☓ adjust%) € (icon%>=0) …¦,      ScrapBlk%!0=TemplHandle%!(4*icon%)§-      È− "Wimp_GetWindowState",,ScrapBlk%¨$      ç ScrapBlk%!32 € (1<<16) …©!        òclosetemplate(icon%)ª       Ì«         òopentemplate(icon%)¬       Í­&      òselecticon(TemplW%,icon%,0)®        Í¯     ç select% € (icon%=-1) …°       òsel_clear(TemplW%,-1)±        Í²'    ç (button%=16) ☓ (button%=64) …³!      òdragselect(button%>>4)´        Íµ  É SaveW%¶    È‰ icon% Ê·      É 0¸        ç Exporting% …¹,          òexporttemplates($(FileName%))º        Ì»"          ç SavingSelection% …¼&            SelFname$=$(FileName%)½)            òsavetemplates(SelFname$)¾          Ì¿+            òsetmainfname($(FileName%))À*            òsavetemplates(MainFname$)Á          Í        ÍÃ$        È− "Wimp_CreateMenu",,-1Ä      É 2Å         ç (button%>>4) € 5 …Æ$          òstartsavedrag(SaveW%)Ç        ÍÈ        ËÉ  É ExportW%Ê    È‰ icon% ÊË      É 0Ì-        òexport_savenames($(ExportName%))Í      É 2Π        ç (button%>>4) € 5 …Ï&          òstartsavedrag(ExportW%)Р       ÍÑ      É 3,4,5Ò$        òexport_settype(icon%-3)Ó        ËÔ  É AlignW%Õ    È‰ icon% ÊÖ      É 10×&        òalignicons(LastMenu_Win%)Ø4        ç (¬ adjust%) … È− "Wimp_CreateMenu",,-1Ù       Ú        òalign_shadeiconsÛ        ËÜ  É SpaceW%Ý    È‰ icon% ÊÞ      É 5,7ß/        SpaceOut_Space%=»($(IconText%(18)))à%        up%=(adjust% ŵ (icon%=7))á:        ç ¤changevar(SpaceOut_Space%,4,up%,-512,512) …â1          òseticontext(18,Ã(SpaceOut_Space%))ã"          òsetcaret(SpaceW%,6)ä        Íå     É 4,8æ        òspace_shadeiconsç(        ç icon%=8 … òsetcaret(-1,-1)è      É 9é&        òspaceicons(LastMenu_Win%)ê4        ç (¬ adjust%) … È− "Wimp_CreateMenu",,-1ë        Ëì  É FrameW%í    È‰ icon% Êî      É 8,9ï-        Frame_IconNo%=»($(IconText%(32)))ð%        up%=(adjust% ŵ (icon%=9))ñ5        ç ¤changevar(Frame_IconNo%,1,up%,0,512) …ò/          òseticontext(32,Ã(Frame_IconNo%))ó"          òsetcaret(FrameW%,7)ô        Íõ      É 12,13ö,        Frame_Space%=»($(IconText%(33)))÷&        up%=(adjust% ŵ (icon%=13))ø4        ç ¤changevar(Frame_Space%,4,up%,0,512) …ù.          òseticontext(33,Ã(Frame_Space%))ú#          òsetcaret(FrameW%,11)û        Íü      É 18,19ý.        Frame_LabelNo%=»($(IconText%(34)))þ&        up%=(adjust% ŵ (icon%=17))ÿ6        ç ¤changevar(Frame_LabelNo%,1,up%,0,512) …0          òseticontext(34,Ã(Frame_LabelNo%))#          òsetcaret(FrameW%,17)        Í      É 23,240        Frame_LeftSpace%=»($(IconText%(35)))&        up%=(adjust% ŵ (icon%=24))8        ç ¤changevar(Frame_LeftSpace%,4,up%,0,512) …2          òseticontext(35,Ã(Frame_LeftSpace%))#          òsetcaret(FrameW%,22)            Í
  32495.       É 3 4        ç (¬ adjust%) … È− "Wimp_CreateMenu",,-1 &        òframeicons(LastMenu_Win%)      É 5,6,15,16,20,214        ç adjust% … òselecticon(FrameW%,icon%,1)        òframe_shadeicons        Ë  É WorkW%    ç icon%<=26 …+      ç (icon%>=9) € ((icon% ◰ 3)<>1) …"        ô click on arrow icons)        up%=((icon% ◰ 3)=2) ŵ adjust%        i%=(icon%-9) Ŵ 3%        j%=»($(IconText%(12+i%)))        ç i%<2 …          lo%=-10000        Ì          lo%=0 : ô "size" field, can't be negative        Í.        ç ¤changevar(j%,4,up%,lo%,10000) …'          òseticontext(12+i%,Ã(j%))'          òsetcaret(WorkW%,3*i%+10)         Í!       Í"    Ì                 #!      WinBlk%!0=LastMenu_Win%$+      È− "Wimp_GetWindowState",,WinBlk%%      È‰ icon% Ê&        É 27,28'?          xsize%=WinBlk%!12-WinBlk%!4+WinBlk%!20-WinBlk%!44(?          ysize%=WinBlk%!16-WinBlk%!8-WinBlk%!24+WinBlk%!56)          ç icon%=27 …*.            òseticontext(12,Ã(WinBlk%!44))+.            òseticontext(13,Ã(WinBlk%!56)),*            òseticontext(14,Ã(xsize%))-*            òseticontext(15,Ã(ysize%)).$            òsetcaret(WorkW%,16)/          Ì0*            òseticontext(16,Ã(xsize%))1*            òseticontext(17,Ã(ysize%))2$            òsetcaret(WorkW%,22)3          Í4        É 295"          òseticontext(12,"0")6"          òseticontext(13,"0")7%          òseticontext(14,"1236")8$          òseticontext(15,"936")9"          òseticontext(16,"0"):"          òseticontext(17,"0");"          òsetcaret(WorkW%,16)<        É 30=          òsetworkarea>6          ç (¬ adjust%) … È− "Wimp_CreateMenu",,-1?        @       ËA        ÍB  É OptPaneW%C    È‰ icon% ÊD*      É 8  : TrapDclick%=¬ TrapDclick%E      É 9F.        ç ¤iconselected(OptPaneW%,icon%) …G          òsupport(1)H        ÌI          òsupport(0)J        ÍK      É 10L.        ç ¤iconselected(OptPaneW%,icon%) …M          òsupport(2)N        ÌO          òsupport(0)P        ÍQ      É 34R.        ç ¤iconselected(OptPaneW%,icon%) …S          òsupport(3)T        ÌU          òsupport(0)V        ÍW(      É 11 : DuplNames%=¬ DuplNames%X      É 12Y        Hatch%=¬ Hatch%Z        òredrawall[      É 13\+        IcInfo_Active%=¬ IcInfo_Active%]        ç IcInfo_Active% …^%          òopenwindow(IcInfoW%,4)_        Ì`$          òclosewindow(IcInfoW%)a        Íb4      É 14 : Save_Unselected%=¬ Save_Unselected%c0      É 15 : DeleteOutside%=¬ DeleteOutside%d2      É 35 : IgnoreDeskFont%=¬ IgnoreDeskFont%e0      É 16 : Grid_SizeLock%=¬ Grid_SizeLock%f      É 18,20g&        up%=(adjust% ŵ (icon%=20))hD        ç ¤changevar(Grid_SizeX%,PixToOS_X%,up%,PixToOS_X%,64) …i-          òseticontext(28,Ã(Grid_SizeX%))j        Ík      É 22,24l&        up%=(adjust% ŵ (icon%=24))mD        ç ¤changevar(Grid_SizeY%,PixToOS_Y%,up%,PixToOS_Y%,64) …n-          òseticontext(29,Ã(Grid_SizeY%))o        Íp.      É 25 : Grid_PosLock%=¬ Grid_PosLock%q      É 27,29r&        up%=(adjust% ŵ (icon%=29))sC        ç ¤changevar(Grid_PosX%,PixToOS_X%,up%,PixToOS_X%,64) …t,          òseticontext(30,Ã(Grid_PosX%))u        Ív      É 31,33w&        up%=(adjust% ŵ (icon%=33))xC        ç ¤changevar(Grid_PosY%,PixToOS_Y%,up%,PixToOS_Y%,64) …y,          òseticontext(31,Ã(Grid_PosY%))z        Í{        Ë|  É OptionsW%}    È‰ icon% Ê~      É 0        òsetup_save€#        òclosewindow(OptionsW%)Ŵ      É 1ŵ#        òclosewindow(OptionsW%)◰        Ë☓  É DialW%Ŷ     È− "Wimp_CreateMenu",,-1ŷ    È‰ LastDialogue% Ê      É 0⇦,        ô program quit with changes made⇨        È‰ icon% Ê⇩          É 1⇧2            È− "Wimp_GetPointerInfo",,PtrInfo%…'            $(FileName%)=MainFname$™)            $SaveFileIcon%="file_fec"‰"            SavingSelection%=£•            Exporting%=£‘             QuitAfterSave%=¹’1            òcreatewinmenu(-1,SaveW%,-126,56)‹          É 2›            òprequit“        Ë”      É 1„*        ô delete all with changes made–(        ç icon%=1 … òtempl_deleteall—      É 2−-        ô load new file with changes madeŒ        ç icon%=1 …œ          òtempl_deleteall†*          òtempl_loadfile(NewFname$,1)‡&          òsetmainfname(NewFname$)fi        Ífl      É 8 1        ô exit from desktop with changes made¡        È‰ icon% Ê¢          É 1£             òtempl_deleteall¤A            ô resume prequit procedure (code copied from PRM)¥5            È− "Wimp_GetCaretPosition",,ScrapBlk%¦!            ScrapBlk%!24=&1FC§@            È− "Wimp_SendMessage",8,ScrapBlk%,PreQuitSender%¨        Ë©        ËªË«á¬­5Ý òwined_click(xpos%,ypos%,select%,adjust%,icon%)®ê up%,i%,gcol%¯ȉ icon% Ê°
  32496.   É 53±    òwined_readwin²
  32497.   É 54³    òwined_readwin´    òclosewindow(WinEdW%)µ     òsetcaret(WinEd_Win%,-1)¶
  32498.   É 55·    òclosewindow(WinEdW%)¸     òsetcaret(WinEd_Win%,-1)¹
  32499.   É 13º'    ç ¬ ¤iconselected(WinEdW%,20) …»;      òselecticon(WinEdW%,14,¤iconselected(WinEdW%,13))¼        Í½
  32500.   É 14¾'    ç ¬ ¤iconselected(WinEdW%,20) …¿;      òselecticon(WinEdW%,13,¤iconselected(WinEdW%,14))À        ÍÁ  É 15,17,19,20     òwined_shadeicons(icon%)à É 23,27,31,35,39,43,47,51Ä.    òcreatemenu(xpos%,ypos%,WinEdW%,icon%)Å  É 22,24Æ"    up%=(adjust% ŵ (icon%=24))Ç0    ç ¤changevar(WinEd_Button%,1,up%,0,15) …È8      òseticontext(6,$(WinButton%+20*WinEd_Button%))É        ÍÊ
  32501.   É 56Ë    WinEd_Col%(0)=7Ì    WinEd_Col%(1)=2Í    WinEd_Col%(2)=7Π   WinEd_Col%(3)=1Ï    WinEd_Col%(4)=3Р   WinEd_Col%(5)=1Ñ    WinEd_Col%(6)=12Ò    ã i%=0 ¸ 6Ó,      òsetcolourbox(2+i%,WinEd_Col%(i%))Ô     í i%Õ  Ö7    ç (icon%>=26) € (icon%<=52) € ((icon% ◰ 2)=0) …×'      up%=((icon% ◰ 4)=0) ŵ adjust%Ø      i%=(icon%-26) Ŵ 4Ù(      gcol%=¤iconselected(WinEdW%,9)Ú;      òchangecolourbox(2+i%,WinEd_Col%(i%),1,up%,gcol%)Û        ÍÜËÝáÞß4Ý òiced_click(xpos%,ypos%,select%,adjust%,icon%)à ê up%,l%áȉ icon% Êâ      É 4ã.    ç adjust% € ¤iconselected(IcEdW%,14) …ä/      ô minimize number in 'Max size' fieldå&      ç ¤iconselected(IcEdW%,12) …æ#          l%=©($(IconText%(0)))ç       Ìè(        ç ¤iconselected(IcEdW%,13) …é#          l%=©($(IconText%(1)))ê        Íë       Íì!      òseticontext(3,Ã(l%+1))í        Íî      É 9ï    òiced_readwin(-1)ð
  32502.   É 10ñ    òiced_readwin(-1)ò    òclosewindow(IcEdW%)ó    òsetcaret(IcEd_Win%,-1)ô
  32503.   É 11õ    òclosewindow(IcEdW%)ö    òsetcaret(IcEd_Win%,-1)÷  É 12,13,14,41,53ø    òiced_shadeicons(icon%)ù  É 28,31,34,37,45,46,48,51ú-    òcreatemenu(xpos%,ypos%,IcEdW%,icon%)û  É 27,29ü"    up%=(adjust% ŵ (icon%=29))ý/    ç ¤changevar(IcEd_Button%,1,up%,0,15) …þ6      òseticontext(4,$(IcButton%+20*IcEd_Button%))ÿ        Í  É 30,32"    up%=(adjust% ŵ (icon%=32)),    ç ¤changevar(IcEd_Esg%,1,up%,0,31) …&      òseticontext(5,Ã(IcEd_Esg%))        Í  É 33,35"    up%=(adjust% ŵ (icon%=35))/    òchangecolourbox(0,IcEd_Fgcol%,1,up%,0)  É 36,38    "    up%=(adjust% ŵ (icon%=38))
  32504. /    òchangecolourbox(1,IcEd_Bgcol%,1,up%,0)   É 47,49 ;    ç (adjust% € (icon%=47)) ☓ (select% € (icon%=49)) …      ç IcEd_Xsize<998 …        IcEd_Xsize+=2.        òseticontext(20,ÀÃ(IcEd_Xsize),4))(        ç ¤iconselected(IcEdW%,53) …#          IcEd_Ysize=IcEd_Xsize0          òseticontext(21,ÀÃ(IcEd_Ysize),4))        Í       Í        Ì      ç IcEd_Xsize>2 …        IcEd_Xsize-=2.        òseticontext(20,ÀÃ(IcEd_Xsize),4))(        ç ¤iconselected(IcEdW%,53) …#          IcEd_Ysize=IcEd_Xsize          òseticontext(21,ÀÃ(IcEd_Ysize),4))        Í       Í        Í  É 50,52 ;    ç (adjust% € (icon%=50)) ☓ (select% € (icon%=52)) …!      ç IcEd_Ysize<998 …"        IcEd_Ysize+=2#.        òseticontext(21,ÀÃ(IcEd_Ysize),4))$       Í%        Ì&      ç IcEd_Ysize>2 …'        IcEd_Ysize-=2(.        òseticontext(21,ÀÃ(IcEd_Ysize),4)))       Í*        Í+Ë,á-.Ý òreceive(buf%)/Hê sender%,ref%,code%,ackcode%,acktype%,fname$,ftype%,icon%,no%,boot$0ê selinfo%,item%1sender%=buf%!42ref%=buf%!83code%=buf%!164Cackcode%=0 : ô sort of message to acknowledge this message with5/acktype%=17 : ô message type of acknowledge6ç sender% <> ThisTask% …7  È‰ code% Ê8     É 09      ô 'quit' message:      òprequit;     É 1<      ô data save=      ç buf%!40=&FEC …>>        ô other app saves file to TemplEd (via Wimp$Scrap)?&        NewLeafName$=¤str(buf%+44)@%        $(buf%+44)="<Wimp$Scrap>"A1        buf%!36=-1 : ô saved file is "unsafe"B        ackcode%=2C       ÍD     É 2E      ô data save ackF      fname$=¤str(buf%+44)G      È‰ Drag_Win% ÊH        É SaveW%I          ç Exporting% …J(            òexporttemplates(fname$)K          ÌL$            ç SavingSelection% …M"              SelFname$=fname$N+              òsavetemplates(SelFname$)O            ÌP>              ç (buf%!36<>-1) € (fname$<>"<Wimp$Scrap>") …Q)                òsetmainfname(fname$)R              ÍS(              òsavetemplates(fname$)T            ÍU          ÍV        É ExportW%W'          òexport_savenames(fname$)X       ËY3      È− "OS_File",17,fname$ ¸ ftype%,,,,fsize%Z      ç ftype%=1 …[        ackcode%=3\        buf%!36=fsize%]       Í^"      È− "Wimp_CreateMenu",,-1_     É 3`      ô data loada!      NewFname$=¤str(buf%+44)b      È‰ buf%!40 Êc        É &FECd          È‰ buf%!20 Êe            É TemplW%f-              òsetchanged(NrTemplates%>0)g.              òtempl_loadfile(NewFname$,0)h              ackcode%=4i            É -2j&              ç buf%!24=BarIcon% …k$                ç ChangesMade% …l%                  òdialogue(2,"")m                Ìn&                  òtempl_deleteallo2                  òtempl_loadfile(NewFname$,1)p                Íq              Ír              ackcode%=4s          Ët        É &FF9u3          ç (buf%!20=-2) € (buf%!24=BarIcon%) …v+            òloadusersprites(NewFname$)w            ackcode%=4x          Íy        É &2000z2          NewFname$=¤str(buf%+44)+".Templates"{H          ç ¤fileexists(NewFname$)€(buf%!20=-2)€(buf%!24=BarIcon%) …|             ç ChangesMade% …}!              òdialogue(2,"")~            Ì"              òtempl_deleteall€.              òtempl_loadfile(NewFname$,1)Ŵ            Íŵ            ackcode%=4◰          Í☓       ËŶ     É 5ŷ"      ô double-click on a file!      NewFname$=¤str(buf%+44)⇦      È‰ buf%!40 Ê⇨        É &FEC⇩           ç NrTemplates%=0 …⇧,            òtempl_loadfile(NewFname$,1)…            ackcode%=4™          Í‰       Ë•     É 8‘      ô desktop exit’      ç ChangesMade% …‹        ackcode%=8›        acktype%=19“"        PreQuitSender%=sender%”        òdialogue(8,"")„       Í–     É 10—#      ô desktop save (RiscOS 3)−5      boot$="Run "+¤readvarval("TemplEd$Dir")+½10Œ/      È− "OS_GBPB",2,buf%!20,boot$,©(boot$)œ    É &502†*      ô request from !Help application‡%      no%=¤whichtemplate(buf%!32)fi      icon%=buf%!36fl$      ç (no%>=0) € (icon%>=-1) … +        $(buf%+20)=¤iconhelp(no%,icon%)¡        ackcode%=&503¢       Í£    É &400C0¤!      ô about to open submenu¥=      È− "MenuUtil_Decode",LastMenu%,buf%+32 ¸ ,,selinfo%¦      item%=selinfo%!8§      È‰ item% Ê¨        É item_createtempl%©'          ô template name to createª3          È− "MenuUtil_Text",item_templname%,""«/        É item_copytempl%,item_renametempl%¬          òsel_get(TemplW%)­/          ô template name to copy or rename®N          È− "MenuUtil_Text",item_templname%,$(TemplNames%+28*(SelBlk%!0))¯        É item_exporttempl%°'          $(FileName%)=ExportTname$±           SavingSelection%=£²          Exporting%=¹³'          $SaveFileIcon%="file_fff"´        É item_exportnames%µ          È‰ ExportType% Ê¶            É 1·6              $(ExportName%)=¤locase(ExportIname$)¸            ¹-              $(ExportName%)=ExportIname$º          Ë»        É item_frame%¼          òframe_fillwin½        É item_save%¾+          ô set filename in save window¿%          $(FileName%)=MainFname$À           SavingSelection%=£Á          Exporting%=£Â'          $SaveFileIcon%="file_fec"à       É item_savetempl%Ä0          ô set template name in save windowÅ$          $(FileName%)=SelFname$Æ           SavingSelection%=¹Ç          Exporting%=£È'          $SaveFileIcon%="file_fec"É        É item_workarea%Ê-          ô fill icons in workarea windowË%          WinBlk%!0=LastMenu_Win%Ì.          È− "Wimp_GetWindowInfo",,WinBlk%Í,          $(IconText%(12))=Ã(WinBlk%!44)Î,          $(IconText%(13))=Ã(WinBlk%!56)Ï7          $(IconText%(14))=Ã(WinBlk%!52-WinBlk%!44)Ð7          $(IconText%(15))=Ã(WinBlk%!56-WinBlk%!48)Ñ6          $(IconText%(16))=Ã((WinBlk%!72) € &FFFF)Ò2          $(IconText%(17))=Ã((WinBlk%!72)>>16)Ó       ËÔ:      È− "Wimp_CreateSubMenu",,buf%!20,buf%!24,buf%!28Õ    É &400C1Ö      ô mode change×      òreadscreenvarsØ=      ç TemplW_MaxCol%<TemplW_Cols% … òredefinebrowser(¹)Ù    É &400C9Ú1      ô menu removed with no menu item chosenÛ"      ç LastMenu%=TemplMenu% …Ü:        ç TemplMenu_Deselect% … òsel_clear(TemplW%,-1)Ý       ÍÞ    É &80E1Eß4      ô OLE file (user sprites) changed - reloadà(      òloadusersprites(SpriteFname$)á  Ëâ  ç ackcode%<>0 …ã    buf%!0=256ä    buf%!12=ref%å    buf%!16=ackcode%æ-    È− "Wimp_SendMessage",17,buf%,sender%ç  ÍèÍéáêëÝ òredraw(handle%)ìê more%,win0x%,win0y%,dx%í)ê xstart%,height%,xcorr%,ycorr%,x%,y%î
  32505. dx%=48ïBlk%!0=handle%ð(È− "Wimp_RedrawWindow",,Blk% ¸ more%ñwin0x%=Blk%!4-Blk%!20òwin0y%=Blk%!16-Blk%!24ó È” more%ô  ç Hatch% …õ    height%=Blk%!40-Blk%!32ö    xstart%=Blk%!28-height%÷%    xcorr%=(xstart%-win0x%) ◰ dx%ø%    ycorr%=(win0y%-Blk%!32) ◰ dx%ù4    ã x%=xstart%-(xcorr%+ycorr%) ¸ Blk%!36 ⇦ dx%ú      ì x%,Blk%!32û      ð 1,height%,height%ü     í x%ý%    ycorr%=(win0y%-Blk%!40) ◰ dx%þ4    ã x%=xstart%-(xcorr%-ycorr%) ¸ Blk%!36 ⇦ dx%ÿ      ì x%,Blk%!40      ð 1,height%,-height%     í x%  Í  È‰ Support% Ê     É 1&      È− "Wimp_BorderWindow",,Blk%     É 2%      È− "AEH_RedrawWindow",,Blk%     É 3    #      È− "WimpExt_Redraw",,Blk%
  32506.   Ë *  È− "Wimp_GetRectangle",,Blk% ¸ more% Îá.ô *** procs for the window-edit window ***Ý òwined_fillwin(window%)ê no%,flags%,i%no%=¤whichtemplate(window%)WinEd_Win%=window%WinBlk%!0=WinEd_Win%$È− "Wimp_GetWindowInfo",,WinBlk%flags%=WinBlk%!32"WinEd_Button%=(WinBlk%!64)>>12ã i%=0 ¸ 6&  WinEd_Col%(i%)=(WinBlk%?(36+i%))í i%*òselecticon(WinEdW%,4,flags% € (1<<1))*òselecticon(WinEdW%,5,flags% € (1<<4))+òselecticon(WinEdW%,6,flags% € (1<<12))(òselecticon(WinEdW%,7,PaneFlag%?no%) *òselecticon(WinEdW%,8,flags% € (1<<6))!+òselecticon(WinEdW%,9,flags% € (1<<10))",òselecticon(WinEdW%,10,flags% € (1<<11))#,òselecticon(WinEdW%,20,flags% € (1<<31))$,òselecticon(WinEdW%,57,flags% € (1<<13))%+òselecticon(WinEdW%,59,flags% € (1<<8))&+òselecticon(WinEdW%,60,flags% € (1<<9))',òselecticon(WinEdW%,62,flags% € (1<<14))(,òselecticon(WinEdW%,63,flags% € (1<<15)))ã i%=0 ¸ 6*6  òselecticon(WinEdW%,13+i%,flags% € (1<<(24+i%)))+í i%,ç (flags% € (1<<31))=0 …-1  òselecticon(WinEdW%,14,(flags% € (1<<7))=0).1  òselecticon(WinEdW%,13,(flags% € (1<<7))=0)/-  òselecticon(WinEdW%,15,flags% € (1<<0))0-  òselecticon(WinEdW%,17,flags% € (1<<2))1-  òselecticon(WinEdW%,19,flags% € (1<<3))2Í3Oòsettitlebar(WinEdW%,WinEdTbar%,¤msg_lookup1("EDTP",$(TemplNames%+28*no%)))42òseticontext(6,$(WinButton%+20*WinEd_Button%))5ã i%=0 ¸ 66(  òsetcolourbox(2+i%,WinEd_Col%(i%))7í i%8òwined_shadeicons(-1)9òopenwindow(WinEdW%,0):òsetcaret(WinEdW%,-1);á<=#Ý òwined_shadeicons(clickedon%)>"ê newformat%,titlebar%,scroll%?(newformat%=¤iconselected(WinEdW%,20)@'titlebar%=¤iconselected(WinEdW%,15)AAscroll%=¤iconselected(WinEdW%,17) ☓ ¤iconselected(WinEdW%,19)B)ç (clickedon%=-1) ☓ (clickedon%=20) …C)  òshadeicon(WinEdW%,16,¬ newformat%)DÍE)ç (clickedon%=-1) ☓ (clickedon%=15) …F(  òshadeicon(WinEdW%,13,¬ titlebar%)G(  òshadeicon(WinEdW%,14,¬ titlebar%)H(  òshadeicon(WinEdW%,16,¬ titlebar%)IÍJç (clickedon%<>15) …K5  òshadeicon(WinEdW%,18,newformat% € (¬ scroll%))LÍMáNOÝ òwined_readwinPê flags%,no%,i%QWinBlk%!0=WinEd_Win%R$È− "Wimp_GetWindowInfo",,WinBlk%S!flags%=(WinBlk%!32)€(&1F<<16)T0ç ¤iconselected(WinEdW%,15) … flags%+=(1<<0)U/ç ¤iconselected(WinEdW%,4) … flags%+=(1<<1)V0ç ¤iconselected(WinEdW%,17) … flags%+=(1<<2)W0ç ¤iconselected(WinEdW%,19) … flags%+=(1<<3)X/ç ¤iconselected(WinEdW%,5) … flags%+=(1<<4)Y"no%=¤whichtemplate(WinEd_Win%)Z ç ¤iconselected(WinEdW%,7) …[  PaneFlag%?no%=1<<5\Ì]  PaneFlag%?no%=0^Í_/ç ¤iconselected(WinEdW%,8) … flags%+=(1<<6)`2ç ¬ ¤iconselected(WinEdW%,14) … flags%+=(1<<7)a0ç ¤iconselected(WinEdW%,59) … flags%+=(1<<8)b0ç ¤iconselected(WinEdW%,60) … flags%+=(1<<9)c0ç ¤iconselected(WinEdW%,9) … flags%+=(1<<10)d1ç ¤iconselected(WinEdW%,10) … flags%+=(1<<11)e0ç ¤iconselected(WinEdW%,6) … flags%+=(1<<12)f1ç ¤iconselected(WinEdW%,57) … flags%+=(1<<13)g1ç ¤iconselected(WinEdW%,62) … flags%+=(1<<14)h1ç ¤iconselected(WinEdW%,63) … flags%+=(1<<15)iã i%=0 ¸ 7j;  ç ¤iconselected(WinEdW%,13+i%) … flags%+=(1<<(24+i%))kí i%lWinBlk%!32=flags%m WinBlk%!64=WinEd_Button%<<12nã i%=0 ¸ 6o$  WinBlk%?(36+i%)=WinEd_Col%(i%)pí i%q)WinEd_Win%=¤redefinewindow(WinBlk%,1)rást,ô *** procs for the icon-edit window ***uv Ý òiced_start(window%,icon%)wç icon%=-4 …x  òiced_fillwin(window%,-4)yÌz  òsel_get(window%){  ç NrSelected%>0 …|     ç NrSelected%=1 …}*      òiced_fillwin(window%,SelBlk%!0)~
  32507.      Ì$       òiced_fillwin(window%,-1)€
  32508.      ÍŴ  Ìŵ    ç (icon%>=0) …◰&      òiced_fillwin(window%,icon%)☓        ÍŶ  ÍŷÍá⇦⇨"Ý òiced_fillwin(window%,icon%)⇩@ê no%,flags%,data%,arg$,title$,text%,sprite%,indir%,caretto%⇧ê t$,v$,m$,s$…IcEd_Win%=window%™IcEd_Icon%=icon%‰no%=¤whichtemplate(window%)•WinBlk%!0=IcEd_Win%‘$È− "Wimp_GetWindowInfo",,WinBlk%’ȉ icon% Ê‹&  É -4  : ô editing title bar icon›D    flags%=(WinBlk%!60) € &FF000FFF : ô mask out irrelevant bits“    flags%=flags% ☓ &14”    ç (flags% € (1<<6))=0 …„;      ô copy fg and bg colour flags from window colours–J      flags%=(flags% € &FFF) ☓ ((WinBlk%?36)<<24) ☓ ((WinBlk%?37)<<28)—        Í−    data%=WinBlk%+76Œ"    arg$+=¤msg_lookup0("TBAR")œ>  É -1  : ô editing selection (read flags from first icon)†    òsel_get(IcEd_Win%)‡-    flags%=WinBlk%!(92+32*(SelBlk%!0)+16)fi*    data%=WinBlk%+92+32*(SelBlk%!0)+20fl!    arg$+=¤msg_lookup0("SEL")    : ô editing single icon¡,    flags%=WinBlk%!(92+32*IcEd_Icon%+16)¢)    data%=WinBlk%+92+32*IcEd_Icon%+20£+    arg$+=¤msg_lookup1("ICNR",Ã(icon%))¤Ë¥:title$=¤msg_lookup2("EDIC",$(TemplNames%+28*no%),arg$)¦text%=(flags% € 1)>0§sprite%=(flags% € 2)>0¨indir%=(flags% € &100)>0©ç text% …ª  ç indir% …«    t$=¤str(data%!0)¬    m$=Ã(data%!8)­(    ç data%!4<>-1 … v$=¤str(data%!4)®  Ì¯    t$=À¤str(data%),12)°  Í±Í²ç sprite% € (¬ text%) …³  ç indir% …´    s$=¤str(data%!0)µ    m$=Ã(data%!8)¶  Ì·    s$=À¤str(data%),12)¸  Í¹Íº"IcEd_Button%=(flags%>>12) € 15»IcEd_Esg%=(flags%>>16) € 31¼ç (flags% € (1<<6)) …½  IcEd_Fgcol%=7¾  IcEd_Bgcol%=0¿H  òfont_getinfo((flags%>>24) € 255,IcEd_Font$,IcEd_Xsize,IcEd_Ysize)ÀÌÁ#  IcEd_Fgcol%=(flags%>>24) € 15Â#  IcEd_Bgcol%=(flags%>>28) € 15Ã"  IcEd_Font$="Homerton.Medium"Ä  IcEd_Xsize=12Å  IcEd_Ysize=12ÆÍÇ)òsettitlebar(IcEdW%,IcEdTbar%,title$)È òselecticon(IcEdW%,12,text%)É"òselecticon(IcEdW%,13,sprite%)Ê!òselecticon(IcEdW%,14,indir%)Ëòseticontext(0,t$)Ìòseticontext(1,s$)Íòseticontext(2,v$)Îòseticontext(3,m$)Ï*òselecticon(IcEdW%,15,flags% € (1<<2))Ð*òselecticon(IcEdW%,17,flags% € (1<<3))Ñ*òselecticon(IcEdW%,18,flags% € (1<<4))Ò*òselecticon(IcEdW%,16,flags% € (1<<5))Ó*òselecticon(IcEdW%,41,flags% € (1<<6))Ô*òselecticon(IcEdW%,20,flags% € (1<<7))Õ*òselecticon(IcEdW%,19,flags% € (1<<9))Ö+òselecticon(IcEdW%,21,flags% € (1<<10))×+òselecticon(IcEdW%,22,flags% € (1<<11))Ø+òselecticon(IcEdW%,39,flags% € (1<<22))Ù0òseticontext(4,$(IcButton%+20*IcEd_Button%))Ú òseticontext(5,Ã(IcEd_Esg%))Û òsetcolourbox(0,IcEd_Fgcol%)Ü òsetcolourbox(1,IcEd_Bgcol%)Ýòseticontext(19,IcEd_Font$)Þ&òseticontext(20,ÀÃ(IcEd_Xsize),4))ß&òseticontext(21,ÀÃ(IcEd_Ysize),4))à0òselecticon(IcEdW%,53,IcEd_Xsize=IcEd_Ysize)áã i%=12 ¸ 14â)  òshadeicon(IcEdW%,i%,IcEd_Icon%=-1)ãí i%äç IcEd_Icon%=-1 …å  ã i%=23 ¸ 26æ    òshadeicon(IcEdW%,i%,1)ç
  32509.   í i%èÍé'òshadeicon(IcEdW%,15,IcEd_Icon%=-4)ê'òshadeicon(IcEdW%,16,IcEd_Icon%=-4)ë'òshadeicon(IcEdW%,20,IcEd_Icon%=-4)ì'òshadeicon(IcEdW%,21,IcEd_Icon%=-4)íã i%=27 ¸ 32î)  òshadeicon(IcEdW%,i%,IcEd_Icon%=-4)ïí i%ð'òshadeicon(IcEdW%,39,IcEd_Icon%=-4)ñòiced_shadeicons(-1)òòopenwindow(IcEdW%,0)ócaretto%=-1ôç IcEd_Icon%<>-1 …õ  ç indir% … caretto%=25ö  ç sprite% … caretto%=24÷  ç text% … caretto%=23øÍùòsetcaret(IcEdW%,caretto%)úáûü"Ý òiced_shadeicons(clickedon%)ýê t%,s%,i%,f%,lockaspect%þç IcEd_Icon%<>-1 …ÿ,  ç (clickedon%=-1) ☓ (clickedon%<=14) …#    t%=¤iconselected(IcEdW%,12)#    s%=¤iconselected(IcEdW%,13)#    i%=¤iconselected(IcEdW%,14)"    òshadeicon(IcEdW%,23,¬ t%)0    òshadeicon(IcEdW%,24,(¬ s%) ☓ (t% € i%))(    òshadeicon(IcEdW%,25,¬(t% € i%))"    òshadeicon(IcEdW%,26,¬ i%)  ÍÍ    f%=¤iconselected(IcEdW%,41)
  32510. (lockaspect%=¤iconselected(IcEdW%,53) )ç (clickedon%=-1) ☓ (clickedon%=41) …   ã i%=33 ¸ 38     òshadeicon(IcEdW%,i%,f%)
  32511.   í i%  ã i%=45 ¸ 49"    òshadeicon(IcEdW%,i%,¬ f%)
  32512.   í i%   òshadeicon(IcEdW%,53,¬ f%)Í;ç (clickedon%=-1) ☓ (clickedon%=41) ☓ (clickedon%=53) …  ã i%=50 ¸ 522    òshadeicon(IcEdW%,i%,(¬ f%) ☓ lockaspect%)
  32513.   í i%Í)È− "Wimp_GetCaretPosition",,ScrapBlk%,ç ¤iconshaded(ScrapBlk%!0,ScrapBlk%!4) …:  òsetcaret(IcEdW%,-1) : ô move caret from shaded iconÍáÝ òiced_readwin(mask%) 0ê flags%,flagptr%,data%,ib%,cbp%,xsize,ysize! ê xsize16%,ysize16%,fhandle%"!ê i%,t%,s%,deflen%,maxlen%,p%#WinBlk%!0=IcEd_Win%$$È− "Wimp_GetWindowInfo",,WinBlk%%ȉ IcEd_Icon% Ê&&  É -4  : ô editing title bar icon'    flagptr%=WinBlk%+60(    data%=WinBlk%+76)>  É -1  : ô editing selection (read flags from first icon)*    òsel_get(IcEd_Win%)+-    flagptr%=WinBlk%+92+32*(SelBlk%!0)+16,*    data%=WinBlk%+92+32*(SelBlk%!0)+20-   : ô editing single icon.    ç IcEd_Icon%>=0 …/.      flagptr%=WinBlk%+92+32*IcEd_Icon%+160+      data%=WinBlk%+92+32*IcEd_Icon%+201&      ib%=WinBlk%+92+32*IcEd_Icon%2        Í3Ë4cbp%=WinBlk%!685=ô construct new flags, but do not change "selected" state6!flags%=(flagptr%!0) € (1<<21)7/ç ¤iconselected(IcEdW%,15) … flags%+=(1<<2)8/ç ¤iconselected(IcEdW%,16) … flags%+=(1<<5)9/ç ¤iconselected(IcEdW%,17) … flags%+=(1<<3):/ç ¤iconselected(IcEdW%,18) … flags%+=(1<<4);/ç ¤iconselected(IcEdW%,19) … flags%+=(1<<9)</ç ¤iconselected(IcEdW%,20) … flags%+=(1<<7)=0ç ¤iconselected(IcEdW%,21) … flags%+=(1<<10)>0ç ¤iconselected(IcEdW%,22) … flags%+=(1<<11)?0ç ¤iconselected(IcEdW%,39) … flags%+=(1<<22)@flags%+=(IcEd_Button%<<12)Aflags%+=(IcEd_Esg%<<16)B ç ¤iconselected(IcEdW%,41) …C  flags%+=(1<<6)D  xsize16%=¨(IcEd_Xsize*16)E  ysize16%=¨(IcEd_Ysize*16)F$  ç xsize16%<=0 … xsize16%=12*16G$  ç ysize16%<=0 … ysize16%=12*16HH  È− "Font_FindFont",,IconText%(19),xsize16%,ysize16%,0,0 ¸ fhandle%I   ç FontUsage%(fhandle%)>0 …J?    È− "Font_LoseFont",fhandle% : ô font was already in useK  ÍL  FontUsage%(fhandle%)+=1M  flags%+=(fhandle%<<24)NÌO  flags%+=(IcEd_Fgcol%<<24)P  flags%+=(IcEd_Bgcol%<<28)QÍR'ç (IcEd_Icon%>=0)☓(IcEd_Icon%=-4) …S$  òiconrelease(flagptr%!0,data%)T!  t%=¤iconselected(IcEdW%,12)U!  s%=¤iconselected(IcEdW%,13)V!  i%=¤iconselected(IcEdW%,14)W  ç s% € (¬ t%) …X=    deflen%=©($(IconText%(1)))+1 : ô default maximum sizeY  ÌZ$    deflen%=©($(IconText%(0)))+1[  Í\   ç i% …]"    maxlen%=»($(IconText%(3)))^  Ì_    maxlen%=12`  Ía  ç maxlen%<deflen% …bN    maxlen%=deflen%                : ô increase max size if text is longerc"    òseticontext(3,Ã(maxlen%))d  Íe  ç (¬ i%) € (deflen%>12) …fE    òselecticon(IcEdW%,14,1)    : ô make indirected if > 12 charsgA    òseticontext(2,"")          : ô default validation stringh    òiced_shadeicons(14)i     i%=¹j  Ík  ç t% … flags%+=(1<<0)l  ç s% … flags%+=(1<<1)m  ç i% … flags%+=(1<<8)n   ç i% …o    ç s% € (¬ t%) …p      data%!0=IconText%(1)qD      data%!4=cbp% : ô window CBP as default sprite area pointerr        Ís    ç t% …t      data%!0=IconText%(0)u"      ç ©($(IconText%(2)))>0 …v         data%!4=IconText%(2)w       Ìx2        data%!4=-1 : ô empty validation stringy       Íz        Í{    data%!8=maxlen%|  Ì}    ç t% …~"      $(data%)=$(IconText%(0))        Ì€      ç s% …Ŵ$        $(data%)=$(IconText%(1))ŵ       Í◰        Í☓  ÍŶ  flagptr%!0=flags%ŷ"  òiconrealloc(flagptr%,data%)Í⇦ȉ IcEd_Icon% Ê⇨
  32514.   É -4⇩    WinBlk%?36=IcEd_Fgcol%⇧    WinBlk%?37=IcEd_Bgcol%…,    IcEd_Win%=¤redefinewindow(WinBlk%,1)™
  32515.   É -1‰A    ô do not change text, sprite and indir flags of selection•    mask%=mask% € (¬ &103)‘    ç NrSelected%>0 …’       ã i%=0 ¸ NrSelected%-1‹H        òseticonstate(IcEd_Win%,SelBlk%!(4*i%),flags% € mask%,mask%)›      í i%“        Ì”      òdialogue(9,"")„        Í–  —    ç IcEd_Icon%>=0 …−>      IcEd_Icon%=¤redefineicon(IcEd_Win%,IcEd_Icon%,ib%-8)Œ        Ìœ      òdialogue(4,"")†        Í‡Ëfi ç ¤iconselected(IcEdW%,41) …flA  ô font count was increased earlier when finding font handle   òfont_lose(fhandle%)¡Í¢òsetchanged(¹)£á¤¥ô *** menu procs ***¦§'Ý ¤menu_add(text$,submenu%,genmsg%)¨ê handle%©&È− "MenuUtil_Add",,text$ ¸ handle%ª;ç submenu%<>-1 … È− "MenuUtil_SubMenu",handle%,submenu%«/ç genmsg% … È− "MenuUtil_Warning",handle%,1¬ =handle%­®*Ý ¤menu_addwritable(maxlen%,validstr%)¯ê handle%°#È− "MenuUtil_Add",,"" ¸ handle%±/È− "MenuUtil_Writable",,1,maxlen%,validstr%² =handle%³´;ô --- shade a whole submenu, but keep it accessible ---µ/Ý òmenu_fadesubmenu(item%,submenu%,switch%)¶ç switch% …·&   È− "MenuUtil_Colours",item%,2,0¸$   È− "MenuUtil_Fade",submenu%,1¹̺&   È− "MenuUtil_Colours",item%,7,0»$   È− "MenuUtil_Fade",submenu%,0¼ͽ᾿ݠòpreparemenusÀê i%Á"È− "MenuUtil_Initialise",010,0Âô --- custom sprites menuÃ/È− "MenuUtil_New",,"Sprites" ¸ SpritesMenu%Ä-item_sprview%=¤menu_add("View/Edit",-1,0)Å-item_sprreload%=¤menu_add("Re-load",-1,0)Æ*item_sprreset%=¤menu_add("Reset",-1,0)Çô --- iconbar menuÈ(È− "MenuUtil_New",,Appl$ ¸ MainMenu%É)item_info%=¤menu_add("Info",InfoW%,0)Êç OSversion%>=300 …Ë'  item_help%=¤menu_add("Help",-1,0)ÌÌÍ  item_help%=0ÎÍÏ.item_options%=¤menu_add("Options...",-1,0)Ð/item_stats%=¤menu_add("Statistics...",-1,0)ÑBitem_customsprites%=¤menu_add("Custom sprites",SpritesMenu%,0)Ò%item_quit%=¤menu_add("Quit",-1,0)Óô --- template-name menuÔ5È− "MenuUtil_New",,"   Name:   " ¸ TemplNamemenu%Õ+item_templname%=¤menu_addwritable(12,0)Öô --- template submenu×)È− "MenuUtil_New",,"" ¸ TemplSubmenu%Ø6item_copytempl%=¤menu_add("Copy",TemplNamemenu%,1)Ù:item_renametempl%=¤menu_add("Rename",TemplNamemenu%,1)Ú.item_deletetempl%=¤menu_add("Delete",-1,0)Û*item_opentempl%=¤menu_add("Open",-1,0)Ü,item_closetempl%=¤menu_add("Close",-1,0)Ý.item_savetempl%=¤menu_add("Save",SaveW%,1)Þô --- export submenuß-È− "MenuUtil_New",,"Export" ¸ ExportMenu%à8item_exportnames%=¤menu_add("Icon names",ExportW%,1)á5item_exporttempl%=¤menu_add("Templates",SaveW%,1)âô --- template menuã)È− "MenuUtil_New",,Appl$ ¸ TemplMenu%ä:item_createtempl%=¤menu_add("Create",TemplNamemenu%,1)å0item_template%=¤menu_add("",TemplSubmenu%,0)æ2item_selalltempl%=¤menu_add("Select all",-1,0)ç9item_clearseltempl%=¤menu_add("Clear selection",-1,0)è2item_export%=¤menu_add("Export",ExportMenu%,1)é0item_deleteall%=¤menu_add("Delete all",-1,0)ê4item_sorttempl%=¤menu_add("Sort templates",-1,0)ë)item_save%=¤menu_add("Save",SaveW%,1)ì)ô --- direction menu for icon copyingí(È− "MenuUtil_New",,"Copy" ¸ DirMenu%î'item_up%=¤menu_add("Up    ^U",-1,0)ï)item_down%=¤menu_add("Down  ^D",-1,0)ð)item_left%=¤menu_add("Left  ^L",-1,0)ñ*item_right%=¤menu_add("Right ^R",-1,0)ò#ô --- menu for icon renumberingó+È− "MenuUtil_New",,"No.:" ¸ IconNrmenu%ô2item_iconnr%=¤menu_addwritable(4,NumValidStr%)õô --- "dimension" menuö.È− "MenuUtil_New",,"Dim." ¸ DimensionMenu%÷%item_both%=¤menu_add("Both",-1,0)ø"item_xdim%=¤menu_add("X",-1,0)ù"item_ydim%=¤menu_add("Y",-1,0)úô --- user-template submenuû(È− "MenuUtil_New",,"" ¸ UserSubmenu%ü7item_copyicon%=¤menu_add("Copy      ^C",DirMenu%,0)ý:item_renumbericon%=¤menu_add("Renumber",IconNrmenu%,0)þ3item_deleteicon%=¤menu_add("Delete    ^X",-1,0)ÿ1item_editicon%=¤menu_add("Edit...   ^E",-1,0)    È− "MenuUtil_Dots",,1    3item_align%=¤menu_add("Align     ^J",AlignW%,0)    6item_spaceout%=¤menu_add("Space out ^K",SpaceW%,0)    3item_frame%=¤menu_add("Frame     ^F",FrameW%,1)    9item_minsize%=¤menu_add("Min. size",DimensionMenu%,0)    9item_centericon%=¤menu_add("Center",DimensionMenu%,0)    :item_samesize%=¤menu_add("Same size",DimensionMenu%,0)    ô --- sprite area menu    8È− "MenuUtil_New",,"Sprites from" ¸ SpriteAreaMenu%         .item_wimparea%=¤menu_add("Wimp area",-1,0)    
  32516. 2item_customarea%=¤menu_add("Custom area",-1,0)     $ô --- submenus for tidying icons     -È− "MenuUtil_New",,"Ensure" ¸ EnsureMenu%    2item_tidy1%=¤menu_add("Inside work area",-1,0)    5item_tidy2%=¤menu_add("Inside visible area",-1,0)    /È− "MenuUtil_New",,"Deleted" ¸ DeletedMenu%    *item_tidy3%=¤menu_add("Undelete",-1,0)    1item_tidy4%=¤menu_add("Undelete & Move",-1,0)    'item_tidy5%=¤menu_add("Purge",-1,0)    ô --- "misc" submenu    )È− "MenuUtil_New",,"Misc" ¸ MiscMenu%    6item_centerwin%=¤menu_add("Center to screen",-1,0)    ?item_spritearea%=¤menu_add("Sprite area",SpriteAreaMenu%,0)    =item_ensureicons%=¤menu_add("Ensure icons",EnsureMenu%,0)    @item_deletedicons%=¤menu_add("Deleted icons",DeletedMenu%,0)    ô --- user-template menu    +È− "MenuUtil_New",,"Window" ¸ UserMenu%    item_createicon%=¤menu_add("Create icon...",-1,0)    +item_icon%=¤menu_add("",UserSubmenu%,0)    ;item_selallicons%=¤menu_add("Select all       ^A",-1,0)    =item_clearselicons%=¤menu_add("Clear selection  ^Z",-1,0)    ,È− "MenuUtil_Dots",item_clearselicons%,1     2item_workarea%=¤menu_add("Work area",WorkW%,1)    !:item_editwindow%=¤menu_add("Edit window...   ^W",-1,0)    "9item_edittitle%=¤menu_add("Edit title...    ^T",-1,0)    #,item_misc%=¤menu_add("Misc",MiscMenu%,0)    $8item_closewin%=¤menu_add("Close window     ^Q",-1,0)    %%ô --- menu with icon button-types    &4È− "MenuUtil_New",,"Button type" ¸ IcButtonMenu%    'ã i%=0 ¸ 15    (/  dummy%=¤menu_add($(IcButton%+20*i%),-1,0)    )í i%    *'ô --- menu with window button-types    +5È− "MenuUtil_New",,"Button type" ¸ WinButtonMenu%    ,ã i%=0 ¸ 15    -0  dummy%=¤menu_add($(WinButton%+20*i%),-1,0)    .í i%    /7ô --- actual ESG menu is built when Menu is clicked    0EsgMenu%=0    1:ô --- actual colour menu is built when Menu is clicked    2ColourMenu%=0    3ô --- font menu    4òfontmenu    5ô --- font size menu    6-È− "MenuUtil_New",,"Size" ¸ FontSizemenu%    7È− "MenuUtil_Add",,"10pt"    8È− "MenuUtil_Add",,"12pt"    9È− "MenuUtil_Add",,"16pt"    :È− "MenuUtil_Add",,"20pt"    ;È− "MenuUtil_Add",,"24pt"    <È− "MenuUtil_Add",,"36pt"    =6item_fontsize%=¤menu_addwritable(5,FpNumValidStr%)    >"ô --- "partial update" submenu    ?/È− "MenuUtil_New",,"Other" ¸ UpdateSubmenu%    @(item_updbo%=¤menu_add("Border",-1,0)    A(item_updfi%=¤menu_add("Filled",-1,0)    B*item_updhc%=¤menu_add("H centre",-1,0)    C*item_updvc%=¤menu_add("V centre",-1,0)    D-item_updrj%=¤menu_add("R justified",-1,0)    E,item_updnh%=¤menu_add("Needs help",-1,0)    F.item_updaa%=¤menu_add("Allow adjust",-1,0)    G+item_updhs%=¤menu_add("Half size",-1,0)    H(item_updsh%=¤menu_add("Shaded",-1,0)    Iô --- "partial update" menu    J-È− "MenuUtil_New",,"Update" ¸ Updatemenu%    K-item_updbt%=¤menu_add("Button type",-1,0)    L&item_updesg%=¤menu_add("ESG",-1,0)    M(item_updfg%=¤menu_add("Fg col",-1,0)    N(item_updbg%=¤menu_add("Bg col",-1,0)    O(item_updfont%=¤menu_add("Font",-1,0)    P;item_updrest%=¤menu_add("Other flags",UpdateSubmenu%,0)    Qá    R    SÝ òmainmenu    T1È− "MenuUtil_Fade",item_stats%,NrTemplates%=0    UFòmenu_fadesubmenu(item_customsprites%,SpritesMenu%,UserSprites%=1)    Vá    W    X*Ý òtemplatemenu(ø xpos%,ø ypos%,icon%)    Yê t$    Zòsel_get(TemplW%)    [$ç (NrSelected%=0) € (icon%>=0) …    \"  òselecticon(TemplW%,icon%,1)    ]  SelBlk%!0=icon%    ^  NrSelected%=1    _D  TemplMenu_Deselect%=¹  : ô deselect icon when menu is removed?    `Ì    a  TemplMenu_Deselect%=£    bÍ    cAòmenu_fadesubmenu(item_template%,TemplSubmenu%,NrSelected%=0)    d    t$=""    eç NrSelected%>1 …    f  t$="Selection"    g)  È− "MenuUtil_Text",TemplSubmenu%,t$    hÌ    i  ç NrSelected%=1 …    j(    t$=$(TemplNames%+28*(SelBlk%!0))    k  Í    l1  È− "MenuUtil_Text",TemplSubmenu%,"Template"    mÍ    n5È− "MenuUtil_Fade",item_copytempl%,NrSelected%<>1    o7È− "MenuUtil_Fade",item_renametempl%,NrSelected%<>1    pSelFname$=t$    qç NrSelected%>1 …    r3  È− "MenuUtil_Text",item_template%,"Selection"    sÌ    t;  È− "MenuUtil_Text",item_template%,"Template '"+t$+"'"    uÍ    v7È− "MenuUtil_Fade",item_selalltempl%,NrTemplates%=0    w8È− "MenuUtil_Fade",item_clearseltempl%,NrSelected%=0    x5È− "MenuUtil_Fade",item_deleteall%,NrTemplates%=0    y5È− "MenuUtil_Fade",item_sorttempl%,NrTemplates%=0    z>òmenu_fadesubmenu(item_export%,ExportMenu%,NrTemplates%=0)    {0È− "MenuUtil_Fade",item_save%,NrTemplates%=0    |QuitAfterSave%=£    }xpos%-=64    ~ç NrSelected%=0 …      ypos%+=22    €Ì    Ŵ  ypos%+=66    ŵÍ    ◰á    ☓    Ŷ.Ý òusermenu(ø xpos%,ø ypos%,window%,icon%)    ŷ ê t$,st$    òsel_get(window%)    ⇦$ç (NrSelected%=0) € (icon%>=0) …    ⇨  SelBlk%!0=icon%    ⇩  NrSelected%=1    ⇧Í    …<òmenu_fadesubmenu(item_icon%,UserSubmenu%,NrSelected%=0)    ™ȉ NrSelected% Ê    ‰      É 0    •    t$="No icon"    ‘    st$=t$    ’      É 1    ‹     t$="Icon #"+Ã(SelBlk%!0)    ›    st$=t$    “      ”    t$="Selection"    „#    st$=Ã(NrSelected%)+" icons"    –Ë    —'È− "MenuUtil_Text",UserSubmenu%,st$    −7È− "MenuUtil_Fade",item_renumbericon%,NrSelected%=0    Œ0È− "MenuUtil_Fade",item_align%,NrSelected%<2    œ3È− "MenuUtil_Fade",item_spaceout%,NrSelected%<2    †0È− "MenuUtil_Fade",item_frame%,NrSelected%<2    ‡2È− "MenuUtil_Text",item_iconnr%,Ã(NextIconNr%)    fi3È− "MenuUtil_Fade",item_samesize%,NrSelected%<2    flWinBlk%!0=window%     $È− "Wimp_GetWindowInfo",,WinBlk%    ¡ç WinBlk%!68=1 …    ¢.  È− "MenuUtil_TickOnly",SpriteAreaMenu%,0    £Ì    ¤.  È− "MenuUtil_TickOnly",SpriteAreaMenu%,1    ¥Í    ¦$È− "MenuUtil_Text",item_icon%,t$    §5È− "MenuUtil_Fade",item_selallicons%,WinBlk%!88=0    ¨8È− "MenuUtil_Fade",item_clearselicons%,NrSelected%=0    ©Aòmenu_fadesubmenu(item_ensureicons%,EnsureMenu%,WinBlk%!88=0)    ªKÈ− "Wimp_WhichIcon",window%,SelBlk2%,1<<23,1<<23 : ô any deleted icons?    «Dòmenu_fadesubmenu(item_deletedicons%,DeletedMenu%,SelBlk2%!0=-1)    ¬Fòmenu_fadesubmenu(item_spritearea%,SpriteAreaMenu%,UserSprites%=1)    ­xpos%-=64    ®ç NrSelected%=0 …    ¯  ypos%+=22    °Ì    ±  ypos%+=66    ²Í    ³á    ´    µ$Ý òicbuttonmenu(ø xpos%,ø ypos%)    ¶5È− "MenuUtil_TickOnly",IcButtonMenu%,IcEd_Button%    ·xpos%+=16    ¸ypos%+=22+IcEd_Button%*44    ¹á    º    »%Ý òwinbuttonmenu(ø xpos%,ø ypos%)    ¼7È− "MenuUtil_TickOnly",WinButtonMenu%,WinEd_Button%    ½xpos%+=16    ¾ypos%+=22+WinEd_Button%*44    ¿á    À    ÁÝ òesgmenu(ø xpos%,ø ypos%)    Â3ç EsgMenu%<>0 … È− "MenuUtil_Delete",EsgMenu%,£    Ãç Support%=2 …    Ä)  È− "MenuUtil_New",,"ESG" ¸ EsgMenu%    Å.  dummy%=¤menu_addwritable(3,NumValidStr%)    Æ&  È− "MenuUtil_Text",,Ã(IcEd_Esg%)    Ç*  dummy%=¤menu_add("16 (Action)",-1,0)    È2  dummy%=¤menu_add("18 (Default action)",-1,0)    É,  dummy%=¤menu_add("19 (Writable)",-1,0)    Ê+  dummy%=¤menu_add("20 (Display)",-1,0)    Ë-  dummy%=¤menu_add("21 (Group box)",-1,0)    Ì0  dummy%=¤menu_add("24 (24bit colour)",-1,0)    Í*  dummy%=¤menu_add("25 (Slider)",-1,0)    Î  ypos%+=22    ÏÌ    Ð)  È− "MenuUtil_New",,"ESG" ¸ EsgMenu%    Ñ  ã i%=0 ¸ 15    Ò$    dummy%=¤menu_add(Ã(i%),-1,0)    Ó
  32517.   í i%    Ô  ypos%+=22    Õ  ç IcEd_Esg%<=15 …    Ö1    È− "MenuUtil_TickOnly",EsgMenu%,IcEd_Esg%    ×    ypos%+=IcEd_Esg%*44    Ø  Í    ÙÍ    Úxpos%+=16    Ûá    Ü    Ý0Ý òcolourmenu(ø xpos%,ø ypos%,window%,icon%)    Þ*ê i%,flags%,current%,bigrange%,transp%    ß9ç ColourMenu%<>0 … È− "MenuUtil_Delete",ColourMenu%,£    àȉ window% Ê    á  É IcEdW%    â    È‰ icon% Ê    ã%      É 34 : current%=IcEd_Fgcol%    ä%      É 37 : current%=IcEd_Bgcol%    å        Ë    æ    bigrange%=£    ç    transp%=£    è  É WinEdW%    é*    bigrange%=¤iconselected(WinEdW%,9)    ê%    transp%=(icon%=27)☓(icon%=39)    ë)    current%=WinEd_Col%((icon%-27)Ŵ4)    ìË    íç bigrange% …    î;  ô colour menu for colour numbers 0-255 (GCOL colours)    ï,  È− "MenuUtil_New",,"Col" ¸ ColourMenu%    ð.  dummy%=¤menu_addwritable(4,NumValidStr%)    ñ%  È− "MenuUtil_Text",,Ã(current%)    ò  ç transp% …    ó!    È− "MenuUtil_Add",,"None"    ô(    È− "MenuUtil_Tick",,current%=255    õ  Í    öÌ    ÷+  ô colour menu for colour numbers 0-15    ø,  È− "MenuUtil_New",,"Col" ¸ ColourMenu%    ù  ã i%=0 ¸ 15    ú     È− "MenuUtil_Add",,Ã(i%)    û4    È− "MenuUtil_Colours",,InverseColour%(i%),i%    ü
  32518.   í i%    ý  ç transp% …    þ    È− "MenuUtil_Dots",,1    ÿ!    È− "MenuUtil_Add",,"None"
  32519.   Í
  32520.   ç current%=255 …
  32521. -    È− "MenuUtil_TickOnly",ColourMenu%,16
  32522.   Ì
  32523. 3    È− "MenuUtil_TickOnly",ColourMenu%,current%
  32524.   Í
  32525. Í
  32526. xpos%+=16
  32527. ypos%+=22
  32528.     ç (¬ bigrange%) …
  32529.  
  32530.   ç current%=255 …
  32531.     ypos%+=16*44+22
  32532.   Ì
  32533.     ypos%+=current%*44
  32534.   Í
  32535. Í
  32536. á
  32537. 
  32538. Ý òfontmenu
  32539. /ê next%,font$,fam$,style$,p%,submenu%,item%
  32540. )È− "MenuUtil_New",,"Font" ¸ FontMenu%
  32541.  fam$=""
  32542.  next%=0
  32543. õ
  32544.   f$=Ä40," ")
  32545. 7  È− "Font_ListFonts",,FontData%,next%,-1 ¸ ,,next%
  32546.   ç next%<>-1 …
  32547.     f$=$(FontData%)
  32548.     p%=§f$,".")
  32549.     ç p%>0 …
  32550.       style$=Áf$,p%+1)
  32551.       f$=Àf$,p%-1)
  32552.          Ì
  32553. !      style$="(Regular)"
  32554. "        Í
  32555. #$    ç (f$<>fam$) € (next%<>-1) …
  32556. $      ô new font family
  32557. %      fam$=f$
  32558. &2      È− "MenuUtil_Add",FontMenu%,fam$ ¸ item%
  32559. ',      È− "MenuUtil_New",,fam$ ¸ submenu%
  32560. (.      È− "MenuUtil_SubMenu",item%,submenu%
  32561. )        Í
  32562. *)    È− "MenuUtil_Add",submenu%,style$
  32563. +  Í
  32564. ,ý next%=-1
  32565. -á
  32566. .
  32567. /2Ý òfontsizemenu(ø xpos%,ø ypos%,window%,icon%)
  32568. 0ç icon%=48 …
  32569. 19  È− "MenuUtil_Text",item_fontsize%,ÀÃ(IcEd_Xsize),5)
  32570. 2Ì
  32571. 39  È− "MenuUtil_Text",item_fontsize%,ÀÃ(IcEd_Ysize),5)
  32572. 4Í
  32573. 5ypos%+=7*44
  32574. 6á
  32575. 7
  32576. 80Ý òupdatemenu(ø xpos%,ø ypos%,window%,icon%)
  32577. 9 ê font%
  32578. :"font%=¤iconselected(IcEdW%,41)
  32579. ;(È− "MenuUtil_Fade",item_updfg%,font%
  32580. <(È− "MenuUtil_Fade",item_updbg%,font%
  32581. =,È− "MenuUtil_Fade",item_updfont%,¬ font%
  32582. >ypos%+=22
  32583. ?á
  32584. @
  32585. A,Ý òcreatemenu(xpos%,ypos%,window%,icon%)
  32586. BLastMenu_X%=xpos%
  32587. CLastMenu_Y%=ypos%
  32588. DLastMenu_Win%=window%
  32589. ELastMenu_Icon%=icon%
  32590. FLastMenu%=-1
  32591. Gȉ window% Ê
  32592. H
  32593.   É -2
  32594. I    òmainmenu
  32595. J    LastMenu%=MainMenu%
  32596. K  É TemplW%
  32597. L(    òtemplatemenu(xpos%,ypos%,icon%)
  32598. M    LastMenu%=TemplMenu%
  32599. N  É IcEdW%
  32600. O    È‰ icon% Ê
  32601. P      É 9,10
  32602. Q        ç IcEd_Icon%=-1 …
  32603. R4          òupdatemenu(xpos%,ypos%,window%,icon%)
  32604. S#          LastMenu%=Updatemenu%
  32605. T        Í
  32606. U      É 28
  32607. V&        òicbuttonmenu(xpos%,ypos%)
  32608. W#        LastMenu%=IcButtonMenu%
  32609. X      É 31
  32610. Y!        òesgmenu(xpos%,ypos%)
  32611. Z        LastMenu%=EsgMenu%
  32612. [      É 34,37
  32613. \2        òcolourmenu(xpos%,ypos%,window%,icon%)
  32614. ]!        LastMenu%=ColourMenu%
  32615. ^      É 45,46
  32616. _        xpos%+=16
  32617. `        ypos%+=22
  32618. a        LastMenu%=FontMenu%
  32619. b      É 48,51
  32620. c4        òfontsizemenu(xpos%,ypos%,window%,icon%)
  32621. d#        LastMenu%=FontSizemenu%
  32622. e        Ë
  32623. f  É WinEdW%
  32624. g    È‰ icon% Ê
  32625. h      É 23
  32626. i'        òwinbuttonmenu(xpos%,ypos%)
  32627. j$        LastMenu%=WinButtonMenu%
  32628. k       É 27,31,35,39,43,47,51
  32629. l2        òcolourmenu(xpos%,ypos%,window%,icon%)
  32630. m!        LastMenu%=ColourMenu%
  32631. n        Ë
  32632. o  
  32633. p&    ç ¤whichtemplate(window%)>=0 …
  32634. q.      òusermenu(xpos%,ypos%,window%,icon%)
  32635. r      LastMenu%=UserMenu%
  32636. s        Í
  32637. tË
  32638. uç LastMenu%<>-1 …
  32639. v  ScrapBlk%!0=xpos%
  32640. w  ScrapBlk%!4=ypos%
  32641. x  ScrapBlk%!12=window%
  32642. y,  È− "MenuUtil_Show",LastMenu%,ScrapBlk%
  32643. zÍ
  32644. {á
  32645. |
  32646. }ô create a window-menu
  32647. ~2Ý òcreatewinmenu(window%,menuwin%,xofs%,yofs%)
  32648. &È− "Wimp_GetPointerInfo",,PtrInfo%
  32649. €DÈ− "Wimp_CreateMenu",,menuwin%,PtrInfo%!0+xofs%,PtrInfo%!4+yofs%
  32650. ŴLastMenu_Win%=window%
  32651. ŵLastMenu_Icon%=-1
  32652. ◰á
  32653. ☓
  32654. Ŷ7ô *** drag procs; for moving and resizing icons ***
  32655. ŷ
  32656. *Ý òfinishdrag(xmin%,ymin%,xmax%,ymax%)
  32657. ⇦&ê win0x%,win0y%,i%,iconblk%,inbox%
  32658. ⇨Hòsetmouseshape(0)                  : ô restore default pointer shape
  32659. ⇩"ç xmin%>xmax% … È“ xmin%,xmax%
  32660. ⇧"ç ymin%>ymax% … È“ ymin%,ymax%
  32661. …&È− "Wimp_GetPointerInfo",,PtrInfo%
  32662. ™ȉ Drag_Type% Ê
  32663. ‰%  É 0,1 : ô move / resize icon(s)
  32664. •*    ç ¤whichtemplate(PtrInfo%!12)>=0 …
  32665. ‘      WinBlk%!0=PtrInfo%!12
  32666. ’*      È− "Wimp_GetWindowInfo",,WinBlk%
  32667. ‹%      win0x%=WinBlk%!4-WinBlk%!20
  32668. ›&      win0y%=WinBlk%!16-WinBlk%!24
  32669. “I      xmin%-=win0x% : ô translate from screen coords to window coords
  32670. ”      ymin%-=win0y%
  32671. „      xmax%-=win0x%
  32672. –      ymax%-=win0y%
  32673. —O      òmoveresize(Drag_Win%,Drag_Icon%,PtrInfo%!12,xmin%,ymin%,xmax%,ymax%)
  32674. −A      òsetcaret(PtrInfo%!12,-1) : ô move focus to this window
  32675. Œ        Ì
  32676. œ-      ç DeleteOutside% € (Drag_Type%=0) …
  32677. †D        ô moved icons outside window - delete them if option set
  32678. ‡"        ã i%=0 ¸ NrSelected%-1
  32679. fi7          òdeleteicon(Drag_Win%,SelBlk%!(4*i%),1,1)
  32680. fl        í i%
  32681.         Í
  32682. ¡        Í
  32683. ¢6  É 2,3 : ô drag-select icons (with Select/Adjust)
  32684. £    WinBlk%!0=Drag_Win%
  32685. ¤(    È− "Wimp_GetWindowInfo",,WinBlk%
  32686. ¥#    win0x%=WinBlk%!4-WinBlk%!20
  32687. ¦$    win0y%=WinBlk%!16-WinBlk%!24
  32688. §    xmin%-=win0x%
  32689. ¨    xmax%-=win0x%
  32690. ©    ymin%-=win0y%
  32691. ª    ymax%-=win0y%
  32692. «>    ç (WinBlk%!88>0) € ((xmax%-xmin%)+(ymax%-ymin%)>=32) …
  32693. ¬      ã i%=0 ¸ WinBlk%!88-1
  32694. ­%        iconblk%=WinBlk%+92+i%*32
  32695. ®;        inbox%=(iconblk%!0<xmax%) € (iconblk%!8>=xmin%)
  32696. ¯E        inbox%=inbox% € (iconblk%!4<ymax%) € (iconblk%!12>=ymin%)
  32697. °)        ç inbox% € (i%<>Drag_Icon%) …
  32698. ±          ç Drag_Type%=2 …
  32699. ²+            òselecticon(Drag_Win%,i%,1)
  32700. ³          Ì
  32701. ´3            òseticonstate(Drag_Win%,i%,1<<21,0)
  32702. µ          Í
  32703. ¶        Í
  32704. ·      í i%
  32705. ¸        Í
  32706. ¹   É 4 : ô drag from save-box
  32707. º.    ç DragASprite% … È− "DragASprite_Stop"
  32708. »    Blk%!0=256
  32709. ¼    Blk%!12=0
  32710. ½    Blk%!16=1
  32711. ¾    Blk%!20=PtrInfo%!12
  32712. ¿    Blk%!24=PtrInfo%!16
  32713. À    Blk%!28=PtrInfo%!0
  32714. Á    Blk%!32=PtrInfo%!4
  32715.     È‰ Drag_Win% Ê
  32716. à     É SaveW%
  32717. Ä        ç Exporting% …
  32718. Å          Blk%!36=1
  32719. Æ          Blk%!40=&FFF
  32720. Ç        Ì
  32721. ÈG          Blk%!36=20+112*NrTemplates% : ô low estimate of file size
  32722. É          Blk%!40=&FEC
  32723. Ê        Í
  32724. Ë.        $(Blk%+44)=¤leafname($(FileName%))
  32725. Ì      É ExportW%
  32726. Í        Blk%!36=1
  32727. Π       È‰ ExportType% Ê
  32728. Ï           É 0 : Blk%!40=&FFB
  32729. Ð"          É 1,2 : Blk%!40=&FFF
  32730. Ñ        Ë
  32731. Ò0        $(Blk%+44)=¤leafname($(ExportName%))
  32732. Ó        Ë
  32733. Ô=    È− "Wimp_SendMessage",17,Blk%,PtrInfo%!12,PtrInfo%!16
  32734. Õ  É 5,6,7
  32735. ÖL    ô window move/resize/workresize - do nothing (no drag event anyway!)
  32736. ×Ë
  32737. ØDrag_Type%=-1
  32738. Ùá
  32739. Ú
  32740. Û2Ý òinitdrag(type%,window%,icon%,box0x%,box0y%)
  32741. Üê b%
  32742. ÝLÈ− "OS_Byte",161,&1C ¸ ,,b% : ô read "dragasprite" bit in CMOS RAM (RO3)
  32743. ÞDragASprite%=(b% € 2)<>0
  32744. ß ç DragASprite% € (type%=4) …
  32745. à  ScrapBlk%!0=window%
  32746. á  ScrapBlk%!4=2
  32747. â'  È− "Wimp_GetIconState",,ScrapBlk%
  32748. ãF  È− "DragASprite_Start",&A1,1,ScrapBlk%!28,DragBlk%+8,DragBlk%+24
  32749. äÌ
  32750. å"  È− "Wimp_DragBox",1,DragBlk%
  32751. æÍ
  32752. ç=Drag_Type%=type%   : ô is not the same as Wimp drag type!
  32753. èDrag_Win%=window%
  32754. éDrag_Icon%=icon%
  32755. êDDrag_Box0x%=box0x% : ô window coords of bottomleft corner of box
  32756. ëDrag_Box0y%=box0y%
  32757. ì,Drag_BoxSizex%=“(DragBlk%!16-DragBlk%!8)
  32758. í-Drag_BoxSizey%=“(DragBlk%!20-DragBlk%!12)
  32759. î&È− "Wimp_GetPointerInfo",,PtrInfo%
  32760. ïDrag_Ptrx%=PtrInfo%!0
  32761. ðDrag_Ptry%=PtrInfo%!4
  32762. ñá
  32763. ò
  32764. óÝ òabortdrag
  32765. ô%ç DragASprite% € (Drag_Type%=4) …
  32766. õ  È− "DragASprite_Stop"
  32767. öÌ
  32768. ÷  È− "Wimp_DragBox",,-1
  32769. øÍ
  32770. ù@òsetmouseshape(0)          : ô restore default pointer shape
  32771. úç Drag_Type%=7 …
  32772. û  ô restore work area size
  32773. ü  WinBlk%!0=Drag_Win%
  32774. ý'  È− "Wimp_GetWindowState",,WinBlk%
  32775. þ  WinBlk%!52=Drag_WAmaxX%
  32776. ÿ  WinBlk%!48=Drag_WAminY% *  Drag_Win%=¤redefinewindow(WinBlk%,¹) Í Drag_Type%=-1 á  Ý òstartwindowmove(window%) DragBlk%!0=window% DragBlk%!4=1 òinitdrag(5,-1,-1,0,0)     á
  32777.  !Ý òstartwindowresize(window%) DragBlk%!0=window% DragBlk%!4=2 òinitdrag(6,-1,-1,0,0) á  #Ý òstartworkarearesize(window%) WinBlk%!0=window% $È− "Wimp_GetWindowInfo",,WinBlk% LDrag_WAmaxX%=WinBlk%!52 : ô save, so it can be restored when drag aborts Drag_WAminY%=WinBlk%!48 BWinBlk%!52=2000  : ô temporarily make work area very large, so NWinBlk%!48=-2000 : ô window-resize drag that follows is not confined by it &window%=¤redefinewindow(WinBlk%,¹) òsetcaret(window%,-1) DragBlk%!0=window% DragBlk%!4=2 òinitdrag(7,window%,-1,0,0) á  +Ý òstarticondrag(button%,window%,icon%)  ȉ button% Ê !  É 1,256 "    òsel_get(window%) #    ç NrSelected%>0 … $&      òstarticonresize(window%,-1) %        Ì &6      ç icon%>=0 … òstarticonresize(window%,icon%) '        Í (  É 4,1024 )    òsel_get(window%) *    ç NrSelected%>0 … +$      òstarticonmove(window%,-1) ,        Ì -4      ç icon%>=0 … òstarticonmove(window%,icon%) .        Í /Ë 0á 1 2#Ý òstarticonmove(window%,icon%) 3+ê win0x%,win0y%,xmin%,xmax%,ymin%,ymax% 4WinBlk%!0=window% 5%È− "Wimp_GetWindowState",,WinBlk% 6win0x%=WinBlk%!4-WinBlk%!20 7 win0y%=WinBlk%!16-WinBlk%!24 8ç icon%>=0 … 96  SelBlk%!0=icon% : ô simulate selection of 1 icon :  NrSelected%=1 ;Ì <  òsel_get(window%) =Í >-òsel_box(window%,xmin%,ymin%,xmax%,ymax%) ?&È− "Wimp_GetPointerInfo",,PtrInfo% @DragBlk%!4=5 ADragBlk%!8=xmin%+win0x% BDragBlk%!12=ymin%+win0y% CDragBlk%!16=xmax%+win0x% DDragBlk%!20=ymax%+win0y% E%DragBlk%!24=DragBlk%!8-PtrInfo%!0 F&DragBlk%!28=DragBlk%!12-PtrInfo%!4 G4DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0 H4DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4 I*òinitdrag(0,window%,icon%,xmin%,ymin%) Jòsetmouseshape(1) Ká L M%Ý òstarticonresize(window%,icon%) N%ê ibxmin%,ibxmax%,ibymin%,ibymax% O%ê pbxmin%,pbxmax%,pbymin%,pbymax% P ê a,b,c Q+ê ibsizex%,ibsizey%,minsizex%,minsizey% R ê shape% S+ê win0x%,win0y%,xmin%,xmax%,ymin%,ymax% TWinBlk%!0=window% U%È− "Wimp_GetWindowState",,WinBlk% Vwin0x%=WinBlk%!4-WinBlk%!20 W win0y%=WinBlk%!16-WinBlk%!24 Xç icon%>=0 … Y6  SelBlk%!0=icon% : ô simulate selection of 1 icon Z  NrSelected%=1 [Ì \  òsel_get(window%) ]Í ^-òsel_box(window%,xmin%,ymin%,xmax%,ymax%) _Fibxmin%=win0x%+xmin% : ô for initial box, convert to screen coords `ibymin%=win0y%+ymin% aibxmax%=win0x%+xmax% bibymax%=win0y%+ymax% cibsizex%=xmax%-xmin% dibsizey%=ymax%-ymin% e3ô at first, set parent box equal to initial box fpbxmin%=ibxmin% gpbymin%=ibymin% hpbxmax%=ibxmax% ipbymax%=ibymax% jCô fixed minimum size of drag box (very difficult to calculate!) kminsizex%=4 lminsizey%=4 m-ç minsizex%>ibsizex% … minsizex%=ibsizex% n-ç minsizey%>ibsizey% … minsizey%=ibsizey% o&ô get position of window on screen pWinBlk%!0=window% q%È− "Wimp_GetWindowState",,WinBlk% rDô determine which side to drag - test mouse position relative to sô diagonals of box t2ô diagonal 1 (bottomleft-topright) y = a*x + b u3ô diagonal 2 (topleft-bottomright) y = -a*x + c va=ibsizey%/ibsizex% wb=ibymin%-a*ibxmin% xc=ibymax%+a*ibxmin% y&È− "Wimp_GetPointerInfo",,PtrInfo% z%ç PtrInfo%!4>(a*(PtrInfo%!0)+b) … {  ô above diagonal 1 |(  ç PtrInfo%!4>(-a*(PtrInfo%!0)+c) … }*    ô above diagonal 2 - drag top side ~:    ç WinBlk%!16>ibymax% … pbymax%=WinBlk%!16-ibsizey%     pbymin%+=minsizey% €    shape%=2 Ŵ?    È“ ibymin%,ibymax% : ô top side of box must be "rubber" ŵ  Ì ◰+    ô below diagonal 2 - drag left side ☓8    ç WinBlk%!4<ibxmin% … pbxmin%=WinBlk%!4+ibsizex% Ŷ    pbxmax%-=minsizex% ŷ    shape%=5 @    È“ ibxmin%,ibxmax% : ô left side of box must be "rubber" ⇦  Í ⇨Ì ⇩  ô below diagonal 1 ⇧(  ç PtrInfo%!4>(-a*(PtrInfo%!0)+c) … …,    ô above diagonal 2 - drag right side ™1    ç pbxmax%<WinBlk%!12 … pbxmax%=WinBlk%!12 ‰#    pbxmin%-=ibsizex%-minsizex% •    shape%=3 ‘  Ì ’-    ô below diagonal 2 - drag bottom side ‹/    ç pbymin%>WinBlk%!8 … pbymin%=WinBlk%!8 ›#    pbymax%+=ibsizey%-minsizey% “    shape%=4 ”  Í „Í –DragBlk%!4=6 —DragBlk%!8=ibxmin% −DragBlk%!12=ibymin% ŒDragBlk%!16=ibxmax% œDragBlk%!20=ibymax% †DragBlk%!24=pbxmin% ‡DragBlk%!28=pbymin% fiDragBlk%!32=pbxmax% flDragBlk%!36=pbymax%  *òinitdrag(1,window%,icon%,xmin%,ymin%) ¡òsetmouseshape(shape%) ¢á £ ¤Ý òdragselect(button%) ¥ç Drag_Type%<0 … ¦(  È− "Wimp_GetPointerInfo",,PtrInfo% §  DragBlk%!4=6 ¨  DragBlk%!8=PtrInfo%!0 ©  DragBlk%!12=PtrInfo%!4 ª  DragBlk%!16=PtrInfo%!0 «  DragBlk%!20=PtrInfo%!4 ¬  WinBlk%!0=PtrInfo%!12 ­'  È− "Wimp_GetWindowState",,WinBlk% ®  DragBlk%!24=WinBlk%!4 ¯  DragBlk%!28=WinBlk%!8 °  DragBlk%!32=WinBlk%!12 ±  DragBlk%!36=WinBlk%!16 ²  ç button%=1 … ³E    òinitdrag(3,PtrInfo%!12,PtrInfo%!16,0,0) : ô drag with Adjust ´  Ì µE    òinitdrag(2,PtrInfo%!12,PtrInfo%!16,0,0) : ô drag with Select ¶  Í ·Í ¸á ¹ ºÝ òstartsavedrag(window%) »ê win0x%,win0y% ¼WinBlk%!0=window% ½%È− "Wimp_GetWindowState",,WinBlk% ¾win0x%=WinBlk%!4-WinBlk%!20 ¿ win0y%=WinBlk%!16-WinBlk%!24 ÀScrapBlk%!0=window% ÁScrapBlk%!4=2 Â%È− "Wimp_GetIconState",,ScrapBlk% ÃDragBlk%!4=5 Ä!DragBlk%!8=ScrapBlk%!8+win0x% Å#DragBlk%!12=ScrapBlk%!12+win0y% Æ#DragBlk%!16=ScrapBlk%!16+win0x% Ç#DragBlk%!20=ScrapBlk%!20+win0y% È&È− "Wimp_GetPointerInfo",,PtrInfo% É%DragBlk%!24=DragBlk%!8-PtrInfo%!0 Ê&DragBlk%!28=DragBlk%!12-PtrInfo%!4 Ë4DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0 Ì4DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4 Íòinitdrag(4,window%,2,0,0) Îá Ï Ð>ô --- move or resize icons, based on new coords of box --- Ñ@Ý òmoveresize(oldwin%,icon%,newwin%,xmin%,ymin%,xmax%,ymax%) Ò)ê oldxmin%,oldymin%,oldxmax%,oldymax% Óê xscale,yscale,new%,i% Ôç icon%>=0 … Õ6  SelBlk%!0=icon% : ô simulate selection of 1 icon Ö  NrSelected%=1 ×Ì Ø  òsel_get(oldwin%) ÙÍ Úç NrSelected%>0 … Û;  òsel_box(oldwin%,oldxmin%,oldymin%,oldxmax%,oldymax%) Ü6  ô calculate scaling factors (will be 1 for move) Ý.  xscale=(xmax%-xmin%)/(oldxmax%-oldxmin%) Þ.  yscale=(ymax%-ymin%)/(oldymax%-oldymin%) ß  ã i%=0 ¸ NrSelected%-1 à    IconBlk%!0=oldwin% á!    IconBlk%!4=SelBlk%!(4*i%) â(    È− "Wimp_GetIconState",,IconBlk% ã<    IconBlk%!8=xmin%+¨((IconBlk%!8-oldxmin%)*xscale+0.5) ä>    IconBlk%!12=ymin%+¨((IconBlk%!12-oldymin%)*yscale+0.5) å>    IconBlk%!16=xmin%+¨((IconBlk%!16-oldxmin%)*xscale+0.5) æ>    IconBlk%!20=ymin%+¨((IconBlk%!20-oldymin%)*yscale+0.5) ç    ç oldwin%=newwin% … è(      ô move / resize in same window é=      new%=¤redefineicon(oldwin%,SelBlk%!(4*i%),IconBlk%) ê        Ì ë3      ô move to other other window = copy icons ì      IconBlk%!4=newwin% íH      òiconrealloc(IconBlk%+24,IconBlk%+28) : ô copy indirected data î&      new%=¤createicon(IconBlk%+4) ï        Í ð
  32778.   í i% ñÍ òá ó ô5ô *** procs for dialogue and reporting errors *** õ öÝ ¤errbox(err$,boxes%) ÷ErrBlk%!0=0 ø$(ErrBlk%+4)=err$+½0 ù8È− "Wimp_ReportError",ErrBlk%,boxes%,Appl$ ¸ ,click% ú=(click%=1) û üÝ òerror(forcequit%) ýê button% þê Ŷ ÿ!î Ŷ ê È− "Wimp_CloseDown" : à È− "Hourglass_Smash" ç forcequit% …   button%=2 Ì   button%=3 Í 2ç (¬ ¤errbox(ö$+" (line "+Ã(fi)+")",button%)) …   È− "Wimp_CloseDown"   à     Í
  32779. á  Ý òcomplain(msg$) ê dummy% dummy%=¤errbox(msg$,17) á  Ý òdialogue(no%,arg1$) #ê b1$,b2$,b3$,mask%,xpos%,ypos% 
  32780. b1$="" 
  32781. b2$="" 
  32782. b3$=""  ȉ no% Ê       É 0 '    $Dial_Msg%=¤msg_lookup0("MOD0")      b1$=¤msg_lookup0("SAVE")      b2$=¤msg_lookup0("DCRD")      b3$=¤msg_lookup0("CANC")       É 1 '    $Dial_Msg%=¤msg_lookup0("MOD0")      b1$=¤msg_lookup0("DALL")      b3$=¤msg_lookup0("CANC")        É 2 !'    $Dial_Msg%=¤msg_lookup0("MOD0") "     b1$=¤msg_lookup0("LNEW") #     b3$=¤msg_lookup0("CANC") $      É 3 %-    $Dial_Msg%=¤msg_lookup1("NORM",arg1$) &    b2$=¤msg_lookup0("OK") '      É 4 ('    $Dial_Msg%=¤msg_lookup0("NUPD") )    b2$=¤msg_lookup0("OK") *      É 5 +'    $Dial_Msg%=¤msg_lookup0("NOSH") ,    b2$=¤msg_lookup0("OK") -      É 6 .'    $Dial_Msg%=¤msg_lookup0("NOCH") /    b2$=¤msg_lookup0("OK") 0      É 7 1-    $Dial_Msg%=¤msg_lookup1("TIDY",arg1$) 2    b2$=¤msg_lookup0("OK") 3      É 8 4'    $Dial_Msg%=¤msg_lookup0("MOD0") 5     b1$=¤msg_lookup0("DCRD") 6     b3$=¤msg_lookup0("CANC") 7      É 9 8'    $Dial_Msg%=¤msg_lookup0("NSEL") 9    b2$=¤msg_lookup0("OK") :
  32783.   É 10 ;'    $Dial_Msg%=¤msg_lookup0("NFRM") <    b2$=¤msg_lookup0("OK") =Ë >$Dial_Button1%=b1$ ?$Dial_Button2%=b2$ @$Dial_Button3%=b3$ A)mask%=(1<<2)+(1<<5)+(1<<22)+(&FF<<24) Bç ©(b1$)=0 … C!  ô grey colour -> invisible% D6  òseticonstate0(DialW%,1,(1<<22)+(&11<<24),mask%) EÌ F5  òseticonstate0(DialW%,1,Dial_ButtonCol1%,mask%) GÍ Hç ©(b2$)=0 … I6  òseticonstate0(DialW%,2,(1<<22)+(&11<<24),mask%) JÌ K5  òseticonstate0(DialW%,2,Dial_ButtonCol2%,mask%) LÍ Mç ©(b3$)=0 … N6  òseticonstate0(DialW%,3,(1<<22)+(&11<<24),mask%) OÌ P5  òseticonstate0(DialW%,3,Dial_ButtonCol3%,mask%) QÍ RScrapBlk%!0=DialW% S'È− "Wimp_GetWindowState",,ScrapBlk% T8xpos%=(ScreenSize_X%-(ScrapBlk%!12-ScrapBlk%!4)) Ŵ 2 U8ypos%=(ScreenSize_Y%+(ScrapBlk%!16-ScrapBlk%!8)) Ŵ 2 V,È− "Wimp_CreateMenu",,DialW%,xpos%,ypos% WLastDialogue%=no% Xá Y Zô *** heap procs *** [ \Ý òheap_init ]>Heap%=› : ô heap starts just after end of allocated memory ^&È− "OS_ReadMemMapInfo" ¸ PageSize% _Eô enlarge wimpslot (1 page) and create private heap in new memory `SlotSize%=Heap%-&8000 a9È− "Wimp_SlotSize",SlotSize%+PageSize%,-1 ¸ SlotSize% bHeapEnd%=SlotSize%+&8000 c8ç HeapEnd%<=Heap% … Ŷ 0,"Can't claim space for heap" d(È− "OS_Heap",0,Heap%,,HeapEnd%-Heap% eá f gÝ ¤heap_get(size%) h(ê maxfree%,nrpages%,oldheapend%,ptr% i%È− "OS_Heap",1,Heap% ¸ ,,maxfree% jç size%>maxfree% … kJ  ô largest free block is too small - try to enlarge wimpslot and heap lC  nrpages%=1+(size% Ŵ PageSize%) : ô required # pages of memory mD  È− "Wimp_SlotSize",SlotSize%+nrpages%*PageSize%,-1 ¸ SlotSize% n  oldheapend%=HeapEnd% o  HeapEnd%=SlotSize%+&8000 p0  È− "OS_Heap",5,Heap%,,HeapEnd%-oldheapend% qB  È− "OS_Heap",1,Heap% ¸ ,,maxfree% : ô do we have enough now? rÍ sç size%>maxfree% … t%  òcomplain(¤msg_lookup0("NOHP")) u  ptr%=-1 vÌ w*  È− "OS_Heap",2,Heap%,,size% ¸ ,,ptr% xÍ y    =ptr% z {Ý òheap_release(ptr%) |ê maxfree%,nrpages%,flg% }È− "OS_Heap",3,Heap%,ptr% ~%È− "OS_Heap",1,Heap% ¸ ,,maxfree% ç maxfree%>PageSize% … €A  ô more than 1 page free - try to shrink heap (page by page) Ŵ,  nrpages%=0 : ô # pages of memory freed ŵ  õ ◰1    È− "XOS_Heap",5,Heap%,,-PageSize% ¸ ;flg% ☓    ç (flg% € 1)=0 … Ŷ      nrpages%+=1 ŷ        Í   ý (flg% € 1)<>0 ⇦  ç nrpages%>0 … ⇨4    ô successfully shrunk heap - shrink WimpSlot ⇩F    È− "Wimp_SlotSize",SlotSize%-nrpages%*PageSize%,-1 ¸ SlotSize% ⇧     HeapEnd%=SlotSize%+&8000 …  Í ™5  È− "OS_Heap",5,Heap%,,(HeapEnd%-Heap%)-Heap%!12 ‰Í •á ‘ ’6ô *** service procs; interface with SWIs, etc. *** ‹ ›Mô --- change a variable with given difference, but keep inside bounds --- “-Ý ¤changevar(ø var%,diff%,up%,low%,high%) ”ê oldval% „oldval%=var% – ç up% … —  var%+=diff% −Ì Œ  var%-=diff% œÍ †ç var%>high% … var%=high% ‡ç var%<low% … var%=low% fiô return TRUE if changed fl=(oldval%<>var%)    ¡Ý ¤readvarval(var$) ¢
  32784. ê len% £4È− "OS_ReadVarVal",var$,ScrapBlk%,256,0 ¸ ,,len% ¤ScrapBlk%?len%=13 ¥=$(ScrapBlk%) ¦ §>ô --- return name of icon to display in browser window --- ¨ Ý ¤windowicon(wflags%,open%) ©$ê sname$,tbar%,hscroll%,vscroll% ªç wflags% € (1<<31) … «!  tbar%=(wflags% € (1<<26))>0 ¬$  hscroll%=(wflags% € (1<<30))>0 ­$  vscroll%=(wflags% € (1<<28))>0 ®Ì ¯   tbar%=(wflags% € (1<<0))>0 °#  hscroll%=(wflags% € (1<<3))>0 ±#  vscroll%=(wflags% € (1<<2))>0 ²Í ³sname$="Swin_" ´ç tbar% … sname$+="t" µç hscroll% … sname$+="h" ¶ç vscroll% … sname$+="v" ·ç open% … sname$+="o" ¸ =sname$ ¹ ºÝ ¤modevar(mode%,v%) »
  32785. ê val% ¼.È− "OS_ReadModeVariable",mode%,v% ¸ ,,val% ½    =val% ¾ ¿Ý òreadscreenvars À#ê xeig%,yeig%,xpixels%,ypixels% Áxeig%=¤modevar(-1,4) Âyeig%=¤modevar(-1,5) Ãxpixels%=¤modevar(-1,11) Äypixels%=¤modevar(-1,12) Å9PixToOS_X%=1<<xeig% : ô # OS units that 1 pixel takes ÆPixToOS_Y%=1<<yeig% ÇEScreenSize_X%=(xpixels%+1)*PixToOS_X% : ô screen size in OS units È)ScreenSize_Y%=(ypixels%+1)*PixToOS_Y% É8ô grid size must be multiple of # OS units per pixel Êç Grid_SizeX%<PixToOS_X% … Ë  Grid_SizeX%=PixToOS_X% ÌÌ Í-  Grid_SizeX%-=(Grid_SizeX% ◰ PixToOS_X%) ÎÍ Ïç Grid_SizeY%<PixToOS_Y% … Р Grid_SizeY%=PixToOS_Y% ÑÌ Ò-  Grid_SizeY%-=(Grid_SizeY% ◰ PixToOS_Y%) ÓÍ Ô#òseticontext(28,Ã(Grid_SizeX%)) Õ#òseticontext(29,Ã(Grid_SizeY%)) Öç Grid_PosX%<PixToOS_X% … ×  Grid_PosX%=PixToOS_X% ØÌ Ù+  Grid_PosX%-=(Grid_PosX% ◰ PixToOS_X%) ÚÍ Ûç Grid_PosY%<PixToOS_Y% … Ü  Grid_PosY%=PixToOS_Y% ÝÌ Þ+  Grid_PosY%-=(Grid_PosY% ◰ PixToOS_Y%) ßÍ à"òseticontext(30,Ã(Grid_PosX%)) á"òseticontext(31,Ã(Grid_PosY%)) âDTemplW_MaxCol%=(ScreenSize_X%-100-IcInfo_Width%) Ŵ TemplW_IconX% ãá ä åÝ òsetcaret(window%,icon%) æê l% çç icon%>=0 … è  ScrapBlk%!0=window% é  ScrapBlk%!4=icon% ê'  È− "Wimp_GetIconState",,ScrapBlk% ë  l%=©($(ScrapBlk%!28)) ì6  È− "Wimp_SetCaretPosition",window%,icon%,,,-1,l% íÌ î  ô invisible caret ï5  È− "Wimp_SetCaretPosition",window%,-1,0,0,1<<25 ðÍ ñá ò óÝ òsetmouseshape(i%) ôê n$,xoff%,yoff% õ ȉ i% Ê ö#  É 0 : ô default pointer shape ÷    n$="ptr_default" ø    xoff%=0 ù    yoff%=0 ú+  É 1 : ô hand pointer for moving icons û    n$="ptr_hand" ü    xoff%=7 ý    yoff%=6 þ;  É 2 : ô pointer for resizing icons, dragging top side ÿ    n$="ptr_sizet"    xoff%=7    yoff%=6=  É 3 : ô pointer for resizing icons, dragging right side    n$="ptr_sizer"    xoff%=5    yoff%=5>  É 4 : ô pointer for resizing icons, dragging bottom side    n$="ptr_sizeb"    xoff%=7        yoff%=4
  32786. <  É 5 : ô pointer for resizing icons, dragging left side     n$="ptr_sizel"     xoff%=10    yoff%=5ËMouse_Ptt%!0=&03020100 ç i%=0 …;  È− "Wimp_SpriteOp",36,,n$,&2,xoff%,yoff%,0,Mouse_Ptt%ÌI  È− "OS_SpriteOp",&100+36,SysSprites%,n$,&2,xoff%,yoff%,0,Mouse_Ptt%ÍMouseShape%=i%áFô --- re-allocate indirected icon data and increase font count ---"Ý òiconrealloc(flagptr%,data%)ê flags%,s$,s%,len%flags%=flagptr%!0ç (flags% € &800100)=&100 …  s$=¤str(data%!0)?  len%=data%!8              : ô don't allocate actual size!A  ç len%>256 … len%=256 : ô Basic can't handle longer strings   s%=¤heap_get(len%)!  ç s%>0 …"    $(s%)=Às$,len%-1)#    data%!0=s%$&    ç (flags% € 1) € (data%!4>0) …%)      ô re-allocate validation string&      s$=¤str(data%!4)'      s%=¤heap_get(© s$+1)(      ç s%>0 …)        $(s%)=s$*        data%!4=s%+       Ì,        data%!4=-1-       Í.        Í/  Ì0G    ô allocation failed - make non-indirected and store first chars1*    flagptr%!0=flagptr%!0 € (¬ (1<<8))2    $data%=Às$,11)3  Í4Í5ç (flags% € &800040)=&40 …6!  FontUsage%((flags%)>>24)+=17Í8á9:Bô --- release indirected icon data and decrease font count ---; Ý òiconrelease(flags%,data%)<ç (flags% € &800100)=&100 …=  òheap_release(data%!0)>(  ç (flags% € 1) € (data%!(4)<>-1) …?#    ô release validation string@    òheap_release(data%!4)A  ÍBÍCç (flags% € &800040)=&40 …D  òfont_lose(flags%>>24)EÍFáGHô --- open a window ---I+ô       pos% = 0 -> at current positionJ*ô              1 -> centered to screenK4ô              2 -> centered unless already openL=ô              3 -> in topleft corner unless already openM>ô              4 -> in topright corner unless already openNÝ òopenwindow(handle%,pos%)Oê notopen%,cx%,cy%,dx%,dy%PScrapBlk%!0=handle%Q'È− "Wimp_GetWindowState",,ScrapBlk%R)notopen%=((ScrapBlk%!32 € (1<<16))=0)S    dx%=0T    dy%=0Uȉ pos% ÊV   É 1,2W    ç (pos%=1) ☓ notopen% …X#      ô center window to screenY      cx%=ScreenSize_X% Ŵ 2Z      cy%=ScreenSize_Y% Ŵ 2[0      dx%=cx%-(ScrapBlk%!12+ScrapBlk%!4) Ŵ 2\0      dy%=cy%-(ScrapBlk%!16+ScrapBlk%!8) Ŵ 2]        Í^      É 3_    ç notopen% …`      dx%=-ScrapBlk%!4a(      dy%=ScreenSize_Y%-ScrapBlk%!16b        Íc      É 4d    ç notopen% …e(      dx%=ScreenSize_X%-ScrapBlk%!12f(      dy%=ScreenSize_Y%-ScrapBlk%!16g        ÍhËiScrapBlk%!4=ScrapBlk%!4+dx%jScrapBlk%!8=ScrapBlk%!8+dy%k!ScrapBlk%!12=ScrapBlk%!12+dx%l!ScrapBlk%!16=ScrapBlk%!16+dy%mScrapBlk%!28=-1n#È− "Wimp_OpenWindow",,ScrapBlk%oç handle%=OptionsW% …p6  òopenpane(OptPaneW%,-1,ScrapBlk%!4,ScrapBlk%!16)qÍrástÝ òclosewindow(handle%)uê i%vScrapBlk%!0=handle%w$È− "Wimp_CloseWindow",,ScrapBlk%xȉ handle% Êy  É TemplW%z    ScrapBlk%!0=IcInfoW%{(    È− "Wimp_CloseWindow",,ScrapBlk%|    ScrapBlk%!0=PaletteW%}(    È− "Wimp_CloseWindow",,ScrapBlk%~    ç NrTemplates%>0 …!      ã i%=0 ¸ NrTemplates%-1€        òclosetemplate(i%)Ŵ      í i%ŵ        Í◰  É OptionsW%☓    ScrapBlk%!0=OptPaneW%Ŷ(    È− "Wimp_CloseWindow",,ScrapBlk%ŷËá⇦⇨.Ý òopenpane(handle%,behind%,pxmin%,pymax%)⇩ê dx%,dy%⇧ȉ handle% Ê…  É OptPaneW%™A    dx%=16  : ô distance from topleft corner of parent window‰    dy%=-16•Ë‘ScrapBlk%!0=handle%’'È− "Wimp_GetWindowState",,ScrapBlk%‹6ScrapBlk%!12=pxmin%+dx%+(ScrapBlk%!12-ScrapBlk%!4)›5ScrapBlk%!8=pymax%+dy%-(ScrapBlk%!16-ScrapBlk%!8)“ScrapBlk%!4=pxmin%+dx%”ScrapBlk%!16=pymax%+dy%„ScrapBlk%!28=behind%–#È− "Wimp_OpenWindow",,ScrapBlk%—á−ŒÝ òopentemplate(no%)œç no%>=0 …†&  ScrapBlk%!0=TemplHandle%!(4*no%)‡)  È− "Wimp_GetWindowState",,ScrapBlk%fi$  ç (ScrapBlk%!32 € (1<<16))=0 …fl    ScrapBlk%!28=-1 '    È− "Wimp_OpenWindow",,ScrapBlk%¡<    $(TemplNames%+28*no%+14)=¤windowicon(ScrapBlk%!32,1)¢'    òseticonstate0(TemplW%,no%,0,0)£8    ç TemplatesOpen%=0 … PollMask%=PollMask% € (¬ 1)¤    TemplatesOpen%+=1¥*    òsetcaret(TemplHandle%!(4*no%),-1)¦  Í§ͨᩪݠòclosetemplate(no%)«ç no%>=0 …¬&  ScrapBlk%!0=TemplHandle%!(4*no%)­)  È− "Wimp_GetWindowState",,ScrapBlk%®$  ç (ScrapBlk%!32 € (1<<16))>0 …¯(    È− "Wimp_CloseWindow",,ScrapBlk%°+    È− "Wimp_GetWindowState",,ScrapBlk%±<    $(TemplNames%+28*no%+14)=¤windowicon(ScrapBlk%!32,0)²'    òseticonstate0(TemplW%,no%,0,0)³?    ç TemplHandle%!(4*no%)=IcEd_Win% … òclosewindow(IcEdW%)´A    ç TemplHandle%!(4*no%)=WinEd_Win% … òclosewindow(WinEdW%)µ    TemplatesOpen%-=1¶4    ç TemplatesOpen%=0 … PollMask%=PollMask% ☓ 1·  Í¸͹ẻ)ô --- convert string to lowercase ---¼Ý ¤locase(s$)½ê i%¾ã i%=1 ¸ ©(s$)¿  a%=–(Ás$,i%,1))À  ç (a%>=65)€(a%<=90) …Á    Ás$,i%,1)=½(a%+32)  ÍÃí i%Ä=s$ÅÆ)ô --- convert string to uppercase ---ÇÝ ¤upcase(s$)Èê i%Éã i%=1 ¸ ©(s$)Ê  a%=–(Ás$,i%,1))Ë  ç (a%>=97)€(a%<=122) …Ì    Ás$,i%,1)=½(a%-32)Í  ÍÎí i%Ï=s$ÐÑ1ô --- split off leaf name from a filename ---ÒÝ ¤leafname(f$)Ó ê p%,q%Ôq%=0ÕõÖ  p%=q%+1×  q%=§f$,".",p%)Ø
  32787. ý q%=0Ù =Áf$,p%)ÚÛ6ô --- split off directory name from a filename ---ÜÝ ¤dirname(f$)Ý ê p%,q%Þp%=1ßõà q%=§f$,".",p%)á ç q% > 0 … p%=q%+1â
  32788. ý q%=0ã=Àf$,p%-2)äåDô --- get the control-terminated string at the given address ---æÝ ¤str(s%)ç ê i%,n$èi%=0éÈ” (s%?i%>31) € (i%<255)ê  n$+=½(s%?i%)ë   i%+=1ìÎí=n$îïÝ ¤fileexists(f$)ð ê type%ñ type%=0òç ©(f$)>0 …ó   È− "OS_File",17,f$ ¸ type%ôÍõ=(type%=1)ö÷1ô --- set icon state in a template window ---ø,Ý òseticonstate(window%,icon%,eor%,clr%)ùê oldflags%,newflags%úScrapBlk%!0=window%ûScrapBlk%!4=icon%ü%ô check if font usage is changingý%È− "Wimp_GetIconState",,ScrapBlk%þoldflags%=ScrapBlk%!24ÿ)newflags%=(oldflags% € ¬ clr%) ŵ eor%!ç (newflags% € &800040)=&40 …"  FontUsage%(newflags%>>24)+=1Í!ç (oldflags% € &800040)=&40 …  òfont_lose(oldflags%>>24)ÍScrapBlk%!8=eor%ScrapBlk%!12=clr%ç Support%=2 …    % È− "AEH_SetIconState",,ScrapBlk%
  32789. Ì & È− "Wimp_SetIconState",,ScrapBlk% Íá<ô --- set icon state in one of TemplEd's own windows ----Ý òseticonstate0(window%,icon%,eor%,clr%)ê oldflags%,newflags%ScrapBlk%!0=window%ScrapBlk%!4=icon%ScrapBlk%!8=eor%ScrapBlk%!12=clr%%È− "Wimp_SetIconState",,ScrapBlk%á#Ý òselecticon(window%,icon%,f%)ê oldflag%ScrapBlk%!0=window%ScrapBlk%!4=icon%%È− "Wimp_GetIconState",,ScrapBlk%%oldflag%=(ScrapBlk%!24) € (1<<21)
  32790. ç f% …   ScrapBlk%!8=1<<21!Ì"  ScrapBlk%!8=0#Í$ScrapBlk%!12=1<<21%ç oldflag%<>ScrapBlk%!8 …&  ô only set when changing'  ç Support%=2 …('   È− "AEH_SetIconState",,ScrapBlk%)  Ì*(   È− "Wimp_SetIconState",,ScrapBlk%+  Í,Í-á./"Ý ¤iconselected(window%,icon%)0ScrapBlk%!0=window%1ScrapBlk%!4=icon%2%È− "Wimp_GetIconState",,ScrapBlk%3#=((ScrapBlk%!24) € (1<<21)) > 045"Ý òshadeicon(window%,icon%,f%)6ê oldflag%7ScrapBlk%!0=window%8ScrapBlk%!4=icon%9%È− "Wimp_GetIconState",,ScrapBlk%:%oldflag%=(ScrapBlk%!24) € (1<<22);
  32791. ç f% …<  ScrapBlk%!8=(1<<22)=Ì>  ScrapBlk%!8=0?Í@ScrapBlk%!12=1<<22Aç oldflag%<>ScrapBlk%!8 …B  ô only set when changingC  ç Support%=2 …D'   È− "AEH_SetIconState",,ScrapBlk%E  ÌF(   È− "Wimp_SetIconState",,ScrapBlk%G  ÍHÍIáJK Ý ¤iconshaded(window%,icon%)LScrapBlk%!0=window%MScrapBlk%!4=icon%N%È− "Wimp_GetIconState",,ScrapBlk%O#=((ScrapBlk%!24) € (1<<22)) > 0PQPô --- store pointer to indirected text icon (for use in PROCseticontext) ---R'Ý òlinkicontext(index%,wbuf%,icon%)S,IconText%(index%)=wbuf%!(92+icon%*32+20)T!IconTextWhdl%(index%)=wbuf%!0UIconTextIhdl%(index%)=icon%VáWX Ý òseticontext(index%,text$)Y$(IconText%(index%))=text$ZCòseticonstate0(IconTextWhdl%(index%),IconTextIhdl%(index%),0,0)[á\]8ô --- store pointer to text of colour-select-box ---^'Ý òlinkcseltext(index%,wbuf%,icon%)_,CselText%(index%)=wbuf%!(92+icon%*32+20)`!CselTextWhdl%(index%)=wbuf%!0aCselTextIhdl%(index%)=icon%bácd4ô --- set colour number in colour-select-box ---e#Ý òsetcolourbox(index%,colour%)fê c$,boxcol%gc$=Ã(colour%)hç colour%=&FF … c$="--"i$(CselText%(index%))=c$jboxcol%=&07kç colour%<16 …l2  boxcol%=(colour%<<4)+InverseColour%(colour%)mÍnboxcol%=boxcol%<<24oOòseticonstate0(CselTextWhdl%(index%),CselTextIhdl%(index%),boxcol%,&FF<<24)páqr"ô --- change colour number ---s<Ý òchangecolourbox(index%,ø colour%,diff%,up%,bigrange%)tê newcolour%u ç up% …v  newcolour%=colour%+diff%wÌx  newcolour%=colour%-diff%yÍz:ç (newcolour% € &FF)=255 … newcolour%=newcolour%+diff%{ç bigrange% …|E  newcolour%=newcolour% € &FF        : ô colours range from 0-255}Ì~B  ç newcolour%<0 … newcolour%=0    : ô colours range from 0-15%  ç newcolour%>&F … newcolour%=&F€ÍŴç newcolour%<>colour% …ŵ  colour%=newcolour%◰#  òsetcolourbox(index%,colour%)☓ÍŶáŷHô --- find number of template corresponding with a window handle ---⇦Fô returns -1 if not a user template, -2 if it's the palette window⇨Ý ¤whichtemplate(handle%)⇩ê i%⇧i%=0…9È” (TemplHandle%!(4*i%)<>handle%) € (i%<NrTemplates%)™   i%+=1‰Î•ç i%=NrTemplates% …‘  ç handle%=PaletteW% …’    i%=-2‹  Ì›;    i%=-1 : ô handle does not belong to template window“  Í”Í„=i%–—+Ý òsettitlebar(handle%,textptr%,title$)−ê xmax%,ymax%Œ$(textptr%)=title$œScrapBlk%!0=handle%†)È− "Wimp_GetWindowOutline",,ScrapBlk%‡xmax%=ScrapBlk%!12fiymax%=ScrapBlk%!16fl'È− "Wimp_GetWindowState",,ScrapBlk%  ç (ScrapBlk%!32 € (1<<16)) …¡C  È− "Wimp_ForceRedraw",-1,ScrapBlk%!4,ScrapBlk%!16,xmax%,ymax%¢Í£á¤¥3ô --- delete all selected icons in a window ---¦&Ý òdeleteiconsel(window%,default%)§ê i%¨òsel_get(window%)©ç NrSelected%>0 …ª  ã i%=0 ¸ NrSelected%-1«/    òdeleteicon(window%,SelBlk%!(4*i%),1,1)¬
  32792.   í i%­Ì®5  ô nothing selected - delete icon no. <default%>¯7  ç default%>=0 … òdeleteicon(window%,default%,1,1)°Í±NrSelected%=0²á³´2Ý òdeleteicon(win%,icon%,release%,adjustvars%)µScrapBlk%!0=win%¶ScrapBlk%!4=icon%·%È− "Wimp_GetIconState",,ScrapBlk%¸ç release% …¹-  òiconrelease(ScrapBlk%!24,ScrapBlk%+28)ºÍ»#È− "Wimp_DeleteIcon",,ScrapBlk%¼]È− "Wimp_ForceRedraw",win%,ScrapBlk%!8-20,ScrapBlk%!12-20,ScrapBlk%!16+20,ScrapBlk%!20+20½ç adjustvars% …¾/  ç (win%=IcEd_Win%) € (icon%=IcEd_Icon%) …¿    IcEd_Icon%=-1000À  ÍÁ7  ç (win%=LastMenu_Win%) € (icon%=LastMenu_Icon%) …    LastMenu_Icon%=-1à ÍÄÍÅòsetchanged(¹)ÆáÇÈÝ ¤createicon(blk%)É)ê dxmin%,dymin%,dxmax%,dymax%,handle%Êç Grid_PosLock% …Ë)  dxmin%=¤griddiff(blk%!4,Grid_PosX%)Ì)  dymin%=¤griddiff(blk%!8,Grid_PosY%)Í  blk%!4=blk%!4-dxmin%Π blk%!8=blk%!8-dymin%Ï  blk%!12=blk%!12-dxmin%Р blk%!16=blk%!16-dymin%ÑÍÒç Grid_SizeLock% …Ó*  dxmin%=¤griddiff(blk%!4,Grid_SizeX%)Ô*  dymin%=¤griddiff(blk%!8,Grid_SizeY%)Õ+  dxmax%=¤griddiff(blk%!12,Grid_SizeX%)Ö+  dymax%=¤griddiff(blk%!16,Grid_SizeY%)×ÌØJ  dxmin%=¤griddiff(blk%!4,PixToOS_X%): ô round coords to screen pixelsÙ)  dymin%=¤griddiff(blk%!8,PixToOS_Y%)Ú*  dxmax%=¤griddiff(blk%!12,PixToOS_X%)Û*  dymax%=¤griddiff(blk%!16,PixToOS_Y%)ÜÍÝblk%!4=blk%!4-dxmin%Þblk%!8=blk%!8-dymin%ßblk%!12=blk%!12-dxmax%àblk%!16=blk%!16-dymax%á(ç blk%!4>=blk%!12 … blk%!12=blk%!4+4â(ç blk%!8>=blk%!16 … blk%!16=blk%!8+4ã(È− "Wimp_CreateIcon",,blk% ¸ handle%äJÈ− "Wimp_ForceRedraw",blk%!0,blk%!4-12,blk%!8-12,blk%!12+12,blk%!16+12å9ç handle%>MaxIcons% … òcomplain(¤msg_lookup0("MICX"))æòsetchanged(¹)ç =handle%èé7ô --- calculate distance from nearest gridpoint ---êÝ ¤griddiff(c%,gridsize%)ë ê diff%ìdiff%=c% ◰ gridsize%í ç c%<0 …î2  ç (-diff%)>(gridsize%>>1) … diff%+=gridsize%ïÌð/  ç diff%>(gridsize%>>1) … diff%-=gridsize%ñÍò
  32793. =diff%óô1ô --- copy all selected icons in a window ---õ(Ý òcopyiconsel(window%,ø icon%,dir%)ö0ê i%,xmin%,ymin%,xmax%,ymax%,dx%,dy%,handle%÷òsel_get(window%)ø$ç (NrSelected%=0) € (icon%>=0) …ù  SelBlk%!0=icon%ú  NrSelected%=1ûÍü-òsel_box(window%,xmin%,ymin%,xmax%,ymax%)ýȉ dir% ÊþJ  É 0 : dx%=16 : dy%=-16        : ô fixed distance (a bit lower+right)ÿ/  É 1 : dx%=0 : dy%=ymax%-ymin% : ô copy up1  É 2 : dx%=0 : dy%=ymin%-ymax% : ô copy down1  É 3 : dx%=xmin%-xmax% : dy%=0 : ô copy left2  É 4 : dx%=xmax%-xmin% : dy%=0 : ô copy rightËç NrSelected%>0 …  ã i%=0 ¸ NrSelected%-1    ô copy icon    ScrapBlk%!0=window%"    ScrapBlk%!4=SelBlk%!(4*i%)    )    È− "Wimp_GetIconState",,ScrapBlk%
  32794.     ScrapBlk%!4=window% #    ScrapBlk%!8=ScrapBlk%!8+dx% %    ScrapBlk%!12=ScrapBlk%!12+dy%%    ScrapBlk%!16=ScrapBlk%!16+dx%%    ScrapBlk%!20=ScrapBlk%!20+dy%H    òiconrealloc(ScrapBlk%+24,ScrapBlk%+28) : ô copy indirected data(    handle%=¤createicon(ScrapBlk%+4)5    ô deselect originals - copies remain selected-    òselecticon(window%,SelBlk%!(4*i%),0)
  32795.   í i%   ç icon%>=0 … icon%=handle%  òsel_get(window%)Íá4ô --- replace window definition with new one ---(Ý ¤redefinewindow(wbuf%,setchanged%)ê oldhandle%,no%,wasopen%,hadcaret%,newhandle%oldhandle%=wbuf%!0)È− "Wimp_GetCaretPosition",,ScrapBlk%&hadcaret%=(ScrapBlk%!0=oldhandle%)"no%=¤whichtemplate(oldhandle%) ScrapBlk%!0=oldhandle%!'È− "Wimp_GetWindowState",,ScrapBlk%"%wasopen%=(ScrapBlk%!32) € (1<<16)#!È− "Wimp_DeleteWindow",,wbuf%$0È− "Wimp_CreateWindow",,wbuf%+4 ¸ newhandle%%wbuf%!0=newhandle%&ç no%<>-1 …'%  TemplHandle%!(4*no%)=newhandle%(Í)ç oldhandle%=IcEd_Win% …*  IcEd_Win%=newhandle%+  ç IcEd_Icon%>=0 …,3    IcEd_Icon%=-1000 : ô invalidate icon handle-  Í.Í/3ç oldhandle%=WinEd_Win% … WinEd_Win%=newhandle%0 ç oldhandle%=LastMenu_Win% …1  LastMenu_Win%=newhandle%2  LastMenu_Icon%=-13Í4ç wasopen% …5!  È− "Wimp_OpenWindow",,wbuf%6Í7ç hadcaret% …88  È− "Wimp_SetCaretPosition",newhandle%,-1,0,0,1<<259Í:;$(TemplNames%+28*no%+14)=¤windowicon(wbuf%!32,wasopen%);#òseticonstate0(TemplW%,no%,0,0)<"ç setchanged% … òsetchanged(¹)==newhandle%>?2ô --- replace icon definition with new one ---@'Ý ¤redefineicon(window%,icon%,blk%)Aê newicon%B"òdeleteicon(window%,icon%,0,0)CKô new icon data must start at blk%+8 (as returned by Wimp_GetIconState)Dblk%!4=window%E newicon%=¤createicon(blk%+4)F0ç (window%=IcEd_Win%) € (icon%=IcEd_Icon%) …G  IcEd_Icon%=newicon%HÍI8ç (window%=LastMenu_Win%) € (icon%=LastMenu_Icon%) …J  LastMenu_Icon%=newicon%KÍL=newicon%MNBô --- renumber an icon; new number is equal to NextIconNr% ---O$Ý òrenumbericon(ø window%,icon%)Pê i%,ip1%,ip2%,temp%QWinBlk%!0=window%R$È− "Wimp_GetWindowInfo",,WinBlk%S,ç icon%>=WinBlk%!88 … icon%=WinBlk%!88-1T8ç NextIconNr%>=WinBlk%!88 … NextIconNr%=WinBlk%!88-1Uip1%=WinBlk%+92+icon%*32V"ip2%=WinBlk%+92+NextIconNr%*32W0ô swap icon data blocks in window definitionXã i%=0 ¸ 28 ⇦ 4Y  temp%=ip1%!i%Z  ip1%!i%=ip2%!i%[  ip2%!i%=temp%\í i%]&window%=¤redefinewindow(WinBlk%,1)^á_`Gô --- renumber selected icons, ordering based on topleft coords ---a!Ý òrenumbericonsel(ø window%)bê i%,j%,f%,l%còsel_get(window%)d"òsel_sort(window%,1,1,0,0,0,1)e>È− "Wimp_WhichIcon",window%,SelBlk2%,(1<<21)+(1<<23),1<<21fWinBlk%!0=window%g$È− "Wimp_GetWindowInfo",,WinBlk%hBf%=NextIconNr%               : ô first number of new numberingi0l%=NextIconNr%+NrSelected%-1 : ô last numberjç l%>=WinBlk%!88 …kK  l%=WinBlk%!88-1            : ô make sure new numbers are within rangel  f%=l%-(NrSelected%-1)mÍnj%=0oã i%=0 ¸ NrSelected%-1p:  ô replace icon with i%-th icon from sorted selectionq8  òreplaceicon(WinBlk%,f%+i%,window%,SelBlk%!(4*i%))r(  ç ¬ ¤iconselected(window%,f%+i%) …sM    ô data of unselected icon overwritten - find new number for this icont8    È” (SelBlk2%!(4*j%)>=f%) € (SelBlk2%!(4*j%)<=l%)u      j%+=1v        Îw;    òreplaceicon(WinBlk%,SelBlk2%!(4*j%),window%,f%+i%)x    j%+=1y  Ízí i%{&window%=¤redefinewindow(WinBlk%,1)|NextIconNr%=l%+1}á~=ô --- set selected icons to same size as topleft icon ---€-Ý òsamesizeiconsel(window%,default%,dim%)Ŵê i%,xsize%,ysize%,handle%ŵòsel_get(window%)◰'ç (NrSelected%=0) € (default%>=0) …☓  SelBlk%!0=default%Ŷ  NrSelected%=1ŷÍç NrSelected%>0 …⇦$  òsel_sort(window%,1,1,0,0,0,1)⇨  IconBlk%!0=window%⇩  IconBlk%!4=SelBlk%!0⇧&  È− "Wimp_GetIconState",,IconBlk%…#  xsize%=IconBlk%!16-IconBlk%!8™$  ysize%=IconBlk%!20-IconBlk%!12‰  ã i%=0 ¸ NrSelected%-1•    IconBlk%!0=window%‘!    IconBlk%!4=SelBlk%!(4*i%)’(    È− "Wimp_GetIconState",,IconBlk%‹1    ç dim%<>2 … IconBlk%!16=IconBlk%!8+xsize%›2    ç dim%<>1 … IconBlk%!20=IconBlk%!12+ysize%“>    handle%=¤redefineicon(window%,SelBlk%!(4*i%),IconBlk%)”
  32796.   í i%„Í–á—−Iô --- in wbuf%, replace data for icon ic1% with data of icon ic2% ---Œ+Ý òreplaceicon(wbuf%,ic1%,window%,ic2%)œê ib%,temp1%,temp2%†ib%=wbuf%+92+32*ic1%‡?temp1%=ib%!(-8) : ô save 2 words just before the icon blockfitemp2%=ib%!(-4)flib%!(-8)=window% ib%!(-4)=ic2%¡9È− "Wimp_GetIconState",,ib%-8 : ô get icon data block¢+ib%!(-8)=temp1% : ô restore the 2 words£ib%!(-4)=temp2%¤á¥¦1ô --- update contents of icon info window ---§Ý òicinf_update¨5ê no%,t$,i$,xmin$,xmax$,ymin$,ymax$,s$,mx%,my%,m$©+ê showicondata%,xmin%,xmax%,ymin%,ymax%ª&È− "Wimp_GetPointerInfo",,PtrInfo%«#no%=¤whichtemplate(PtrInfo%!12)¬    t$=""­    i$=""® xmin$=""¯ xmax$=""° ymin$=""± ymax$=""²    s$=""³    m$=""´showicondata%=£µç (no%>=0) …¶  t$=$(TemplNames%+28*no%)·  ç PtrInfo%!16>=-1 …¸    ScrapBlk%!0=PtrInfo%!12¹+    È− "Wimp_GetWindowState",,ScrapBlk%º1    mx%=PtrInfo%!0-(ScrapBlk%!4-ScrapBlk%!20)»2    my%=PtrInfo%!4-(ScrapBlk%!16-ScrapBlk%!24)¼    m$=Ã(mx%)+","+Ã(my%)½    È‰ Drag_Type% Ê¾      É 0¿K        ô moving/resizing icon(s) - show current coordinates of dragboxÀ        i$="..."Á-        xmin%=mx%-(Drag_Ptrx%-DragBlk%!8)Â.        ymin%=my%-(Drag_Ptry%-DragBlk%!12)Ã&        xmax%=xmin%+Drag_BoxSizex%Ä&        ymax%=ymin%+Drag_BoxSizey%Å        showicondata%=¹Æ      É 1ÇD        ô resizing icon(s) - show current coordinates of dragboxÈ        i$="..."É        xmin%=Drag_Box0x%Ê        ymin%=Drag_Box0y%Ë&        xmax%=xmin%+Drag_BoxSizex%Ì&        ymax%=ymin%+Drag_BoxSizey%Í        È‰ MouseShape% ÊÎ2          É 2 : ymax%+=(PtrInfo%!4-Drag_Ptry%)Ï2          É 3 : xmax%+=(PtrInfo%!0-Drag_Ptrx%)Ð2          É 4 : ymin%+=(PtrInfo%!4-Drag_Ptry%)Ñ2          É 5 : xmin%+=(PtrInfo%!0-Drag_Ptrx%)Ò        ËÓ        showicondata%=¹Ô       Õ-        ô show data of icon under pointerÖ        ç PtrInfo%!16>=0 …×          i$=Ã(PtrInfo%!16)Ø%          ScrapBlk%!0=PtrInfo%!12Ù%          ScrapBlk%!4=PtrInfo%!16Ú/          È− "Wimp_GetIconState",,ScrapBlk%Û          xmin%=ScrapBlk%!8Ü           xmax%=ScrapBlk%!16Ý           ymin%=ScrapBlk%!12Þ           ymax%=ScrapBlk%!20ß          showicondata%=¹à        Íá        Ëâ    ç showicondata% …ã      xmin$=Ã(xmin%)ä      xmax$=Ã(xmax%)å      ymin$=Ã(ymin%)æ      ymax$=Ã(ymax%)ç.      s$=Ã(xmax%-xmin%)+"x"+Ã(ymax%-ymin%)è        Íé  ÍêÍë.ç t$<>$(IconText%(7)) … òseticontext(7,t$)ì.ç i$<>$(IconText%(8)) … òseticontext(8,i$)í4ç xmin$<>$(IconText%(9)) … òseticontext(9,xmin$)î6ç xmax$<>$(IconText%(26)) … òseticontext(26,xmax$)ï6ç ymin$<>$(IconText%(10)) … òseticontext(10,ymin$)ð6ç ymax$<>$(IconText%(27)) … òseticontext(27,ymax$)ñ0ç s$<>$(IconText%(11)) … òseticontext(11,s$)ò0ç m$<>$(IconText%(24)) … òseticontext(24,m$)óáôõÝ òalignicons(window%)ö-ê move%,imask%,type%,i%,anchorx%,anchory%÷!ê dx1%,dx2%,dy1%,dy2%,handle%ø"move%=¤iconselected(AlignW%,8)ùimask%=(31<<16)+(1<<21)ú>È− "Wimp_WhichIcon",AlignW%,SelBlk%,imask%,(1<<16)+(1<<21)ûtype%=SelBlk%!0üòsel_get(window%)ýç NrSelected%>1 …þ  È‰ type% Êÿ.    É 2,3 : òsel_sort(window%,0,0,1,0,1,1).    É 4   : òsel_sort(window%,0,1,0,0,1,1).    É 5,6 : òsel_sort(window%,1,1,0,1,0,0).    É 7   : òsel_sort(window%,1,0,1,1,1,1)  Ë  IconBlk%!0=window%  IconBlk%!4=SelBlk%!0&  È− "Wimp_GetIconState",,IconBlk%  È‰ type% Ê     É 2    E      anchorx%=IconBlk%!8                                : ô left
  32797.     É 3 G      anchorx%=IconBlk%!8+(IconBlk%!16-IconBlk%!8)Ŵ2   : ô h centre     É 4F      anchorx%=IconBlk%!16                               : ô right     É 5D      anchory%=IconBlk%!20                               : ô top     É 6G      anchory%=IconBlk%!12+(IconBlk%!20-IconBlk%!12)Ŵ2 : ô v centre     É 7G      anchory%=IconBlk%!12                               : ô bottom  Ë  ã i%=1 ¸ NrSelected%-1    IconBlk%!0=window%!    IconBlk%!4=SelBlk%!(4*i%)(    È− "Wimp_GetIconState",,IconBlk%    dx1%=0    dx2%=0    dy1%=0    dy2%=0    È‰ type% Ê      É 2$        dx1%=anchorx%-IconBlk%!8         ç move% … dx2%=dx1%!      É 3"A        dx1%=anchorx%-(IconBlk%!8+(IconBlk%!16-IconBlk%!8)Ŵ2)#        ç move% … dx2%=dx1%$      É 4%%        dx2%=anchorx%-IconBlk%!16&        ç move% … dx1%=dx2%'      É 5(%        dy2%=anchory%-IconBlk%!20)        ç move% … dy1%=dy2%*      É 6+C        dy1%=anchory%-(IconBlk%!12+(IconBlk%!20-IconBlk%!12)Ŵ2),        ç move% … dy2%=dy1%-      É 7.%        dy1%=anchory%-IconBlk%!12/        ç move% … dy2%=dy1%0        Ë1"    IconBlk%!8=IconBlk%!8+dx1%2$    IconBlk%!12=IconBlk%!12+dy1%3$    IconBlk%!16=IconBlk%!16+dx2%4$    IconBlk%!20=IconBlk%!20+dy2%5=    ç IconBlk%!16<=IconBlk%!8 … IconBlk%!16=IconBlk%!8+326?    ç IconBlk%!20<=IconBlk%!12 … IconBlk%!20=IconBlk%!12+327>    handle%=¤redefineicon(window%,SelBlk%!(4*i%),IconBlk%)8
  32798.   í i%9Í:á;<9ô --- shade the appropriate icons in the Align window=Ý òalign_shadeicons><ç ¤iconselected(AlignW%,3) ☓  ¤iconselected(AlignW%,6) …?  òshadeicon(AlignW%,9,1)@ÌA  òshadeicon(AlignW%,9,0)BÍC2òshadeicon(AlignW%,3,¤iconselected(AlignW%,9))D2òshadeicon(AlignW%,6,¤iconselected(AlignW%,9))EáFGÝ òspaceicons(window%)HBê imask%,type%,i%,distance%,space%,ib%,anchor%,dx%,dy%,handle%I'SpaceOut_Space%=»($(IconText%(18)))JOimask%=(31<<16)+(1<<21) : ô check if spacing must be horizontal or verticalK>È− "Wimp_WhichIcon",SpaceW%,SelBlk%,imask%,(1<<16)+(1<<21)LBtype%=SelBlk%!0 : ô type%=2 => horizontal, type%=3 => verticalMòsel_get(window%)Nç NrSelected%>1 …O  ç type%=2 …P&    òsel_sort(window%,0,0,1,0,1,0)Q  ÌR&    òsel_sort(window%,1,0,1,1,1,0)S  ÍT"  ç ¤iconselected(SpaceW%,4) …U!    distance%=SpaceOut_Space%V  ÌW,    ô calc available space between iconsX    WinBlk%!0=window%Y(    È− "Wimp_GetWindowInfo",,WinBlk%Z.    ô start with space between outer icons[    ç type%=2 …\>      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1))))]/      space%-=WinBlk%!(92+32*(SelBlk%!0)+8)^        Ì_@      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1)))+4)`0      space%-=WinBlk%!(92+32*(SelBlk%!0)+12)a        Íb.    ô subtract sizes of intermediate iconsc    ç NrSelected%>2 …d"      ã i%=1 ¸ (NrSelected%-2)e.        ib%=WinBlk%+92+32*(SelBlk%!(4*i%))f        ç type%=2 …g#          space%-=(ib%!8-ib%!0)h        Ìi$          space%-=(ib%!12-ib%!4)j        Ík      í i%l        Ím*    distance%=space% Ŵ (NrSelected%-1)n4    NrSelected%-=1 : ô to avoid moving last icono  Íp  IconBlk%!0=window%q  IconBlk%!4=SelBlk%!0r&  È− "Wimp_GetIconState",,IconBlk%s  È‰ type% Êt!    É 2 : anchor%=IconBlk%!16u!    É 3 : anchor%=IconBlk%!20v  Ëw  ã i%=1 ¸ NrSelected%-1x    anchor%+=distance%y    IconBlk%!0=window%z!    IconBlk%!4=SelBlk%!(4*i%){(    È− "Wimp_GetIconState",,IconBlk%|    dx%=0}    dy%=0~    È‰ type% Ê&      É 2 : dx%=anchor%-IconBlk%!8€'      É 3 : dy%=anchor%-IconBlk%!12Ŵ        Ëŵ!    IconBlk%!8=IconBlk%!8+dx%◰#    IconBlk%!12=IconBlk%!12+dy%☓#    IconBlk%!16=IconBlk%!16+dx%Ŷ#    IconBlk%!20=IconBlk%!20+dy%ŷ    È‰ type% Ê#      É 2 : anchor%=IconBlk%!16⇦#      É 3 : anchor%=IconBlk%!20⇨        Ë⇩>    handle%=¤redefineicon(window%,SelBlk%!(4*i%),IconBlk%)⇧
  32799.   í i%…͙ቕݠòspace_shadeicons‘ê useavail%,i%’&useavail%=¤iconselected(SpaceW%,8)‹ã i%=5 ¸ 7›&  òshadeicon(SpaceW%,i%,useavail%)“í i%”á„–Ý òframeicons(window%)—1ê i%,j%,xmin%,ymin%,xmax%,ymax%,handle%,h%,w%−%Frame_IconNo%=»($(IconText%(32)))Œ$Frame_Space%=»($(IconText%(33)))œ&Frame_LabelNo%=»($(IconText%(34)))†(Frame_LeftSpace%=»($(IconText%(35)))‡1ç ¤iconselected(FrameW%,5) … Frame_IconNo%=-1fi3ç ¤iconselected(FrameW%,15) … Frame_LabelNo%=-1flòsel_get(window%) 7ô remove frame and label icon# from selection block¡j%=0¢ã i%=0 ¸ NrSelected%-1£  icon%=SelBlk%!(4*i%)¤  SelBlk%!(4*j%)=icon%¥@  ç (icon%<>Frame_IconNo%) € (icon%<>Frame_LabelNo%) … j%+=1¦í i%§ ç j%=0 …¨  òdialogue(10,"")©  áªÍ«-òsel_box(window%,xmin%,ymin%,xmax%,ymax%)¬xmin%-=Frame_Space%­ymin%-=Frame_Space%®xmax%+=Frame_Space%¯ymax%+=Frame_Space%°ç Frame_IconNo%=-1 …±%  ô re-open window "around" icons²  WinBlk%!0=window%³'  È− "Wimp_GetWindowState",,WinBlk%´(  WinBlk%!8=WinBlk%!16-(ymax%-ymin%)µ(  WinBlk%!12=WinBlk%!4+(xmax%-xmin%)¶  WinBlk%!20=xmin%·  WinBlk%!24=ymax%¸#  È− "Wimp_OpenWindow",,WinBlk%¹Ìº  ô redefine frame icon»  IconBlk%!0=window%¼  IconBlk%!4=Frame_IconNo%½&  È− "Wimp_GetIconState",,IconBlk%¾  ç Frame_LabelNo%<>-1 …¿    ScrapBlk%!0=window%À"    ScrapBlk%!4=Frame_LabelNo%Á)    È− "Wimp_GetIconState",,ScrapBlk%Â%    w%=(ScrapBlk%!16-ScrapBlk%!8)Ã&    h%=(ScrapBlk%!20-ScrapBlk%!12)Ä  ÌÅ     h%=0Æ  ÍÇ  IconBlk%!8=xmin%È)  IconBlk%!12=ymin%                  É)  IconBlk%!16=xmax%                  Ê   IconBlk%!20=ymax%+(h% Ŵ 2)Ë;  handle%=¤redefineicon(window%,Frame_IconNo%,IconBlk%)Ì  ç Frame_LabelNo%<>-1 …Í    ô redefine label iconΠ   IconBlk%!0=window%Ï!    IconBlk%!4=Frame_LabelNo%Ð(    È− "Wimp_GetIconState",,IconBlk%Ñ%    ç ¤iconselected(FrameW%,20) …Ò      ô centered labelÓ)      IconBlk%!8=(xmin%+xmax%-w%) Ŵ 2Ô        ÌÕ      ô left-spaced labelÖ+      IconBlk%!8=xmin%+Frame_LeftSpace%×    Í                  Ø    IconBlk%!12=ymax%Ù!    IconBlk%!16=IconBlk%!8+w%Ú"    IconBlk%!20=IconBlk%!12+h%Û>    handle%=¤redefineicon(window%,Frame_LabelNo%,IconBlk%)Ü  ÍÝÍÞáßàÝ òframe_fillwináFrame_IconNo%=SelBlk%!0â%òseticontext(32,Ã(Frame_IconNo%))ãFrame_LabelNo%=SelBlk%!4ä&òseticontext(34,Ã(Frame_LabelNo%))åòframe_shadeiconsæáçèÝ òframe_shadeiconséê f1%,f2%,f3%,i%ê f1%=¤iconselected(FrameW%,5)ë'f2%=f1% ☓ ¤iconselected(FrameW%,15)ì'f3%=f2% ☓ ¤iconselected(FrameW%,20)íã i%=7 ¸ 9î   òshadeicon(FrameW%,i%,f1%)ïí i%ðòshadeicon(FrameW%,15,f1%)ñòshadeicon(FrameW%,16,f1%)òã i%=17 ¸ 21ó   òshadeicon(FrameW%,i%,f2%)ôí i%õã i%=22 ¸ 24ö   òshadeicon(FrameW%,i%,f3%)÷í i%øáùú!Ý ¤tidyicons(window%,action%)û,ê changed%,xmin%,xmax%,ymin%,ymax%,copy%ü0ê ib1%,ib2%,end%,nricons%,dx%,dy%,i%,handle%ýWinBlk%!0=window%þ$È− "Wimp_GetWindowInfo",,WinBlk%ÿchanged%=0ç action%=2 …  xmin%=WinBlk%!20  ymax%=WinBlk%!24(  xmax%=xmin%+(WinBlk%!12-WinBlk%!4)(  ymin%=ymax%-(WinBlk%!16-WinBlk%!8)Ì  xmin%=WinBlk%!44  ymin%=WinBlk%!48  xmax%=WinBlk%!52      ymax%=WinBlk%!56
  32800. Í ç WinBlk%!88>0 …   ib1%=WinBlk%+92  ib2%=ib1%  end%=ib1%+32*(WinBlk%!88)  nricons%=0  È” ib1%<end%    copy%=¹(    ô change icon coords if required    dx%=0    dy%=0    È‰ action% Ê      É 1,2%        ç ((ib1%!16)€(1<<23))=0 …9          ô test if icon position is within work area/          ç ib1%!0<xmin% … dx%=xmin%-ib1%!0/          ç ib1%!4<ymin% … dy%=ymin%-ib1%!4/          ç ib1%!8>xmax% … dx%=xmax%-ib1%!81          ç ib1%!12>ymax% … dy%=ymax%-ib1%!12/          ç (dx%<>0)☓(dy%<>0) … changed%+=1        Í      É 3,4 #        ç ((ib1%!16)€(1<<23)) …!C          ib1%!16=(ib1%!16) € ¬(1<<23) : ô reset "deleted" flag"$          ç (ib1%!16) € (1<<8) …#B            ô can't retrieve indirected data - fill in default$*            ib1%!20=¤heap_get(ib1%!28)%            $(ib1%!20)=""&&            ç (ib1%!16) € (1<<0) …'              ib1%!24=-1(            Ì)$              ib1%!24=WinBlk%!68*            Í+          Í,          ç action%=4 …-            dx%=-100000.            dy%=-100000/          Í0          changed%+=11        Í2      É 53#        ç ((ib1%!16)€(1<<23)) …48          copy%=£ : ô purge - do not copy data block5          changed%+=16        Í7        Ë8    ç copy% …9      ib1%!0=ib1%!0+dx%:      ib1%!4=ib1%!4+dy%;      ib1%!8=ib1%!8+dx%<      ib1%!12=ib1%!12+dy%=?      ô move icon data to new position in window data block>      ã i%=0 ¸ 28 ⇦ 4?        ib2%!i%=ib1%!i%@      í i%A      ib2%+=32B      nricons%+=1C        ÍD    ib1%+=32E  ÎF  ç changed%=0 …G    òdialogue(6,"")H  ÌI    WinBlk%!88=nricons%J*    handle%=¤redefinewindow(WinBlk%,1)K     òdialogue(7,Ã(changed%))L  ÍMÍN =handle%OPÝ òsetworkareaQ3ê xtopleft%,ytopleft%,xsize%,ysize%,xmin%,ymin%RWinBlk%!0=LastMenu_Win%S$È− "Wimp_GetWindowInfo",,WinBlk%T!xtopleft%=»($(IconText%(12)))U!ytopleft%=»($(IconText%(13)))Vxsize%=»($(IconText%(14)))Wysize%=»($(IconText%(15)))X%xmin%=»($(IconText%(16))) € &FFFFY%ymin%=»($(IconText%(17))) € &FFFFZ!ç (xsize%<32) ☓ (ysize%<32) …[%  òcomplain(¤msg_lookup0("IWAS"))\Ì]  ç xmin%>xsize% …^    xmin%=xsize%_!    òseticontext(16,Ã(xmin%))`  Ía  ç ymin%>ysize% …b    ymin%=ysize%c!    òseticontext(17,Ã(ymin%))d  Íe  WinBlk%!44=xtopleft%f!  WinBlk%!48=ytopleft%-ysize%g!  WinBlk%!52=xtopleft%+xsize%h  WinBlk%!56=ytopleft%i"  WinBlk%!72=(ymin%<<16)+xmin%j.  LastMenu_Win%=¤redefinewindow(WinBlk%,1)kÍlámn+Ý òcentericonsel(window%,default%,dim%)o>ê xmin%,ymin%,xmax%,ymax%,xfree%,yfree%,dx%,dy%,i%,handle%pòsel_get(window%)q'ç (NrSelected%=0) € (default%>=0) …r  SelBlk%!0=default%s  NrSelected%=1tÍuç NrSelected%>0 …v/  òsel_box(window%,xmin%,ymin%,xmax%,ymax%)w  ScrapBlk%!0=window%x)  È− "Wimp_GetWindowState",,ScrapBlk%y5  xfree%=(ScrapBlk%!12-ScrapBlk%!4)-(xmax%-xmin%)z)  dx%=ScrapBlk%!20+(xfree% Ŵ 2)-xmin%{5  yfree%=(ScrapBlk%!16-ScrapBlk%!8)-(ymax%-ymin%)|)  dy%=ScrapBlk%!24-(yfree% Ŵ 2)-ymax%}  ç dim%=2 … dx%=0~  ç dim%=1 … dy%=0  ã i%=0 ¸ NrSelected%-1€    IconBlk%!0=window%Ŵ!    IconBlk%!4=SelBlk%!(4*i%)ŵ(    È− "Wimp_GetIconState",,IconBlk%◰!    IconBlk%!8=IconBlk%!8+dx%☓#    IconBlk%!12=IconBlk%!12+dy%Ŷ#    IconBlk%!16=IconBlk%!16+dx%ŷ#    IconBlk%!20=IconBlk%!20+dy%>    handle%=¤redefineicon(window%,SelBlk%!(4*i%),IconBlk%)⇦
  32801.   í i%⇨Í⇩á⇧…7ô --- support one of the Wimp extension modules ---™ô type%=0 -> none‰ô type%=1 -> Interface•ô type%=2 -> AEH module‘ô type%=3 -> WimpExt’Ý òsupport(type%)‹ê old%,flg%,mod$,module$›old%=Support%“Support%=type%”ȉ type% Ê„9  É 1 : mod$="Interface" : module$="InterfaceManager"–2  É 2 : mod$="AEH"       : module$="AEHmodule"—6  É 3 : mod$="WimpExt"   : module$="WimpExtension"−ËŒç type%<>0 …œ#  ç ¬ ¤modulepresent(module$) …†    Support%=old%‡    òdialogue(3,mod$)fi  ÍflÍ ç Support%<>old% …¡-  ô deregister previously selected module¢  È‰ old% Ê£     É 2¤      È− "XAEH_Register",-1¥     É 3¦+      È− "XWimpExt_CloseDown",ThisTask%§  Ë¨&  ô register newly selected module©  È‰ type% Êª     É 2«      È− "XAEH_Register",1¬     É 3­@      È− "XWimpExt_Initialise",16,ThisTask%,1+(1<<8)+(1<<10)®  Ë¯  òredrawall°Í±'òselecticon(OptPaneW%,9,Support%=1)²(òselecticon(OptPaneW%,10,Support%=2)³(òselecticon(OptPaneW%,34,Support%=3)´áµ¶8ô --- check the presence of a relocatable module ---·Ý ¤modulepresent(rm$)¸
  32802. ê flg%¹"È− "XOS_Module",18,rm$ ¸ ;flg%º=(flg% € 1)=0»¼;ô --- force the redraw of all open template windows ---½Ý òredrawall¾ê i%¿ç NrTemplates%>0 …À  ã i%=0 ¸ (NrTemplates%-1)Á"    Blk%!0=TemplHandle%!(4*i%)Â&    È− "Wimp_GetWindowState",,Blk%à   ç (Blk%!32 € (1<<16)) …Ä@      È− "Wimp_ForceRedraw",-1,Blk%!4,Blk%!8,Blk%!12,Blk%!16Å        ÍÆ
  32803.   í i%ÇÍÈáÉÊÝ òsetmainfname(fn$)ËMainFname$=fn$Ìç ChangesMade% … fn$+=" *"Í(òsettitlebar(TemplW%,TemplTbar%,fn$)ÎáÏÐ+ô --- set the 'changes made' status ---ÑÝ òsetchanged(switch%)Ò ê title$Óç ChangesMade%<>switch% …Ô  ç switch% …Õ!    title$=$(TemplTbar%)+" *"Ö  Ì×1    title$=À$(TemplTbar%),©($(TemplTbar%))-2)Ø  ÍÙ-  òsettitlebar(TemplW%,TemplTbar%,title$)Ú  ChangesMade%=switch%ÛÍÜáÝÞ5ô --- build string with info to send to !Help ---ßÝ ¤iconhelp(no%,icon%)àê help$,p%á,help$="Template '"+$(TemplNames%+28*no%)âç icon%>=0 …ã&  help$+="', Icon #"+Ã(icon%)+"|M"ä&  ScrapBlk%!0=TemplHandle%!(4*no%)å  ScrapBlk%!4=icon%æ'  È− "Wimp_GetIconState",,ScrapBlk%ç  flags%=ScrapBlk%!24蠠ȉ (flags% € 3) Êé+    É 0 : help$+="Non-text, non-sprite"ê    É 1 : help$+="Text"ë    É 2 : help$+="Sprite"ì$    É 3 : help$+="Text + Sprite"í  Ëî  help$+=" icon, "ï  ç (flags% € &100) …ð=    help$+="Indirected (max. size "+Ã(ScrapBlk%!36)+")|M"ñ    ç (flags% € 1) …ò      ç ScrapBlk%!32=-1 …ó)        help$+="No validation string"ô       Ìõ=        help$+="Validation string: '"+$(ScrapBlk%!32)+"'"ö       Í÷        Íø  Ìù"    help$+="Non-indirected|M "ú  ÍûB  help$+="|MButton type: '"+$(IcButton%+20*((flags%>>12)€ &F))ü,  help$+="', ESG: "+Ã((flags%>>16)€ &1F)ý  ç OSversion%>=300 …þJ    ô replace "\" with "\\", else !Help (RiscOS 3) thinks it's a tokenÿ    p%=§help$,"\")    È” p%<>0+      help$=Àhelp$,p%)+"\"+Áhelp$,p%+1)      p%=§help$,"\",p%+2)        Î  ÍÌ$  WinBlk%!0=TemplHandle%!(4*no%)&  È− "Wimp_GetWindowInfo",,WinBlk%3  help$+="', Window background|MButton type: '"    :  help$+=$(WinButton%+20*(((WinBlk%!64)>>12)€ &F))+"'"
  32804. Í
  32805. =help$ /ô --- schedule the closedown of TemplEd ---Ý òprequitPollMask%=PollMask% €(¬ 1) Quit%=¹áDô --- send help-request to StrongHelp, for help on a subject ---Ý òaskhelp(string$)Blk%!0=256Blk%!12=0Blk%!16=&43B00&$(Blk%+20)="Help_Word "+string$+½0#È− "Wimp_SendMessage",17,Blk%,0á(ô *** procs for saving templates ***Ý òsavetemplates(fname$)ê handle%,offset%,no% ê Ŷ!3ç (§fname$,".")=0) € (fname$<>"<Wimp$Scrap>") …"%  òcomplain(¤msg_lookup0("ISLF"))#Ì$  È− "Hourglass_On"%5  òsave_init(fname$,NrTemplates%,handle%,offset%)&&  î Ŷ ê Ù #handle% : òerror(0) : á'  ã no%=0 ¸ NrTemplates%-1(?    ç (¬ SavingSelection%) ☓ (¤iconselected(TemplW%,no%)) …)-      òsave_template(no%,handle%,offset%)*        Í+   í no%,#  òsave_finish(handle%,offset%)-!  È− "OS_File",18,fname$,&FEC.  È− "Hourglass_Off"/*  ç fname$=MainFname$ … òsetchanged(£)0Í1ç QuitAfterSave% … òprequit2á345Ý òsave_init(fname$,nrtempl%,ø handle%,ø offset%)5ê i%6Save_IndexOfs%=167ã i%=0 ¸ FileIndexSize%-18  FileIndex%?i%=09í i%:Hô set up translation table for font handles -> internal font handles;ã i%=0 ¸ 255<  Fra%?i%=0=í i%>Save_NrFonts%=0?2FileIndex%!0=-1          : ô no fonts (so far)@Loffset%=16+nrtempl%*24+4 : ô skip first part of file (index saved later)Ahandle%=® fname$BáCD+Ý òsave_template(no%,handle%,ø offset%)Eê nricons%,i%,dataofs%,ib%F'FileIndex%!(Save_IndexOfs%)=offset%G#FileIndex%!(Save_IndexOfs%+8)=1H9$(FileIndex%+Save_IndexOfs%+12)=$(TemplNames%+28*no%)I"WinBlk%!0=TemplHandle%!(4*no%)J$È− "Wimp_GetWindowInfo",,WinBlk%Kç PaneFlag%?no% …L<  WinBlk%!32=WinBlk%!32 ☓ (1<<5) : ô restore 'Pane' flagMÍNnricons%=WinBlk%!88Odataofs%=88+32*nricons%P6WinBlk%!68=1 : ô reset sprite pointer to Wimp areaQ3òsave_translate(WinBlk%+60,WinBlk%+76,dataofs%)Rç nricons%>0 …S  ã i%=0 ¸ nricons%-1T    ib%=WinBlk%+92+i%*32U/    òsave_translate(ib%+16,ib%+20,dataofs%)V    ç Save_Unselected% …W$      ib%!16=ib%!16 € (¬(1<<21))X        ÍY
  32806.   í i%ZÍ[IÈ− "OS_GBPB",1,handle%,WinBlk%+4,88+32*nricons%,offset% ¸ ,,,,offset%\$È− "Wimp_GetWindowInfo",,WinBlk%]7òsave_icon(WinBlk%!(60),WinBlk%+76,handle%,offset%)^ç nricons%>0 …_  ã i%=0 ¸ nricons%-1`M    òsave_icon(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20,handle%,offset%)a
  32807.   í i%bÍcEFileIndex%!(Save_IndexOfs%+4)=offset%-FileIndex%!(Save_IndexOfs%)dSave_IndexOfs%+=24eáfgOô --- translate data in icon block (indirected pointers + font handles) ---h0Ý òsave_translate(flagptr%,data%,ø dataofs%)i$ê flags%,sl%,fhandle%,inthandle%jflags%=flagptr%!0kç (flags% € (1<<23))>0 …l6  ô icon has been deleted - fill with default datam  flagptr%!0=&07800001n  $(data%)="<Deleted>"oÌp9  ô 1. calculate file offset for indirected icon dataq  ç (flags% € &100)=&100 …r    È‰ (flags% € 3) Ês      É 0tL        data%!0=dataofs%   : ô default data for non-text,non-sprite iconuE        dataofs%+=1        : ô empty string, 1 char is terminatorv        data%!4=-1w      É 2x        sl%=©($(data%!0))y        data%!0=dataofs%z        dataofs%+=sl%+1{D        data%!4=1          : ô reset sprite pointer to Wimp area|      É 1,3}        sl%=©($(data%!0))~        data%!0=dataofs%        dataofs%+=sl%+1€        ç data%!4<>-1 …Ŵ          sl%=©($(data%!4))ŵ          data%!4=dataofs%◰          dataofs%+=sl%+1☓        ÍŶ        Ëŷ  Í3  ô 2. translate font handle to internal handle⇦  ç flags% € (1<<6) …⇨    fhandle%=flags%>>24⇩     inthandle%=Fra%?fhandle%⇧    ç inthandle%=0 ……      Save_NrFonts%+=1™"      inthandle%=Save_NrFonts%‰"      Fra%?fhandle%=inthandle%•        Í‘8    flagptr%!0=(flags% € &FFFFFF) ☓ (inthandle%<<24)’  Í‹Í›á“”/ô --- save indirected icon data to file ---„0Ý òsave_icon(flags%,data%,handle%,ø offset%)–    ê sl%—8ScrapBlk%!0=13 : ô temporary buffer for empty string−ç (flags% € &800100)=&100 …Œ  ç flags% € 3 …œ    sl%=©($(data%!0))†B    È− "OS_GBPB",1,handle%,data%!0,sl%+1,offset% ¸ ,,,,offset%‡    ç flags% € 1 …fi      ç data%!4<>-1 …fl        sl%=©($(data%!4)) F        È− "OS_GBPB",1,handle%,data%!4,sl%+1,offset% ¸ ,,,,offset%¡       Í¢        Í£  Ì¤7    ô non-text,non-sprite icon - write empty string¥@    È− "OS_GBPB",1,handle%,ScrapBlk%,1,offset% ¸ ,,,,offset%¦  Í§Í¨á©ª#Ý òsave_finish(handle%,offset%)« ê i%,j%¬ô save font data­ç Save_NrFonts%>0 …®  FileIndex%!0=offset%¯  ã i%=1 ¸ Save_NrFonts%°/    ô find font that got internal handle i%±     j%=0²    È” Fra%?j%<>i%³      j%+=1´        ÎµE    È− "Font_ReadDefn",j%,FontData%+8 ¸ ,,FontData%!0,FontData%!4¶A    È− "OS_GBPB",1,handle%,FontData%,48,offset% ¸ ,,,,offset%·
  32808.   í i%¸Í¹!ô save header + index entriesº8È− "OS_GBPB",1,handle%,FileIndex%,Save_IndexOfs%+4,0»Ù #handle%¼á½¾;ô *** procs for loading and deleting user templates ***¿À(Ý òtempl_add(name$,wblk%,setextent%)Áê no%,nameptr%,spptr%,i%Â"ç NrTemplates%=MaxTemplates% …Ã%  òcomplain(¤msg_lookup0("MTPX"))ÄÌÅ  no%=NrTemplates%Æ'  PaneFlag%?no%=(wblk%!32) € (1<<5)Ç#  wblk%!32=(wblk%!32) € ¬(1<<5)È<  È− "Wimp_CreateWindow",,wblk%+4 ¸ TemplHandle%!(4*no%)É  NrTemplates%+=1Ê  ScrapBlk%!0=TemplW%Ë6  ScrapBlk%!4=8+TemplW_IconX%*(no% ◰ TemplW_Cols%)ÌC  ScrapBlk%!12=(ScrapBlk%!4)+(TemplW_IconX%-8)-16*(11-©(name$))Í8  ScrapBlk%!16=-8-TemplW_IconY%*(no% Ŵ TemplW_Cols%)Î2  ScrapBlk%!8=(ScrapBlk%!16)-(TemplW_IconY%-8)Ï$  ScrapBlk%!20=TemplW_IconFlags%Ð!  nameptr%=TemplNames%+28*no%Ñ  $(nameptr%)=name$Ò  ScrapBlk%!24=nameptr%Ó"  spptr%=TemplNames%+28*no%+14Ô'  $(spptr%)=¤windowicon(wblk%!32,0)Õ  ScrapBlk%!28=spptr%Ö  ScrapBlk%!32=16×%  È− "Wimp_CreateIcon",,ScrapBlk%Ø  ç ¬ DuplNames% …Ù     i%=0Ú&    È” $(TemplNames%+28*i%)<>name$Û      i%+=1Ü        ÎÝ$    ç i%<no% … òtempl_delete(i%)Þ  Íß  ç setextent% … òsetextentà0  òseticonstate0(TemplW%,NrTemplates%-1,0,0)áÍâáãäÝ òtempl_deleteallåê i%æÈ− "Hourglass_On"çç NrTemplates%>0 …è"  ã i%=NrTemplates%-1 ¸ 0 ⇦ -1é    òtempl_delete(i%)ê
  32809.   í i%ëÍìòsetmainfname("Templates")íòsetchanged(£)îÈ− "Hourglass_Off"ïáðñÝ òtempl_delete(no%)òê i%,j%,wasopen%,oldhandle%ó#oldhandle%=TemplHandle%!(4*no%)ôWinBlk%!0=oldhandle%õ$È− "Wimp_GetWindowInfo",,WinBlk%ö'òiconrelease(WinBlk%!60,WinBlk%+76)÷ç WinBlk%!88>0 …ø  ã i%=0 ¸ (WinBlk%!88-1)ù?    òiconrelease(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20)ú
  32810.   í i%ûÍü#È− "Wimp_DeleteWindow",,WinBlk%ýô update browser windowþWinBlk%!0=TemplW%ÿ$È− "Wimp_GetWindowInfo",,WinBlk%#wasopen%=(WinBlk%!32) € (1<<16)ç no%<(NrTemplates%-1) …9  ô move data for icons after the one that is deleted  ã i%=no% ¸ NrTemplates%-2    ib%=WinBlk%+92+32*i%    ã j%=0 ¸ 16 ⇦ 4      ib%!j%=ib%!(j%+32)     í j%3    TemplHandle%!(4*i%)=TemplHandle%!(4*(i%+1))    5    $(TemplNames%+28*i%)=$(TemplNames%+28*(i%+1))
  32811. ;    $(TemplNames%+28*i%+14)=$(TemplNames%+28*(i%+1)+14) %    PaneFlag%?i%=PaneFlag%?(i%+1)
  32812.   í i%ÍWinBlk%!88=WinBlk%!88-1#È− "Wimp_DeleteWindow",,WinBlk%/È− "Wimp_CreateWindow",,WinBlk%+4 ¸ TemplW%NrTemplates%-=1òsetchanged(NrTemplates%>0)òredefinebrowser(£)ç wasopen% …  WinBlk%!0=TemplW%&  È− "Wimp_GetWindowInfo",,WinBlk%#  È− "Wimp_OpenWindow",,WinBlk%Í1ç oldhandle%=IcEd_Win% … òclosewindow(IcEdW%)3ç oldhandle%=WinEd_Win% … òclosewindow(WinEdW%)ç oldhandle%=LastMenu_Win% … LastMenu_Win%=-1+ç NrTemplates%=0 … òclosewindow(StatW%)áCô --- adapt extent of browser window to number of templates --- Ý òsetextent!ê nrrows%,xsize%,titlesize%"/nrrows%=1+((NrTemplates%-1) Ŵ TemplW_Cols%)#ç nrrows%<2 … nrrows%=2$ç NrTemplates%=0 …%  xsize%=8+TemplW_IconX%&Ì''  ç NrTemplates% < TemplW_MaxCol% …(+    xsize%=8+NrTemplates%*TemplW_IconX%)  Ì*-    xsize%=8+TemplW_MaxCol%*TemplW_IconX%+  Í,Í-&titlesize%=128+16*©($(TemplTbar%)).+ç xsize%<titlesize% … xsize%=titlesize%/ScrapBlk%!0=00(ScrapBlk%!4=-8-TemplW_IconY%*nrrows%1ScrapBlk%!8=xsize%2ScrapBlk%!12=03)È− "Wimp_SetExtent",TemplW%,ScrapBlk%4á56Fô --- move icons in browser window to adapt to new window size ---7Ý òredefinebrowser(reopen%)8#ê wasopen%,i%,ib%,xsize%,ysize%9WinBlk%!0=TemplW%:$È− "Wimp_GetWindowInfo",,WinBlk%;(wasopen%=((WinBlk%!32) € (1<<16))<>0<ç WinBlk%!88>0 …=  ã i%=0 ¸ (WinBlk%!88-1)>    ib%=WinBlk%+92+32*i%?@    xsize%=(TemplW_IconX%-8)-16*(11-©($(TemplNames%+i%*28)))@    ysize%=ib%!12-ib%!4A1    ib%!0=8+TemplW_IconX%*(i% ◰ TemplW_Cols%)B    ib%!8=(ib%!0)+xsize%C3    ib%!12=-8-TemplW_IconY%*(i% Ŵ TemplW_Cols%)D    ib%!4=(ib%!12)-ysize%E
  32813.   í i%FÍG#È− "Wimp_DeleteWindow",,WinBlk%H/È− "Wimp_CreateWindow",,WinBlk%+4 ¸ TemplW%IòsetextentJç reopen% € wasopen% …K  WinBlk%!0=TemplW%L&  È− "Wimp_GetWindowInfo",,WinBlk%M>  ô adapt scroll offsets if visible area exceeds work areaN8  ç (WinBlk%!20+(WinBlk%!12-WinBlk%!4))>WinBlk%!52 …O4    WinBlk%!20=WinBlk%!52-(WinBlk%!12-WinBlk%!4)P    ç WinBlk%!20<0 …Q*      WinBlk%!12=WinBlk%!12+WinBlk%!20R      WinBlk%!20=0S        ÍT  ÍU8  ç (WinBlk%!24-(WinBlk%!16-WinBlk%!8))<WinBlk%!48 …V4    WinBlk%!24=WinBlk%!48+(WinBlk%!16-WinBlk%!8)W    ç WinBlk%!24>0 …X(      WinBlk%!8=WinBlk%!8+WinBlk%!24Y      WinBlk%!20=0Z        Í[  Í\#  È− "Wimp_OpenWindow",,WinBlk%]Í^á_`*Ý òtempl_loadfile(fname$,loadsprites%)a/ê i%,nr%,name$,handle%,ip%,indirbuf%,sname$bÈ− "Hourglass_On"cÈ− "Hourglass_LEDs",1dã i%=0 ¸ 255e  ç FontUsage%(i%)>0 …fK    ô font in use - make for extra call to Font_LoseFont at end of procg    Fra%?i%=1h  Ìi    Fra%?i%=0j  Íkí i%lç NrTemplates%=0 …m  ç fname$="<Wimp$Scrap>" …n#    òsetmainfname(NewLeafName$)o  Ìp    òsetmainfname(fname$)q  ÍrÍs6ç loadsprites% € (¤leafname(fname$)="Templates") …t3  sname$=¤dirname(fname$)+".Sprites"+SprSuffix$u  ç ¤fileexists(sname$) …v     òloadusersprites(sname$)w  Ìx*    sname$=¤dirname(fname$)+".Sprites"y2    ç (SprSuffix$<>"") € ¤fileexists(sname$) …z"      òloadusersprites(sname$){        Í|  Í}Í~&indirbuf%=¤heap_get(MaxIndirSize%)ç indirbuf%>0 …€  handle%=‰ fname$Ŵ  ç handle%>0 …ŵF    ô read index of template file to check for oversized templates◰:    È− "OS_GBPB",3,handle%,FileIndex%,FileIndexSize%,0☓    Ù #handle%Ŷ&    È− "Wimp_OpenTemplate",,fname$ŷ    ip%=FileIndex%+24    nr%=0⇦        õ⇨$      ç ip%!0>MaxTemplateSize% …⇩5        òcomplain(¤msg_lookup1("TTLB",$(ip%+12)))⇧       Ì…:        òtempl_load(nr%,name$,indirbuf%,MaxIndirSize%)™        ç nr%>0 …‰)          òtempl_add(name$,WinBlk%,0)•        Í‘       Í’      ip%+=24‹1    ý (nr%<=0) ☓ (NrTemplates%=MaxTemplates%)›    È− "Wimp_CloseTemplate"“!    ç fname$="<Wimp$Scrap>" …”H      È− "OS_File",6,fname$ : ô delete Wimp$Scrap file after reading„        Í–     òheap_release(indirbuf%)—    òsetextent−  ÍŒÍœã i%=0 ¸ 255†C  ô neutralise calls of Font_FindFont done by Wimp_LoadTemplate‡  È” Fra%?i%>1fi    È− "Font_LoseFont",i%fl    Fra%?i%-=1   Î¡í i%¢È− "Hourglass_Off"£òopenwindow(TemplW%,3)¤.ç IcInfo_Active% … òopenwindow(IcInfoW%,4)¥á¦§'Ý òtempl_load(ø nr%,ø n$,p%,psize%)¨ê dx%,dy%,icon%,tb%,ib%©ê Ŷª9î Ŷ ê È− "Wimp_CloseTemplate" : òerror(0) : nr%=0 : á«-n$="*"+Ä11,½0) : ô name length must be 12¬LÈ− "Wimp_LoadTemplate",,WinBlk%+4,p%,p%+psize%,Fra%,n$,nr% ¸ ,,,,,n$,nr%­ç nr%>0 …®F  ô make sure window origin position is within current screen size¯   dx%=0°   dy%=0±$  ç WinBlk%!4<0 … dx%=-WinBlk%!4²$  ç WinBlk%!8<0 … dy%=-WinBlk%!8³?  ç WinBlk%!12>ScreenSize_X% … dx%=ScreenSize_X%-WinBlk%!12´0  ç WinBlk%!16>(ScreenSize_Y%-TBarHeight%) …µ0    dy%=ScreenSize_Y%-TBarHeight%-WinBlk%!16¶  Í·  WinBlk%!4=WinBlk%!4+dx%¸  WinBlk%!8=WinBlk%!8+dy%¹  WinBlk%!12=WinBlk%!12+dx%º  WinBlk%!16=WinBlk%!16+dy%»?  WinBlk%!68=UserSprites% : ô set sprite area (CBP pointer)¼H  ô re-allocate indirected data, each field in a separate heap block½  ç WinBlk%!32 € (1<<31) …¾     tb%=WinBlk%!32 € (1<<26)¿  ÌÀ    tb%=WinBlk%!32 € (1<<0)Á  Í  ç tb% …ÃF    òiconrealloc(WinBlk%+60,WinBlk%+76) : ô realloc title bar iconÄ?    òicon_setspritearea(WinBlk%!60,WinBlk%+76,UserSprites%)Å  ÌÆ.    ô no title bar: fill data with defaultÇ    WinBlk%!60=&3DÈ"    $(WinBlk%+76)="<Untitled>"É  ÍÊ  ç (WinBlk%!88)>0 …Ë"    ã icon%=0 ¸ (WinBlk%!88)-1Ì!      ib%=WinBlk%+92+icon%*32Í%      òiconrealloc(ib%+16,ib%+20)Î>      ô set sprite pointers (indirected sprite-only icons)Ï9      òicon_setspritearea(ib%!16,ib%+20,UserSprites%)Р   í icon%Ñ  ÍÒÍÓáÔÕ8ô --- sort templates on names (case-insensitive) ---ÖÝ òtempl_sort×-ê i%,j%,index%,candidate%,candname$,name$Ø,i%=0 : ô first <i%> templates are sortedÙÈ” i%<(NrTemplates%-1)Ú&  ô find template with lowest nameÛ  candidate%=i%Ü-  candname$=¤upcase($(TemplNames%+i%*28))Ý"  ã j%=i%+1 ¸ (NrTemplates%-1)Þ+    name$=¤upcase($(TemplNames%+j%*28))ß    ç name$<candname$ …à      candidate%=j%á      candname$=name$â        Íã
  32814.   í j%ä  ô swap template dataå  ã j%=0 ¸ (28-4) ⇦ 4æ@    È“ TemplNames%!(i%*28+j%),TemplNames%!(candidate%*28+j%)ç
  32815.   í j%è8  È“ TemplHandle%!(4*i%),TemplHandle%!(4*candidate%)é*  È“ PaneFlag%?i%,PaneFlag%?candidate%ê   i%+=1ëÎìáíî6ô *** procs for reading and sorting selections ***ïð7ô --- get list of selected icons and count them ---ñÝ òsel_get(window%)ò=È− "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),1<<21óNrSelected%=0ô"È” SelBlk%!(4*NrSelected%)<>-1õ  NrSelected%+=1öÎ÷áøùô --- select all icons ---úÝ òsel_all(window%)ûê i%ü5ô get all icons that are not selected nor deletedý9È− "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),0þi%=0ÿÈ” SelBlk%!i%<>-1'  òselecticon(window%,SelBlk%!i%,1)   i%+=4Îá>ô --- unselect all icons (except, maybe, for one icon) ---!Ý òsel_clear(window%,except%)ê i%3È− "Wimp_WhichIcon",window%,SelBlk%,1<<21,1<<21    i%=0
  32816. È” SelBlk%!i%<>-1 ?  ç SelBlk%!i%<>except% … òselecticon(window%,SelBlk%!i%,0)   i%+=4ÎNrSelected%=0áHô --- sort icon selection (assumes selection present in SelBlk%) ---<Ý òsel_sort(window%,key1%,max1%,dir1%,key2%,max2%,dir2%)Aô if key=0 then sort on horizontal coordinates, else vertical=ô if max=0 then sort on minimum coordinates, else maximum<ô if dir=0 then sort in descending order, else ascendingê i%,j%,index1%,index2%,ib%@ê value1%,value2%,candidate%,bestsofar1%,bestsofar2%,better%5i%=0 : ô first <i%> icons in selection are sortedç key1%=0 …  index1%=0Ì  index1%=4Íç max1% … index1%+=8ç key2%=0 …   index2%=0!Ì"  index2%=4#Í$ç max2% … index2%+=8%WinBlk%!0=window%&$È− "Wimp_GetWindowInfo",,WinBlk%'È” i%<(NrSelected%-1)(<  ô find icon with smallest/highest value for coordinate)  candidate%=i%*(  ib%=WinBlk%+92+32*(SelBlk%!(4*i%))+  bestsofar1%=ib%!(index1%),  bestsofar2%=ib%!(index2%)-!  ã j%=i%+1 ¸ (NrSelected%-1).*    ib%=WinBlk%+92+32*(SelBlk%!(4*j%))/    value1%=ib%!(index1%)0    value2%=ib%!(index2%)1    ç bestsofar1%=value1% …2#      ô look at second sort key3      ç dir2% …4)        better%=(value2%<bestsofar2%)5       Ì6)        better%=(value2%>bestsofar2%)7       Í8        Ì9      ç dir1% …:F        better%=(value1%<bestsofar1%) : ô looking for lowest value;       Ì<G        better%=(value1%>bestsofar1%) : ô looking for highest value=       Í>        Í?    ç better% …@      candidate%=j%A      bestsofar1%=value1%B      bestsofar2%=value2%C        ÍD
  32817.   í j%E(  ô swap icons in selection sequenceF.  È“ SelBlk%!(4*candidate%),SelBlk%!(4*i%)G   i%+=1HÎIáJK@ô --- calculate coords of box surrounding selected icons ---L7Ý òsel_box(window%,ø xmin%,ø ymin%,ø xmax%,ø ymax%)M)ô assume selection present in SelBlk%Nê i%OScrapBlk%!0=window%PScrapBlk%!4=SelBlk%!0Q%È− "Wimp_GetIconState",,ScrapBlk%Rxmin%=ScrapBlk%!8Symin%=ScrapBlk%!12Txmax%=ScrapBlk%!16Uymax%=ScrapBlk%!20Vã i%=0 ¸ NrSelected%-1W   ScrapBlk%!4=SelBlk%!(4*i%)X'  È− "Wimp_GetIconState",,ScrapBlk%Y-  ç xmin%>ScrapBlk%!8 … xmin%=ScrapBlk%!8Z/  ç ymin%>ScrapBlk%!12 … ymin%=ScrapBlk%!12[/  ç xmax%<ScrapBlk%!16 … xmax%=ScrapBlk%!16\/  ç ymax%<ScrapBlk%!20 … ymax%=ScrapBlk%!20]í i%^á_`ô *** setup procs ***abÝ òsetup_defaultcIcInfo_Active%=¹dDuplNames%=¹e Hatch%=¹fSetup_Support%=0gGrid_SizeLock%=¹hGrid_SizeX%=2iGrid_SizeY%=4jGrid_PosLock%=£kGrid_PosX%=2lGrid_PosY%=4mSave_Unselected%=£nDeleteOutside%=£oTrapDclick%=¹pStats_Decimal%=¹qIgnoreDeskFont%=¹ròexport_settype(2)sátuÝ òsetup_loadvê f%,etype%wê Ŷxf%=‰ (ApplDir$+".Options")y ç f%=0 …z  òsetup_default{Ì|2  î Ŷ ê Ù #f% : òerror(0) : òsetup_default : á}:  è#f%,IcInfo_Active%,DuplNames%,Hatch%,Setup_Support%~1  è#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%.  è#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%€E  è#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,Stats_Decimal%Ŵ!  è#f%,IgnoreDeskFont%,etype%ŵ  òexport_settype(etype%)◰   Ù #f%☓ÍŶáŷÝ òsetup_save⇦ê f%⇨ê Ŷ⇩f%=® (ApplDir$+".Options")⇧)î Ŷ ê ç f%<>0 … Ù #f% : òerror(0) : á…2ñ#f%,IcInfo_Active%,DuplNames%,Hatch%,Support%™/ñ#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%‰,ñ#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%•Cñ#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,Stats_Decimal%‘$ñ#f%,IgnoreDeskFont%,ExportType%’    Ù #f%‹á›“)ô *** procs for statistics window ***”„Ý òstat_fillwin–Cê wasopen%,ysize%,maxwdef%,totindsize%,i%,wdef%,indsize%,j%,ib%—È− "Hourglass_On"−òsel_get(StatW%)Œç SelBlk%!0=2 …œ(  type%=2 : ô numbers in hexadecimal†Ì‡  type%=1 : ô decimalfiÍflWinBlk%!0=StatW% $È− "Wimp_GetWindowInfo",,WinBlk%¡#wasopen%=(WinBlk%!32) € (1<<16)¢#È− "Wimp_DeleteWindow",,WinBlk%£WinBlk%!88=15¤-ysize%=204+NrTemplates%*40 : ô set extent¥*WinBlk%!8=WinBlk%!16-WinBlk%!24-ysize%¦WinBlk%!48=-ysize%§.È− "Wimp_CreateWindow",,WinBlk%+4 ¸ StatW%¨WinBlk%!0=StatW%©7òlinkicontext(25,WinBlk%,5) : ô number of templatesª=òlinkicontext(22,WinBlk%,7) : ô largest window definition«Aòlinkicontext(23,WinBlk%,9) : ô total size of indirected data¬maxwdef%=0­totindsize%=0®ã i%=0 ¸ NrTemplates%-1¯#  WinBlk%!0=TemplHandle%!(4*i%)°&  È− "Wimp_GetWindowInfo",,WinBlk%±  wdef%=88+32*WinBlk%!88²9  indsize%=¤stat_calcindirsize(WinBlk%!60,WinBlk%+76)³  ç WinBlk%!88>0 …´    ã j%=0 ¸ (WinBlk%!88-1)µ      ib%=WinBlk%+92+32*j%¶6      indsize%+=¤stat_calcindirsize(ib%!16,ib%+20)·     í j%¸  Í¹2  òstat_createicon(10,$(TemplNames%+i%*28),i%)º7  òstat_createicon(11,¤stat_num2str(WinBlk%!88),i%)»2  òstat_createicon(12,¤stat_num2str(wdef%),i%)¼5  òstat_createicon(13,¤stat_num2str(indsize%),i%)½;  òstat_createicon(14,¤stat_num2str(wdef%+indsize%),i%)¾  wdef%+=indsize%¿'  ç maxwdef%<wdef% … maxwdef%=wdef%À  totindsize%+=indsize%Áí i%Â$òseticontext(25,Ã(NrTemplates%))Ã,òseticontext(22,¤stat_num2str(maxwdef%))Ä/òseticontext(23,¤stat_num2str(totindsize%))Åç wasopen% …Æ  òopenwindow(StatW%,0)ÇÌÈ  òopenwindow(StatW%,1)ÉÍÊÈ− "Hourglass_Off"ËáÌÍBô --- calculate size of indirected data needed for an icon ---Î'Ý ¤stat_calcindirsize(flags%,data%)Ï ê size%Ðç (flags% € &800100)=&100 …Ñ  size%=data%!8Ò&  ç (flags% € 1) € (data%!4<>-1) …Ó#    size%=size%+©($(data%!4))+1Ô  ÍÕÌÖ  size%=0×ÍØ
  32818. =size%ÙÚ0ô --- create an icon in the stats window ---Û*Ý òstat_createicon(copyfrom%,s$,line%)ÜScrapBlk%!0=StatW%ÝScrapBlk%!4=copyfrom%Þ%È− "Wimp_GetIconState",,ScrapBlk%ßKô create icon that is identical, except for string, colours and Y coordà,ScrapBlk%!12=ScrapBlk%!12-4-40*(line%+1)á ScrapBlk%!20=ScrapBlk%!12+40â9ScrapBlk%!24=(ScrapBlk%!24 € &FFFFFF) ☓ Stat_Colours%ãHScrapBlk%!24=ScrapBlk%!24 € (¬ &100) : ô icon must be not-indirectedä$(ScrapBlk%+28)=s$åScrapBlk%!4=StatW%æ%È− "Wimp_CreateIcon",,ScrapBlk%+4çáèé;ô --- convert a number to a string (hex or decimal) ---êÝ ¤stat_num2str(num%)ëê s$ìç Stats_Decimal% …í  s$=Ã(num%)îÌï  s$="&"+Ã~(num%)ðÍñ=s$òó.ô *** procs for handling outline fonts ***ôõÝ òfont_lose(font%)öFontUsage%(font%)-=1÷ç FontUsage%(font%)=0 …ø  È− "Font_LoseFont",font%ùÍúáûüÝ òfont_loseallý ê i%,j%þã i%=0 ¸ 255ÿ  ç FontUsage%(i%)<>0 …    È− "Font_LoseFont",i%  Íí i%á7ô --- get font name and size from a font handle ---5Ý òfont_getinfo(fhandle%,ø name$,ø xsize,ø ysize)ê xsize16%,ysize16%?È− "Font_ReadDefn",fhandle%,FontData% ¸ ,,xsize16%,ysize16%    name$=$(FontData%)
  32819. xsize=xsize16%/16 ysize=ysize16%/16 áIô *** procs for calculating & setting the minimum size of an icon ***-Ý òminimizeiconsel(window%,default%,dim%)ê i%,xsize%,ysize%,handle%òsel_get(window%)'ç (NrSelected%=0) € (default%>=0) …  SelBlk%!0=default%  NrSelected%=1Íç NrSelected%>0 …  ã i%=0 ¸ NrSelected%-1:    òminiconsize(window%,SelBlk%!(4*i%),xsize%,ysize%)    IconBlk%!0=window%!    IconBlk%!4=SelBlk%!(4*i%)(    È− "Wimp_GetIconState",,IconBlk%1    ç dim%<>2 … IconBlk%!16=IconBlk%!8+xsize%2    ç dim%<>1 … IconBlk%!20=IconBlk%!12+ysize%>    handle%=¤redefineicon(window%,SelBlk%!(4*i%),IconBlk%) 
  32820.   í i%!Í"á#$1Ý òminiconsize(window%,icon%,ø minx%,ø miny%)%/ê sparea%,flags%,data%,text%,sprite%,indir%&3ê sminx%,sminy%,tminx%,tminy%,p%,val$,sname$,t$'ê xmin%,ymin%,xmax%,ymax%(ê l$,lspace%,lines%,b$)WinBlk%!0=window%*$È− "Wimp_GetWindowInfo",,WinBlk%+sparea%=WinBlk%!68,ScrapBlk%!0=window%-ScrapBlk%!4=icon%.%È− "Wimp_GetIconState",,ScrapBlk%/flags%=ScrapBlk%!240data%=ScrapBlk%+281text%=(flags% € 1)>02sprite%=(flags% € 2)>03indir%=(flags% € &100)>04&ç indir% € text% € (data%!4<>-1) …5  val$=$(data%!4)6Í7ç sprite% …8  ç indir% …9    ç text% …:4      ô search validation string for sprite name;-      sname$=¤validationcommand(val$,"S")<      p%=§sname$,",")=      ç p%>0 …>"        sname$=Ásname$,2,p%-2)?       Ì@        sname$=Ásname$,2)A       ÍB        ÌC      sname$=$(data%!0)D      sparea%=data%!4E        ÍF  ÌG    sname$=$(data%)H  ÍI?  ç ©(sname$)>0 … òspritesize(sname$,sparea%,sminx%,sminy%)JÍKç text% …L  ç indir% …M    t$=$(data%!0)N  ÌO    t$=$(data%)P  ÍQ  ç flags% € (1<<6) …R5    ô calc size of string printed as outline fontS&    È− "Font_SetFont",(flags%>>24)T;    È− "Font_StringBBox",,t$ ¸ ,xmin%,ymin%,xmax%,ymax%UG    È− "Font_ConverttoOS",,xmax%-xmin%,ymax%-ymin% ¸ ,tminx%,tminy%V    tminx%+=2*PixToOS_X%W    tminy%+=2*PixToOS_Y%X  ÌY.    ç (OSversion%<350) ☓ IgnoreDeskFont% …Z'      ô calc text width in BBC font[      tminx%=16*©(t$)+4\        Ì]3      ô calc text width in current desktop font^(      È− "Wimp_TextOp",1,t$ ¸ tminx%_      tminx%+=8`        Ía-    tminy%=32 : ô text height fixed to 32b  Íc%  l$=¤validationcommand(val$,"L")d  ç ©(l$)>0 …e5    ô multi-line text - calc Y size, X size fixedf    lspace%=»(Ál$,2))g     ç lspace%=0 … lspace%=40h6    lines%=(tminx%-1) Ŵ (ScrapBlk%!16-ScrapBlk%!8)i'    tminx%=ScrapBlk%!16-ScrapBlk%!8j!    tminy%=lspace%*(lines%+1)k  ÍlÍmç flags% € (1<<4) …n  minx%=sminx%+tminx%o  ç minx%=0 …p>    minx%=ScrapBlk%!16-ScrapBlk%!8 : ô don't change X sizeq  Ìr$    ç text% € sprite% … minx%+=6s5    ç sminy%>tminy% … miny%=sminy% ⇧ miny%=tminy%t  ÍuÌv3  ç sminx%>tminx% … minx%=sminx% ⇧ minx%=tminx%w  miny%=sminy%+tminy%xÍyç flags% € (1<<2) …z!  ô add space taken by border{%  b$=¤validationcommand(val$,"R")|  ç ©(b$)=0 …}7    minx%+=16 : ô no border command - "flat" border~    miny%+=16  Ì€&    ô found command for 3-D borderŴ    È‰ »(Áb$,2)) Êŵ      É 3,4◰        minx%+=24☓        miny%+=24Ŷ      É 6,7ŷ        minx%+=32        miny%+=32⇦       ⇨        minx%+=16⇩        miny%+=16⇧        Ë…  Í™Í‰ç minx%<16 … minx%=16•ç miny%<16 … miny%=16‘á’‹1ô --- return size of a sprite in OS units ---›0Ý òspritesize(name$,area%,ø xsize%,ø ysize%)“ê spmode%,xpixels%,ypixels%”ç area%=1 …„H  È− "XWimp_SpriteOp",40,,name$ ¸ ,,,xpixels%,ypixels%,,spmode%;flg%–Ì—L  È− "XOS_SpriteOp",296,area%,name$ ¸ ,,,xpixels%,ypixels%,,spmode%;flg%−  ç (flg% € 1) …Œ9    ô sprite not found in custom area - try wimp areaœJ    È− "XWimp_SpriteOp",40,,name$ ¸ ,,,xpixels%,ypixels%,,spmode%;flg%†  Í‡Ífiç (flg% € 1) …fl  xsize%=0   ysize%=0¡Ì¢*  xsize%=xpixels%<<¤modevar(spmode%,4)£*  ysize%=ypixels%<<¤modevar(spmode%,5)¤Í¥á¦§Jô --- search validation string for a certain command and return it ---¨!Ý ¤validationcommand(v$,cmd$)©ê upc$,loc$,p%ªupc$=½(–(cmd$) € &DF)«loc$=½(–(cmd$) ☓ &20)¬2È” (Àv$,1)<>upc$) € (Àv$,1)<>loc$) € (©(v$)>0)­  p%=§v$,";")®5  ç (p%>1) € (Áv$,p%-1,1)="\") … p%=§v$,";",p%+1)¯  ç p%=0 …°    v$=""±  Ì²    v$=Áv$,p%+1)³  Í´Îµp%=§v$,";")¶ç p%>0 … v$=Àv$,p%-1)·=v$¸¹>ô *** procs for handling messages in the Messages file ***º»Ý òmsg_init¼ê fname$,flags%,size%,buf%½fname$=ApplDir$+".Messages"¾6È− "MessageTrans_FileInfo",,fname$ ¸ flags%,,size%¿ç flags% € 1 …À   buf%=0ÁÌ  buf%=¤heap_get(size%)ÃÍÄ$MsgDesc%=¤heap_get(17+©(fname$))Å$(MsgDesc%+16)=fname$Æ8È− "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%ÇáÈÉÝ òmsg_exitÊ(È− "MessageTrans_CloseFile",MsgDesc%ËMsgDesc%=0ÌáÍÎÝ ¤msg_lookup0(token$)Ïê result$Ð:È− "MessageTrans_Lookup",MsgDesc%,token$,0 ¸ ,,result$Ñ =result$ÒÓ!Ý ¤msg_lookup1(token$,param$)Ôê result$ÕNÈ− "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param$ ¸ ,,result$Ö =result$×Ø*Ý ¤msg_lookup2(token$,param1$,param2$)Ùê result$ÚWÈ− "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param1$,param2$ ¸ ,,result$Û =result$ÜÝ6ô *** procs for loading and using user-sprites ***ÞßBô --- load a sprite file and let all templates use the spritesàÝ òloadusersprites(fname$)á    ê no%âç UserSprites%<>1 …ã!  òheap_release(UserSprites%)ä&  ç ¤modulepresent("OLESupport") …å)    È− "OLE_DeLinkFile",1,ThisTask%,0æ  ÍçÍèç fname$="" …é  UserSprites%=1êÌë*  UserSprites%=¤loadspritefile(fname$)ìÍíç NrTemplates%>0 …î  ã no%=0 ¸ NrTemplates%-1ï@    òwindow_setspritearea(TemplHandle%!(4*no%),UserSprites%)ð   í no%ñÍòç UserSprites%=1 …ó  SpriteFname$=""ôÌõ  SpriteFname$=fname$ö&  ç ¤modulepresent("OLESupport") …÷%    È− "OLE_SimulateSession",&FF9ø,    È− "OLE_LinkFile",fname$,ThisTask%,0ù  ÍúÍûáüýÝ ¤loadspritefile(fname$)þ&ê type%,laddr%,fsize%,ftype%,area%ÿ2È− "OS_File",17,fname$ ¸ type%,,laddr%,,fsize% ç (laddr%>>20) € &FFF=&FFF …  ftype%=(laddr%>>8) € &FFFÌ  ftype%=-1Í#ç (type%<>1) ☓ (ftype%<>&FF9) …,  òcomplain(¤msg_lookup1("NOSF",fname$))  area%=1Ì      fsize%+=16
  32821.   area%=¤heap_get(fsize%)   ç area%>0 …     area%!0=fsize%    area%!8=16$    È− "OS_SpriteOp",256+9,area%,    È− "OS_SpriteOp",256+10,area%,fname$  ÌH    area%=1 : ô couldn't allocate space in heap - reset to Wimp area  ÍÍ
  32822. =area%*Ý òwindow_setspritearea(handle%,area%)ê icon%,ib%WinBlk%!0=handle%$È− "Wimp_GetWindowInfo",,WinBlk%$WinBlk%!68=area% : ô CBP pointeròicon_setspritearea(WinBlk%!60,WinBlk%+76,area%)ç (WinBlk%!88)>0 …   ã icon%=0 ¸ (WinBlk%!88)-1    ib%=WinBlk%+92+icon%*320    òicon_setspritearea(ib%!16,ib%+20,area%)   í icon%!Í"&handle%=¤redefinewindow(WinBlk%,0)#á$%-Ý òicon_setspritearea(flags%,data%,area%)&/ç ((flags% € 3)=2) € ((flags% € &100)<>0) …'  data%!4=area%(Í)á*++ô *** procs for exporting templates ***,-Ý òexporttemplates(fname$).ê handle%,no%/ê Ŷ03ç (§fname$,".")=0) € (fname$<>"<Wimp$Scrap>") …1%  òcomplain(¤msg_lookup0("ISLF"))2Ì3  È− "Hourglass_On"4  handle%=® fname$5&  î Ŷ ê Ù #handle% : òerror(0) : á6  ã no%=0 ¸ NrTemplates%-17?    ç (¬ SavingSelection%) ☓ (¤iconselected(TemplW%,no%)) …8      Õ #handle%,Ä48,"-")9<      Õ #handle%,"Template name: "+$(TemplNames%+28*no%):      Õ #handle%,Ä48,"-");'      òexport_template(no%,handle%)<      Õ #handle%,""=        Í>   í no%?  Ù #handle%@!  È− "OS_File",18,fname$,&FFFA  È− "Hourglass_Off"BÍCáDE#Ý òexport_template(no%,handle%)Fê nricons%,i%,ib%G"WinBlk%!0=TemplHandle%!(4*no%)H$È− "Wimp_GetWindowInfo",,WinBlk%I6Õ #handle%,"Visible area   "+¤box2str(WinBlk%+4,8)J7Õ #handle%,"Work area      "+¤box2str(WinBlk%+44,8)KPÕ #handle%,"Scroll offset  "+¤rjustify(WinBlk%!20,8)+¤rjustify(WinBlk%!24,8)L!Õ #handle%,"Minimum size   ";M3  Õ #handle%,¤rjustify((WinBlk%!72) € &FFFF,8);N.  Õ #handle%,¤rjustify((WinBlk%!72)>>16,8)O?Õ #handle%,"Flags          "+¤export_wflags(WinBlk%!32,no%)PDÕ #handle%,"Button type    "+$(WinButton%+20*((WinBlk%!64)>>12))QÕ #handle%,"Colours:"R.Õ #handle%,"  Title fg     "+Ã(WinBlk%?36)S.Õ #handle%,"  Title bg     "+Ã(WinBlk%?37)T.Õ #handle%,"  Work fg      "+Ã(WinBlk%?38)U.Õ #handle%,"  Work bg      "+Ã(WinBlk%?39)V.Õ #handle%,"  Scroll outer "+Ã(WinBlk%?40)W.Õ #handle%,"  Scroll inner "+Ã(WinBlk%?41)X.Õ #handle%,"  Input focus  "+Ã(WinBlk%?42)YÕ #handle%,"Title bar:"Z1òexport_iconcontents(WinBlk%!60,WinBlk%+76,1)[nricons%=WinBlk%!88\,Õ #handle%,"No. of icons   "+Ã(nricons%)]ç nricons%>0 …^  Õ #handle%,""_  ã i%=0 ¸ nricons%-1`%    Õ #handle%,"Icon #"+Ã(i%)+":"a    ib%=WinBlk%+92+i%*32b3    Õ #handle%,"  Position    "+¤box2str(ib%,8)c-    òexport_iconcontents(ib%!16,ib%+20,0)d
  32823.   í i%eÍfághÝ ¤export_wflags(f%,no%)iê f$jf$=Ä32,½183)k"ç (f% € (1<<0)) … Áf$,1,1)="t"l"ç (f% € (1<<1)) … Áf$,2,1)="M"m"ç (f% € (1<<2)) … Áf$,3,1)="v"n"ç (f% € (1<<3)) … Áf$,4,1)="h"o"ç (f% € (1<<4)) … Áf$,5,1)="A"p$ç (PaneFlag%?no%) … Áf$,6,1)="P"q"ç (f% € (1<<6)) … Áf$,7,1)="N"r"ç (f% € (1<<7)) … Áf$,8,1)="b"s"ç (f% € (1<<8)) … Áf$,9,1)="A"t#ç (f% € (1<<9)) … Áf$,10,1)="1"u$ç (f% € (1<<10)) … Áf$,11,1)="G"v$ç (f% € (1<<11)) … Áf$,12,1)="B"w$ç (f% € (1<<12)) … Áf$,13,1)="H"x$ç (f% € (1<<13)) … Áf$,14,1)="S"y$ç (f% € (1<<14)) … Áf$,15,1)="X"z$ç (f% € (1<<15)) … Áf$,16,1)="Y"{Áf$,17,8)=Ä8,"x")|$ç (f% € (1<<24)) … Áf$,25,1)="B"}$ç (f% € (1<<25)) … Áf$,26,1)="C"~$ç (f% € (1<<26)) … Áf$,27,1)="T"$ç (f% € (1<<27)) … Áf$,28,1)="T"€$ç (f% € (1<<28)) … Áf$,29,1)="V"Ŵ$ç (f% € (1<<29)) … Áf$,30,1)="A"ŵ$ç (f% € (1<<30)) … Áf$,31,1)="H"◰$ç (f% € (1<<31)) … Áf$,32,1)="N"☓=f$Ŷŷ.Ý òexport_iconcontents(flags%,data%,tbar%)ê f$,t%,s%,i%,fn$,fx%,fy%⇦ç (flags% € (1<<23)) …⇨"  Õ #handle%,"  ** DELETED **"⇩Ì⇧  f$=Ä23,½183)…(  ç (flags% € (1<<0)) … Áf$,1,1)="T"™(  ç (flags% € (1<<1)) … Áf$,2,1)="S"‰(  ç (flags% € (1<<2)) … Áf$,3,1)="B"•(  ç (flags% € (1<<3)) … Áf$,4,1)="H"‘(  ç (flags% € (1<<4)) … Áf$,5,1)="V"’(  ç (flags% € (1<<5)) … Áf$,6,1)="F"‹(  ç (flags% € (1<<6)) … Áf$,7,1)="O"›(  ç (flags% € (1<<7)) … Áf$,8,1)="N"“(  ç (flags% € (1<<8)) … Áf$,9,1)="I"”)  ç (flags% € (1<<9)) … Áf$,10,1)="R"„*  ç (flags% € (1<<10)) … Áf$,11,1)="A"–*  ç (flags% € (1<<11)) … Áf$,12,1)="H"—  Áf$,13,9)=Ä9,"x")−*  ç (flags% € (1<<21)) … Áf$,22,1)="S"Œ*  ç (flags% € (1<<22)) … Áf$,23,1)="F"œ  ç tbar% …†    Áf$,3,1)="x"‡    Áf$,6,1)="x"fi    Áf$,8,1)="x"fl    Áf$,11,1)="x"   Í¡%  Õ #handle%,"  Flags        "+f$¢  t%=(flags% € 1)<>0£  s%=(flags% € 1<<1)<>0¤  i%=(flags% € 1<<8)<>0¥   ç t% …¦%    Õ #handle%,"  Text         ";§  Ì¨,    ç s% … Õ #handle%,"  Sprite       ";©  Íª  ç t% ☓ s% …«    ç i% …¬'      Õ #handle%,"'"+$(data%!0)+"'"­       ç t% € (data%!4 > 0) …®;        Õ #handle%,"  Validation   "+"'"+$(data%!4)+"'"¯       Í°1      Õ #handle%,"  Max. length  "+Ã(data%!8)±        Ì²#      Õ #handle%,"'"+$data%+"'"³        Í´  Íµ  ç tbar%=0 …¶H    Õ #handle%,"  Button type  "+$(IcButton%+20*((flags%>>12) € 15))·9    Õ #handle%,"  ESG          "+Ã((flags%>>16) € 31)¸  Í¹  ç (flags% € (1<<6)) …º5    òfont_getinfo((flags%>>24) € 255,fn$,fx%,fy%)».    Õ #handle%,"  Font         "+fn$+", ";¼*    Õ #handle%,Ã(fx%)+"x"+Ã(fy%)+" pt"½  Ì¾    ç tbar%=0 …¿;      Õ #handle%,"  Fg colour    "+Ã((flags%>>24) € 15)À;      Õ #handle%,"  Bg colour    "+Ã((flags%>>28) € 15)Á        Í  ÍÃÍÄáÅÆÝ ¤box2str(p%,width%)Çê s$Ès$=¤rjustify(p%!0,width%)És$+=¤rjustify(p%!4,width%)Ês$+=¤rjustify(p%!8,width%)Ës$+=¤rjustify(p%!12,width%)Ì2s$+="    ("+Ã(p%!8-p%!0)+"x"+Ã(p%!12-p%!4)+")"Í=s$ÎÏÝ ¤rjustify(x%,width%)Ðê s$Ñ s$=Ã(x%)Ò-ç ©(s$)<width% … s$=Äwidth%-©(s$)," ")+s$Ó=s$ÔÕ,ô *** procs for exporting icon names ***Ö×Ý òexport_settype(type%)ØExportType%=type%Ùȉ type% ÊÚ)  É 0 : $(ExportFileIcon%)="file_ffb"Û+  É 1,2 : $(ExportFileIcon%)="file_fff"ÜËÝ"òseticonstate0(ExportW%,2,0,0)Þ#òselecticon(ExportW%,3+type%,1)ßáàáÝ òexport_savenames(fname$)âê handle%,no%,line%ãê Ŷä3ç (§fname$,".")=0) € (fname$<>"<Wimp$Scrap>") …å%  òcomplain(¤msg_lookup0("ISLF"))æÌç  È− "Hourglass_On"è  line%=1é  handle%=® fname$ê&  î Ŷ ê Ù #handle% : òerror(0) : á렠ȉ ExportType% Êì     É 0íJ      òexport_basicline(handle%,½(&DD)+" "+½(&F2)+"iconnumbers",line%)î     É 1ï)      Õ #handle%,"/* icon numbers */"ð     É 2ñ&      Õ #handle%,"# icon numbers" ò  Ëó  line%+=1ô  ã no%=0 ¸ NrTemplates%-1õ-    òexport_savenames0(handle%,no%,line%)ö   í no%÷  È‰ ExportType% Êø     É 0ù1      òexport_basicline(handle%,½(&E1),line%)ú      Õ #handle%,13û      Õ #handle%,&FFü%      È− "OS_File",18,fname$,&FFBý    É 1,2þ%      È− "OS_File",18,fname$,&FFFÿ  Ë  Ù #handle%  È− "Hourglass_Off"Íá-Ý òexport_savenames0(handle%,no%,ø line%)ê tname$,nricons%,i%,n$ tname$=$(TemplNames%+28*no%)"WinBlk%!0=TemplHandle%!(4*no%)    $È− "Wimp_GetWindowInfo",,WinBlk%
  32824. nricons%=WinBlk%!88 ç nricons%>0 …   ã i%=0 ¸ nricons%-1    ib%=WinBlk%+92+i%*321    ç ((ib%!16 € &101)=&101) € (ib%!24<>-1) …2      n$=Á¤validationcommand($(ib%!24),"N"),2)      ç ©(n$)>0 …        È‰ ExportType% Ê          É 0R            òexport_basicline(handle%,¤locase(tname$+"_"+n$)+"%="+Ã(i%),line%)          É 1>            n$="#define "+¤upcase(tname$+"_"+n$)+" "+Ã(i%)            Õ #handle%,n$          É 23            n$=¤upcase(tname$+"_"+n$)+":"+Ã(i%)            Õ #handle%,n$         Ë        line%+=1       Í        Í
  32825.   í i%Í á!"+Ý òexport_basicline(handle%,l$,lineno%)#Õ #handle%,13$Õ #handle%,lineno%>>8%Õ #handle%,lineno%&Õ #handle%,©(l$)+4'Õ #handle%,l$;(áÿax%=ScrapBlk%!16Ý           ymin%=ScrapBlk%!12Þ           ymax%=ScrapBlk%!20ß          showicondata%=¹à        Íá        Ëâ    ç showicondata% …ã      xmin$=Ã(xmin%)ä      xmax$=Ã(xmax%)å      ymin$=Ã(ymin%)æ      ymax$=Ã(ymax%)ç.      s$=Ã(xmax%-xmin%)+"x"+Ã(ymax%-ymin%)è        Íé  ÍêÍë.ç t$<>$(IconText%(7)) … òseticontext(7,t$)ì.ç i$<>$(IconText%(8)) … òseticontext(8,i$)í4ç xmin$<>$(IconText%(9)) … òseticontext(9,xmin$)î6ç xmax$<>$(IconText%(26)) … òseticontext(26,xmax$)ï6ç ymin$<>$(IconText%(10)) … òseticontext(10,ymin$)ð6ç ymax$<>$(IconText%(27)) … òseticontext(27,ymax$)ñ0ç s$<>$(IconText%(11)) … òseticontext(11,s$)ò0ç m$<>$(IconText%(24)) … òseticontext(24,m$)óáôõÝ òalignicons(window%)ö-ê move%,imask%,type%,i%,anchorx%,anchory%÷!ê dx1%,dx2%,dy1%,dy2%,handle%ø"move%=¤iconselected(AlignW%,8)WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     °ý™    
  32826.  `7PROGRAMMERI p$€ÐD`T€ ‘6ÐÀ# pRÀ
  32827. h/@ — Ü€°Ð~@EG     ,Ŵ&<Ŵ(0ªÀÈ[  |Æ@p¤Ŵ5´Ŵ7⇦s ÜäŴ=Ðþ@ Ŷ ,ŵFð"Á$¨– lŵNð    BÁ((§ ¬ŵVð
  32828. bÁ,¨· Ø½à◰aP p ‹`Œð ¢0€jàd€mèÀ7ãPÎA:XíàÄ0êpò`ô◰` (Ŵ☓°!"L☓⇩ÀE #l☓‰ð☓0%€Ê€÷'æD‡p'€<±'èð'⇩AQ(⇨`Q4
  32829. •"RL⇩JáRd⇩MÑ)>ŶPP*NEª°* UàUbŬ¨·"WvE¯øÁbX⇧c’,„E³xÑÓ¨¸Ùb[Ð-¾E¸åâ\¤ °.ÚÅ»⇦€yQ/î@¾Ø€~ñ/ÆÀ(€☓±0ãa bL…⇩q12ÆÆÐ1>FÈ%ãd¤…”Ñ2/#fÌ P3n9cgô…fl4ŷŷ¢q4HK£i<™¨15ªÆÕÈ[£k|™°16@Ù8icm´™·7æFݸ@ÞØ}ão‰ÁQ8G °ý™    
  32830.  `7PROGRAMMERI p$€ÐD`T€ ‘6ÐÀ# pRÀ
  32831. h/@ — Ü€°Ð~@EG     ,Ŵ&<Ŵ(0ªÀÈ[  |Æ@p¤Ŵ5´Ŵ7⇦s ÜäŴ=Ðþ@ Ŷ ,ŵFð"Á$¨– lŵNð    BÁ((§ ¬ŵVð
  32832. bÁ,¨· Ø½à◰aP p ‹`Œð ¢0€jàd€mèÀ7ãPÎA:XíàÄ0êpò`ô◰` (Ŵ☓°!"L☓⇩ÀE #l☓‰ð☓0%€Ê€÷'æD‡p'€<±'èð'⇩AQ(⇨`Q4
  32833. •"RL⇩JáRd⇩MÑ)>ŶPP*NEª°* UàUbŬ¨·"WvE¯øÁbX⇧c’,„E³xÑÓ¨¸Ùb[Ð-¾E¸åâ\¤ °.ÚÅ»⇦€yQ/î@¾Ø€~ñ/ÆÀ(€☓±0ãa bL…⇩q12ÆÆÐ1>FÈ%ãd¤…”Ñ2/#fÌ P3n9cgô…fl4ŷŷ¢q4HK£i<™¨15ªÆÕÈ[£k|™°16@Ù8icm´™·7æFݸ@ÞØ}ão‰ÁQ8G NickARMPCEDITGýÿÿsbØà8AssemblerGýÿÿ”zØàXCMOSGýÿÿ©‹ØàkComplierGýÿÿHœØàuConv/SqushGýÿÿïÁØà⇨Debug/InfoGýÿÿ™ŒÙà¬HackerGýÿÿª²ÙàOthersGýÿÿK·ÙàTemplEdGýÿÿïïÙà}ARMPCEDITGýÿÿsbØà8AssemblerGýÿÿ”zØàXCMOSGýÿÿ©‹ØàkComplierGýÿÿHœØàuConv/SqushGýÿÿïÁØà⇨Debug/InfoGýÿÿ™ŒÙà¬HackerGýÿÿª²ÙàOthersGýÿÿK·ÙàTemplEdGýÿÿïïÙà}$$NickºWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!ARMEditGýÿÿgØà98CodeGýÿÿÍpØàE8DocsGýÿÿqØàK8PCGýÿÿ»uØàS8ReadMeGÿÿÿ™ò`i#8!ARMEditGýÿÿgØà98CodeGýÿÿÍpØàE8DocsGýÿÿqØàK8PCGýÿÿ»uØàS8ReadMeGÿÿÿ™ò`i#8ARMPCEDITARMPCEDITNickðFile        : ReadMe
  32834. Date        : 21-Feb-97
  32835. Author      : © A.Thoukydides, 1995, 1996, 1997
  32836. Description : Help file for the "ARMEdit" suite of software.
  32837.  
  32838.  
  32839. INTRODUCTION
  32840.  
  32841. ARMEdit is a suite of utilities for use with Acorn and Aleph One PC cards. It
  32842. consists of a RISC OS module, a desktop front-end application, several DOS
  32843. executables, and support for third party programmers.
  32844.  
  32845. This release of the software contains some support for the Acorn software PC
  32846. emulator. Due to the lower level of programmer support provided, some
  32847. features of the ARMEdit suite may not operate as expected when used with the
  32848. software emulator - this may be fixed in a later version.
  32849.  
  32850. ARMEdit is still under development. Some of the components that may be added
  32851. or improved are:
  32852.     
  32853.     An extended OSCLI command that supports the use of TaskWindows and
  32854.     processing of VDU sequences prior to display of output.
  32855.     
  32856.     Enhanced versions of the GETFILE command that support wildcards and
  32857.     recursion of subdirectories.
  32858.     
  32859.     A version of the device driver that supports write operations.
  32860.     
  32861.     An automatic installer to copy required files into the PC partition, and
  32862.     modify any required configuration files.
  32863.  
  32864. This suite of software is FreeWare; it may be freely used and copied.
  32865. However, I retain full copyright. See the section on "LEGAL MATTERS" for more
  32866. details.
  32867.  
  32868.  
  32869. FILE LIST
  32870.  
  32871. This is the complete lists of files contained in this ARMEdit distribution.
  32872. All of these files must be included unmodified if distributed further.
  32873.  
  32874.     !ARMEdit            The front-end application. This is only required for
  32875.         !Help           some of the functionality of the suite.
  32876.         !Run
  32877.         !Run2           The application directory also contains the ARMEdit
  32878.         !RunImage       module that is always required. It is normally
  32879.         !Sprites        necessary to load the module before starting the PC
  32880.         !Sprites22      front-end.
  32881.         ARMEdit
  32882.         Banner          The PCQuit file may be modified, or used as an example
  32883.         Configure       of an obey file to be run when the PC front-end is
  32884.             !Run        quit. The supplied example file kills all PC related
  32885.             !RunImage   modules.
  32886.             Messages
  32887.             Res
  32888.             Sprites
  32889.             Sprites22
  32890.         Ensure
  32891.         Launch
  32892.             !Run
  32893.             !RunImage
  32894.         PCQuit
  32895.         Resources
  32896.             Banner
  32897.             Banner22
  32898.             Messages
  32899.             Res
  32900.             Templates
  32901.  
  32902.     Code                Header files and object files required for developing
  32903.         ARMFILE/H       extra utilities (both under RISC OS and on the PC).
  32904.         ARMEDIT/LIB     See Docs.Code for more details of how to use these.
  32905.         CLI/H
  32906.         SWI/H
  32907.         TALK/H
  32908.         h.armeditswi
  32909.         o.armeditswi
  32910.  
  32911.     Docs                The rest of the documentation. The different files
  32912.         ARMEDIT         are described below. Read these before reporting any
  32913.         Banner          problems.
  32914.         Code
  32915.         Contacts
  32916.         Device
  32917.         Ensure
  32918.         FrontEnd
  32919.         GETFILE
  32920.         HPC
  32921.         Module
  32922.         OSCLI
  32923.         PUTFILE
  32924.         Talk
  32925.         
  32926.     PC                  The PC executables. These should be copied directly
  32927.         ARMEDIT/COM     from the archive to a PC partition, otherwise the
  32928.         ARMEDIT/SYS     filenames are likely to get truncated.
  32929.         GETFILE/COM
  32930.         OSCLI/COM
  32931.         PUTFILE/COM
  32932.  
  32933.     ReadMe              This file.
  32934.         
  32935.  
  32936. QUICK START
  32937.  
  32938. Before starting it is worth noting that this software requires a version of
  32939. the PC front-end software 1.87 or above. Better performance will be obtained
  32940. if PCPro (!PC version 2.00 of higher) is used. The version number is
  32941. displayed in the Info window from the icon-bar icon. See the Contacts
  32942. documentation for details of obtaining upgrades.
  32943.  
  32944. To try these programs quickly follow these simple instructions:
  32945.  
  32946.     Copy the files from the PC directory of the archive into your PC
  32947.     partition. If you are unsure of how to do this then read the relevant
  32948.     sections of the manuals that came with the computer and PC card.
  32949.  
  32950.     Load the !ARMEdit front-end (double-click on its icon in a filer window)
  32951.     before starting the PC software. This will automatically load the ARMEdit
  32952.     module.
  32953.     
  32954.     Start the PC front-end software.
  32955.  
  32956.     If you are not at a DOS prompt then obtain one, e.g. from Windows
  32957.     double-click on the MS-DOS Prompt icon.
  32958.     
  32959.     Change to the directory containing the files copied from the PC directory
  32960.     of the archive.
  32961.     
  32962.     Type "OSCLI Help ARMEdit". This should display some familiar looking
  32963.     help text.
  32964.     
  32965.     For information about each of the commands simply append /? after the
  32966.     command name, e.g. "PUTFILE /?".
  32967.  
  32968. To find out more read the documentation files listed below.
  32969.  
  32970.  
  32971. DOCUMENTATION
  32972.  
  32973. For more information on this set of utilities please refer to the documents
  32974. in the "Docs" sub-directory. The files are:
  32975.  
  32976.     ARMEDIT     - Documentation for the "ARMEDIT.COM" PC executable that allows
  32977.                   DOS files to be edited using RISC OS editors.
  32978.     
  32979.     Banner      - Documentation for the "Banner" utility used by the front-end
  32980.                   to display the title window.
  32981.  
  32982.     Code        - Documentation required for writing extra utilities for use
  32983.                   with the ARMEdit module.
  32984.  
  32985.     Contacts    - Contact details, including how to obtain upgrades to ARMEdit
  32986.                   and the PC card software.
  32987.  
  32988.     Device      - Documentation for the "ARMEDIT.SYS" PC device driver that
  32989.                   allows access to RISC OS filestore from DOS.
  32990.           
  32991.     Ensure      - Documentation for the "Ensure" utility used by the front-end
  32992.                   to load required system modules.
  32993.     
  32994.     FrontEnd    - Documentation for the "!ARMEdit" front-end that enhances
  32995.                   the functionality of the suite.
  32996.         
  32997.     GETFILE     - Documentation for the "GETFILE.COM" PC executable that allows
  32998.                   files to be copied from RISC OS to DOS.
  32999.     
  33000.     HPC         - Documentation intended for other PC card device driver
  33001.                   developers, detailing some of the calls that may be made
  33002.                   to the ARMEdit module from the PC.
  33003.     
  33004.     Module      - Documentation for the "ARMEdit" module that provides vital
  33005.                   support for all parts of the system.
  33006.     
  33007.     OSCLI       - Documentation for the "OSCLI.COM" PC executable that allows
  33008.                   RISC OS *commands to be executed from DOS.
  33009.     
  33010.     PUTFILE     - Documentation for the "PUTFILE.COM" PC executable that allows
  33011.                   files to be copied from DOS to RISC OS.
  33012.  
  33013.     Talk        - Documentation required for using the "!ARMEdit" front-end
  33014.                   from new PC utilities.
  33015.  
  33016.  
  33017. LEGAL MATTERS
  33018.  
  33019. The "ARMEdit" suite of software and documentation is supplied "as is"; no
  33020. warranty, express or implied, of the merchantability of this software or its
  33021. fitness for any particular purpose is given. In no circumstances shall the
  33022. author, or any provider or distributor of this software, be liable for any
  33023. damage, loss of profits, or any indirect or consequential loss arising out of
  33024. the use of this software or inability to use this software.
  33025.  
  33026. This software is FreeWare. Permission is granted for anyone to distribute it
  33027. unchanged and in its entirety, providing that no profit is made in the
  33028. process. The "ARMEdit" suite may not be distributed if modified or
  33029. incomplete; neither may it be distributed without this documentation.
  33030. However, the "Banner" application and "Ensure" utility may be used and
  33031. distributed independently providing the terms in the relevant documentation
  33032. file are complied with.
  33033.  
  33034. To use this suite, or any part of it, as part of a system or other
  33035. application that is for sale (for however much and for whatever reasons) or
  33036. released as copyright material then the author's express permission in
  33037. writing must be obtained. The author maintains copyright on all the material
  33038. supplied and reserves the right to change these conditions at any time
  33039. without notice.
  33040.  
  33041.  
  33042. ACKNOWLEDGEMENTS
  33043.  
  33044. I would like to the thank the following people for their contributions to
  33045. the development of this software:
  33046.  
  33047.     Acorn Computers - The Risc PC, RISC OS and the ObjAsm assembler.
  33048.     Aleph One       - Producing the PC cards, information and support.
  33049.     Neil Bingham    - Promoting ARMEdit, and numerous constructing comments.
  33050.     Ray Dawson      - Suggestion for improvements to early versions.
  33051.     John Harrison   - Bug reports and suggestions for improvements.
  33052.     Mike Hobbs      - Useful comments during early development and testing.
  33053.     Karl Davis      - Hosting the ARMEdit mailing list on ARMature Online.
  33054.     Dominic Symes   - The brilliant !Zap editor; get a copy immediately.
  33055.     Brian Tucker    - Pointing out a bug that many others did not notice.
  33056.     Robin Watts     - !Larger, the greatest backdrop program ever.
  33057.     Mark Wooding    - !Glass, the best template editor.
  33058.  
  33059. Thanks also to all the beta-testers who have helped with the development
  33060. of this software.
  33061. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     0Nick!HelpGÿÿÿID`f9!RunGëÿÿ[A`☓9!Run2Gëÿÿ9U`    9!RunImageGøÿÿ$8    `t:!SpritesGùÿÿÏŴ¤|9!Sprites22Gùÿÿg⇩¤P9ARMEditGúÿÿIë`—I;BannerGøÿÿt7…O‘9ConfigureGýÿÿ\gØà<EnsureFüÿÿ÷ýÁ2@LaunchGýÿÿÞkØàAPCQuitGëÿÿ¸W`×93ResourcesGýÿÿøkØàB!HelpGÿÿÿID`f9!RunGëÿÿ[A`☓9!Run2Gëÿÿ9U`    9!RunImageGøÿÿ$8    `t:!SpritesGùÿÿÏŴ¤|9!Sprites22Gùÿÿg⇩¤P9ARMEditGúÿÿIë`—I;BannerGøÿÿt7…O‘9ConfigureGýÿÿ\gØà<EnsureFüÿÿ÷ýÁ2@LaunchGýÿÿÞkØàAPCQuitGëÿÿ¸W`×93ResourcesGýÿÿøkØàB8!ARMEdit!ARMEdit0Nick}File        : !Help
  33062. Date        : 21-Feb-97
  33063. Author      : © A.Thoukydides, 1996, 1997
  33064. Description : Information about !ARMEdit.
  33065.  
  33066. !ARMEdit is a front-end for the ARMEdit module. It is necessary for the
  33067. operation of some, but not all, of the other components of the ARMEdit suite.
  33068.  
  33069. See the ReadMe file, and the contents of the Docs directory for more details.
  33070. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |   File        : !Run
  33071. |   Date        : 21-Feb-97
  33072. |   Author      : © A.Thoukydides, 1996, 1997
  33073. |   Description : The first part of the script used to start the ARMEdit
  33074. |                 application. This checks that the computer is running a
  33075. |                 sufficiently recent version of RISC OS, displays a pretty
  33076. |                 banner, and starts the second part of the script.
  33077.  
  33078. | Set a system variable to the application directory
  33079. Set ARMEdit$Dir <Obey$Dir>
  33080.  
  33081. | Load the application sprites
  33082. IconSprites <ARMEdit$Dir>.!Sprites
  33083.  
  33084. | Check that it is a sufficiently recent version of the operating system
  33085. RMEnsure UtilityModule 3.10 Error 0 This application is only suitable for use with RISC OS 3.10 or later versions.
  33086.  
  33087. | Check that there is likely to be sufficient memory for both programs
  33088. WimpSlot -min 136K -max 136K
  33089.  
  33090. | Start the next part of the program loading once the banner has initialised
  33091. Filer_Run <ARMEdit$Dir>.!Run2
  33092.  
  33093. | Ensure that there is sufficient memory for the banner program
  33094. WimpSlot -min 52K -max 52K
  33095.  
  33096. | Run the banner program, leaving window open for 3 seconds
  33097. Run <ARMEdit$Dir>.Banner 300 -sprites <ARMEdit$Dir>.Resources.Banner
  33098. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |   File        : !Run2
  33099. |   Date        : 21-Feb-97
  33100. |   Author      : © A.Thoukydides, 1996, 1997
  33101. |   Description : The second part of the script used to start the ARMEdit
  33102. |                 application. This ensures that all required modules are
  33103. |                 loaded, and then starts the actual application.
  33104.  
  33105. | Check that there is sufficient memory to run
  33106. WimpSlot -min 84K -max 84K
  33107.  
  33108. | Check that a !Scrap folder exists
  33109. If "<Wimp$Scrap>"="" Then Error 0 Scrap folder could not be found. Please double-click on a copy of !Scrap and try again.
  33110.  
  33111. | Special care needs to be taken over the C library
  33112. Set ARMEdit$CLibLoaded 1
  33113. RMEnsure SharedCLibrary 0.00 Set ARMEdit$CLibLoaded 0
  33114. If ARMEdit$CLibLoaded=1 Then RMEnsure SharedCLibrary 3.75 Error 0 You are already running a version of CLib which is too old. This application needs SharedCLibrary 3.75 or later.
  33115. UnSet ARMEdit$CLibLoaded
  33116.  
  33117. | Ensure that the correct versions of modules are loaded
  33118. Run <ARMEdit$Dir>.Ensure SharedCLibrary 3.75 CLib
  33119. Run <ARMEdit$Dir>.Ensure FPEmulator     4.00 FPEmulator
  33120. Run <ARMEdit$Dir>.Ensure MessageTrans   0.28 MsgTrans
  33121. Run <ARMEdit$Dir>.Ensure ColourTrans    0.52 Colours
  33122. Run <ARMEdit$Dir>.Ensure DCS            1.06 Toolbox.DCS_Quit
  33123. Run <ARMEdit$Dir>.Ensure Iconbar        1.11 Toolbox.IconBar
  33124. Run <ARMEdit$Dir>.Ensure Menu           0.22 Toolbox.Menu
  33125. Run <ARMEdit$Dir>.Ensure ProgInfo       0.09 Toolbox.ProgInfo
  33126. Run <ARMEdit$Dir>.Ensure SaveAs         0.10 Toolbox.SaveAs
  33127. Run <ARMEdit$Dir>.Ensure Toolbox        1.33 Toolbox.Toolbox
  33128. Run <ARMEdit$Dir>.Ensure Window         1.29 Toolbox.Window
  33129.  
  33130. | Load the latest version of the ARMEdit module
  33131. RMEnsure ARMEdit 1.03 Run <ARMEdit$Dir>.ARMEdit
  33132.  
  33133. | Check again that there is sufficient memory to run
  33134. WimpSlot -min 84K -max 84K
  33135.  
  33136. | Finally start the application
  33137. Run <ARMEdit$Dir>.!RunImageorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     €L!armedit,< wwwwwwwwwwV4⇦⇦øw""""""""ŵ⇦⇦•w"D$BD"B4⇦⇦ø⇦w"BD"D$D◰⇦⇦•⇦w"DDDDB4⇦⇦ø⇦w"D$D$"ŵ⇦⇦•⇦w"D$BD"⇦⇦ø⇦w"D$"D◰⇦⇦•⇦w"""""⇦⇦ø⇦xpwwwgE◰⇦⇦•⇦wpBBBBB‰⇦ø⇦H"pBBBBâî⇦•⇦w"pî−‰⇦pwwV4fié‰⇦wwww~îîwwp!"âîîw'"""qwwV4îîwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤sm!armedit    ,, wwwwwwwV4⇦øw"""""""ŵ⇦•w"D$BD"2⇦ø⇦w"BD"D$◰⇦•xw"DDDD2⇦ø⇦ww"D$D$ŵ⇦•(ww"D$B3‰ø⇦"ww"D$"çé‰H"ww""""ç~⇦""wwwgEãîwwwww€ic_armedit,, wwwwwwwwwwwwwwwww'r"DDDDDD'rwwwwwwwwwwwwwwwww'rqwwwwwwgE◰⇦wwq'"""""""⇦øqq'BD"D$"◰⇦•7sq'"D$BD2⇦ø⇦7swq'BDDD$◰⇦•x7swq'BDBD"⇦ø⇦r7sq'BD"4ã⇦•(rqq'BD"rfiî⇦$rqq'"""rî("rwwqwwV4î~wwww'rww'rwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Tl!armedit!,LwwwwwwwwV4⇦⇦ø'"""""""""⇦⇦ø'""""""""ŵ⇦⇦•'"D#B4"2Dŵ⇦⇦•'"D$BD"B4⇦⇦ø⇦'"C4"D#C4⇦⇦ø⇦'"BD"D$D◰⇦⇦•⇦'"CD4D2D◰⇦⇦•⇦'"DDD324⇦⇦ø⇦'"D$D$"2⇦⇦ø⇦'"D$C$"ŵ⇦⇦•⇦'"D$B4"ŵ⇦⇦•⇦'"D$2D"⇦⇦ø⇦'"D$"D#⇦⇦ø⇦'"D$"C◰⇦⇦•⇦'"""""ŵ⇦⇦•⇦'"""""⇦⇦ø⇦xwwwwV4⇦⇦ø⇦xpwwwgE◰⇦⇦•⇦wpwwwgE◰⇦⇦•⇦wpBBBBB‰⇦ø⇦H"pBBBBB‰⇦ø⇦H"pBBBBâî⇦•⇦w"pBBBBâî⇦•⇦w"pî−‰⇦pî−‰⇦pwwV4fié‰⇦wwwtwwV4fié‰⇦wwwGG~îîwt@AAA~îîwqp11áîîwAtãîîw71111GGîîtwwV4îîwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsm!armedit,,wwwwwgE◰⇦•'""""""ŵ⇦•'""""""⇦ø⇦'B4"D#"⇦ø⇦'BD"D$ŵ⇦•x'2D#B4ŵ⇦•x'"D$B4⇦ø⇦r'2DDC$⇦ø⇦r'BDD4◰⇦•(r'BDBDŵ⇦•(r'BD24‰ø⇦$r'BD"4‰ø⇦$r'BD"ãé‰H$r'BD"âé‰H$r'BD"ç~⇦D$r'"""ç~⇦""r'""âî'"""rwgEãîwwwwwÔic_armedit!,,wwwwwwwwwwwwwwwww77wwqw7s77wwwwqww7swwwwwwwwwwwwwwwww7swwqqqwwwwwgE◰⇦•q'""""""ŵ⇦•7s'""""""⇦ø⇦7s'B4"D#"⇦ø⇦7s'BD"D$ŵ⇦•x7s'2D#B4ŵ⇦•x7s'"D$B4⇦ø⇦r7s'2DDC$⇦ø⇦r7s'BDD4◰⇦•(r7s'BDBDŵ⇦•(r7s'BD24‰ø⇦$r7s'BD"4‰ø⇦$r7s'BD"ãé‰H$r7s'BD"âé‰H$r7s'BD"ç~⇦D$r7s'"""ç~⇦""rq'""âî'"""rqwgEãîwwwwwqqqww7sww7swwwwwwwwwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ê
  33138.  
  33139. Banner 1.01 (20-Jan-97)
  33140. © A.Thoukydides, 1995, 1997
  33141.  
  33142. ïРá á     ã&€â#+¢ãŴ/ŵâ; ãIï     c€b+o-ëÓë‰ëmëùëÿëCëXë7ëï/A,/E,messages/K,sprites/K,templates/KSyntax: Banner [<time>] [-messages <messagesfile>] [-sprites <spritefile>] [-templates <templatesfile>]@-éÐflåflå)¢ãW/ŵâ9£ã[?◰âÀï@•å8•å€½èTASKBanner ViewerÁ@-é!¡ãçŴâÆïÃïêëüflå@åÝè@-éBhXflå1〽 Ñä2〽0Áã›è0â◰1°á2#  0c#ŵ€à¸•å†flåÀ㓕倽è@-é⇦flå†%flå"¡ã=Ŵâ0 ãáï{÷ÿÿz€ýèÿ_-é0ã 
  33143. 0ã    
  33144. 0ã
  33145. 0ã
  33146. 0ã
  33147. 0ã0
  33148. ÿfl½èÈïÿfl½h0ãÿfl½"¡ã=ŴâÊïøÿÿêŵëÿfl½èÆïÿfl½è ’å2ã
  33149. p4flå2á
  33150. ÿfl½è°ëÿfl½è_ãЙâþfl½èÿ@-éHflå1ã?¡Ŵ8•åï:j á¨$flå€à€âÀã—•åflå"  ã}€âï/j…´flåTÀœåX°⇧âÀ\â'Jœåìflåàèflå0áœå0ã
  33151. Ðäm1ãM1
  33152. QãÚ;1ã÷ÿÿ
  33153. Ðäùÿÿê"¡ãŴŴâ Ðä;Rã   ÁäRãùÿÿÊ œå0œå"¡ãŴŴâ"  ã}€â@ ãP ã` ãp ãï °⇧âÕÿÿê"  ã}€âïÿ€½è@-éÿ ã ã!+¢ãë/ŵâÂçPâüÿÿ$flå1ã¡rŴÙï ã  ã0 ã!K¤ãëO☓âzP¥ã\Ŷâ` ãÛï6ãŴâÁã ŵâ ÂãLCflå0☓à  á@◰à áD•å4C•å!K¤ãëO☓â` ãÛïÚè@-é,flåflå@ŴåÁï•å€½è@-éflå"¡ã5ŴâŴåËï jàãŴåàã ã5ïj0 á  ã5ïj ŵâS á ã5ïj0 á  ã5ïj ŵâc á"  ã6€â‘è0Cà@DàEà¡ á Fࢠ á0Ŵà@ŵà€è"¡ã5ŴâÅè@-éÿ ã!¡ãëŴâ Ñç RâJŵhúÿÿêPâõÿÿ€½èL-é flå flåŴåÌï…½hX°’ål Ŵâ⇧Œç@ã
  33154. ÿâ   áë  á"¡ãŴŴâŴåàflåŴå°Ŵåÿ ã ŴåÍï…½h°[âìÿÿZ…½è>@-é!¡ãëŴâ Ñç Bâ Áçŵï>€½h"¡ãŴŴâ0 ã◰ï>€½h@ ãP ãŴï>€½h!¡ãëŴâ Ñç ŵâ Áç>€½è@-éÌflå1ã]¡Ŵ"  ãŴ€â Ñä ÀäRãûÿÿª@âAâ4•åflåMà$•å Ŵà!•åŴå ãŴå€flå.ï ã•e€½h ãòï jðflå Ðä ÁäRãûÿÿªAâ@âHflåÌflå"+¢ãŴ/ŵâ.x¼flå ãÁå$flå¨flå"+¢ãŴ/ŵâ.è6Á€    
  33155. <Obey$Dir>.Resources.Templates<Obey$Dir>.Resources.Messages<Obey$Dir>.Resources.Spritesbanner1‹WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |   File        : PCQuit
  33156. |   Date        : 21-Feb-97
  33157. |   Author      : © A.Thoukydides, 1997
  33158. |   Description : This file is executed when the PC front-end is quit.
  33159. |                 It kills any PC related modules that are no longer required.
  33160.  
  33161. | An alias to allow modules to be killed safely
  33162. Set Alias$ARMEditKill Set ARMEdit$Active 1|MRMEnsure %%0 0.00 Set ARMEdit$Active 0|MIf ARMEdit$Active=1 Then RMKill %%0
  33163.  
  33164. | Kill PC card modules
  33165. ARMEditKill PCDevHelp
  33166. ARMEditKill PCSupport
  33167. ARMEditKill PCMem
  33168. ARMEditKill PCIOSupport
  33169. ARMEditKill PCSound
  33170. ARMEditKill PCNE2
  33171. ARMEditKill 386PCSupport
  33172.  
  33173. | Kill third party modules
  33174. ARMEditKill ARMASPI
  33175.  
  33176. | Clear any system variables that have been set
  33177. UnSet Alias$ARMEditKill
  33178. UnSet ARMEdit$Active
  33179. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     lë á ë42ëï`Î$¨€ áÀNà À•à†éÀLâ0 †å ã4À†À…À…à ãSãð Ñ…ä0SâûÿÿêOêLgi¡¨µËí–Ïè4jf’½0ç»Ú,0Ï[Ï”x0ç(±0÷E5G‹0"É÷ÿû0üíÿ0üqøï$άÎrÎ%º0ÏîÿÎqÎr$ê%ά0Ïùÿû0üïÿ0üÎúÏ&º0Ïðÿ&άØû0üÌÏûÏÐ'ÊÎ)Ê&º0ÏÏñü'Ϭ)Ь&ά0Ïüÿû0üòÿ0üvtîxwîý¿0Ïtïwvîóxþ0Ïþÿ#ˬ%άû0üËôÏÎ#Ê%ú0üÿ¿0Ïõÿ0Ï[Ï‹ÑKþ    wwÝ$gÖÍ•Þ,ÝÃåÏ'í;*H(fl0GÉ[Ï‹ÑKrÝÄüÜ+ñŷUòŽ
  33180. Ý().÷0üÑ[¼eó’ijÆmÉÝ4ñ⇩UÊøÛ    òÛ(.÷0üÑ[¼flß’d1rKU„DêYÕü»Ç (fl Þº>ø;u_n°#0üÑ[¼ÔÉ’ô(üü0üÑ[¼Á’ÔürÍ™ÄíòŽ    Ý(ç-÷0ATÂ[Ï°’ÑK,,lÖBÝ—bï‰í™cïè/÷ÐG/BT("0HÂ[&ÏϵE!Œ’T‡Y UÆ-}ÀqÆ–pÚ+ • ‘" ¡−Ë−¼"ú«³Údq¶²—\ÅhÜ/g−Zß[ / ⇧uÞd|¶⇧—ZUlzœ/g²ÝË„/⇧uÜpw¶ ŷZÕ`t’/g–ZÛ[…/'}didl òý–úË-Ý«ÉÇÑ|Þo·¬†ÌygPŧÇfPWÿy|ý§|yePÅÐú×»áÍÃʆbßiwÜhÖx—bÖ¡“bæ£ÚËhyügåPõf¥Põã)OuáÐÝ»¬ÞÆé”`¶ Ǭ?p¶"L/ß{é”_¶åºÇ,Þ|¹”^E/gÇéË{¥º‹>/Ý{(y‘^fÚ¹½eOõd¢üáÐÝ»¬×Æé’]¶¹Ç,Üp²~)/çÇéËp *"/Û{¸üÜáÛ.Ð÷<´t)$Ë3dÖŒÞ\© »,N).´%@^‘ù&«,O)ù&«.Qry3c¯›Ar]9$ ²Jiz›[Z− Þº>R;" FN−áÛ. ÷üo[\ÑÏK]cÜ òý–ÄÁÅ.Ý«öÇ`ˆ\?K~ßÜË ÎŒ−–ªÀ^êüpìÌÅ«ïí¥õ»3Í2þR$ÝØ¡¾K묹$îvöܺ$îvöÜ$öìÚ¢¾}W}L~S}}O}     AvK}´¸å|=†mßk`ß=Îl{ù=}kí*p=,kßA6gð×Ô¸2W=Îjpò_ýì¸åp=,iß|$ç·ÑÍ}r−e»É,Ýý    [Œ\w}á­¼‡^Çì}*flbጭüÜáÛ*ã÷u÷⇩n\XÙË÷m0üÑ[¼+‘ÄÌóíœ×†ÿ€−r<ªMÅÎrüËÇ«ïí§¼ìU1ßק¾K묹$îvöܺ$îvöÜ$öìÚ¢¾0)Ï[Ïü•ÑKÌÚ}B>¬+üü ,ýBCUü´Ì«^ÇÃ⇨Í÷g−¨ëiüUÇ‘í−ÝÝÈÝÍ€"Ú›ýlÖ+¯€<d)0üÑ[¼Ñ•ÄlµÐÍ“1ª¶SΛ1ª_ªV”1ªü],%nì%ÐâË0ÆGSê´ñì%í"´ç0Ã웬z‹$8ê4ìÚ!º/¡÷ý,ŴÆ0+Ï[φ•ÑK ,ý 0nÖüÍ«áÇ ,ý!nÖüÍ(Ù÷\" Ùë³k”6rEU4Ŵ‹€−)™e−ŵ0⇦‹üqÉ0EÌ[ÏÏ]¼t•ÄÈÎ◰—)e©ä>ÚÏ−Ýý…Í„–ÝrÝÄüÜÅ“ÞË0Þ$ 8fß8F(!ßd,LI=Uòw-·>
  33181. í{+ç±⇩í)ýül☓SÂËÎÏ­ÙÏ    N0⇩Ŵ)EüÌ0üÑ[¼9•ÄlÌÈ0%ÆÝÏÙ¼G¾2eÚÃFÎÆ®éÛ®½±Å×ëÖ%í⇩®Ý⇩þÌù^÷÷U•BÝ◰ªÍ⇧    ZU<5-ç    íÛÆ?+çýµÎ<å+?r?p…3üÀ0+Ï[Ï•ÑKÌÃÁÎ&Êé·M¾,_ÚÝüü$A,<U)+!}îÌRÚ%íÿ⇩Í @⇧m@•mæå»<‘í
  33182. íÛÆ +çýµÎü*Ï0*Ï[ÏЉÑKÌÃÁÎ2Éé¼@¶,^ÚÝüü◰$BÅù*ŵ⇧uîÌ,}ŵ)Ý⇩%Þ⇧Ýí<¾à*    }ûÆ^ÃHÎ’û©*ýü*üü0üÑ[¼¡‰ÄÈÎѵٷ5¾ýIÊÚ½3èçÚ{)ýü)üü&0üJ[\⇨‰ÏK&>ÌÌVglö‰t‹àp−mlBÝú ·hkfúX·ügüjfúT·t¬†^úP·þœÎúL·ÿÜjÆúH·ÐjÖÈ{Dg⇦eÞ⇧üÜïŷ¼ý},Çü„Í,ò]+,Ýú–]$<_Ýí´‘*}ìÌ?IZ <]ß¿, NÕ­“*ÇCìÄzÎüµÉC„ý|8"<ŴS"h◰S" L"☓<È"Ã07ÆÊÙðUÝvŷÂ]+eUÊ]Æ6Ö$nÐýÌ$‰Ç- ¸¢ F7S4,ï{flÜ<*
  33183. }™ \ÖjeΠÛäKü¿Íf$òå9(òÅ–$Þb.ÚûüÑ[¼>÷™Ä¥†$7_o(:Ãlüz"(7(Ýb$ÙÃ,ú$ݲ ¸ÕúÕ ·ÿ4¸ÅúÑ ·þH¸ÅúÍ ·Ä®\¸UúÉ ·tªt¸UúÅ ·…ª…¸UÁ Ç ÂÕŵ B}ú¿†q=ª0*Ï[ÏÏ^¼™ÄÃ4Æ0Ø¢¥Ùôã1]ôª áUÅmÆ$Þ    òÛÞ)>~*0•ö0ü^[̧™ÏKÈ4Æ¿0Õ"£ÙâÕ−ÉíåÊÝßËÝÖò¶    ŒÖ(Á)÷0ŵSÂ[ÏÏ^¼⇩™ÄÛzÝ3줌rÝÄüÜÅ‹ÞÆ$ÞÇ'Þ$Bmò(¶>    í{¡)ç)±þüŶSÂÿ ºÕqȆËÎ(%µb⇧Ȭ0EÌ[Ï\™ÑKÛÜ3줌rÝÄ&ÞÅÝ    òÛ|)>~±{î0)Ï[ÏD™ÑKÏÆ2¹é3ÔÍ"?æ5ì$8êŵÃ,{ŷ"!4ªxÚû)üü0…<Â[Ï(™ÑK$ Éå>ì–Þ …~¯ýì<)/0CTÂ[!ÏÏEµ™ÄÌ4eÜÏçÏ·Ù%rÏ0ÕklüP̬©V»ÝÝÈÝÍŴßÒý
  33184. ¼•ï—òÍ°[ŬN+Çc)á{L,fl Þº>Ŵ;uµi¹%30 bÂ[!ÏÏFµeâ…ÄQ|uæÃxrÆ>⇨ÔY>+ÇÈ4‡ãQî÷ö»S<j¥{OÎán¼ï*hýuïOîXsì·­´€TÊhþ²]…Ië&®“<Báê»QÞ*çï­ä,·ñWÖ*á{·Ý•°íüÝÍê)·‡ì)ü|⇦I6/dBgbÈÅ Ŷ°-h©„iȉÎdu¢üvÍ°<,/0IÉ[ω…ÑKhÉ£V⇦lm,Ý- B} ,ý¯ÜË
  33185. }«øË/üìø(×#dÝ$ªv]wd◰Ö…©d⇨UüvÍá(/~LÇê[üèÁÅýß(ÇÄ)/cV&“0üÑ[¼(Á_…T,Ý B}(ýüü][ÌS…ÏK¼eü‘o@l|ŵ),ÇÙÑ ÏzŒ,Ý™
  33186. }«êËáû»"„*çOìLrlLüìF¶(×ýý,ͳ(L~ü¬Ì"´îJ*fl"œ"œ0IÉ[Ï…ÑKÞ…Þ⇧;<(üü0ZÉ[Ï…ÑKÞ•Þ;<Í™Þ−ì(üüd<[)0üÑ[¼…ÄÃÓÏ"OêOsµµ(Î$CêŷÀ·e⇩%Þí<¾( })ýüiýÜE◰Í0ü^[Ìã⇧ÏKeÝdvÝËŒÆe¯ÉÆ⇦ÕòÛW(W(ýü0üÑ[¼ÄÍ⇧äÀ£Ä,Ŵɱn¨‹¸i”Ei¥J(Yu©Ã†üØ    ÇÖ(¯ýåª÷ߪ “<(YuìÆÖ[¯ýåª÷ߪ0À[Ϥ⇧ÑK0(flv(üü!0üÑ[¼œ⇧ÄtÌ¿)!ZuÃmÍ…fl)Û¹·)ZuflÆ»⇨–‹±ÛË`x°)gflÆ …k"Û¯¹§)ZuEìÇýëŒ,íü<
  33187. Ç",¿S‡0dð$» gîR4_−üÑ[¼_c⇧Ä(¬1]è\íp¶+@YÕzé'çsÎf`
  33188. Û{O
  33189. }†Þ1
  33190. ü|œÞ-
  33191. },ÜlÖB⇨ÕÌlì    gÈj,m
  33192. B},ÀlÖB¼jÖ´l
  33193. g¨j,mû    B},¤lÖx­⇩ÅaBý,‘lÖB…jÖflð    çî☓l¶€gö ütltnfz6⇨ų'ü|◰djÖ,P*/ Þº>—;ccs$°<>"¼H"’VÀ"ÁRà"D "AWÐ"h>d>"=K)L=‹j0ÏÂulÌŒtEsr»—´ì½œçà¾ÜéËH`´ \IK]VD0EÌ[Ïä⇩ÑKaÌ1üÜ,òÛ}'&}ÙB¬€ÚëÃãÏò̲,ÜÛq'&}ãB¬+Ûû0üÑ[¼Ç⇩ÄQ@uæ°Ã†Û4r¶ [ÕÛŵ¿ŵýíý¼‰²í3ú o=èI"i,K‘Ic)0üŶ[\©⇩ÏKf\MÛL=Dÿ4ëëf2ë ëfC'ëö{(/ëv,Ýý−1Å-ë³lr    SU#,Ýý³−ÌSX#ë6,PÒÝ−Ïë³llS]#,Ýý³−Ìâ=¯,e^ÒÝ−Ï7³ütÐâ:,ÐÝ−Ï,*[Õ›}ü­Ì,ÝmfiÏ[ RU},­Ü¯ ÏÝ«ŒÇ ÜhgoBMê]\Õ¬ŴϯƆÝŴBý‡Ü(ã&÷nSv#p Su3SL 9oÎuP3"±ºp> !»0À!ÿ⇩\\%⇩ÏKg"Çj9¶ãÇ ,ý nÖýÍ«cÇ ,ý flÞýÍ«[Ç~k;w ,ýYÕQ}°·«\Â◰ý½Ã†,eÜÝŒÏ [Õ­(Çá{,ýüÔ"kâRô9gi`ÒÃg(Ç8Óv@¬Õí°o¶\(þ|ÿíËíY(·V(}íÛíS(·P(}‘&ÇQdÐåÃnÍ    RÊflúËYá{ÃzÎŴ&GzafiëÅ×Jäfi«ÃQÎüêÉw& ¬v,üüý!É0EÌ[$Ï®⇨ÑK%ÌÌm☓åÃ⇨Ç*§YÜÖVÞÝU”å}Þ-◰ý>òÛ dV ñ/O×fÆv¢é☓Ð$ ☓h"h¢ÐZFh☓"×☓ÊX¢ià¶zö0àf!0üÑ[¼`y⇨ĨªÌ ròk8F~*ë¨ÑeüìIÂ(Mf0>ïÚì,Nù©È1ÎùÚ‹2Iê­ì,<EjŴÞæ?3lÏCÎêÉÃèÉ€­éFŵî0&8÷ø7F~¨ªÌFòëÃÚ7ÇCêwȬ,üüÍbÝ0¹ýÆ[Ï6⇨ÑK_ÌøÁõ,Ýݬ¡7Ç'Ŷu,8lÖB⇨Õ‘Ìç,f'×n oÝÊüü(®öhh"0…Â[Ï⇨ÑK"(oæ‘ì"þçËÃ,<ª)mú0>Â[Ï⇨ÑKÄÌ-ÀÙ ßG}ëÌ->Úí ¿ ÚÛ«>Ç>ì­l”ãÈî;öË⇧AêÝÄÿ    o0^É[ÏÚ⇦ÑK—î·þ½ÄFêŵƆ5¯ùä·ðIR·þ½ÄBêüÚÏ0(Ï[ÏÂ⇦ÑKtÌ°Ì0ræ&gMìd·Ç^,ûÛ–◰í?x÷$»ä Ü_¹Ó&ZuKì☓ÊÇ^,ûÛ4·]f×"íüÇCh+?0edÂ[&Ï“⇦ÑKÌ(\lgfÀÔ†7›ÕiÏ,ŴÙ    ¯bà FÕÄÝff$ fï¼ü−Åd:%çŴÔ¬ >./!0ü][Ìm⇦ÏKÌ0Ñe\ÒNÆ,ÀÙ+ýüRµüíˬ€ÏEìዼÀ&Ç E­Yíü»€üüÒ]Îû€ºüíËÀÏíJºü,Í$%Kvíû»ü-Í„(%g0,Ï[Ï6⇦ÑKª\ÐÆû¥¹üíËD%g⇩Ь0*Ï[Ï$⇦ÑKÖܤÆÃÜÍ+²éæ×ŵ¶+çÃÜÍ+⇦êüÇ)(™ö&0üÑ[¼$    ⇦TQ´×eà   åÄF²éäü­"ÞøÚ{ÃFÎXl⇦jÚXo¶±´ÌdL&ÇòXgÖú ¿-–Übý|«ì·ÑÍá´¹¹}\.flC\øI2n@¨Œ2NÙ†ÌŴ¦|Ò}Þ8@ÝXŒ¥Ð}ÞÔãÝ©Ä«}Ìí)¼îÄ4¾6Ðêäü½3±ËëÎVëlj1Þþ¢ÛËÛ·/£ÜO⇧uÒ}Þj@­Ð}ÞÔãݬī}Ìí)¼îÄ4¾6Íêäü½3±ËëΫi−X4ÞÞ³î5ëÛkn0☓uµ>†⇨°\Ö£ŵÌü©%Ç’‘ÝÒùÎÑ"Û ¼'¦|Ò}Þt@­Ð}ÞÔãÝ­Ä«}Ìí⇦¼ÎÀû¾6Îêäü½3±ËëÎÝBº4Jï³XíÛI¿g¢|áÐÝ»¬¬Ã†é~¾¿”
  33194. i%áÛ."÷!0üÑ[¼cEÄò`«Õ☓à _.–Üy}è­«\ÏõÍHTÒYÜ ‘µ½1~ßÜË ÎŒ−ý:À]êüpìÌÅ«ïí¥õ»3Í1þ¡¡åëÝËGKêö¹ÎGvíöºÎövÍ¢GîÛ˹×CµçvϬáÛ,­÷&0üv[\ûŷÏKC!\D\º_=þÿ¼Øµ@\LUG%AZuÁ⇦¬\4Í×±‘m²+n³+nd+ÎìÕŶV jþ– QÅ-Ý«AdžÌ+/Ýs7~Ò}Þc@­Ð}ÞÔãÝ«Ä«Èýܾ}îYWîÍÄ«ü[Þµä»3ì‹ë†Y«é¶XíÛß¾I8O0°¨ %
  33195. ³*¤ÛËж×·ÑÍk‡−2~©+áâÛ.µ+/Ý}:ç@ÒÝ}\êãÐÝÄÔ½ýªÊ}ÈíW¾îÄY¾[Íêäü½3µËëΫ‹−XYÞ߶î1Ûû¤ÛËÐ☓×·ÑÍk‡−2~©+ââÛ.µ+/Ý}ç@ÒÝ}\êãÐÝÄÔ½ýªÊ}È훾ÎÀû¾[Íêäü½3µËëΫ‹−XYÞ߶î1Ûû¤ÛËÐR×·ÑÍk‡−2~©áã²\BW=þ¤Lÿ[|#}%U¬⇩$Ç᥼j í|!ç·ÑÍ᮹û}ò.¯2Ù£ÛË¢ÊÇ¥ÈÇÐð×»áÍÃýÉÆY*óÇ“\f ‘\f¥ HÅ    -$g
  33196. Òl⇨(ŵ"çÒB£ÛË¢¬Ç¥ªÇÐÒ×»áÍÃýÉá|ºÉ}0.Ï[$ÏÏ·µìŶÄÖeÜâÆ AþüüϵÐ%–\7$3Zu᫼ "}„ìÜ%pZ=þ—üËÞ#ß%U☓($Wj8Öå‘Q _.–Ü}†«Ì7%ìqÇ ßíŒË†©a…£pÀÎÅü¾ïÎÚõ¾¥Ûì¨4¯$saÒ¡RíëØËGLêö¹ÎGvíøoÜ◰òÜKòìÛ¨¾z7ÎC×7?ç>5u:}Ñ|Þr·†º}−,eÜÝŒÏ[Õ­®Ç”á{‡Ü-#÷báŒ{á{=³%åü¿%\“LUÃ#—jv…N¬\!áÛ/j~†ÈnÕφݠ•µç1~ßÜË ÎŒ−':À`êüpìÏÅ«ïí¥õ»3Í4þ0 S¬!ÒÜ¡¾K묹GîvöܺGîvöÜGöìÛ¢¾» 9vÜ}Ü|Ø}ÏCÎáuºÐ}-…Võ0üÑ[¼ïŶDTɬ/첌öã¾®;†àø»Z\Ueùoàdl¶Z\U_ùoFȬ \à[ Z[UWùoÂ\å Ä_O%à[O#8¸uC¯(?¨©^− Þºa¼;0É[Ïæ☓ÑKÉ/Ì ,YjÈ 9Å ij"“’"/챌öÁ¶­;†à0µ##õ4l(ùf(#à[#ùo¤Èl Jú\à[ê#.$U(#÷ò]©$Yþà¤ÅµZ‘%U(#÷³¨ª%º$0ü"[\«☓ÏK>Ì(ÌmfìÑDÊ°ŒÏãÄ+°égÆ1—§òÁÓ,Ա©¼ÉÚî»ËÏÚï»,ÊßÝüüfi Ì½ !}îÌÕ`ÊÏÊÉ2ªýBʇëfÃÔ†ýSµÚî»ÐÏïý»ÎÚû,ÝüÍ Ï!fiÜ®† ÇªÃ†Vx÷ÔdÎü~Ê⇩-ïôI„ô&\Ý0ìôÆ[ÏL☓ÑKÌóÜ×΀œ−<ÿ©ÅîârMÌÇ¿ïËÚÎ3§Ë1þ§Uíë×Ë$Kêö¹Î$víöºÎövÍ¢$î)ÚûüÑ[¼6☓T,ÜÝüüŴîË~!ýû®¼ŵƦjý!Ç0*Ï[Ï☓ÑK|llxj1fÓÇ.plæÎljv;üì,ñ ×ýŴܬí ÇÃ"Î4Ŷ0.8›©Ã$Î!4ªàÚ{)ýüÂWØ""ÁW<#"04>Â[ÏØ◰ÑK`̶C⇦uB>¬?ëül+,Ý<_A\ }ìÌIÊflÍÜ¿,NÕ­ ÇCìÄ{ÎÚ«¹U±÷ü#ZÅñÆ WüêËcöü‘Ì;þüŵÎ;þüÁ\i.ÞdÇ.Âå_j}üÜÝ ªÕÝ−Ý"Ȭý€ÍS­+?0A
  33197. Â[Ï⇦◰ÑK ,ý"nÖüÍ(Í:÷0ì#Â[Ïz◰ÑKÍ“Þ‰2]mÆ8ojü Í’ /~Í‘ÞmÆ"Ú/üìø oøJG)0HÉ[!Ï\◰ÑK$ËÕJüì4Ŵ ×Ã@ÎÅ ®ÙJüì²} ×·/ßü!Ír J~ÃpÉÅ"®ÙJüìo ×ø/_/Øï,Ý5Q~•Ã¬,ýü$0üÑ[¼ÔÔ/◰TäËPV,Ýð4F~‰Ã¬5`ÚF2ínÆÊZüÍ~/þÎCÆ ¬Ù/üìe~ïnÆ!Ú/üìj}ï¬Î†ü"Í}/þýÐÏ0-Ï[ÏüŵÑK¨Êê[<l—m¢⇩,]¹x|û,r¶",í³ jv,ûÛ„"î­ë
  33198. oÜ$‘%"™UŵU"0üÑ[¼ÃßŵÄ£Ù},Ý ý8 „n\Õ(ŵ÷J¹! üÑ[¼ÉŵÄñL_/ÌélÏ Ïóû»û™~Ò®Fa^DK*fl0üÑ[¼ñ¯ŵDØ.¼,ìÛTö ü^óÛ,Ý(â÷ 0üÑ[¼œŵÄ̱n”¯n”©o”í6¿òÛ{í7¿zÛ{ú3¿Üî»^÷0+Ï[ Ï~ŵÑKÌü¼•íëÀÏ}…­íêíÛàFþt>+/#0üÑ[¼iŵÄÌ (Ìíü»Ï]Ý­á@×íL©µFêí,Öÿ#0üÑ[¼SŵÄÌ (Ìîú»üÜ{0,Ï[#ÏDŵÑKÌ(Ìú ¼Üî»,)÷#0üÑ[¼5ŵÄÌ (Ìîú»©Ü{0,Ï[#Ï&ŵÑKÌ(Ìú ¼Üî»,Ô÷ 0üÑ[¼ŵÄÌíü»"Û{0+Ï[ Ï
  33199. ŵÑKÌü¼Ûí»+)÷0üȸ[\(íõ0üÃ[Ì踫YvÿÝ0(Ï[Ï◰¹Õ0(Ï[ÏÿýêKA M¯Û¯A¡´A¢MB¿ÂD(Gü0(Ï[ÏúÜ­¸œëúÍüªÉù(ßCë¬(ýü/￾ýBÊü(Ï((ÿ"0üÑ[¼»ŴÄÌÏéÄ@Cú]Cþíû»â_þµÃ†Ã&Îû²¹Bðë3_ÎÃEÎýªÉX,ÿ,üü0,Ï[Ï„ŴÑKÌS ì−ÒïûʶÞíûEìíû»Í⇧Þ+Ûÿ|>üJ"'0üÑ[¼}ŴÄÌÑÚûí-Ì@©CZ0 öí_í¸Õ†»f¾gKêH¹«ºh¾iEê·Z½.AúZkþ, }¾%ܽ¼Ý¹YÝFí¬ÍaÝb¸Ý3Ŵýìà©å쩸].éþ'0üÑ[¼CŴÄÚ¼-ÇÏGí¬ìeí*Ì    ¹8ªE@ª3_*ÍÍPÒ\ºÒ†ºR¾SLêI¹«[TÞE·«ZUÞA·«+1ÏY]þ²Ò†¾^¾QCê0¸ý¿QÞÜ{0.Ï[Ï
  33200. ŴÑKÌö⇧ÞDÒ¬€>?/\]þÃSÎR¶é¬ë†3RîG·« EÚkH3l©Ã†Y+ÿ0+Ï["Ïè€ÑKÌÜ%³Ç¾m—© V¸ÍÝŴ¤©Õ0,Ï[%ÏÔ€ÑKÌÐÑ\Ã^Î>Cú\dþÐ^ÞMº«Ñ^ÞI¹«Ï^ÞE»«eOæÞ¸½Y½÷0-Ï[Ït\úRÛ­¸œëúÍüªÉù(߬ë†îB¿«/ýü(üü0(Ï$ÿÑ\¼qË'ÌUlCϬCëæû]¿Üí»ÃáÏ&¶é³Ã†ðû»BÜëE3ì«Ã†¿ýÜW-ÿ¿üÜ0-Ï[ ÏpÑ»Ì_ÌÁüÜ ü7ä¼/ÚûLj m
  33201. îÎÚû»«ÙÏÃzÎIÊ
  33202. Ï™ûëÚT¶«ÕÏ+«ü0☓>Â['ÏoÑ»ÌäÌí7K‹/_Cí¬T ^mT©0_ÕíÎf¸éK»«¹g¾hHêEº«ZiÞA·«k.ï Zß%õǼ¾ÝY½Ýí¹ÍÌ©FZ¸ØÝTéc]ä©3_¸ìÞéð©å0.Ï['ÏnÑ»Ìuuµ/êôí’Å4ªGZ-ØÍxlØ>5/ÉPªe-̹fMºÒ†ºR¾SLêI¹«[TÞE·«ZUÞA·«í1OY]þ²Ò†¾^¾QCê0¸ýÀQÞÚÜ{0.Ï[ÏmÑ»aÌZá[uýWì,ÝY]ŶÏs ü®Ìtáû9¿êܪëݪgc²êܪr Â*Ûû*®ü0üÑ[¼lË2Ü­m”·m”º
  33203. m”,>ßÝüüp…n®qÏ7ü\MÙÖ4ö1ü`Ïï^¿;‡]+÷0üÑ[¼kË•Þ⇦gÖ⇨‰Þç1Í>Êú)"e’°&Â’÷çíë¾²ç·j☓mC·«²ü¼[☓ýþH`?r…üÜ0*Ï[ÏjÑ»1ÜÈ笒:Ï°]¿ÃÐÍ°­¹`àÝ|ëþ*ó÷0üÑ[¼viûª>†‘çXªUÚfÝEì`pªe|¸È_☓ª‘íU)Úý0)Ï[Ïhѻڼ@{ÏÏKÊ,±ÙÝüüÙتծpÏ*Ûû0*Ï[ÏgÑ»ÌÛí»BzÏÏMÊгÉ,±ÙÝüüÙH«Õ®oÏ+Üû0+Ï[Ïfѻڼ)yÿ0üÑ[¼eËî¼wÚûK>¬±Ð†,ÝüÍÔ«_nÙýÚ®¼**ÿÈáͳ*ÃÓÍŴ©0EÌ[!ÏdÑ»×¼àLX0uæs,ÝgV0ÆjCóLµ¬ÙDüüVÙÊ%bqbUíYÑ؆Óq”Tq¥õúÌg¥άÁ¬ÂBÊ☓zÚ‘Í gP[!«Ù®}Ú+ÎýYËØÞœüÜ⇧Ý¥ŒÝB™Ý‡‹ÝQ,öå†Ã†Ú„¹,ß‘c×ZÚ¼çg”T_ÁôÌBª¬ά  ¥ØÅlOõ‹‘{„ÒÝ7ÎÔWËNÊ”ò0üÑ[¼Þc{üÝÍc^ý£ÉΤÇd%0(Ï[ÏbÑ»âì8çË>ª×fi½ýæÏØÞœüÜ⇧Ý¥ŒÝ‡™ÝB’ÝÚ‹½0)Ï[$ÏaÑ»ÌXmísüÜ0Ųm=ÌCœ¥Þµ½0⇧ëæJȬõ8¶F:¬ú6Þ±ä»3ìDë¬ÃQÎ8ëŵjÄÚûLĬý6Þ±ä»3ìDë¬ÃQÎ(ëzj)ë=f_,6V!¬Ù+í&    çð¥´Ê+~;Ú¼²ÞëÈXΖfi−ËQëFì8Î6ª¾®ÉÚDÊ51»¬6Û:Ú¼ÃQÎzsêK²ýÃ&Î̪¹$Ñê© ;¶:⇩Ý,Ý⇧ÿÅîØÆà
  33204. ãVÉ”;Æâ<L¹†¬uÝ òÛ…+~«Ä†ÃQÎQíé¯Ã,«ðçÂÀë¶ð̺?î±ä»ìfl0_Q°îBì²zÞ-Ýû0üÑ[¼`Ëâ_ì8çËBBÚ2mëÖÃ$Î#Kê7äË6Gêäú½3±Ë/þëÜËÚé¹Å®Ï6Hêäý½3±ËëÎTÌåYÁFÞüÍœ±ÝŒ⇧Ýä#¾H7Ü«¸Ù<<Å+ íïß·Ä
  33205. LÚ<8ÅôóU„õµ*Bï0ÛìtŶ»†8óE+“äÊ9~ì8Î6ª¾®ÉÚDÊ51»«6ÛwÚ¼üÍ⇩Í−êÖÃFΓ†−;Üûº9N⇧<Îp÷ÞFVì†Ã†¥“i+àþ0üÑ[¼Ä0À(f;ö˦Ŵ−ŦÏ?Gêä¾D±ÛìüÍ@]‰÷n⇩Õ†⇨ÝDØÞ4ófi]È,8Ʀg−<Í’]sJÞÜ­½JáçfiȆë”ÉŴú−0+Ï[!ÏØ~ÑK1Üa‘ÓåsÝ£»ýÄHÍÅÄÉ?Hêä¾D±ÛìÜœüÜ⇧Ý¥ŒÝ¯³î^‘æ†Ã†î~‹Œ),ïŒ4¾+ í‹Ã×EÚ¼«GÝ0UÏ&ÿÑ\¼fl~ÄÌøx½ÕüqÍ,◰íE묠ݨ+~,‹íBë¬☓ëBmä#¾n7¬Ú½Ä—ÏźÉ&Hê8øë1¡ëê¦DÒíĹl‹¶Ó†Ýn”(:ï5øë,œë8>¦d− ¨´ìuËÃÄ    ÕÙIÕVKÚx»Ä‹Ïe]"¹⇧‹·Å†ý6Þ±ä»3ìnDî±ä»îü»3lÎÝy¾Ë=ëÆÕÎI*BëÀɨK›Ò´™Úû^Ĭ¨*¾SÀ´4ý6Þ±ä»3ìðÛ@+~?‹íä¾D±ÛìnDî±ä»îü»3lÎ…²y^ÈÝÍ›fi−ý6Þ±ä»3ì}”ë,îü»+~.²þ0üÑ[¼Ãÿ}ÄÞœŶ)£}−$jCgEþÝÕ$*e$ÕÎ,äå(4åõ0ð?Â[Ïè}ÑK>ÌÆœŶ)·p−*Ú{D©\…ÍÍWøΑÛûý’ÍBØÞÚ‹½0*Ï[!ÏÌ}ÑK>Ì(̨œŶ)¹p−ïý»5Ú{aÜ…ÍÍWøÎ…Ûûý’ÍBØÞÚ‹½0,Ï[Ϭ}ÑK>Ìj¥Ù$óþ]Ú­¿B}ú¿†Œë=*0*Ï[!Ï—}ÑKÌâì8çË$¬éì4@Úä"¾«7†Ã$ÎüŴÿÂø‰]×Öîïû»ðâÚk0™óÆ[!Ïv}ÑKprlÈH¾GUëÃ`uÆPÚûM·9ûÅ›Àé(1◰]⇦n*P-eÿ ÎH⇨æ:È»¤Ê¾N,fl@HL"€ÚéD@3ÇÜBºü,ÏJ!l⇩ݼüëêîî+jl]À»ŴàEFm9Á»jêÎÁF¶R_ë“/g,Çô0üÑ[¼¸É+}TÃ$Ϊ¨Ŵ)1üì⇨ݼ˧f¤Î†Àj¼×^»0)Ï[!Ï}ÑK]\q%û¼I¶k”Ok¥½Ã,cLZ½q"6w)ar"qÃ,ݽòØB¬%ÍÏÚF×üÆB@Ú,flÙ5]0QÏ[Ïâ|ÑKÌöÉß°Ò†îú»IÜ{hÆG›p’"+Bý&0üÑ[¼Í|Ä2ÜëEû—(ëTœû–uz%\ÖîÉÆ*ð­¹”ÜËBëÍfÄ
  33206. x”{v[Â*\o"p¨Y4hú¸p”Àp”cp¥ÑÒ†z}òYìéç»MܼAs|ôAË»n}l}D].Íö‰è¼d}òYìéç»Mܼè]|Ä;◰û<Ë»8 xµ|Ép%@ÈS#ÝQ·”ïËÕÌÆÜ­”²0.Ï[Ïl|ÑK̽üÃÍͦŴ−ÈãÍíEºÛ Œ¶H ÿ»ÜûòúÛÛÛÂõ o&0üÑ[¼O|ÄT&Ì/ݼ0}ÿdèÇF’$ÌUÕ¬F
  33207. n¥}TÚ¼W<fl< wµ±n”µÔÆ|☓FZÚ    ÇQ[Ü@|µÚǯ7KÚ.¿ÚUÌÝ*»0.Ï[Ï|ÑKÌö¯ßŴÒ†V¦éEìÛí»× Fö
  33208. 3ÏÛú»w}ܼÚW·0+Ï[Ïþ{ÑKͪß;ìŴJï‹⇩(ïüK6ò&\Ý0…òÆ[Ïì{ÑK>ÌÊŒ⇨)·p−ûІèflv)(j”m¦Þ¥ÿíflÚû-íëÚº· A*/$0üÑ[¼>Ï{Ä'Ìm쪌⇨)¼p−ûІÈflv)h”ݦÞ¥ÿí−Úû-íë ŒÇðü»mÚ{-Úû0üÑ[¼>«{ÄÌ⇦Œ⇨)¸p−ûІ¦flv)à·”]¦Þ¥ÿíïڻ햿w-~+Úû$0üÑ[¼>™{Ä'ÌmìhŒ⇨)ºp−ûІŷflv)`¸”]¦Þ¥ÿí ÚËðü»í”¿U-~-Úû0üÑ[¼k{Ä$œæ±ä»!3ìŴÆÃÊ·-fiLáÍ-¡î?îÝ¢ÕëãÉÞá>Ý£Õë¹)ïvõܺ-îvõÜÉõì)¢þ0üÑ[¼?{ÄÃm;ÇŴ©-Ãìá·Ù¡Lìî-ÞÕ?½É¢î>ãÝÕá½)£þõ¹Î-víõºÎõvÍ¢Éî0)Ï[Ï{ÑKÆ;|ŴÆÃÊ·-fiLáÍ-¡î?îÝ¢ÕëãÉÞí<Ý£Óë¹)ïvõܺ-îvõÜÉõì)¢þ0üÑ[¼ñzÄÃÚ<ÇŴ©-Ãìá·Ù¡Lìî-ÞÕ?½É¢î<ãÝÓí½)£þõ¹Î-víõºÎõvÍ¢Éî0)Ï[ÏÊzÑK>Ì@»¥YD<    nþ®ÞflÝÀ⇩ÏH·¢¿ÚÃ=ú©*³êòüÑ[¼>±zÄ⇧†p•−‹ÐºÉox−î­fi²´Úûî☓¼Ø­±WflàÝ¡áÝ:ÒíÚª¾0*Ï[$Ï‹zÑK>Ì'Ì⇧mfipm−‹Ð¿Éox− ⇧fiÂŵ _îý»²Úû☓«Ìcîûàt®ÕáflÝҡݪ:î-Úû0üÑ[¼>kzÄÌH−⇧)»p−xІffio)îü»³Úûî☓¼ø®iWflàÝ¡áÝ:ÒíÚª¾0+Ï[$ÏJzÑK>Ì'Ì⇧mfip%−‹Ð¿Éox− CfiÂ
  33209. Ïîý»±Úû☓«ÌBî{à“¯ÕáflÝҡݪ:î-ÚûüÑ[¼>#zÄ¥†âܯխ@î¡áÝ“ÐÝ☓ÜÚ½·ÆýT·À,-:ú¿†ê=*0*Ï[ÏzÑK€\Ã1:ÇŴ©-Ãìá·Ù¡Lìî-ÞÕ?½É¢î>ãÝÕá½)£þõ¹Î-víõºÎõvÍ¢Éî0)Ï[ÏÜyÑK>̺—⇩)ºp−wІ؇o)Úî»☓¡Ïóî{ã,°ÕäflÝՠݪ:î*Úû$0üÑ[¼>½yÄ'Ìmì——⇩)¿p−wІ¶‡o) üýŵµÚfiÏî☓¼È°ÌWflãÝ äÝ:ÕíÚª¾0-Ï[Ï„yÑK>Ì⇩†ps—‹Ð»Éow−ü’‡²Úî»☓ Ï«î{ãL±ÕäflÝՠݪ:î+Úû$0üÑ[¼>uyÄ'ÌmìP—⇩)¿p−wІn‡o) üý
  33210. ¼Ú†Ïî☓¼è±☓WflãÝ äÝ:ÕíÚª¾0-Ï[ÏNyÑK>Ì0²¥Y@åíä­ÞÓ Ý☓“Í}ÚÛÀ©Ï
  33211. ª¿XÿÂ=ú©*1éò0üÑ[¼/yÄ\9€uŴÆÃÊ·-fiLáÍ-¡î?îÝ¢ÕëãÉÞá>Ý£Õë¹)ïvõܺ-îvõÜÉõì)¢þüÑ[¼>yÄ…†p喋мÉoy−⇨Úûî☓¼€³èWflæÝ¢çÝ¡èÝ-,−æÚ¥¾0*Ï[$ÏæxÑK>Ì'Ì…mfipÁ–‹ÐÁÉoy− ߆Â
  33212. Ïîý»⇦Úû☓«Ì¿î{æ$´ÕçflÝè¢Ýסݪ:î-Úû0üÑ[¼>½xÄÌŒ–…)½p−yІ¸†o)îü»⇦Úûî☓¼°´†WflæÝ¢çÝ¡èÝ:×íÚª¾0+Ï[$ÏŒxÑK>Ì'Ì…mfipu–‹ÐÁÉoy− ›†Â
  33213. Ïîý»Úû☓«Ìsî{æTµÕçflÝè¢Ýסݪ:î-ÚûüÑ[¼>qxÄ¥†ñ¤µÕ«:î¡èÝ¢çÝ“ Ö☓ÜÚÏ·›ý\·À,yþ*ú¿†Rè=*0*Ï[ÏPxÑK~8|ŴÆÃÊ·-fiLáÍ-¡î?îÝ¢ÕëãÉÞá>Ý£Õë¹)ïvõܺ-îvõÜÉõì)¢þmñ⇩n\LÒÃñm0ü\&Ï"xÑKàÜÈÎŵ©Ã§Ã%áépüèM
  33214. yÊ, j®Y«y‹y@j%2ÍÒ½7íû•ìËÀ«üNÞ³ä»3ìà/ïÀ놷+i”_-i¥I8í¯£ÛÀM¾ÛȺ/¬ ÷3àÞIëæ¯jÜÀM¾òÒzÃ1îŶûÜ|1ÎöÎöŷͬ=îZê¬Z0i¥jIÎM¯íÀÀ«⇨%£:xi”\ÍX¾"‘dZjIÎM¯íÀÀ«{%£:Ië”lY
  33215. âT}4m¹õÎR·ÉflÊ´jIÎM¯íÀÀ«g%£:õ”ìŶ¹¬nÕ,ëýiCW¹·9] fñ^R¹É=ûI—ë¯jÜÀM¾£Àª”L%Ãðhí◰¹¬ªÕ†/)õSßkÒ◰Í%Lêõ¹Î%víøoÜ◰ñÜ1ñìÚ¨¾–.¿Ì·9] fñ^Ü·ÀY¹ðÎC0´¢Wmc%Ã7´²—=»jIÎM¯íÀÀ«%£:,¸”\ cð^Õ€ÊOÌ”òüÑ[¼MwÄ_ÌàíŵȆÐÿ*ÀÆÚò»%ÁïÃÑÍzQê­í´·œ¹%îvõÜo%ÎñøÍñ◰ͨ1î*ÚûüÑ[¼#wÄ_ÌàíŵȆ¦ÿ*ÄÆÚò»%½ïÃÑÍzUêãÛ¾JÜîAÞõK¼z¾%³éõ¹Î%víõºÎõvÍ¢%î*ÚûüÑ[¼õvÄ_̸òûÑ%ÞUìÛzîÜãëõJ¾z!Þä³¼œ¹%îvõܺ%îvõÜ%õìÚ¢¾0*Ï[ÏÐvÑKÌò_¼%°ïÃÑÍzQê­í´·œ¹%îvõÜo%ÎñøÍñ◰ͨ1î*ÚûüÑ[¼¯vÄ_̪òûÑ%ÞQì­zÞ·¾%´éõ¹Î%víøoÜ◰ñÜ1ñìÚ¨¾⇩*ïLÒï&\Ý0(ðÆ[Ï⇦vÑKÐÜ•½ÎÀû¾NËêäü½3³Ë/þluàn¸óÎI³é¯jÜÀM¾£Àªó*$ã¸¬pæë,¹%îvôܺ%îvôÜÆôì+¢þ0WÉ[!ÏVvÑKÌàíAÞi5‡Øþ*ð‹Ã,üÜû›ìÍÀ«ü[Þµä»3ì‹ë†Y«é¶Xí(ë¬@䢹%îvöܺ%îvöÜÆöì,¢þ&0üÑ[¼#vÄàÜÎ7)ÜÕÔîàí fÕ°éfȆ†þ*ÝÆÔ7Ï ®fȆ‹þ°"Ûƾ%îû›ìËÀ«ü[Þµä»3ìà/ïLë¬Ã1îŶûÜ|1ÎöÎöŷͬ=îêØ×Å’    œ´V7ßjVÎZ´íÀÀ«–#¤:¸õÎëTÊZºÉŴê¼V<ßjVÎZ´íÀÀ«Ŷ#¤:¸ÐÆëBʽŷjK묹%îvôܺ%îvôÜ%ôìÚ¢¾H.ÿ0üÑ[¼­uÄÌ 4f>׬ÅnÇ"¶.[Äæe̽M¼àÔ"5×û 2ôm¥õ»3ëËë$5Æ%Kê÷¹Î%ví÷ºÎ÷vÍ¢%î)Úû0üÑ[¼{uÄàÜÈÎŵ©ÃÿýÂ%ÆéøнÔãݧīζʹÉÍÄ«ü[Þµä»3ì‹ë†Y«é¶Xí1ÛþÚî»Ú¿¿0+Ï[ÏLuÑKÌàíŵȆÐý*ÆÆÐ%ÞãøÛÄÔ½¶§ª¹Î†Ä¼[Íêäü½3µËëΫ‹−XYÞÛ¶îî1¿¹Úû+Úû0üÑ[¼uÄàÜAÞh3‡ ý*ÅÆì%Þü~ì¦Å«È·Ê©¼Ù›¾ÎÀû¾[Íêäü½3µËëΫ‹−XYÞÛ¶îî1¿®Úû+Úû0üÑ[¼ëtÄàÜAÞh3‡ný*ÅÆì%Þü~ì¦Å«È·Ê©¼Ù›¾ÎÀû¾[Íêäü½3µËëΫ‹−XYÞÛ¶îî1¿¨Úû+Úûýí⇩n\ LÒSîm$0üÑ[¼@³tÄLulÚLx¦îÛª¯·†«»¸ÏfÒeLÍÚÌÞŵË=>ûÌAhA"!+ÌîÛª−· «»MÓÖMôÞÛ@¬6Þ¼€⇨Ì0-Ï[!ÏŵtÑKÌxÎxÑUîÛª}·†«»MÑÖMôÞÚÌÞ+Ë€ZÄI,ÏJ08ÕÚ ÚÄs-ËJEÌáÌKWT´âJ½,Ú¼EsÌJÌ7TáLJKÛÚâËs,Ë0EÌ[&ÏJtÑKÌßí)ÌÔ7íßÕÞ‹^jȆà   ýÂÐäÉ$ãéÖÖ    ²¶,´ªíT
  33216. sÈVÔyËÖªÉêÐIçæ¾Ë8†ç辄éËü“ìÌÅ«\Hìä¾3µË1þGQÍë¶Í$Lê÷¹Î$ví÷ºÎ÷vÍ¢$îè2ï8ç˲yJWë‡k/Û{°*L”ê¼fÖ¬ZÝË“Ú¼á$îéç»ü“ìÌÅ«\Hìä¾3µË1þGQÍë¶Í$Lê÷¹Î$víøoÜ◰óÜ0óìݨ¾ÚZÌ${ëÈáÍfibjû IåÓŒKþR»àî{£ Q¶Þ —¶$R6oä@0¶þ@Í´3îËÏD5F$³éö¹Î$víöºÎövÍ¢$î›êL–„D$“ëçᾓéËÅü¾HÌÊ\îµä»ìQ1߶GÜL묹$îv÷Üo$ÎóøÍó◰ͨ0îZÝË{ڼȑ­e»Ŵ»DÈ€AÝdÕ$ÞúÆÚ[ü²0.Ï[&ÏhsÑKÌWalßí0'Æ0µ:mÀ1µFÏCµÔ.Ã(!f,ìÄBh¥b
  33217. h¥ZÝË‹Ú¼èÿ
  33218. µÃéÛGÉÍ‹ÂÍÀû¾ aÌj\îµä»ìŴ2ï³OÝë\ÆBÚÝ|ë¶ÚZÌæ}ë8çËæÁéé结’ÌÅü¾HÌÊ\îµä»ìQ1߶GÜæë†çæ¾8¬Æh”ZÝË•Ú¼æÿ EOEæÄ‹ÁÍÀû¾    ÜÌJ\îµä»ìP1ßz³íÀ”ë,ZÝËÚ¼çå¾Á8†çå¾⇨éËü“ìÌÅ«\Hìä¾3µË1þGQÍë¶Í壔â8çËݺÚZÌÞ•»ÿ ÅÿDäTû‹ìÌÀ«\ñëä¾3µË1þ³ ÕëÛËÝŶ”²ÚZÌüË0.Ï[!Ï°rÑKÌßí‰È†þwû‹ÈüÌ0EêÓÒî,Úû^b\Ý4í»$îœN̷̆`ͬ꽼¼Ûœ0§ïºÎTª!ëê0²¥Ûû0Vª @fl0¤ïºÎ^¸Y;6ýê0 ²ŒÛû%[æL0Pëe^ ^ªY¡5Í œûý¼Úﻫ¾ÏµÃ†0KìÖþ„Ŷ] 0nŶÖÛ0Ôë$¨îÃÕÍ6ûú),Úû    
  33219. −!0üÑ[¼ArÄßÜÈÎû‰)üþÉEȬÒ0îÚÓ¾b,Ï4[&Õ$ÝîN»ÎÌœÌ͵ɽ]ÊÛ껜ºù0@RúÛê»0–ïºÎзÉÍ*„9ÿ0†6l&Õê1¿’Ûûœ¡¼ Ïïý»¬ÚûëÌK¶ÉÃ0îŶÖÛ0”åØ¡FëŶ½<Öä$⇨æÃÕÍÒúú),Úû0üÑ[¼ßqÄßÜîŵȆåúÂÐÙÉ$Mêõ¹Î$víøoÜ◰ñÜ0ñì:ë¨nû•ìËÀ«üNÞ³ä»3ìà/ïÍë†ü“ìÌÅ«\Hìä¾3µË1þGQÍë¶Í$Mê÷¹Î$víøoÜ◰óÜ0óì8¨þjIÎM¯íÀÀ«O"£:xë¬Õ$ÞúÆÚwú²0+Ï[Ï☓qÑKÌð⇧Ï]ÌÀ⇨uî¼·ÚûEïÛÄ$~+Úû0üÑ[¼oqÄÚµ¿0)Ï[ÏfqÑKÃü)Úû0üÑ[¼]qÄèLß$ÜÈÎ"úŵ)ÊÆÐ$ÞpÿÅÅü¾ì̺ïí§¼ìS1ßÙ¡¾K묹$îvöܺ$îvöÜ$öì$¢îÃÕÍúú)+Úû0üÑ[¼'qÄÌóíœ×†ÿ€−\ŒªMÅÎrüËÇ«ïí§¼ìU1ßק¾K묹$îvöܺ$îvöÜ$öì$¢îÃÕÍæùú))Úû0üÑ[¼ópÄóÍìœ×†ÿ€−\ŷ£MÅÎrüËÇ«ïí§¼ìU1ßק¾K묹$îvöܺ$îvöÜ$öì$¢îÃÕͲùú))Úû2⇩þ\LÒYëm&0üÑ[¼>¹pÄïs‹Øp−Q$~f jlzsµðy¶aH☓õÀ}îür¶ï    }    }ïèu¶é    }    }ñÔ{¶ã    }    }üÍê¥6·    Ý{üÍêfl6·0    Û{üÍê−6·*    Ü{üÍê›6·$    Þ{D ÝÈ_~D*ÝÄR~«îkî ·‡ªv­îkýŒÇÚÀ½@B./‘BHB"CÔB"üÑ[¼>_pÄ8Æ¥Y3V⇧þd⇦à¼=Ь*kú‰\©u…`©u⇩`}úІi=ª0*Ï[ÏBpÑKÏ4gö¨©Õ°©UW·}¸©ÕÀ©´WýL°ñ&0üÑ[¼è©-pT☓}ø©ÕªŴW~}ªÕ_V×ý0LÏ[ÏpÑKw>,TÚ{?ìFræÀÃ,ªüCÊU*flFÚ{ìÆÃ*ÏE@ìÂ!0üÑ[¼TuûodR1íGÃlýDÊ‹ÿåÏ4Ç$±é=Ãlª§Í⇨ô¤,ö°7O)!0üÑ[¼ÝoÄAÌàíÈ Êŵ©Ã_øÂæOÊ%1fläö¹Î%víøoÜ◰òÜ1òìA¨þ¿%îbI椴ûR»ÚÜ{¶`NÛ”¶$L6oäH0¶û¶»3ïËL5Ö<»¹%îvöܺ%îvöÜ%öìÚ¢¾0,Ï[&Ï„oÑKÌÜàvÝAÞŵ©ÃøÂBª.Úû7%Þ¿IíûGåÍÀ«ü$JÖ¶ä»3ìjë†b«éXmL묹%îvöܺ%îvöÜ%öì2¢þ»„¼{®¢Rùõ&0üÑ[¼YoÄAÌIîîD7àÝê¢V1¨éAÞŵ©ÃÕ÷ÂÖ™‹<flæLÐ%ÞüqìËÅ«çí¦¼3ìä/ïZ묹%îvöÜo%ÎòøÍò◰ͨ1î¤ëVj`ÎcºíÀÀ«°¥ª/å—uÜÄ    Ï$vªY¿€kK묹%îvôܺ%îvôÜ%ôìÚ¢¾0.Ï[$ÏoÑKÌ,ìÄÐÝ­
  33220. ÇÒ%ÞŵÆú©Ã}÷Â%ïëÜ¡
  33221. –%Þ—ÖqÐÍÅü¾çËÚÎ3¦Ë/þäÎg묹%îvöܺ%îvöÜ%öìC¢þû‰ìÌÀ«Pÿåä¾3³Ë2þOïÛÿ®]¹ë†j`ÎcºíÀÀ«¯¥ª"ìjÜ«Ñ“{ï¬ï0Ï%Lêô¹Î%víøoÜ◰ðÜ1ðìÚ¨¾0-Ï[Ï“nÑKÌ$èÄÄ
  33222. ü/XìÅ·+%Ìé¸áÍÐbÚüqìËÅ«çí¦¼3ìä/ïT»«j"Î%핽ÎÀû¾NÌêäü½3³ËëÎI«é’jl+ÚûÌÍMß0EÌ[!ÏVnÑKÌàíŵȆÚö*ÚÆÐ%ÞqÌÅü¾çËÚÎ3¦Ë/þ%äÎM묹%îvöÜo%ÎòøÍ1◰íòv̉BÏÀû¾ÿ    ÌZPî³ä»ìð2¿®OÝëÿÅV´é´jÜÀZ¾¤Àª%®Ê}ë¬{0_%Mêô¹Î%víøoÜ◰ðÜv1Î◰ðÜ,ÚûE⇩þ\LÒFý0üÑ[¼ómćý‹Ã†¦É"2å7äË$«éà Ã<¨üÜNËK óCT·mü×Î0+Ï[ÏÔmÑKÌÿsì,$¥éKìä#¾G7¬ú6Þ±ä»3ìü/ϸë†ûì)À»ÿËZ?î±ä»
  33223. ï°Pí*Oü*Býám(Å»û-åRÄKEGÄEBÍEBÍs÷í§¼ÜByÞ0EÌ[$Ï‘mÑKÌ'ÌäνÈ7†ZÝË‘Ú¼çæ¾’éËü >åÌÅ«?Hìä¾3±Ë1þGQÍëœÍma)ݧ¹ÚZÌÜ|»'-ï§2N@Í»îþ»€ &~&È䇣»¦⇩]?Hìä¾3±ËëΧa−Z̪ûN[Í»îý»f &~¢&¾S°þ&0üÑ[¼;mÄÌ'êÄäνÄ7†ZÝ˙ڼ⇦IÍÀû¾6Íêäü½3±ËëΫj−X4Þë‡Í¥ÆYZÝË~Ú¼‡êL⇦ðfiÄ«ûN?λÞÿ», 4~    °    ÌD    ¶(N6…íäü½3±ËëαBJ).ï−4¾\λÞý» 4~¢(¾Ü™¶.ÿëÜˬ9Úâ¼RȬ{ëÛÌËî:,ÝmÍß ÕV åQ\ åÕÏíÍþ½.LÔñDPëE ë DT°°f2Ìy.ÜëçUxìÕÏí°öP4ômL¸ ðD0!Î[Ï°lÑK◰>†p•¦‹xgÆi2ÍÝÙ•íºÚn1ºÖä"¾«7†Ã$Ψ– ÓÙªíÚÞüÍ÷⇧ìVpÍ⇨⇩ÝÚ†½ðC+/$0üÑ[¼>ŶlÄÌb¦◰)Åp−Í]Ý•4Ý»»f»»f"7í7äË$«éj Ã<‰ÝÛÖùå$<×nä¾û±»3ïËÚ!¾0-Ï[ÏZlÑK>Ìc¥Ù•ÍÝÖêÛ±ä»3ìÃ$Î/¬é:õË¿C Ã=ú©*?óò0üÑ[¼=lÄÃÔÍ4«é±¼œü6Þ±ä»3ìj&Î⇦⇩ÍÀû¾3À:ü6ޱ仠   ïaÿ⇩n\LÒ·ÿmüÑ[¼lÄk1ÍP"ÕÆèèUèèUà èÕFȬø2Î3œí†øÜ€⇨u1¹0¹f⇨Ú[ÚC·8}ÚÛ¨$×*§ýüÑ[¼>ïkÄ☓†pÍ¥‹‰®éîͽڛ½ÚÜ¿€E*/0üÑ[¼>ÛkĦ†Í,©Õ%›í®Ã†çí¦¼3ì*2í³Ã†Ã%Îï¯ÙõX+¶¥Û\/3l$÷å¶
  33224. Ã<¿ÏÂpåú)+±òò0üÑ[¼>¯kÄÌ…¥⇦)½p−uІõo−Úî»ŵ±ÇÅî{ߪÕà−Ýќݪ1î%ïëÚÌ¿0+Ï[Ï…kÑK>Ìhª¥Y=áíà­ÞÏœÝŵ⇦ÍX}ÚÛÀ#Ç·¢¿—Ê=ú©*oòò0üÑ[¼>mkÄÌJ¥)µp−ûІôt−¹⇨]¤ Þ¥î%ïëÚÅ¿0+Ï[ÏRkÑK>ÌP«¥Y1æÒ«ÞÀ⇦Í    ª¿dÃ=ú©*=òò0üÑ[¼>;kÄÌ¥ŷ)µp−ûІós−й⇦]£Þ¥î$ïëÚÀ¿0+Ï[Ï kÑK>Ìg¥Ù0æÔ«ÞÀͪ¿2Ã=ú©* òòüÑ[¼>    kÄ⇦†p礋кÉou−îò¹ Ú{îŵ¼¨¬ W−ßÝœàÝ1ÑíÚª¾0*Ï[ÏêjÑK>ÌȤ)²p−ûІñt−»⇨]¤ Þ¥î*ÚûüÑ[¼>ÓjÄŷ†p±¤‹Ð²Ésû−⇦ðÙl»å£íÚ¥¾0*Ï[ϼjÑKßÜÈ΋ŵ©ÑÆÐ$ÞêÛÎ Æ0l©ÈªÂï²Ùõ¾D¥Ûì[ë¬1<_Ó
  33225. ÚFË,Ãç¼ÙÎ3¦ËëÎ$Lê÷¹Î$víøoÜ◰óÜ0óìÚ¨¾Ï)ß÷ÐÝõo¾.¥Û ÝÐyÞ÷ÐÝõo¾-¥Û Ý0yÎ[ÏjjÑKÏÜôÐÝÎ!¦Û 3ìK묹$îv÷ܺ$îv÷Ü$÷ìÚ¢¾0)Ï[ÏLjÑKÏÜ÷ÐÝsÎ.§Ûy3ìK묹$îv÷ܺ$îv÷Ü$÷ìÚ¢¾0)Ï[Ï.jÑKÐÜôÐÝΠ¦Û 3ìL묹%îv÷ܺ%îv÷Ü%÷ìë¢n *=nFúøÄ ⇩×dî%ÞÕ?½%¢î>ãÝÕá½Ú£¾0)Ï[ÏþiÑKÐÜ÷ÐÝsÎ-§Ûy3ìL묹%îv÷ܺ%îv÷Ü%÷ì=¢þû1ÞFúùÄ ŷÔk%êë?îÝ¢Õëã%Þá>Ý£Õë)Úû$äï]âÈÜù­ÉãzÝ2ùüz=Ý=ãÝØ£¾EÌ.Àl÷ö»×.°¶ñEÜBáLô,¯¶Ø-¯¶(El£/LÓ÷´¸|Í’â‡zÚ¼èÍ™©à¤¾ðEÜ|ÕÛâ¸Ü’©èzÝ™¼†¤êEØËöðM¸|Í’â‡zÚ¼èÍ™©Ø¤¾ðEܸ|Í’â‡zÚ¼èÍ™©Ø¤¾0EÌ[ÏniÑKÌûàݪ€_”+üü$#2m¼Ã†-ëmÎ .ÆÖk"Ë«ÂгÉ°éü~ìÅ;Ó·J«6ûá%ÞrÈ,ÒDÚúb”1·ãµûÍ 3´YõÝÍ%víõºÎõvÍ¢ÆîÃPÏŵü−0+Ï[Ï,iÑKÏܺáÍ?ª1$ֱÆßíË &Æ0j¢È©Â¥WcÃÑÍŵû−0*Ï[ÏiÑKÏÜ`Ö]‘­éÃÍͪÖ$Þúa”<ô<*ôC)/ î0EÌ[ÏôhÑK☓Æ}Ó¢‹l£Ù8äþ]4äá]y€⇨Õ0(Ï[ÏâhÑK>ÌÀ¢)¸p−tІøo−Úî»8´¢_−æÝ%$−æ%¥î¡éí*ÚûüÑ[¼>ÅhÄ¥†$&☓¾e®Aî− $Ö‰ý    À¬Õ :ú¿†®ñ=*0*Ï[ϬhÑKÀì%¸îÚŶ¿0)Ï[Ï hÑK>Ì¿¥Y<n,$®n—ÝÀ•Ïª¿° Ã=ú©*⇨ñò0üÑ[¼hÄ◰Ðý)ÚûüÑ[¼>}hÄŷ†p[¢‹Ð¸Éos−îy¨²“Úû,̵e»—í¥$îé$ÞÚ¡¾0*Ï[Ï`hÑKfll$¸îÚ>=·0)Ï[ÏThÑKÏÜÚ4=·0)Ï[ÏJhÑK>Ì(¢⇩)ºp−wІF¨o)Úî»—¶⇧_−0Ö=éí8­n%⇩í¡éí*ÚûüÑ[¼>+hÄ¥†8&ìÀe4& ôe®Aî−0$Öŷý
  33226. À¬9 :ú¿†ñ=*0*Ï[ÏhÑKìï<Ð})Úû0üÑ[¼hÄå<Ð})Úû0üÑ[¼ûgÄÍÜpbÄK·MÕ8Ç/üì⇨ݼî0îjÈÆÀ/¾$]ë™á8Ç+ùþüÑ[¼ÝgÄÔ?¬ÉJ¾G2»¤Ê¾0*Ï[ÏÎgÑK?ÌJÔê2É»ÊFë*¤ûùì»Õ€àd¼E\/ú]EÆùý⇩n\ LÒOþmEסî×îµUE†0üÑ[¼›§gäÈÝÍ>Ú’víÏõÍ%¤éìCê⇩ϬÀE)/OùÝ|nÆ(3¶ŷß¼uÍ­ëTLÐK(…­k'\­”£ “USõÄÚ™ÊsN[ŷÛü¢ÅÙ¶¶ÄE/0YÉ[!ÏjgÑKÌ(N,Ñeꌷã¼ŷå¼É¼⇨XÄ,K´kdKÁK(”´kuÜËT³Ä­ÙòWM™U¬öç¾®;†W§Õöç¾⇧;¬¾m0,Ï!ÿÑ\¼èÎ9gTŶ(GÆôË,EVEÀKqJÕÚ¼⇧SvÁCÝ]Ú{XÆÄÌ,µ‰ÉêxD¸uFaWÚ(‹¶‘H,/⇧_Nݼŷß¼ÈÍÊp…Ùåu®ë†IÒK¬Ë,·ÞÈLÍú¼I4
  33227. tµLLÛªh†⇨6¬S×Ë…Ú¼L ™ÕS×Ë☓Ú¼ø5O3Þ¼KJÛ⇩6¬}ü%ßNݼŷß¼ÈÍÊp\Úåu®ëlJÒK¬Ë,·ÞÈLÍúºIL0:Õªh†⇩5¬S×Ë⇧Ú¼‡]SÌ☓â¼ø3OKwÜ…5¬}ü!0üÑ[¼±fÄÚ2ÍY_Dã ⇨ÅåNË0ŷÛ°Ï,@È{\¾(2Fо»PHD(⇧{lJÝ-‘\¾Ï†w◰Ç(N]⇧ª«Ò†”ãLÚ−´ÚUÌ…ÛífiµÝUÌ5☓ûwmÇÃNÍÒ…Ê™ÎÂ;ì,o0:ìÆ[$ÏnfÑK>Ì'ÌmfipI¡‹Ð»Étû−⇨g§ÒŒîÿ¤Ýð¥¾;;%~%ïëñ    ·☓%þ-Úû0FÂ[$ÏJfÑK>Ì(Ìmfip%¡‹ÒÀÉtü−⇨C§Òhíÿ¤Ýûi¼ð¥¾xü|%êëý;Ç©1î%ñëÚÝ·0-Ï[$Ï"fÑK>Ì'Ìmfipý ‹ÐÁÉtû−⇨§Òø·åÿ¤Ýð¥¾3ü|%êëýì:Ç©1î%ïëñ··-=%~-Úû0üÑ[¼>ùeÄÌÖ ŷ)»p−ûІô¦s)“¸⇦]£
  33228. Þ¥îüïËê÷2·Å:$~0ýìÚ©¾0+Ï[!ÏØeÑK>Ì'Ì´ ŷ)½p−ûІҦs)¹⇦]£
  33229. Þý¾ï¥¾ü,Íê·¡:$~0ýìÚ©¾0,Ï[&Ï´eÑK&>ÌÌ‘ ◰)Âp−Ò—«Õ•7ݼ¼f¼¼f"9í7äË$«é—    Ã<‰ÞÛÖúå    ×Îðü»Ú{.Úû"o׬::Úà¼RȬ{ ÜÔÌËî,Ýl:Í☓×f æU ~ÝÏæåÍþ¬¼D2âÌS¼Êŵ½F QDРìåÑλ2LmÌoÕÖ;QüÊŵ½ ç OTÑÐî2Ìm©ÄoÕÖyQÜ~xÝ´´f0Ï[ÏFeÑK ÈÜ‘<zŴµ†(ú}ü⇩n\$LÒÓüm0üÑ[¼3eÄàíŵA‡¸
  33230. :Ñƽ%îû•ìËÀ«üNÞ³ä»3ìà/ïó☓u泸†jIÎM¯íÀÀ«Í&£:¸óÎëÊ%PêLáÍ¡ôìî%ÞÕ?½%¢î<ãÝÓí½Ú£¾W+fl0üÑ[¼ódÄ ßíŒË†©ð<*âÀÞÆí½ïÌÚõ¾¥Ûì2ߦTíë×Ë$Kêö¹Î$víöºÎövÍ¢$î)Úû0üÑ[¼ÅdÄ ßíŒË†©]Z£âÀÞÆí½ïÌÚõ¾¥Ûì2ߦTíë×Ë$Kêö¹Î$víöºÎövÍ¢$îÚ:Ú{)Úû0üÑ[¼”dÄ•j”° u‹•
  33231. j”¬u‹)ÊÜ@u¢ÚÕ;·fi)ïtsÝê¼úáë¬öÎ>E†0üÑ[¼udÄùÛÚ¿;·fi)ïtsÝê¼úáë¬öÎ?E†0üÑ[¼_dÄÚ½;·fi)ïtsÝê¼úáë¬öÎ@E†0üÑ[¼KdÄ÷ö»ÚŶ;·fi)ïtsÝê¼úáë¬öÎAE†0üÑ[¼5dÄÚy;·fi)ïtsÝê¼úáë¬öÎBE†ôξE1¯ÆsfiÞtÍáê»öúîE¬Ì0CÉ[ÏdÑK)Ü\;@⇨u)Úû0üÑ[¼dÄ⇨)]ÚQ;·0)Ï[ÏücÑK)ÜF;})Úû0üÑ[¼ñcÄÚ-:·0)Ï[ÏècÑKŴ>†3×ÂÚ4¼0)Ï[ÏÜcÑKŴ>†31ÊÚ4¼⇩)ï(Mû&\Ýç@jûv1EÌÏêÛè¿DÏðæ0làÝÆù¼êÛê¿0ðáÆýïÌêù»ê%☓õŷþê.Ù¬üü~ä1l êÛè¿Ù◰Î☓*ê+Ù¬ÙŶÎ,ê-Ù¬Ù⇦Î⇨.êÓÙ,­üÌDpßÆEÞ@ÇìýEüÌì…õEÏ ÜEìÏ ÜEìÏ0üÃCþ~1Ï?·Ü@D|'>E|&άEÙÄ0üÏCpÜvÙ⇦Î⇨*ê+Ù¬×ûÎŴBÇE%Ê×ë¿ùE¼BA⇨U}E~UE>Ç0üúþÎ×ë¿1Ïù¼ÔDê{DËEB>ÇÄF1|DËÏ⇧\ìÿ0EÌýïÌö#ýŷþê.Ù¬üüÏ⇧\ìÿEÌì ý1EÌÏÜö¿DÏÏÜìÿEÌì'ýEÌì%ýÁCE|1EÌê>ä¶èý◰ë*Ù¬Ù☓ÎŶ+ê,Ù¬ÙeÆ-ê.Ù¬­üÌD0ßÆEÀCÇ⇧\EìÏ"ÜEìÏ#ÜEìÏÏ(ÜìÿEÌìÅ⇧õEÌŴ(]EìÏÏÄ⇧\ìÿEüÌì…õEÏ0üAÿ~Ù$eÆØ,ºÏEÇ@ÇE1|DË0üEÿ~ûE1|DË0üAÿ~?‘kùk0FÝRYG]è€vÆ7‘©#"ÌŴG·é#ÌQUSDDW´+>XuCX‘f"CY’f"-Ï0¨1×yG]Û v"¬ Ü"Úøé¯ï V[ ídY KeänÁdÔu†Xexè,"7ÊŵGC|#ÿÊXé¼€Û7e€çÆNë⇦XeêÛé àôÀüÜà×k◰õø߯^åvDX_† êTèHuÆ7‘©;ë„D“:‹V F‹D−VE−ÿHXyE−,QF)F‘;XÙ;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý;;Ý−$9‹    X;D)`;\;"“⇦"©*0kÀT:4 2d'3`6-›y·<è3´a¤ié.G3Ó ¤ •rê3úk@£S¥œ:æs£>¶rA4æºflob£sŵü: ìñ:»k>Dg½oñ3ok[Cl»>Â3mŷn⇦3 y}³ixí:>a'DðkD£e* ¸Cr(õ:eO.Ó3Ba63v¨OÄ3aj>É3f7'†3sÔCÌ3n±a4W›r3iJ>Þ3Õe¦£l²a¡3n~iÆ3#vW³üs=£dü³a‘eT3dKil>>4úu:£B4œJmÇsú3u¢cÕ3oØÕ:cíad3D™z93cflac3> ;>9ADP†Jor 4s”WÜ3eao4G.h>Ch−zý3rärZ3eû³ Ê>ç3ópB£e<s4s◰ó:l€cÚ3K×s3oe`3i_M24n5u⇩C>(rëCF-tC>Ác4uÛtI3a¬eg3l¿³r^s☓3nAeÈ3    MÒ³fike£h#Kt?>+Dcf 4eMé:>7'KlϳtYw–3ifioÖ3eK;Pªe;3u!rŶCei;> oœ3Bör3t¾h›3WÝ :öi"¤H÷a3éon£rrHCR´hC3N3†Jb6hþCíìª
  33232.  >´ íJRŒn@3tòrp3odmCaßtN3n’aþ3eó ã3sÃgþ3h§no3ô«n´KÑu3oF;à« $iõC%t@³se|Ct®rq3n¤û:¡>=¤otG 4o)ikCbs-⇧3a
  33233. iwCr«nÿ3e8nù3 1<‹Cg4K.5i+3rVè:yl%4yM%$    A©0sr;Dhr3ïo8¤h 04t³n£r3pÅrE3oácÍ3q/¢Je⇨ æ3 tB“"t<""‘e<NCegàCl‰y{3fÙ‡:e‹CZM−N“³r 4=!C[)? ç©@?p"N„9P?)−        (> ‘,☓,"0‘†'  ( 1‘ì) Ì* 2‘3‘4‘ì+ †+ |?⇦?"´-¨-"&¤/‹&)−&'−&‘%(−%)−%‘$'−$)−$‘#)−#‘ð@A"À@Ø@"‘@¨@"`@x@"0@H@"@@".ô?"PA ."/.−»ª¾¸ª»Åª¸ÂªÅ¾ªÂ»ª¾¸ª»Åª¸ÂªÅ¾ªÂ»ª¾¸ªµÅª0.µ:¹¹ªººª¼2/£½¼ª40½:¿¿ªÁÁªÃ61£ÄêÆĪÇǪ\A)\0P0"4B —1D1"Fh2\C"pCt2"76−0‘ü2 °3 1‘à3 4 2‘3‘4‘¬5 5‘P    -    )|C)☓7x7"=+−=(−=‘<,−<‘;+−;‘9+−9‘:,−:‘8*−8+−8‘à6 PEhE" E8E"QR−ST−‘D¨D"xD`D"0DHD"D°rï³     m4Cy³ ë3t&îJY− D'M"t8h8"QR−ST−ôEP)9 9"    (  \ìK—Î☓÷u^üx°^☓¡p^†_T_tj$>\hw ]X.]T_☓\ô^8\è\Èel\“]ÔjX\€\XZ\XZd…^ä2`“]8&"\p\“_ø*]8"""\´_€^‘d¸a¤`]]_]´–®Ýv¼ÎÆÍZv¶ù³ûùfi„¼o  h7_Â|{ú½ð®°ýö☓>¹ÃlÈà ¯öÿ¸d1>khlo¥’βÌþã ²ðl®ðl¸ ®üÿl° ·ä?\−kgÄððOÌ¿00lÐ'^*J]€^T¤                   !.) ÿÿ \‡]7!);<Ly¸]ŵúÝÿ$1okù kül®°kñm®áflÀ®üÏN·@¯⇩þ®ã_þ‘ °±ð¸fù]²4Èþ¯kþ Ïá þó¾¯0®À¯ll®à®p® ¶ð|lll¯(°¯à°ð*^ iÌl(°Ô?·°,p]JË‘ç*îà?*\ÀW¤         $+.{]/¾Þÿ     P\Ŵ\vF\z)M\›z…Þÿ%´ic¯ó¯³þ¯µ®üÿ]‘…+ù|%C‰ì…Ñ5qÿÿ^\fl\l›reÌÄÎâ9ë´­N¼À½Ñÿ¯à7)î®ù÷þþÿ¯þþÿ¯ËÊŒ66fþþÿ¯þþÿ¯]ÉÆÆ \Woÿÿ0oy>œÆat4fiÍÝÁ­²àÿÿrdC÷ÅÊÇ'$! ËÖÕì_ „—hit
  33234. ·ÓÉ×R²ð·ÿ¯ü¯ÙÞú# òÊá¯9°Ñö®ø°Öñ²E ÙÞì'œNa¤ŷ×ãJ²Üà²$`¿Œ⇨OppÝâð¶³âÿ±ÿðî²E ±»à´I ´…‘Cth·×ý*êóöÍûŵ
  33235. ¯Ñê°Ic±±Ï´ü!hRíáñ²
  33236. ²    䉙>PŲ*lìýý´èò÷±éÏ%.ü·‡ óïÏÿÿ"&fgǽ©Sá° ÝßÌï{  4‰ÿÿâÿÿ+  Jðá°lOÐŵÿ_  ±ÿÿ y’\¡(\o-&"!!123FF21k  JÂãàýï~!—ÿÿ  Ŵÿï~   —ÿÿ6©    )Åjŷ®ÿ|±á°_¶ü¯¾}P²€ Èï\üc=c]\b]~¯€¯®þfl|«ý®Ñc;dÅ®;÷®Ä÷d<¯Á÷¨ ®úÿ°°þÿ´Â ®ùÿ ®ÿÿ¯ ®ôÿ¯®÷ÿ®ûÿ¯¯±®üÿ®úÿÑþ®þïl¯Êÿß^^ _À^*]àB_À `3_À`J_¿cõ_ÿJ_¾ cö`J_½gý`küa?^À`@_ºd?c¾hB_¸… {ókò½fl\€b `_ÀdA`h`o¾kÿ kþd®⇦ ýr\lklð®Ŵß\kq±•àè    ÿ&¯Ñ…±®Ý¿¯`¯³@¯ý]1\Â\lgq_?±À0ÂÿÈÐkékü®øflœõkñ*bÒ_ÿ]`®ñß|kí¯Ð*&g¹_H\Ã⇧í®Ý¿l {-|À® Àkøœõ° ²€4g¹^]ó\qiª]®gù`® ¯ ?kï\◰kflìÀ€\☓®{ÿ)\`e€]ü®ô°ùÿ(*ÈÀÿ*®Ýÿ®ðÿ**®Àÿ¯¯®ÿÿ®ÿÿ¯¯±¯ÿÿÀ"®àÿg÷®ÿó®öÿ¯gí®ÿó®ýÿd®ú÷ǯ±¯¯¸¯ý\~f]¯Ëýß .*%\€e]]_ÿ\Üg_ÿ  69e‹]ÿ_ÿköllkÿkþkÿ……Îÿ faþ¯»ë¯¼þã\ÿkll|l…‘`®ð|¯ð®ð{†®°|†®°¯¯à¯¸ðø'l±àï:\`NB]¸i@\¨&\¤f¢ps¯¬f±0¶ð\üklîÀüßkØlkð…®p{ü{ø®ð¯ð]ìiÌ"k¬".⇧Àkü*|®Ì`P®†[® kì®ô_®‘kì…lkø®üfl¯²2kÄ®4p°¸ 26] \ÐikÌkÔ*kÜ|®$`œÜkØ^ iÌ^−Ø®ü_…käkð|®Àl<{è®Üfl|l"k¬ \Äjø\Äjü*kÄkð®$€⇧èkôkì`Dg¼®ÜßkèlœÜ® kì®è_®‘⇧𬰰«ô®,€lkøkØ6kÐ6kØll®(€kÌFKkokø®À¯àk¼\°kld®☓ß&kÔl®Ð"|®Øï2¯®Ìß&kà®ðï¯ü´ ±àß"⇧àlll®‘^,yÔ®à®ôÿ¯"&®Àÿ¹ü 7kÒ®þfl†/®ÿ°Ï9®Ð_®ÿfl¶\q°hÿ8 kЮð±¯l°ð    q¨²÷fl¸ð®€®÷•ê_±ÿfll°à°úl°ÿ侮ýï&*ºÇ®ûﯸ\ÀkÎðîð*J\€Ëç*J¿—– œð*J\€®–) G\y\ñ]ùÛÌ*J\€]^T¤     ýÿ\V]ò# 6#d±b]Bi_ . \ô-&\p. #&\]^z\v`d]Í\nÓÿ" \g+3  (":    #    ' °¶©ç®zm¯~‹®zm#          ^Ò\__l ŷ ]]\ýfÍckgk ]ü]·fJ^    f‹^¦®L²®kZ®‘fl◰zfJ®¡¥®k*1¯‘~®b_]]þ^@bà _Þ*d0^°] \q\^þ^|€b‘°@Óm®j†@®s¤®Úÿ ®ãÿ  ²B]^®Ðëc®hZ*lp®•†]^å_b]á)J®¡ ]_^]|ub]ecu:*®¥¯ð>\ ]@Jcà] ^]à e^!\Á]08z°Z`‰±hV†@®_¤®Ùÿ     ®Áÿ ²!&Œ%]bó^\ÿ_\ò]¯¡+±c€uù±´õ¯åÏ®íÿ®ms¯»kò^»ŵN¯²Û® Ým°°°°û~w®€Í°°D&\ô aú]    ]ù]\ò^]_ñ^°É¦JyÀ®6â¢÷®¹uüq­¬B®þ‡¯û(®Ã¸C£®ü¸z®þá¯G®¹z®âyõ¯âyò☓ô® ¹®üÿ®ÿÿ¯÷ÿz®ñáyñcß®!ø☓û¯¯¹µÐ¯87¯¶º~ô](a]]ð\â(\â`qâQ\ý¯à®ØÙwQ\÷aè®"ô^ë]à` ®®ŵÏb1^Ï]ðl>]
  33237. ]Ò/\ö]ê](^\ö]\õ_ó\»]E\û\ó®
  33238. ø®÷ú®ØÙkâlSgÜ`ÖY®±°\Sx­^PdÎ__âlY\Òc\ý\ü_Ô]ù¯²ÞlAjò®ÝÎ]âipO\ö^]ì]ü]^Úb0®õª†à_ý _ö`®àó!_Õ _ÓAa    \ø^ø®¿Ð\ò(]â]`c^^âiY]õ]Õ_ÿ-]\Å]*'`°ºÐ^\âv-_ºD\þdÝ4b®°—ï]ÿ] `
  33239. ]ø\û\õ]\á])]ö^\Ö`-®û¦†Û `    ` a÷^ó]ö®»Í]z0^\âg#`å®ñì¯$®üÿ¯bï´«Ùd°¯€Q\ ¯ ÿ¯H®À¸Ñð¯:\€*° ?»@À®àáhï¯ñ:»àÿ®ð¿€@g/®’À¬Z° 0¯ô¯—„¯Y¤                    ´Îfl®  ` _0¯‘^®pó¯°⇧¹PÏ®°fl¯à_³«»®U¤´]Œð*Z\‘*Z\°]Ð^à\p\‘\€g‘_`fz⇦\i\•\‘N]Z\°*:\’Y]°\_]\⇦®ø{a]v]^`ŷ]yà ."k@&\ m0]—ð\Ü**]0]À\À*JZJ\ð]\pd‘`Jŷ‘\€T@\Ì\T\ª\f\ð*]bÀ]½]1:^Q^€pÀs E\”#>:\ ]\Ð\À\à:\Ð\ð]]ð]\ð.\`]$*®’€ \ô \õ_`s]]^]]\ôaoó_]]]]^sce`\³]`tÂ]+/{ldDs“ZJ®@a_®0{]0\‘\À_@^i¡`î       8(\pZ_@eI®ÀR*J**]:]Ð*\pZ\…**\°:\°\_\‘_ \à::\€^   :J :\‘\À\ : JZ:&*\À*\°**\‘\ð:]à\`Z**:\pJ*\ \àJ \~ M\™*\Ð]\ JL\ ]J\°Z\ð\Àc:'\p*J\‘:]Ð\ð\ì]\ða_ZX]J^**]\‘\pe‘ (Z^°\ð]0¯±°eð]]0™ÏJmà\à\ð\஧`dðba_ÿ\ÿ|J†Ayçd—e I®À^`ÿfe®\ ®Èÿ                  ®{ÿD±^^]²C_¸¾ùõêô](I·û ã?Îãå,Oâ?‘è
  33240.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  33241. P á@ ã  á0àã°[â)ºÕä
  33242. QâªQã
  33243. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  33244. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  33245. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿê|€Hâð árcc 5.00
  33246.   impSlot -min 64k -max 64k
  33247. Run <MultiPi$Dir>.!RunImage
  33248. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     aria0ÿ252ÈðÇmŵÿÿ.~8ð}8nsure Window         1.29 Toolbox.Window
  33249.  
  33250. | Load the latest version of the ARMEdit module
  33251. RMEnsure ARMEdit 1.03 Run <ARMEdit$Dir>.ARMEdit
  33252.  
  33253. | Check again that there is sufficient memory to run
  33254. WimpSlot -min 84K -max 84K
  33255.  
  33256. | Finally start the application
  33257. Run <ARMEdit$Dir>.!RunImageorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     À€@,4 @¼È(ARMEditARM Edit    1.03 (21 Feb 1997) © A.Thoukydides, 1995, 1996, 1997?L-é•â@ïЙb>…½h?…½è@-é•âAï€ýè<ÿÿÿResources.ARMEdit.Messages EPCA:Module cannot be killed while the PC card is active
  33258. ERCL:Module cannot be killed while clients are registered
  33259. ENMA:Unable to extend dynamic area
  33260. ETMP:Too many parameters
  33261. DBAN:ARM Edit RISC OS Support 1.03 (21-Feb-97) (c) A.Thoukydides, 1995, 1996, 1997|M|J|J
  33262. EPCAERCLENMAETMPARMEdit0ARMEdit_Clientsä.ÐARMEdit_Devices´    \
  33263.  
  33264. ARMEdit_DevicesRelogx
  33265. r ò
  33266. ARMEdit_DOSMapÐFäARMEdit_Files…ÊpARMEdit_Memory`tARMEdit_Polling— cÛ ARMEdit_VersionHŒ    (    ARMEdit provides low level ARM side services to a number of Aleph One PC card utilities. This module must be loaded before starting the PC front-end software.€O-éÀ†ån뀕½h€•½è*ARMEdit_DOSMap updates the cached list of mappings between DOS extensions and RISC OS filetypes.Syntax: *ARMEdit_DOSMap€O-éÀ†å€†å0ã
  33267. ïAddress  Block sizeï0ã
  33268. ë‘åúÿÿꀕýèïThere is no RISC OS memory currently claimed by PC software.ýè@-é á Ŵâ›    ë ï’å„    ëè*ARMEdit_Memory displays details of the RISC OS memory currently being used by PC software.Syntax: *ARMEdit_Memory€O-éÀ†å☓†å0ã
  33269. ïHandle     Delete Filenameï0ã
  33270. ë‘åúÿÿꀕýèïThere are no RISC OS files currently open for PC software.ýè@-é á’åM    ë ï’å0ã••ï ï ŴâïèNo    Yes   *ARMEdit_Files displays details of the RISC OS files currently being used by PC software.Syntax: *ARMEdit_Files€O-éÀ†å††å¨…â0á0
  33271. ïID       Handle   Pollword TX toï0ã
  33272. ë‘åúÿÿꀕýèïThere are no clients currently registered.ýè@-é á’åñë ï’åîë ï Ŵâëë ï,’åpã
  33273. æëêïNo msgè*ARMEdit_Clients lists the clients that have registered with this module for message passing.Syntax: *ARMEdit_Clients€O-éÀ†åïStructure  Current    Compatible Minimum    MaximumïïHardware   †å±ë ï†å®ë ﯠã«ë ïÈ ã¨ëïïFront-end   †å¡ë ï$†åfië ï° ãœë ïÊ ã—ëýè@-éü…â, ãØïè*ARMEdit_Version displays the version numbers of the data structures used by the most recently used PC front-end.Syntax: *ARMEdit_Version€O-éÀ†åì†å0ã
  33274. 0ã
  33275. ë‘åúÿÿꀕýèïThere are no active devices.ýè@-é€âïï€ýè*ARMEdit_Devices lists the currently supported DOS devices.Syntax: *ARMEdit_Devices€O-éÀ†å á`•âü …â< ãI½h ‹åì†å0〕ý‘åã2ãŴã€åêâ
  33276. ëR ë¡ë‘åðÿÿêŴãÁã€åöÿÿênow/S*ARMEdit_DevicesRelog resets any active devices. This has the effect of forcing the RISC OS directory structure to be relogged.Syntax: *ARMEdit_DevicesRelog [-now]€O-éÀ†å áG•âü …â< ãI½h‹å‹å ‹å0ã12&
  33277. 0ã1210ã    
  33278. €â@Àã(“è@â☓A°á34  @d4◰2…å2…å1ã
  33279. Ŵâ@Áã(“è@â☓A°á34  @d4◰2…å2〕ý ŵâ@Âã(“è@â☓A°á34  @d4◰2…倕ýèïForeground †å¸ëïïBackground †å±ëýè Oâ­@â…â  ãï0 ã€•½è/E,fore/K/E,back/E*ARMEdit_Polling allows the multitasking speed of the PC card to be controlled. Use with no parameters to display the current settings.Syntax: *ARMEdit_Polling [[-fore] <polls>] [[-back] <polls>]@-épã…qã…†å†å€½è€O-é ã¬0flå½h …åÀ áÜ ë° a:jë° a6jfiüÿë° a3jùë° a/j4ë° a+jÍë° a(j”ë° a$j¢ë° a!jÊë° ajQë° aj? ë° aj
  33280. ë° aj%ë° aj€•ýè(C€O-éÀ†å†å0ã O/@††å¨…â0á0 O3@° ã÷ ë7ëªëüënüÿë´ ë ã   áï;〕ý  á_〕½è…â  ãï0 ã€•½èÿ@-éÍïÿ€ýh0ã1ÿ€ý  á0 á ãw ãüÀ…åüÀ…âëÿ€ýè`1ãw1ð°À†å`1ã
  33281. w1ã
  33282. ð°á@-é Oâµ@âà áð á€ýè@-é‹å…å‹å…å@ ãÈPã@ ³ÈQã@ Ã4ã@ ã¯Pã@ ³¯Qã@ Ã(@…å›å …å›å$…å4ã€ý@ ãÊPã@ ³ÊQã@ Ã4ã@ ãÈPã@ ³ÈQã@ Ã4ã@ ã°Pã@ ³°Qã@ Ã4ã(@…å€ýè,@…å0 …å40…å ã…å ã•â3ŴâD …â²ë ã•â>Ŵâ8 …â­ë ã•âŴâP …â¨ë. ã•âŴâ+•â⇧/ŵâ;•âŒ?◰âK•â§O☓â°ëdflå•â6Ŵâ\ …âÃë€ýèÀ†å    [ã ñ•0ê'ê?ê`ê×êê:êýê)ÿÿêåê@-é•â ã  ãJOâ:ODâèæBadSWIARMEditControlPCTalkStartTalkEndTalkTXTalkRXTalkAckHPCPollingTalkReply@-é á⇦…â€å •â€å À€å…Fè@-éPãñ•0êêêêꀽè−뀽è–ë¥ë€½è±ë€½è‹ë½ë€½è@-é ã…åfl•â! ã0 ã@ ã#ï2ã◰•â`•â  ã0 ã@ ã$ïЙb€½hp•âïЙb€½hã ã0 áïЙb€½h …å…â<•â †åïЙb€½h€½èResources:$.Resources.ARMEdit.ARMEdit$PathARMEdit:Messages@-é…âï †å2〽 ãï€ýè@-é ã4…å0…å,…å(…å…å…å…å …å$…å⇦…å…å…å …åBï$…å€ýè@-é(0†å0Sâ€ýHSã€ý( @•âA“ç00†å0◰àŵå›çŵåÀŵå!◰ç€ýè||a@-é Qflåà@ áP ã”à(P†åPUâa€ýHUãa€ý($`•âa„ç0P†åPŶàŶà€å €å0€å @€åÀ€åa€ýèèè@-éŵåŵå ãŵå ŵåÀŵåâ(†åQâ€ýHQã€ý(0•â1›ç0†åŴàŴà‘åŵå €å€ýèÀ@-é,†åPâ€ýHPã€ý(•â’ç4†å  ã €ç€ýè@-é,†åPâ€ýHPã€ý(•â’ç4†å  ã €ç€ýè@-é,†åPâ€ýHPã€ý(•â’ç4†å  ã €ç€ýè@-é,†åPâ€ýHPã€ý(•â’ç4†å  ã €ç€ýè ÿ@-éØëçëÁëë` ë ãüë ã4…å0…å,…å(…å…å ã€ýè@-éz
  33283. ëÇëÖë°ëëO ë ãëë ã…å ãü…å ã€ýè@-é,†åPâ€ýHPã€ý( •âŴà4†å ’ä ‘ç2ã
  33284.  ’ä ‘ç2ã"†"†’å€à‘åRãºQá ÁÊ 2†åSãÊQẠáë€å …å ã€ýè@-é$"†åBï€ýhPá$…U€ýX ãPá Á€ýè| € |@-é|åà.0ã
  33285. àflå0á
  33286.  ã€ýè4ë€ýèfë€ýè@-é´åà.0ã
  33287. ¨flå0á
  33288.  ã€ýè&ë€ýèXë áVëŴá€ýè@-éø!åà.0ã
  33289. d flå0á
  33290. €ýè áë€ýè áWë€ýè@-é4"åà.0ã
  33291. ( flå0á
  33292. €ýè á ë€ýèÿâHë! áFë€ýèâ@-éü†å0ã@fl@fl€ýè@-é0ã
  33293. 0ã
  33294. 0ã
  33295. 0ã
  33296. €ýèü†å0ã ã…å ãü…å€ýèü†å0ã†åQ㌠ãü…å …â
  33297. €â]ë€ýèü†å0ã     ã…å ãü…å€ýè ã…å ãü…å€ýè ãü…å€ýè@-éü†å1ã†å    Qã*,…â
  33298. /ŵâÒçŴâ…å€ýè ãü…å ã€ýè@-éü†å1ã†å    Qã*,…â
  33299. /ŵâÂçŴâ…å€ýè ãü…å€ýèMEEMA-造ãŵ…å……â
  33300. •⇦âë á áëŵ…å ãü…å …â
  33301. €âë……â
  33302. •⇦â á áë á á ë ã…å ãü…å ã…åŴýè@-éPâ€ýH Ñä Èäúÿÿê@-éPâ€ýH Øä ÁäúÿÿêÿO-ét…å‘å¤'flå à“4å2á! áQãñ•0êêDêQêbê{ê⇨ê•ê”ê½êÊêÝêíêûêê ê!êGêMêTê^êhêuê◰ê⇧ê–êfiêªê»êt†å flå€åÿ•ýè ‘å¨⇩ãx flå⇩áx…åpflå|…å°€â ãmïjããÿœèx …â° á
  33303. ð át †åA¿⇩âÿ⇧èj ã⇩åÿ•ýè⇩â,Ŵâ0Ðä0ÁäQáûÿÿº ã⇩åÿ•ýèï ð áÿœèoïêÿÿê‘å‘å€à:ï*t †å0 ã0ŵå ŵâPáÿ•ý(0Ðä0Âäúÿÿê‘å‘å€à:ï*t †å0 ã0ŵå  ŵâPáÿ•ý(0Òä0Àäúÿÿêt†å ã€åÿ•ýè0‘å 0◰â ãïj2ã
  33304. €†å€ …åŵå 0Câ0ŵå ãŵå0ã €t†å  ŵâ €å ã€åÿ•ýèt†å ã€åÿ•ýè ‘å  Bâ‹å‹å0々€1ãŴ ãït†å ã€åÿ•ýè á’åÔëŴå ãŴåÿ•ýè á’åÚëŴå ãŴåÿ•ýè €âP‘åuã
  33305.  ãø$flå@ ãïj◰ ãêË ã  ãïj` á ãC? ãNë j☓†åŵå☓ …å`ŵåt†å‘åŵå  ŵâ ã á\ ã    ït†å`€å ã€åÿ•ýèt†å ã€åÿ•ýè‘åë0ã
  33306.     ëjt†å ã€åÿ•ýèt†å ã€åÿ•ýè‘å €â 0‘åP á@‘åtã   ïjt†åEà€å ã€åÿ•ýèt†å ã€åÿ•ýè‘å €â 0‘å@‘åtã   ïjt†å ã€åÿ•ýèt†å ã€åÿ•ýè ã ã  ãëj át†å€å ã€åÿ•ýèt†å ã€åÿ•ýè‘åët†å ã€åÿ•ýè‘å  €â‘å™ëjt†å ã€åÿ•ýèt†å ã€åÿ•ýè‘åÅëj0ã
  33307. 0 át†å€å €å ã€å  €â ãQâÿ•ýHÓçÂçúÿÿêt†å ã€åÿ•ýè‘åô †åô…åQáfœ€âAë át†å€å €â…â\•â< ãïjt†å ã€å€â á Ðä2ã
  33308. |2ã Ðä@ Bâ Áäöÿÿê$  ã Áåÿ•ýèt†å ã€åÿ•ýèDBAN€âÐåPët†å ã€åÿ•ýèÐåsë át†å€å ã€åÿ•ýèÐå Ðå$Ŵà€âÐåbët†å s c€åÿ•ýèÐå Ðå$Ŵà€âÐåËët†å s c€åÿ•ýè‘åÐåèë  át†å Àå"$ á ÀåÀå! áÀå ã€åÿ•ýè ÐåÐå$ŵàÐåÐåŴà áLë  át†å€å Àå ã€åÿ•ýè€â¤ë át†å€å s c€åÿ•ýè‘å  €â 0€â‘åìë  át†å €å€å s c€åÿ•ýè€â‘å    ët†å s c€åÿ•ýè‘å  €â‘åöëjt†å ã€åÿ•ýèt†å ã€åÿ•ýè‘åBï
  33309. j€à1ã
  33310. $†åPá A$…åt†å ã€åÿ•ýèt†å ã€åÿ•ýè ã€å€âoëjÿ•ýèt†å ã€åÿ•ýèÿÿä@-é ãä…åè…å ëЙb€½h€½è@-éä †å ã2ã ãä…åè…倽è?@-éä †å ã2ã ãä…åè…å•âïЙb>€½hC ãs•âŴâïЙb>€½h0ã?€½ á ã    ïW Râ=J0 ãP á¢UáŶP ’¢U’üÿÿŒ@ ãRá B @¤à¥P áUáùÿÿ*  ã‹à ãàëä …å@ŵàè@…å0 á?  ãSá(* ã    ï ŵâP ã
  33311. ï 0ã
  33312. PŶá
  33313. ï 0ã
  33314. TŶá
  33315. ï 0ã
  33316. XŶáP◰å ã    ï
  33317.  ŵâ
  33318. ïAPã0@²7@¢P á
  33319. ïAPã0@²7@¢R€á
  33320. ïAPã0@²7@¢R€áP◰å0◰â×ÿÿê ãä…åè…å ãï ã3•âïЙb>€½h?€½èDOSMap { > <ARMEdit$ScrapDir>.DOSMap }<ARMEdit$ScrapDir>.DOSMap@-éä†åè †åQá*0’å0áŴùÿÿ’倽èH倽è@-éä†åè †åQá*0’å0áŴùÿÿ’倽è ã€½è@-éfi•â
  33321.   ã RâJ0Ñç0áúÿÿx•âÑç€ýè Pã  ³ 0ã_ €Pã@ £aPãºzPã @Ò€ýè@-é<•â
  33322.   ã RâJ0Ñç0áúÿÿ*•âÑç€ýè Pã  ³aPãºzPã @Ò€ýè?#&@%$^.\/#?+=;<>/.\@-é ã€…倽è@-é€0†å3ã
  33323.   á0›å ãïøÿÿê ã€…倽è@-é ã☓…倽è@-é☓…â‘å1〽 ëúÿÿê@-é0 á☓…â‘å1ã €½ ’å3ွŴâöÿÿê@-éë ‘å‹å€å ã"ë€ýè?@-é ‘å‹å ãï‹å0ã?€½ ã ŵâï?€½è@-é ã …夅娅ↅå ã€å€å€å €å$€å0€å ã€å€åàã,€å€½è@-醆å1〽 ’å’å’å2ã" ÷ÿÿêü@-é@ áP á` áp á ã 4flåðëü€½h††åŵ冠…å@ŵåQÅãPŵå`ŵåpŵ夆å$ŵå0ŵå ã ŵåàã,ŵå †å€â€ãpã  …åŵå ŵâ7ëü€½è@-醅⠒å2〽0‹å0á
  33324. ŵâ÷ÿÿê‹åŴå ãÈë'뀽è@-é á††å0〽, ‘årã
  33325. 0 ‘å1ွ‘åõÿÿê@-é  á áîÿÿë0ã
  33326. ,‘åã
  33327. ‹å0á ê0ã
  33328. ‹å0áê‹åã
  33329.  ã€½è ã€½è@-醠†å2ã
  33330.  ã ŵ夆å$‹å0á
  33331.  ã ŵå á×ÿÿë0ãŴâ$ŵå‹åÀãŵåëÿÿê ‹åéÿÿꆆå0〽 ‘å1ã    
  33332. ‘å1ã
  33333. ‘åã•â  áTè‘åîÿÿê@-醆å0〽 ‘å1ã
  33334. ‘å1ã
  33335. ‘åãŴã€å-éÀ‘åà áð‘å½èëÿÿê‘åêÿÿê@-é†0†å3ã  €½@›å0á
  33336. 0›å÷ÿÿê2ã
  33337.  áë, ›årã  4 ◰€½è9@-é†0†å3ã9€½@›å0á
  33338. 0›åøÿÿê á†0†å3ã9€½@›å1á
  33339. 0›åøÿÿêë9€½è @-é,◰夆å0◰åŴ⤅å‘å ◰å‘å◰årã
  33340. 40◰â ãQâJÒçÃçúÿÿê◰ÿÿë €½è@-éÜ…å ã ã àã½ÿÿ뀽è@-醆å1ã
  33341.  ’å0á
  33342. ’åøÿÿê ’å0〽$’åFÿÿë0〽$ ’å( Ŵå ŵâ$ Ŵå ’å!Âã Ŵå,‘åãà,€‘å  ‘å4€â\ÿÿ뀽è ã€½è@-醆å1〽 ’å0á
  33343. ’åøÿÿê(’å'ÿÿë0〽àã,€åIÿÿ뀽è4@-é⇩…â •â Ñä Àä2ãûÿÿh•â! ã0 ã@ ã#ï2ãL•â0•â  ã0 ã@ ã$ïЙb€½h ã9•â@ ãïЙb€½h€½è<Wimp$ScrapDir>.ARMEditARMEdit$ScrapDir<ARMEdit$ScrapDir><ARMEdit$ScrapDir>.Temp_aaaaa?@-é  á% ã⇩…â0 ã@ ã\ ã)ïëЙb>€½h?€ýè@-é⇩…âñå0ãüÿÿqåzP〲a £Áåùÿÿª€ýè@-éü…â, ãÔïè@-éü…â   ãØï R⌠ïûÿÿêè@-é ãì…å€ýè@-é#ë€ýè>@-é áì†å0ã O•âü …â< ãIïj ŵâ‹ä
  33344.  ã0ã
  33345. €â0Àã›è0â◰1°á1  0cŴø…å ãìP…â‹ä ë‹ä    ë‹äë‹åë ãŶå á>€ýè ã>€ýè@-é0ã
  33346. @ á ãX:flåUëj2ã
  33347.  ŶåPŵâŴâ0 ãÔä\0ã1◰ûÿÿ
  33348. #0ã1◰øÿÿ
  33349. 1ŵå@Dâã  á&ë€ýè?@-é% ã á ŵâ0 ã@ ã\ ã)ï?€ýè@-é ŵâÔä Pã ÓÂäúÿÿÊ€ýè/A,limit/K/E,/A,,,@-éïë0ã€ý  ãSë‘åãÁã  ã à€å á€ýè@-é ã€å €åëPflå  ã Àç€ýè@-é@flå@)flå0 ãQâJë  áúÿÿêàã€å€ýè@-éN€âŴ@☓à Ôå@Ôå$ŵáIflå@€à1“ç€ýè@-éN€âŴ@☓à Äå"$ á ÄåÜHflå@€à1☓ç€ýè}@-é@ áP á¸hflå ãŴâäÿÿë3ã
  33350. Qáùÿÿ: ã}€ýè Ŵà BâRáùÿÿ*@ á á|(flå0 áßÿÿë  áAâQáúÿÿ* á}€ýè9@-éP áÌÿÿë2ã
  33351. 3ã
  33352. @ ã›å1á
  33353. Ãÿÿë2ã
  33354.  á@☓â÷ÿÿê3ã
  33355.  á  á9€ýè ã9€ýè?@-éP á‘åŴã€åë  ã0 ãë
  33356. ë1ã?€ýflë ëùÿÿê@-é°flåŶà¤Gflå@Ŷà€ýè@-é ŴâQá #€ýè@-é áñÿÿë0á€ýyë2ã
  33357. ‹ëêÿÿë÷ÿÿêîÿÿë1ãôÿÿ€ýè@-ézë  •â 0 ã0SâJÒçÁçúÿÿê ã Áå€ýèARMEdit    ÿ@-ép á!‘å ŵã!€å  á^ëÿ€½h+ëPë.0 ã0Áå0‹å0Áå#4 áÁå)ëHë.0 ã0Áå0Áå0‹å3ã0›0Áå#4 áÁå0 ãë1ãÿ€ýTë(ëùÿÿê@-é áZÿÿëP á|flåUáP #€ýè@-é Eâ"ŷàF0 ã ŵàáë á1ã ŴLŴâ€ýè@-é áP‹å` ãïÿÿë€ýè@-é á ŴâQá€ý8`ŷâVãºÝÿÿë5ã €ý` ãàÿÿë€ýèA-造á áæÿÿë0áŴýë2ã
  33358. )ë  áÞÿÿëöÿÿêâÿÿë1ãóÿÿŴýè@-éë  ã   ã RâJÁçûÿÿê ã Áå€ýè@-é’årë á1ã€ý_〽è@-é ã   ã Râ€ýHÁçûÿÿê7@-éöÿÿësã
  33359. @ á ë3ã0à
  33360. ë2ã0 á7€ý  áñÿÿê  ã Áå7€ýèS@-é@ á2ãŵ€     ã-…â/ŵâ0 ã\ ã` ã ï0 c3ã0   áP áS€ýè{@-éP áëj4ã
  33361. P☓å%ëa‘åRëj☓ëj ☓åP ãP☓å Q‘åP☓å A€å{€ýè  á ãÔë  ã Áå  ã{€ýè@-éë0€â ãËë  c@ á€ýè@-é ã€âÒä QãûÿÿÊ€âÓä Qã÷ÿÿÊ€ýè@-é@☓âÒä PãÄÄûÿÿÊ. ãÄä  áÒä Pã ÓÄäúÿÿÊŴâ  ãÓä/0ã +üÿë 0ã0CÁç ŵâRãõÿÿºÓä/0ã
  33362.  PãúÿÿÊ0SâÓä/0ã üÿë 0ã0CÁç ŵâ RãõÿÿºÑåå0ã Á€ýèÿA-造áp á☓â ãïjãP P 0ã
  33363. 0ã
  33364. 0ãã
  33365. PŶã=ë PÇåvã  0 Kë0Çå#4 á0Çå Çå"$ á Çå@åø†å0ãÿŴýTáÿŴý—_ãÿŴ½è@-é×å 0ã€ý áÕûÿëâ0ã€ýÁä  áúÿÿê @-é ’å 0Ñåã2    
  33366.  Râ  C¢& á ŵâ 0Ñåãŵ6 0Ŵë €½h ☓å Áå"$ á Áå €ýè@-é á  áPþÿë  á2ã€ý_〽èï@-é     ã,…â/ŵâ@ ã€P ã` ãp ã0 ã ïjpàtãøÿÿpâ @ ã–àï€ýè@-é á á•ë  á0 á€ýè@-é  áë2ã€ý  á
  33367. ë2ã€ý   ã Râ€ýH0Ðç@Ñç3áùÿÿ
  33368.   ã€ýè@-éÒå0ãå0  €ý Òåã  €ýè@-é€â ãQâ€ýH Ðç0Rãº9Rã ŵ²A  ÚARãA  ³ºZRã ŵ²º0  ã Àçíÿÿê Àç€ýè0  ã ÀçQâ€ýH Ðç 2ãøÿÿ
  33369. €ýè@-é ’å2ã  á ãàë€ýè@-é ã áï€ýè@-é ‘å1ã
  33370.  ’åìÿÿë áùÿÿê ã €å€ýè@-é ‘å1ã€ý ’å2ã  ã Ŵå’åöÿÿê@-é ã áï€ýè⇧Ŵý?øÿŴ@-é
  33371. ë2ã€ýŵå‘åŵå1ã Ŵ!€å ãŵå€ýè @-é ã◰? ã©ë €ýè{@-éA‘åP ãh`åë2ã    
  33372. 5ãP −ýÿë á1ã
  33373. Qáôÿÿº  á{€ýè‘å1á
  33374. ëúÿÿê  ã{€ýè@-éAâ áF0 ãŴà0 ã@ ã@TâJËÿÿë2ã€ý3ã0 Ŵâöÿÿê  á€ýè@-é ’å0’å2ã0ŵ3ã ◰!€  á ãsë€ýè@-é1‘å3ã€ý›å0á€ý0›åøÿÿê@-é!‘å2ã€ý á ‹åãÿÿëùÿÿê@-éì†å1ã
  33375.  á€ÿÿëðÿÿë  á’å ãVëõÿÿê ãì…å€ýè@-éÿ0ãÓ•â €â,•â6/ŵâ0Ðä0ÁäPáûÿÿ:€ýè@-é ë0ã€ý‘åŴãÁããÁ€å€ý_ÿÿëÏÿÿëýÿë€ýè@-é áì†å0ã€ýQâ€ýH‘åùÿÿê@-éôÿÿë0ã0
  33376. 1‘å0Ãã1€å³ÿÿë3ã2ã
  33377.  Râ :@0Râ: Sâ:"2 á0◰â â ë€½h0ã
  33378. €ýè,Ŵâ ãŴäQáüÿÿ:€ýè ◰âië€ýèn•âfë€ýè€â< ã‹ àaë€ýèô"å Ðç2ãBýÿ #å€à, ã› àWë€ýè_〽è~@-éP á@ á áýÿë1ã ~€½ `’å `ÖåãB☓à☓D á ’å2ã 2ã
  33379. !ë~€ýx  ã Ŵåë2ã
  33380. ë~€½è_ã~€½èSýÿë~€½h0Câ"☓àF0 ã ŵà_ÿÿë3ã ã~€ýè ◰â á(ë~€ýè @-é0 áC ãŴâï c◰å  á €ýè@-é ã á  á< ã è@-é€ÿÿë0ã
  33381. 1‘å0Ãã1€å?ÿÿë3ãë3ã
  33382.  á ◰âë€ýè_〽è@-é áéþÿë0 á€ýè @-é, ã Râ €ýH0‘ç0Ŵçúÿÿêë>‘ARM EditPü@öÿ)Í[ARMEditDiscFAT16   ÍThere is no point attempting to boot from this device!
  33383. The ARM Edit device is only used to access RISC OS file systemsÿA-é ãàã  ã0àã€@ ãPàã` ãp ã€•âfï c…å"…å 2…å ã…åÿŴýèARM Edit@-é ã†å1ã€ýfï€ýèH-鲆å;ã
  33384. 0ã
  33385. 0ã
  33386. ï⇦½è²†å;ãúÿÿ
  33387. ë⇦½è ²†å Ráõÿÿ:ë⇦½è@-é†å0ã ãë  cЙb€½h ã †åï€ýx áëj ã †åï€ýxë  ãЙ‽è@-é ã †åïЙb€½hë€ýè@-é á†å*ïЙb€½h0 á†å€à…å †å0ã  ïЙb€½h€½è@-é†å0ã€ý †å’å0ã
  33388.  ã †å2†å0câï†åcâ*ï†å@à…å0Cà ã †åï€ýè†å†åaâ*ï ã…å€ýè@-éH0ï cà…å€ýè|@-éà †å’à âè)flå à¡ á€ŴáÜ9flå@ á¡Tá☓@ ’¡T’üÿÿŒ ãQáA  à¤@ áTáùÿÿ*ŴŵáÈ0 ã@ á¡Tá☓@ ’¡T’üÿÿŒ  ãQáA  ¢à¤@ áTáùÿÿ*0 ã@ á¢Tá☓@ ’¢T’üÿÿŒ ãRá B ¡à¤@ áTáùÿÿ*<@ ãP á¡UáŶP ’¡U’üÿÿŒ0 ãQáA 0£à¥P áUáùÿÿ*Ŵ"ŵá◰%ŵá á áü(flåQà/Jô(flåQáŴ"ì8flå@ á¡Tá☓@ ’¡T’üÿÿŒ  ãQáA  ¢à¤@ áTáùÿÿ*! á¸8flåQá
  33389. ºAà ŵâ0CâQáºAà ŵâQáºAà ŵâ0 ãVO•âP ã0◰â` áQ“çSãºãPŶQáöÿÿªAàŴâŵŴà◰Ŵà|€ýè ã ã|€ýè<@-éP  ã¡$ŵà¡2 á0â0Sâ:J Sã8ªâQâ5JQã3ªAŵàŴà☓ŴàŴàÄ@•âA“çŴàSãºÈ2ã
  33390. ãŴ0ŵâ#ŴàÈRãAÂAâŴ áŴŴà % áRãªŴàŴŴàŴà á " á? â<RãªŴàâPãªŴŴàŴàŴ€à¡. áŴ1 á!M áS á¡  áŴ á’à à’à àà †åQàÀâ<€ýè ã ã<€ýè;Zx–µÔó0Nm@-é ã…å€ýè@-é†å0ã
  33391.  ã‰ëùÿÿê€ýè@-éõÿÿë€ýè@-é á뀽h뀽hÍ뀽h 뀽h*ë€ýè@-é ãx6flå­þÿ뀽h†å"…å0ã €ŵå ãŵå ŵåŵåÀŵå á€ýè@-é@ á ã4flå☓à0&flå Ŵà0àãB)ïЙb€½h☓å ãflå☓à&flå Ŵà0àãB)ïЙb€½h☓å ã☓µ€ýèP-éÀ á …å\•â-é©ëë †åï s …åzë-é †å0ã
  33392. N…â, ã RâJ0‘ç0Ŵçúÿÿêàã …å½è ã€½è¢ë‘ýèP-éÀ áë%ëë1ã ‘ýèB-éQã…µŵýØ0 á†åŴã‘ ãï4ïïŵýèB-é†å‘ ããï4ïïŴá Qã Ã  á á0 á†åŴã‘ ãï4ïïBà #ŵýè@-é †åPã Ó€ýØ •â-é_ë5ë ð†ålë€ýè@-éëëë!뀽èP-éÀ á †åPã‘ýØ•â-éMë#ëï!ëYë‘ýè@-é  ‘åRã€ý¨N€â, ã RâJ0‘ç0Ŵçúÿÿê_〽è@-é á’åC)ï’åC)ï€ýè@-é‘å ‘å1ã Ŵ2ãŵ…  á ãþÿë€ýèÿ-é`MéÐMâ@-éëï@½èM/…â‡ÐáN/…â0‘å@‹å0ŵä@€ä0áùÿÿ`Ýè áЙâ@-éï@½èÿ½èð°á@-éN€â*Ŵâ0 ã0Ŵä1áüÿÿ  áë8Aâ4ŵå€ýè@-é8flåÍá€â€ýè@-é   á ã•âï ão•âï ãŴ•âï
  33393.  ã*•â;ïë€ýè@-éë   á¡•â á=â á_ï ã•â ï ã•â ï ãG•â ï€ýè@-é †å†å^ï …å…å$@…â“èPã€ý¸@ï¤èùÿÿê?@-éP á$@€â ã ã  ã0 ã¤è  ãV•â  á0 ã¤è ãm•â  á0 ã¤è ãR•â  áü0…â¤è ãë ãë ãë ãë ãë ãë     ã ë
  33394.  ã
  33395. ë  ãë ãë ãë ãëàã☓å?€ýè@-é ã  ã0 ã@ï¤è€ýè@-é  á⇩ ã†åï: Oâ …å@½ècÿÿë ã€½è@½è€ýè@-é’ ã†åï:†å0ã(Oâ …å@½èSÿÿë ã€½è á@½è€½è@½è ã_〽è 0ã
  33396. ð°á ã€½èï ã …åAÿÿë ã€½èÀ áï<ÿÿë-é ã ã  ã0 ã@ï◰âN…â, ã RâJ0‘ç0Ŵçúÿÿê½èàã …å ã€½è 0ã
  33397. ð°áï ã …å"ÿÿë ã€½è@-é•â  áTè@-é •â …åÿÿ렠〽耽èÿëA#rq«µn:#8!9"ÿÿrks     WonderWorks     WonderWorks     WonderWorks     aria0ÿ252ÈðÇmŵÿÿ.‰8ð™87sww7swwwwwwwwwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!RunGëÿÿKç`‹<!RunImageGøÿÿ£Q    `z=MessagesGÿÿÿ§å`Q<ResG®ÿÿ ’ÊV$C>SpritesGùÿÿ°ÉV—<Sprites22GùÿÿýÉV`7?!RunGëÿÿKç`‹<!RunImageGøÿÿ£Q    `z=MessagesGÿÿÿ§å`Q<ResG®ÿÿ ’ÊV$C>SpritesGùÿÿ°ÉV—<Sprites22GùÿÿýÉV`7?9ConfigureConfigureNick4|   File        : !Run
  33398. |   Date        : 21-Feb-97
  33399. |   Author      : © A.Thoukydides, 1996, 1997
  33400. |   Description : The script used to start the ARMEdit configuration
  33401. |                 application. This assumes that the main front-end has
  33402. |                 already been started.
  33403.  
  33404. | Check that there is sufficient memory to run
  33405. WimpSlot -min 88K -max 88K
  33406.  
  33407. | Start the application
  33408. Run <Obey$Dir>.!RunImagenderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     #   File        : Messages
  33409. #   Date        : 21-Feb-97
  33410. #   Author      : © A.Thoukydides, 1996, 1997
  33411. #   Description : Text messages for the ARMEdit configuration application.
  33412.  
  33413. # General messages
  33414. _TaskName:ARM Edit Config
  33415.  
  33416. # Serious error handling
  33417. SigBut:Continue,Quit
  33418. SigTpl:%0 Click Continue to attempt to carry on, or Quit to exit immediately.
  33419. SigFPE:An arithmetic exception has occurred.
  33420. SigIll:An illegal instruction has been executed.
  33421. SigSegV:A bad memory access has occurred.
  33422. SigStak:A stack overflow has occurred.
  33423. SigErr:An unexpected error has occurred: %0
  33424. SigUnk:An unexpected error has occurred.
  33425.  
  33426. # Application specific messages
  33427. Quit:The configuration has been modified but not saved. Do you wish to abandon the changes and quit?
  33428. CfgSave:Unable to write the configuration file. Ensure that the disc is not write protected, and try again.
  33429. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      †Lpc,< wwwwwwwwwwwwwwwwp§ªªªªªªªªzpp§zwªw§ªw§zpp§ªw§zwzw§zpp§zwww§ww§zpp§zwzwªªw§zpp§zwªw§ªw§zpp§zwªzwªw§zpp§ªªªªªªªªzpwwwwwwwwwwwwp'$$$$$$$$$$rp'$$$$$$tww'rpqpwwwwwwwwwwwwppqpw""""""""""wppwwwwwwwwwwwwwwwðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿüconfig,“ ÌÌÌÌ|wwwwwwwwwww'""wwUUUÕªz»»»»»»{"rpwwwww'""""""r"Rvw·«ªª§ªw»»»»»»{""¢,UUUUU¥wwwwwww""R,UUUªªªZUUUq""""""UUUÕ­Ú]UUUq"""wwwwwwwwwwwwwwwwww'""""""""""""""""r'""""""""""w73w'"r'"»"ª"""""""BD"""r'""""""""""""""""rwwwwwwwwwwwwwwwwww"330000'"r00000000003s"30000'wwwwwwwwwwwwwwwww'ÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔloadicon,€ »»»»»»»»»»»»»»»»»»»»»{wwwwwww·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»wwwwwpwwwww;w0w³»;w0w³»»»;w0w³»»»»»;w0w³»»»»»»»;w0w³»»»»»»»»»;w0w³»»»»»»»»»»»;w3w³»»»»»»»»»»»»»;w³»»»»»»»»»»»»»»»»»»»»»»»»ÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÔpartition,€ wwwwwwp÷ÿÿÿÿwpwwÿÿÿÿÿwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwww"""""""""""""""wwrrrrr""""""""""wwrrrrr"""""""²»"wwrrrrr""""""""""ww"""""""""""""""wwwwwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwwôÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÔspeed,€ ÿÿÿwwwww÷ÿÿÿÿÿCÿÿÿÿw††††−y÷ÿÿÿÿ»¿ûÿÉ−3CD−−y÷ÿÿÿ÷÷ÿÿ†9fi−−›−−yÿÿww÷ÿ−−3†9−−−÷ÿçî¾~ÿÿW−−−−›−−fi÷wfi>3sÿO–UUUU−−é−wfiîîw÷w–fifi−−ééywfiîÞ~ÿÿwÞ~wwwwwwçîîíí÷ÿÿÏwæîîîîîîÞÞÞ~wÿÿÿÿïqwwwwwwwwwÇÿÿÿÿÿO4DDTTDTDDDTDÅÿÿ¾¾¾wwwwwwwwwwwwôÿëœÉwôÿ¾fiwëœÉ'!!!!!!!!!!!wÿ¿¾¾wwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔdirectory,€ wwwwwp÷ÿÿÿwpwwÿÿÿÿÿwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿw÷wwÿwwwwwwwwwwwwwwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿw⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿwÿÿÿÿÿÿÿÿÿÿÿÿÿww÷wÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwwôÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOLmulti,< wwwwwwwwwwwgEswwp'"""""""rwwpp'BD"D$"r§Ýªwpp'"D$B4r§ÝªÝªwp'BDD4"§ÝªÝªÝwp'BDB#wݪݪÝzpp'BD"#§ªÝªÝzpp'BD"rÜ­ªÝzpp'"""1ÊÚ­zpwwwwcqwwGewp'$$c$$$$$$rp'$c$$$tww'rpGcqpc2Tvwwwwwwwp13qpc""""""""""wppDtwwwwwwwwwwwwwðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€dos,, wwwwwwwwwwwwwwwwwwwwUUUUUUUwwwwfffffQwwwwff`fQwwww`ffQwwwwff`fQwwwwfffffQwwwwUUUUUUUwwwwPUUUUUUUUUUUwwww`"""""""rww"wwww`RUUUUUUUUU%ww`%"""""""""bwwww%`&UPwwww`bb&&w wwwwPUUUUUUUUUUUwwwwwwwwwwwwwwwwwwwwwwwwwÌÔeditutil,€ wwwwwwwwwwwwwwpwpw€•wwÚ­zwøwwÚ­Ú­zwppw€•wpÚ­Ú­Ú}wøwp×­Ú­Ú­wpwà⇨wpªÚ­Ú­wwîwÇݪڭwwwwwwwww£¬Ýªw1www11113c1fGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÔeditedit,€ wwwwwwwww⇦⇦øww€⇦⇦•wpwpw€•w⇦⇦ø⇦wøw€⇦⇦•⇦wppw€•w⇦⇦ø⇦wøw€⇦⇦•⇦wpwà⇨w⇦⇦ø⇦wîw€⇦⇦•⇦wwwwwwwww⇦⇦ø⇦€⇦⇦•⇦‰⇦ø⇦àî⇦•⇦î−‰⇦pfié‰⇦~îîwàîîwîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿ€obey,, wwwwwwwwwwwwwwwwwww⇦ø•⇦⇦ÿ⇦⇦⇦⇦⇦⇦⇦⇦⇦www⇦⇦ÿ⇦ø•⇦⇦⇦⇦⇦⇦⇦⇦www⇦⇦ø•ÿ⇦⇦⇦⇦⇦⇦⇦⇦wwwÿÿÿÿÿÿÿ•⇦⇦⇦°⇦www⇦⇦ø•ÿ⇦⇦⇦⇦⇦°»⇦www⇦⇦ÿ⇦ø•⇦⇦⇦°»»⇦www⇦ø•⇦⇦ÿ⇦⇦°»»»⇦www⇦⇦⇦⇦⇦⇦⇦°⇦www⇦⇦⇦⇦⇦⇦‘−−−−⇦www⇦⇦⇦⇦⇦‘−−−−−−⇦www⇦⇦⇦⇦‘−−−−−−−⇦www⇦⇦⇦‘−−−−−−−−⇦www⇦⇦‘−−−−−−−−−⇦www⇦‘−−−−−−−−−−⇦www‘−−−−−−−−−−−⇦wwwwwwwwwwwwwwwwwwwÌrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ë á ëÈ7ëï°ä ¬€ áÀNà À•à†éÀLâ0 †å ã4À†À…À…à ãSãð Ñ…ä0SâûÿÿêéêLÓYb µÍàì]Ïd4ÖeŷQ´æâ,ö¿!%Ï⇧ ´æ6E´ö@mH‹ö´²÷ÿùúöûíÿöûdøï+–¬–eÎù,ªö¿îÿ–dÎe+ê,–¬ö¿ùÿùúöûïÿöû–úÏù-ªö¿ðÿ-–¬flû!öûÝØ»—ûÏ−.Ê–0Êù-ªö¿Ø!¿ñÝû.—¬0−¬-–¬ö¿üÿùúöûòÿ#öûigîkjîùý¯ö¿g#ïjiîókþö¿þÿ*›¬,–¬ùúöû›ôÏ–*Ê,úöûùÿ¯ö¿õÿö¿!*Ï„%¼,¬êë…ÓÕ⇩⇦àÅ„◰−ÈÙxÏßêÌ°p›¶¨t¼,ò³æX⇩¬HÞÆ[ÄìI±ÖêüÅÍF±nÄuÌ,^íB8flüI©A‘(öû—!¼×{ê³⇩ǾÆXê#Ø´|
  33430. ÎMêYLÕaÞ³!¾)±Ðl7Åü☓Å\ YÍ%öû$!Ì]ê„;:àÜ9MÝ›ÈÍ,³É¢ëÔʸË»±F6Åü%öû—!¼¾GêãıÆö6¿!(Ï>ê—;—ÙKc³Iŷd’⇩,⇧,z"7Äü*öû—!¼&/êÃd]UÓÛ³ÌÞµ2½Ômê°æÌàBV´›¢k£›Ül¡›Ålê´ÖÅ◰›Älê¨ÖÅ›Êl’ÞìÔ…Ù>›V⇦Ö]W›m€ÙÕ|ÖÕtÜR›V´tÙµpÓõÍû‘dÜåC6ìÄ°ÄlYTÖÕhO8/úÛª>Ŷõ:u]nl#t?"€°"’U("ÁQ¤" ?†?"¼=J)K¸=‹-öû—!¼×Ûé³>@ãå´⇩†¢4àµà ¿Ä¢y¿yàü³Å¼☓™íGwoÀ=J"i‹ì:Wi`‹%öûŶŴ!L½é„;p-L£¼NWÿ4ggf2g gfV'gö•²/gfêÍßü_”Ä-g{lr
  33431. SQ#êÍßü{_ÌST#g6PÒßêÌ_Ïg{ll    SV#êÍßü{_ÌÞN¯e\ÒßêÌ_ÏE{ütyÞ:ÐßêÌ_Ï*¿Ô/‹élÄvÌêÍß\dÏ¿ ·D#‹èlvÜxÏßêÌt6‹ÆëÊËhÓ_B²ÈMßÀÄuxϳ™†ßêÌxýàcÌ6(°önS\#p7S[3SK9oxuL3ü²ª¨? ûíªö°(ÿ%"Ì9é„;.æ”Æ%Îo>DÖ⇩¯²Æßl+ÃMpÕ³lÞµ¤²Ældz˳¡²¶fi²édɳ˳œ²¶—²Ël¨4åQ⇩¬¨e¼‹êl⇩ÎÄöÉ07/4öû!L    é„;◰E☓D߇½Ä€ßñ¯V¡⇩¼ ”–m"¦ “‹−Ä¥)"Õ2dßÀ[—À¡KK²zl¦híµï−¾Ädê²V—¾¥K
  33432. ²øl¤lèµózÌpå²Vŷ¾£K²ël¢`âµö–¾Ä+û±ÆÐdÕÕÀ¿]Ümßüptì~¯ÍbÊgµ×K†Bl†mlBfµÄm†Æeµ†F†Bl¿®Ýŵ¬ê⇩†ÜÔ†ÐU—ÐXU“ÐN]¡›¾BiÌåµ(‡F¥µ&‡F)´$‡F®øœÖŵ¿Í⇩Ê”ÎçY‰¯Ë½*¦?m²”Í»±V‰¯Ë{å‹´±¥k¯”̵¥Â‰,¤z¹‘Ì­±V“(çÕ´¡Kh‡Æ®þ†Öŵ¿Í⇩Ê’ËÞY‰¯ËmÁ"—±£k¯r¾‰¬¢m²Ä’±Æ¨›½náü<<?$vø:APtA3\dc‹úÛªõŒ.hN2ø
  33433. %‘ý_©èŒý]©r^è:æ.M£^−³AY£i_$⇩3Z−Û[©õúªü>N£N‘¨B¹láüö<¿!*Ï„oŴ´*2èÃÐ5ÝÄ(_]ÜqßübtÌ3`;å×T¡¶ì½Ý‡›†$€©f“ £9¼Î…¿ÍÌÚ»ú½äfËüúÛî@Ï›*í³flËUê¾²ÎMí¾³Î¾MÍ“îß¡Ëç*¡Æ³WVç&¡ÆßSÆç"¡Æ ³OVä¡Æ´KVèÍ<fi{ijçüèCÝz†ç5fiÆC=ÖèÍ.fi*mb6äl¡³e2älèÔÕm,ç#fiÆìi_èÍfimb$äl¯pÞr~†¿~−,ÜßêÌ`Ïè    ¿Ävn‘ÆU‘¨kácÌ8pÿÝ©Äaɨŷ½oáü€8ïJ⇩t&á4Íöàt¶!(ÏŒç—;È×»ÑÉÛflÎŴfi−FªÃã=̉    ¿ÍËÚÔû½úh»?üýŒ-í³fiËUê¾²ÎMí¾³Î¾MÍ“î7¡û-öû—!¼LÞkçSÄñÌ]®nY<ÖÕÄñÌW®n(ãÕµ⇩†ÄòÌS®n@™ýÄ>D)‹È>ÒÄóÌE®n⇩ãÅô³ÉÄì™B®ÖÌ>>/‹Ý¨Ü_ÄñÌ<®ntÜ…Ü_ÄõÌ4®ntÜpÜ_ÄùÌ,®nñtÌÄì™wïYÝ@Ü_ÄñÌwþtÜ$Ü_ÄõÌ®Èn_9fl^]−ZC−ö[¹!*Ï
  33434. ç—;(×ËD<Æ[6Äì—®Æ◰¿é¯«Ý»´Ý?ßü(tHI⇩«Í{·¹⇩‡Ê(s³I§‡ÝÄÆËø­fö8¿!(Ï„#¼,äæëhÕ⇧¯Í´²Ù¼ì¾¼,AKÚø¯¨ky¨Ë,Þ÷¯V¨³»⇩ö¯Æ¸±¹ì¯¡k¶¾Äl 7flöE¹!-Ï„$¼à¾æ³ÙÜ»,ÜpÏ°¿»²­Äl³t¼×¯¨k±⇩†ÁͻĵË9¹­ö3öûWŴ!L¡æ„; Ô,\Ôݵ−†0.^r‘,}B†"−=ÎÕŒúñ BÅHÄìòŵ­Fm⇩†òÊHÄìó†­ÆHÄì⇩v­Æm©ÄôÌ’­HnOGå~léµmŒÄýÌ­In⇩EÎŴŷ"    ~©0ílIIÄìE|­æxR¾¼¯é°⇩†?ÎûGX?‹1íÍKIÄìOl­æ~«2ímIIÄìOd­æ~«3ímIIÄìO\­æ±~œIÄì|]­ÆÄPÊZ­JnKÄìW­ÖÄòÌT­Jnm¢†óÊJÄìmB­„ôÊJÄìm<­„õÊJÄìm6­„öÊJÄìm0­„÷ÊJÄìm*­„øÊJÄìm$­„ùÊJÄìm­„íJJÄìR­¦ìd+EÙCþìp+EØCþûÍJÄ좭Æm©ÄüÌ­Jnm©ÄíÄý¬Jnm©ÄíÄ÷¬Jnm©ÄíÄñ¬Jnø+NZCìäFÑïm⇩†õÊKÄìFä¬æm⇩†öÊKÄìOܬæ⇧¯Íã9*mŒ÷ÊKÄìFЬæ}⇩†EJDåì0²Ê_l⇩†õ ÷Â5ÄìOÕ¬æ~«ítB7ÄìCÔ¬F²Oî◰0nýpìĵÎά7nÆt¼±ç\Æï×~œ¯)Ü ´m‘ÄÌ7°É‘ÝÍfflÊY’nOWfÏþ^ÏTò;Æ¡½6Äìfy¬Æñ¨Ë⇩›®ÆļÉŷ¬6n·|†Ä¶Ä¥¬6nêÍÄϬf ºuL;³ÿX‘0öû—!¼ OåS,5Ð]ÄñÌv¬n 8IÕOím⇩†ñ
  33435. ÊÄìUk¬æ°–†Äò̬nODIåm⇩†ó
  33436. ÊÄìU[¬æ°–†ÄôÌo¬nñÄ0ÅÄìÔ03¬VÄõÌ.¬nùä0ÅÄìô)¬VñÐÍÄì1?¬VÄñ̬nõ1ÅÈÄì¬ööb¿!(Ïå—;°×»¬Äl´|†êͳ¿ÄÍ7C¬ö`@ŵÄÆE¬¶Ä³ËÊõ«VYt¾km¾¤d™ÔuÊåÏb[.pXKêÍ¥ý³,·´ÄìÌ7%¬ö-öû—!¼EÏäÓòÍ4Äì
  33437. í«Ö⇩Ð5ÅÂÙﶯíÄó̼«4ntÜï´¯Ý÷Ä4Äìt±«ÆDï´¯ÝÒî´¯ÝÓÞÄûÌÆ«4n·⇩†ý¯Þ<´ÍÄüÌ„«f9ï´¯Ý9Ôþ-öû—!¼Ø⇧ä³pÂNØ@DERûBAÿDCÿD$·õB·õ@·õ> ·õp⇧·e³−†á¢û⇧ÅΡŵ−Å•¦Âö9¿!(Ïfä—;hÈ7ÕU⇩¬ýëÍß½Ît⇩ƪÄì,ÿ=_`ÿ(öû—!¼
  33438. Oäc(8åa«H"^½xœýflµ¾àÍtê⇨Æý¯ÞëÍá⇨ßlÄt̪híÄ„Ïö7¿!*Ï„€´,*äÃDÂÞ•X7Å1Í·IÜ$ßY‘2Í$3ͯI¾yêYÒÿ¯Þ²⇧†ë´í¼ËKª¨$$µ¨/­¶.­(¾d_«¨k|¾ÁÙ¯ßêͧ⇨àl⇩tÌtÚïfi²¾ëÍtkÏl⇩¬öªÕ²⇧†6´m¼ËK»¢⇧ÈåRoŶöo .☓#Ʋ²î⇨Älý|¾ â¢e|ÉÄÀÄtè◰Æõ^Å⇩ÏC•8?æe2£ð÷ªA,9 ◰ú:öf^²!*ϸã—;Ø[¯«Ý¹´í$UÚ] «¨kÏÄ^Ïb[>Xû=7ì¼−†2(ß´¸−†à9å…(⇩<|¾0ö*ŵ(›☓0•ò8Åü-öû—!¼½™ãã4:}\úÙÙ¾ÂuêsͤÓ'¼¶Ô°¹m⇩    Í
  33439. fÚ⇩nΠ   n©ÄñÌfiªn–xÎò°ÉÄìm²ªæn⇩†ó    ÊÄìw•ªæ°–†ÄôÌ£ªfuÓÅ?UýB逰ÿ9Åü-öû—!¼½KããÚ}†☓Üú]ܤUT; ]d€«×fiEþbÚБ†›çÍõ:*éþÝå›,O*ª«ÝÝ´¯ÝÚïµ°‡0¡e¬ÄìK½ö€D¹WjTΤýµ«íflÛÁ⇦àl⇧tÜÅ{Ïö9¿!(Ï ã—;h2år⇩¬’‡Ýl0c]ä'−^¯×Ý»´Ý»⇩†0®’U.ÈEFQÊ×    Ö´¯Ý=»ý⇩«Í×”Ú´¯ÝO»M\&Þñ^−&^î⇩,Ý0#ÖäàÝ¢Þïñ;ÌÄìtÓ©ÆÄõÌÅ©n ö0VÄüö¹}¶!%ÏÄâ—;BÖy콯ꭋx“µ½©®b|Å\6Yý%öû—!¼ñ±âCﯫÝì;\³ý즩Älý¼tlÔÅ\6YýöH¹!3ÏŒâ—;JÂ^<3(;U—⇧† åÙ…LÅ™´ÉZê,«☓æoü⇩VAï,¥☓æŷR⇩ÖßêÌ@☓n9gzeŷµÝ´¯Ý®è¾ÿÛ¿fiÄòÌ,ϩ涯íÄóÌz©n¯,Þ„´MÄ÷Ìr©nñ?ϼ©Äl¯,Þ4´mÿ®»íû¸É°©Äl¯,Þ<´ÍÄüÌZ©nú?Ϥ©Äl2¼Äl¬ÄìÅ—¼Æö;¿!*Ï8â—;,ØËÄ=Â^Ç⇩†X⇧¬◰ ºöL☓0n⇨I⇨æYàÕßêÌæ◰0nÌÄìÆC©æ◰|†”‹Åt¼ÆG8fl¥»IiÎ⇨ݺfÌÄìÜ3©ÆĆÍ◰flí¸ ½ÎêÌä~ȨföBS²!(Ïâ—;†×[ŷ«ýaÞ³!¾·¨Ðl7Åü†Å\ YÍ-öû—!¼×ëá³Ó'¼qÏ:üI©ÄlxtìKRÅ Ç ]òðð>EŴ†´weê ÙyD{gkKLÿIJÿKLÿIJÿ=>ÿÊhïkŵœès‹Éjgæ|„¬É`gæ{„¬Ç[_mŴ«ywNÙ´NZgöLMÿPKÿNOÿZMÿ>Pgöh=ÿŵʾsk)Gg¸i„ÉÎsk)Ag²i„ÉÎÊwºÄ÷ÌŴ£¨öÇ6gV^Ŵ«ÏvNÈÈ"tÈ¢ÐÉNÔÉ‹ CÊKÄñÌ•¨ÖÄõ̦¨fg²oŴ$$¶vdêëíwDÙ‡DQûGHÿEFÿ=>ÿÊhïVŵ«õÊËÊAïPŵ«ñÊËj¨Äl⇧°»Ö9Äü%öû—!¼§»Oác6Äü4öû—!¼ØGá³fi&¼⇩±¨ÆãéN î†][¯«Ý
  33440. ´Ý−¹Î(}ÜI¹ÐÕ(☓«Yªœ¨ÉlØë(T$^N–¨ÈlÀ¿U'íYK’¨aédßÜ'‘¨Fò”´®“ÓÕq#DÙUÌ⇩¨€e⇩ ²Åd¿Y☓¹½‰(Œ{¨⇩nmßì@Öŷ¨V$ßMtD0Ö    ATt¨Ùl−=Ρ◰º⇩}¨ÆÅŴÊX<flE—›*öû—!¼Ô¾éàCq¨Äl^6ÕÄѾÄ_l¨ÖÄоÄ`h¨ÖÄϾÄad¨ÖÄ;Äb`¨ÖÄ̾Äc\¨ÖÄ˾ÄdX¨ÖÄʾÄT¨ÖgêÜÝ_ÆìuN¨ÆÄÌ(ÅƧnÁí!ñD‡ôìêLØÕ(^ufªÆÎfmßêÌnŵn¸ÛÕãì¨ÛÖ⇨VãÍÑ⇨    nÁ—âµìMË⇨mÁÛìÔpÛÆ⇨VàÍÁ⇨ n`ÛÕ ãìPÛ¼⇨VíÕ⇨HØeÁDâµíÏ⇨0ØeÁÛØ^ÁÊ⇨¶íÅ⇨ØeÁÛô×    ^ÁÀ⇨¶í»⇨à×eÁàáµíµ⇨Ô×eÁÛÀ×^Á°⇨¶í«⇨°×eÁÛ ×^Á¦⇨¶í¡⇨…×eÁÛp×    ^tÚk_    í–⇨d×edÚÕ\×^Á‹⇨¶
  33441. í™⇨L×eÁÛ(×
  33442. ^Á⇦⇨¶ í◰⇨×eÁÛøÖ ^ Ú~⇨Vmy⇨ØÖeê‰Î›⇨ÇlêðÖÅ•ñêDàÞ‰⇨Vê³Ë⇨⇨ØÓeê³ËŶ⇨ÈÓeêÄÖʼnÃéD€⇨öMŵ¾|6îb©tŴdŴSi3Po0åb©it›ßCW£CS9i]›bA⇨›ÆQü>"ôp"€`"¼¼"hŴT"ŵT!)ŶT™T"4")◰TÃT"ð )à†"`AS"\€þ4JÒ]áüë Û·Ï“6ÖExD€4◰‹ŵ†)‰c−◰0⇨‹ÄqÉö ¼!(Ï„#¼ØÊß³‘åÍŶœ)c©ÂHÚ­qÝÅcÍnoÝIÜÜflÄÜ PÓÕ©Þ$€ §U=N(€!=T,±I£D¸Í¨¶#Ïìof¦æ©aí7Åü5☓R›ðÍ­±Ùyé½0…ŵ) ÄÌ-öû—!¼×•ß³5ÜË‘0”żÔÙ-¾
  33443. nÚ⇩,ÎŲé¢⇦½⇧Å€ÖÜgÆ^ía⇦ÝQÆÌ{OiiUgÝK◰Íð    ¾Ä!⇧¨æγËÅ&¦æÅ®Î<}9?rIpe3ÄÀö9¿!*ÏVß—;Ü×»⇩¿ÎÎéx5¾gÚßêÌÄü$§,¢Dâ¦ìl⇩wÌÜ[Ê^íÇaÍ0bí±g]­¬»!híϳËÅò¥æÅ®ÎÄ8Ïö8¿!*Ï&ß—;Ü×»⇩¿ÎÍé±µfÚßêÌÄüK$¨Ä²¦ŵíd⇩wÌ,|◰)^ÜÜaÞbÈܳ!¾Ç¥ÎlmÅ^⇩.Πª8Åü8Äü(öû—!¼Ø÷Þ³‘åͯ¹Ùx¾ÅSÊ¡^½è怡k7Åü7Äü4öûJŴ!LßÞ„;ê¼Þâ»Å.\a¥‰q"ëp−ÚÍ[æÜÀþ¶Ô×UÀ6⇦¶üÓ‰^À2⇦¶tôÖUÀ.⇦¶ÆèÖÅÀ*⇦¶ÇÜÖÅÀ&⇦¶ÈÐÖÅÈé"⇦V_WÞbÄܵI¡´ÅÓ§ÆÄnÍ,d^]Ýlo]$¢O¤M´I¦êl⇩uÌ¥SJ ¢êL¦¿ ³ÔvM¦ÆM⇩¬⇧mÎĹÉVnýt0"4ŴR"`◰R"D" ?À"⇩0¦ÅÚÎÉepÔßÜÌvê‡M¡•Ô¹¨M¢ Þ~^−ÅÌ$›£- ¿¢ «™!C⇩§µkêeÌ#¥Ïld ÊÕ2WΠ8«KÄŒÍX$då(dÅ$ñb<¡û*öû—!¼MÞéܜ$¦i_(©⇩\⇦üx"(¦(íR$é⇩,À$í²È ÅÀ³¶Ç4ÅÀ¯¶ÆHÅÀ«¶Ä\UÀ§¶ttUÀ£¶…B]Ífl¶æ )Å`mŷ¬¦G:ö8¿!*Ï„$¼×Þ³⇩4ŶÅ0è¢Ü©ÉôW]ô UUŵ ]¢ÞθËŤ#n80ö%öû$!ÌýÝ„;‘4ÅÇ0ä"é§ÉßVÅ…§íèݽ©Ýà€Å¸€µÎ Æ6¨¤ööŵR²!(Ï„$¼×àݳºPÝ=⇩¬¨ŒIÜÜflÄÜ ⇦Þ¢Þ£    Þ¤ݸ¥½#Îìo⇦¤æ7©þÄŶRÂÞ Õq‘†›ðÍ(”ºR‡‘¬ö ¼!(ϲݗ;º×Û=⇩¬¨ŒIÜÜflÞ ÌÜθËc¤#n©oîö7¿!(όݗ;—⇧Žéú²½°å?⇩¬Bêfl⇩†”‹)>ªŒ¡k7Äüö(?²!(Ï~Ý—; 2åH⇩¬êÖÅáŷŵn§Åì4 7/öCS²!0Ï„EŴ´àlݳÝØ» ,Ü—á¾ÆÍ»Ééì−¶0I3lÄÌ:tÕ„¼Ý‘¼ÍVóÒÃÏ»Ŷï^ÐÍ ¾¿Du¤¦Æ¥¨kK:flúÛª>aõ:unip%63ö a²!4Ï8Ý—;Øà»(ŵÝK™lÓUƆ÷Ôf—,ŴM    ´bfi «ÔflÒÜŴŵU◰◰U$◰ ◰UµÓ»ÄýÄVñ¤æ•†¬F<fl0öû#!ÌÝ„;Ü×»0E,\Œ½ÅÄÙýÂq¼Ä³ËuvÏO⇩¬¨X¼⇩$¦Æ ª±I³Â»vÄüŒNÎÁ‰ºÄ³Ë⇩vϳTºÄÍÛ¤»e³Á»ÄÍߤfö:¿!*ÏÚÜ—;×[−ÔÍÁ©¹Ä³Ë=Ö¤æ†−¬ö8¿!(ÏÈÜ—;´×Û¨⇩†⇩»Í¶éç⇦ÕfiðµC−æ⇩»Í−êÄ=−Æ7(þõ4öû—!¼$ŵ­ÜC^´Nå⇩    EÄ,¶éÖ¾×kŷÞ(−¡k⇩,ÎXÙ−Z¡XÞµ¾ÀD+ð¥ÆÐ⇩ÞÀ¿]܆•ßlptì~¯Í¨¸¹‘ál\<flCU4J2n−«Œ
  33444. NÙÛb¼Ë‹ll°qÞÝ`þ¤®qÞ²Áݬ⇧«qªí ·î⇧¾Ðê«Û½úr»³ôÍ[zú?æþh¢Ë¢ ”¶iÜ{−úl°qÞx­®qÞ²Áݯ⇧«qªí ·î⇧¾Íê«Û½úr»³ôͯg−0Þæ­î5g¢k»—Ôl¹†`°ÊÕiJÌÄM¥ÆihÝŒÏÚ€"¢ä»q‹ll°qÞŵ­®qÞ²ÁÝ°⇧«qªíO·Î¿Îê«Û½úr»³ôͤLº¦~æ­0í¢¢~¶±“hl¿®Ýŵ¬°⇩†¯r¾¿Œ
  33445. Í$á¨Ë<l•ö0öû—!¼*éÛÃÐ`Õ☓*_]ÜÕßlèt\—ÓÍH¸ØI£ ô´–n½ÛÛ›ìÍ€‡−G%:¼eê9üÌ…«úÍÝf»»úç¼?üý›峤Ë-Uê¾²Î-Mí¾³Î¾MÍ“-îN¢Ëä”Æ)µŴæŶ—¬á¨Ë:÷•ö4öûvŴ!LflÛ„;C☓×KDÀÇO"þżOµ@À±Dë¤A¾dÞuÌ —ÖÕhíÖî×î+ÎìLfi^\þ] ¶ÄßÍt⇧‰ÆÛb¼Ýfl—n°qÞk­®qÞ²ÁÝ®⇧«¦ÅܺqîJDîÍ⇧«ÛLÞv«»ôúÛ›³†J¯é¯0í¢ç¾IŷF?°« % ´*j¢Ë®“Ö~¯Íi£−<©ù⢋´Ýqf—æ°ÝqdêÁ®Ý⇧²½Å­Êq¦íDºî⇧J¾LÍê«Û½úv»³ôͯ›−0JÞç¯î?¢ûj¢Ë®Î›Ö~¯Íi£−<©ú⢋´Ýq4—æ°ÝqdêÁ®Ý⇧²½Å­Êq¦íYºÎ¿LÍê«Û½úv»³ôͯ›−0JÞç¯î?¢ûj¢Ë®†›Ö~¯Íi£−<©¨û²À…™F"þ¤±ÅK|ŷ}⇦Du.¤Æ¨k¼\ëìpk‰æ~¯Í¨²¹E‰álä<¯
  33446. Ùi¢Ëh’Æk’Æ®:‹Öŵ¿Í⇩ÊÝÊÉî@–¶x“ÊU y‘ÊUk ­ÄzÑ£V{Œ\⇩(☓"GÛBi¢Ëhö‘Ækô‘Æ®‹Öŵ¿Í⇩ʨ⇩º‰álö<¿!3Ï„·Ŵ´×‘Ú³´,Üí⇩†'þÂüCµÐ⇦]LÛ£3¾d¨t¼l¡ßl⇩<Ü⇦€J"þ^ÂËÞŷß⇦D☓ŵÌ£F\8M呶O]ÜM‰ßlbtÌéëÛ»›¶ì½Ý‡›†$€©iÖ£9¼Î…¿ÍÎÚ»ú½äfËüúÛ«B¯îs_›*í³flË-Vê¾²Î-Mí×8ÜYºÜ3ºì¢fl¾CÎä™›Æ?€æ⇦›−d:€äl¯pÞr~†¾~−,ÜßêÌ`Ïè¿ÄvÚŵÆÁŵ¨kácÌ;m‰öa݌Ņ¨k"³⇦ä¿%À“±Dg£—Öe…³uLì¨Ëy‰\n(fÛ—†¤ ó´1„n½ÛÛ›ìÍ€‡−q%:¼hê9üÏ…«úÍÝf»»úç¼Büý +#Ù£›¾U³¬²-îM¾Ü³-îM¾Ü-¾ì¢“¾„ ¨eÜçl&›NlØäl—)Ψ☓º‰ál;…ºô%öû—!¼OÁÙC\’¬9⇩¬¶Œ¼ë¾²†§¾»¾ÀD    vo§‘¾¾ÀDvoP‘¬ À§Ky¿ÄûuoÀÀä ,_O⇦§Kó¢8eå6¯«©_−úÛªasô:ö¹!%Ï⇩Ù—;’õË œaZ‘ fiÄ fg"¤−„"9⇩¬µŒ¼ì¾±†§“´#ŷô4ÙÌuV(ŷ§KÇuo‘lTúÀ§Kêŷ.D6¾¢öä^©Ißý§¤-µ¾‘⇦D6²¢ö´«ª%r3öû"€!LOÙ„;ܼìâ»`-ìÑNJ´Œ—CÄ´ée⇩†?—­òËœ,†¶ÂoÀÉ¡´»Æá¿¡µ»àßßêÌÄüdfÌÄ ìl⇩ẇhÊ—ÎÉ<ªÅLÊSodž†Ãr¼¡´»Ó◰¾¶µÃ»ä¡ûêÍÄßÌfÏìdÌw£ Æ®⇩†â~¤Ŵf†VÎÄ…Ê€;ï0Jàq&á4Íö6r¶!(ÏðØ—;È×»ÑÉÛflÎŴfi−FªÃ^ã=̉    ¿ÍËÚÔû½úh»?üýŒ-í³fiËUê¾²ÎMí¾³Î¾MÍ“î7¡û-öû—!¼ààÁØS<
  33447. í²—†◰ÐÓµ) Ùâfi—¬Ó¼ÓÕ¿—†⇩ÎV ï¢7„Íl:´ë [DIV:]åô›,iõÕ—)Î<‹êª—†⇩Î]êÔ⇩,B&ã?⇩¬Bêfl⇩†>{¢¡)º<„æG@flFG−—)Î9…ú%öû—!¼{ØÓêü ßl⇧uÌ◰Œö6¿!(ÏlØ—;⇩t2ÅļÉeÍÛ«☓Õ»⇩†¾£ÕO™»«÷Óœ⇩¬ Bï    ê’DX¡=•dvmö7¿!0Ï„Ŵ´Ŵ☓LØC¿sLéü<ãn\£Û_ ëlÛv¼×³†Ì,FUê⇩,SOú    œ)\鸗†"¨ëŶ¡#¾dÀ⇩,Q ´2–ªW—¬Âr¼¾¨Kx¡Öêüâ^ÌuF ÆsÍé"Äο£n¼- ëlÛv¼Ŷ³¬:¿«%¢ö¹!-ÏØ—;(A0ŵT⇩DΠ   aÚÓ4Õ¾—†fiÞ€¾¢k`Ý•¡ûýeÀ˺¡û)tì›—¬Ålö9¿!3Ï„⇩Ŵ´-Ü×ø&¼VÓ
  33448. Ýé—†⇦KճƻªÄüܨû⇩¬}$(£Q”ÞlÒhíÓîÔîó^⇧¡ûcÄËb¾'N¡ÖßêÌÄüdfÌåflìlÄw¼'cì¡V¾dÖcüÈ⇩†-”Ýl]Û[†]åL¾™D¼ ðl…íœÓë³Á»©¡ûêÍÄßÌfÏìdÌwÀflÆcÄË8¾'NcÜ Æ⇩ÎÏÝËÉÛ”¶»Þ §ÁLFï.¾Ä…– Öœî⇩,ÎÓCº³Á»¥¡ûêÍÄßÌfÏìdÌw—flÆŵ¡û),iå—<ϹÿòÄUÓ;¯fqf8Ó:Ü©/ZÔ:Ó f9›IXCR3öY²!(Ï@×—; P¼V—ÓÍ¡±¹)ïfi—¬É´ÿX!Ä\7õõ4öû—!¼×+׳xÕÔ◰ËÛ°“¶4xÊóF¾ÄÞA ÆI¨“FÕ⇩íÖ1î×1îfi1î«ôÓÕÕ⇩†−“Ýl¢9î1ôåô»]»1ÞEŷ4L$ ïl1 퇻í“Ýlæ9Þ9Yíîæ]»1ÞV«Ý»1Þ†«í»1Þ4«ÍðgŷÄ1     æ«»Ýo‡^¼?ݼnÕò‘,XUýæN4£ð÷ªC− ¯õ
  33449. ÿU
  33450. oÞJÆ⇩V“Ö(n]@ød0VÆTfljIæ ´ÝŒÆÝÁÉóD“¶øøKXZffl0¬ N Rf†^Å W‡Ü™"éN¾‘Œ¬Þ«Þŷí,UíC⇩¬,pÄ\m­_½¢ký¢Á»™ ö tü<,ö(öû—!¼×Ö³´¯Ý⇩»Í·é›´^øÈ]“æ»´Ý—⇩¬´Þû›æ‘¼Íðâ"½ÞŒ‘†“ty‹Øâ"ì›Æn_ÿGp€n44KÒ‡pál%öû—!¼⇩WÖÃê§ÉY]ëü8ÖeàÀÄ6+‡öíI©û
  33451. *öû—!¼ÛAÖ³QØK&õËeÓkÒ¿Í¿¹Á»sfi◰n/%F¶´3J8fl%öû—!¼ø'Ö³flô»²ÛÃõÒû6¹ÛêÍ6Zfiö/öû—!¼àÖ³ÙÜ»µÒ“³Ò“­Ó“³D¿ò¢k³E¿z€¢kÀA¿£´»hŴöö9¿!/ÏöÕ—;ØÛ»Ââ»Ŷ³ë8fi­mŵŷíȳÛϾ,n¬?9/2öû—!¼ÛáÕ³âØ»Ð컳»­5ÝŷáÁÖ³Lµ,Èí:åÿ2öû—!¼àËÕ³ÙÜ»Ðì»´À»ü€£kö:¿!2ϼ՗;Üà»ìÙ»Àл£´»:)Ŵö2öû—!¼à­Õ³ÙÜ»Ðì»´À»©£kö:¿!2ÏfiÕ—;Üà»ìÙ»Àл£´»:Ôö/öû—!¼Û•Õ³âØ»³Â»"€¢kö9¿!/ÏŵÕ—;ØÛ»Â⻢³»9)€ö&öûÈ!\6aõ&öû⇩!Ìè¯YMÞÝö6¿!&ÏYÕö6¿!&Ïÿ]°KAûØ<ØpËpAü³AýØ<BD6üö6¿!'ÏÙÊÛ±zœ³ÙÍÄ®ÉØ6ßM³¬6Åüò=ßŷ÷½ÅLÊÄ6Ï66ÿ1öû—!¼×3Õ³Ýá»—IÄQMúg)þ³Á»Ò¾Pn¹⇩†⇩ÎÁ¶¹(¶ëúP¾⇩+ÎÅ®Éé~:o:Äüö:¿!.ÏÕ—;Ü×»@äë…£¾æÁ>¶Ë¾³kO⇩¬³Á»«ŴÞ9ľö´?8K"5öû—!¼àõÔ³ÝØ»⇩¾¡kµñË@MZ>‰õö7í¼‡†}X¾YUêR{«|Z¾[Oêx2½<Kúe]þ,ŴÑl−éÛ—–Ý“1ÝPµ¬«;ÝЛ]AVýõàåì›]<òþ5öû—!¼Û»Ô³¡Ø»ñÝ¿Qµ¬õ(åàî»    8E@A_PFà[¾Œ†|?¾@VêS{«3AÞOx«2BÞKx«ï?¿dNþ¶Œ†ŶO¾>Mê>›ýŒ>ÞŴ£kö<¿!.ÏŵÔ—;Ü×»ÕŴÞNŒ¬¸?g&fNþ⇩@Î?ºé°³†?îQx« ´¡[¸ú[­⇩†d9ÿö9¿!1Ï`Ô—;Üà»ÍÙËé³€¶w−]— vU›«ÝV¤Õö:¿!÷bÆLÔ—;Üà»ÐEÙ[⇩OÎPMúfVþ®OÞW|«¯OÞS{«­OÞO}«W¾å¥›½d½€öö;¿!'ÏÙÊKÙ&Û±zœ³ÙÍÄ®ÉØ6ß°³†÷òÝLŷ«=Åü6Äüö6¿3ÿ—"¼àÔ³ëØ»ÄÞ[M—¬)RïÁg¿£³»⇩Ѿƺé·⇩†¶Á»(£ë+úë¯⇩†ŒÅÜè~;oŒÄÜö;¿!/ÏèÓ—;Ü×»&âˆÄÜÓû¬¼=¡û™ÐìÏ÷¾¡Á»t¿¾Æ⇩mÎÓSºÏ¿◰Áë¡Tŷµt³¾Æ9tüö¼?²!5ÏÀÓ—;Ø໬ÝËMKö=OMµ¬T‰6]T>_‡öÎX¼éU}«{Y¾ZRêO|«2[ÞKx«]<ïÑeÏéõ¶–−Ý1—ݵ“ÍÌPZ›¶ÝT^<]äA_›õÞòðåö<¿!5Ï☓Ó—;ØÛ»DÚ´=JôµõÄ4QZñ¶½æà[@C/=Peàñ»=M¾Œ†|?¾@VêS{«3AÞOx«2BÞKx«ó?¿dNþ¶Œ†ŶO¾>Mê>›ýœ>ÞÚ£kö<¿!+ÏHÓ—;(×˾¨K•œêl_⇩¬êͽßLMÏ⇨œflÛw¼⇧œ¨kóG¯áÙªedÚ:ógb¢áÙªßr²8¢û8wü.öû—!¼ÛC»
  33452. Ø۱ѓ»Ñ“¾
  33453. Ñ“PßßêÌÄüp☓ŵ^wuÏEàû4LÙå4☓õ?àûàj¿µh¿ uM9|†ö+öû—!¼×B»^ŶÞ_ÓÕ`☓Þ¯ÍPÊú—ŶTW$Éŷ÷~æ³ô¾s_†¶ÖZ]Mx«sļð~ZmþÉ—@bcÄÜö8¿!+ÏA—»×Ûȯ¬WHÏqg¿⇩®Íq±¹8¾Ý<†ôn8ó~ö(öû—!¼−œ@k®†‘[XU¸=ÝO⇩¬`☓pU|Þ_☓‘aU7¸ýö7¿!+Ï?—»¡×»ߜƗUʵÙßêÌÄü·ØÕwtÏ8¢ûö8¿!.Ï>—»ØÛ»¢³»    ÃœÆ—WÊ−·ÉµÙßêÌÄü·>ÝwsÏ9£ûö9¿!)Ï=—»¡×»7ªœö,öû—!¼×<»´Ü»¡œ¡kU¬µ−†êÍÄßÌÔ_r·ý¡w¼88ÿ0öû—!¼Tã;[?í¶⇩\ÅNÊ⇦qå—☓œÆµé¬⇩\ ªß€½ŒT¤:‹ýð0M)‘¿Í¸!*⇩±Í ŵ©ö ¼!0Ï:—»fi×»>ÝKG0ãåJÝËsE0:jCSÕK‘°ÙWÄüßUÉÔn$bÕbeDeõIÖ †ÚÕ“\Õ¤½ÂÌˤ–¬&⇦¬⇨LÊ☓ŵj¢hÍ Ë$Kì¯É®ŵßl¢ÎÅ-ËßàÎsÄÜbêÜ~rÝdÝujÝ>,hå¢⇩†¡~²ê:ÏhcŵÖ.¢¼òË“äÝ~F⇦¼ÌL&ª⇨¬–¬' o¤ uÄjO›h{œÒ¥Ά+ËÆ~ÊŒb%öû—!¼ÞŴ9kļÍÇàMŧÉ!+¤ÑÈ$ö6¿!(Ï8—»ê×ëÿ®»Hªfiw½Åà¾ÆßàÎsÄÜbêÜ~rÝudÝiÝ¡j½ö7¿!3Ï7—»Ü×»G@AåJÄÜ09™m@ÄMÿ¤¥‘½⇧gæT‘¬»§µP¬ÙÞr«»óúÛN³¬⇩>Î8g’jסûV⇧¬ÜÞr«»õúÛN³¬⇩>Î(g⇦j)g¬eÃNì°Éßì    ŵæ¶ÿ³Êŵn¢¼«¥ë‘GÎ−¤−&ZO´Î@ªŶ²É¢NÊ     »ŶÛ¢¼⇩>ÎmŴê®~™m⇩Λ®¹Ñê ªEaÝêÍRÿdĶKÆT
  33454. _VÍ{“ǪµBL½ÖœŶLÝë¸Ë…ŵn¯⇧†⇩>Î>õé´⇩,tðÿÂK¿¶Ìº÷$Þr«»üúÛ>_>¨îL⇩¬™mÞ;¤û-öû—!¼×6»ê&ìÿ®»LÚ
  33455. mgÖ⇩ÎUêþ«»Qê«Ù½úr»=óý³£Ë¡ó¹…»ÏRê«Ü½úr»³õÍT>ðY†,ÞÄßÌs⇧ÝrbÝ«¾ þÛ☓¼Ùá<¢´ëìµßŴ¶ÏK¢<œÄfv]VgµUï£ìïO;õ8e5ìãÊŴn´Î@ªŶ²É¢NÊ     »☓Û ó¢<ÄßÌQêÌqfÖ⇩,΄¢−I£ûk¾R!ÎGÿÞ,ì¢⇩†„i9èþ-öû—!¼×5»05(…e¼Ëªŵ−…®Ï$Qê«÷½rÛüúÛÄß̦êLÿÿ^a{Ôt`ÝàÞ4ew]‘,§Åªe−<?i]J2Þ£ŷ½2áŴ椑†³–ÉŵŒö9¿!0Ï4—»×ÛR‘HåßJͨ„ý⇧ Í…ÈÉ$Rê«÷½rÛüúÛßÛËsÄÜbêÜ~rݧ­îOæ¢⇩†¶›Œ :ï[¾ëìjÀÖ¢¼☓Ýöá~¶4ÿ—"¼×ùÒ³âÜ»×x"ÕÄHÍYíO³¬ßę̈€njíL³¬☓gm«¾~þ«¡ê¼⇧†Ï…¾ÉRê¾ëbëJDŒò˽i‹ºœ†æÒ“
  33456. Hï¾ë\ë8­TZ ´ì~rd›Ä    2áI2*K¡ó³⇧”Ïd["½‰‹»…†ÜÞr«»õúÛa*îr«»´Â»ú_¾¤l¾›XÏ2ÓIëÀ#iK"ù/4‘¡ûf⇧¬i¾OÀ4ÜÞr«»õúÛê¶Ë@€n$jí«÷½rÛüúÛa*îr«»´Â»ú_¾…l^‘¼Í“¤−ÜÞr«»õúÛ}Œ³,´Â»€n<«þ%öû—!¼⇩YÒÃá ŷ)§~−$Ö>‘VÝÝI$™dß$pÄÐ,Xå64Yõö0A²!*ÏBÒ—;ܼɠŷ)»p−%‘¡kD×[S«ÍÏ›¢ûÅiÍàÞ¡j½ö8¿!0Ï&Ò—;ܼì⻫ ŷ)½p−µÃ»0‘¡k;×ÛS«Íω¢ûÅiÍàÞ¡j½ö:¿!*ÏÒ—;ܼ©Y$eÝ]¡¸¿=‘ßlŷ¬€G:ö8¿!0ÏòÑ—;á×»êÝëÿ®»°é⇩¬ JÚ«¾¯þœ⇩ÎÄgÃjf]ßÞîµÁ»¡ûö⇦o¶!0ÏÐÑ—;pà×[•.¾-)ë⇩`ãÅ éYJÁP…¶Í⇨Äé(”YMùù]−P’TÇ‹Î.úå•»e˾N:flxI<L"€7ID6…Æ£LºÄ:Ϻå[ù¥<ùÂÛó÷îŒ2\1»Ŵ>HNrß\⇦»2óÎ⇦µµ?3ë…f:!ô(öû—!¼¸2ŶÑS⇩Ϊ®ŵ)ÄìR¥¼?f¨–†2¼fi2»ö7¿!0ÏnÑ—;Á×Knm$[ÀIºÏ“XϤÅ⇩,ÇVJÅn"Dw)ar"n⇩,ɾÅbÖ    ¬éã¿¡´»› −Ö⇩¬JÚ:flêÉ−àLöÍ~¶!-Ï<Ñ—;ÙÜ»Õßß´Œ†´À»£−£kf⇩†¡—p„"9ý4öû—!¼×'ѳ
  33457. ÜÛK`Dûü(KDõ—ûûdßéKfi÷ÉÐ*¶±¹[£ËBgAfÈ
  33458. Ý“àóCÌ*Zl"Ô¬IBqú¼Ô“ÄÔ“kÔ¤ÖŒ†Ô—×lú쯮»!¤¼TÍÐó‹»È—ÌlÆ—Ël©äL<Aöù°<¾—×lú쯮»!¤¼°·ÐÃIMû‹» Ý´|ÓÔ$@Ò­#¤«—¶[µË‡@Æ£­Œ²ö<¿!-ÏÆЗ;Üà»ËÙû⇩«Íªŵ−‘ÁͳOº¢µ¾cÿÈ£ûÐÀÛà¢Ëso4öû—!¼Û©Ð³êË¥¼0ë_TH;FWèË]‡¬P
  33459. Ò¤p—Ìl(¢¼VJfl Ü´µÒ“|HÆ|éPJ¢c—Æf%K£@á´¢]—Æ    K¡<¿¢Ì¤»ö<¿!-ÏvЗ;ÙܻռßŵŒ†CªéO⇩¬¢³»¹¾ µeÏA¿¢À»Ñ—àl£×»¡±—¶ö9¿!%ÏXЗ;«µßý⇩,ŵ¤›€6ï8L6n&á4Íö…n¶!*ÏFЗ;ܼÍfl⇩)»p−−¬ã¤v)(Öm]çÝ–Þí£¡û³ë¡µ‰¶`B8/3öû—!¼)ÐÃëÜ»`ãë­fl⇩)Àp−−¬Ã¤v)@mÝçÝ–Þ퇡û³ëÑ”‰¶¶Â»m¡k;¡û-öû—!¼ÐÃâÜ»⇧fl⇩)¼p−−¬¡¤v)àm]çÝ–Þíµ¡»³œ¿r‰n9¡û3öû—!¼çÏÃëÜ»`ãëkfl⇩)¾p−−¬Ŵ¤v)`m]çÝ–ÞíÑ¡»¶Â»³−¿P‰n;¡û(öû—!¼×Åϳý$Ör«»úëŵ⇩†⇩ Ê»fi¿Í›îÌÝ“†ëÁÇÞ¿Ý”†ë²7ïM½Ü³îM½Üǽì7“þ(öû—!¼×−ϳ⇩m»Æ ŵ©⇩ì¿»Ù›ìÌÞ†½Ç“îÁ݆¿½7”þ½²ÎMí½³Î½MÍ“Çîö7¿!(ÏrÏ—;Æ»×kŵ⇩†⇩ Ê»fi¿Í›îÌÝ“†ëÁÇÞËÝ”Œë²7ïM½Ü³îM½Üǽì7“þ(öû—!¼×Kϳ⇩ڼƠŵ©⇩ì¿»Ù›ìÌÞ†½Ç“îÁ݌˽7”þ½²ÎMí½³Î½MÍ“Çîö7¿!*Ï$Ï—;ܼ@ ©YD«é]ݦÞáxÍ⇨Ï"H¾¢ŷÕÃGª8−ó*öû—!¼ ÏÃ…Üœp‹fi‹−¾Éox−´¨£²Á¡û´L¼Ø¬‰Vx¾Ýz¿Ý °í¡¡¾ö8¿!3ÏìΗ;ܼãë»…`fippfi‹−ÃÉox−Ñŷ£²çO´Ã»¿¡ûLtÌŶ‰´k¾tÕ¿xÝ°zÝ¡ î;¡û-öû—!¼ÅÎÃâÜ»Kfi…)¿p−x−†a£o)´Â»À¡û´L¼ød‰Vx¾Ýz¿Ý °í¡¡¾ö9¿!3ϤΗ;ܼãë»…`fip(fi‹−ÃÉox−Ñ>£²Ï¿´Ã»¾¡ûLtÌ=‰´k¾?Ý¿xÝ°zÝ¡ î;¡û*öû—!¼}ÎéܜÀÜÕ¥%îz¿Ýl®ÝßLÌ¡¸™¶ÛßüT¾,(":ŷ¬ìG:ö8¿!(Ï^Η;å×K⇩1ºÆ ŵ©⇩ì¿»Ù›ìÌÞ†½Ç“îÁ݆¿½7”þ½²ÎMí½³Î½MÍ“Çîö7¿!*Ï6Η;ܼ½‡⇧)¾p−w−†Ó¢o)¡´»L¦Ïî™´kÁ,ÕÂxݳyÝ¡ î8¡û3öû—!¼ÎÃëÜ»`ã뜇⇧)Ãp−w−†±¢o)ÑûÃç´¡´»t¢Ï´L¼ÈÇ™VxÁÝyÂÝ ³í¡¡¾ö;¿!-ÏðÍ—;ܼ⇧âœpv‡‹−¿Éow−Â…¢²¡´»L¤Ï¦™´kÁLÕÂxݳyÝ¡ î9¡û3öû—!¼ÏÍÃëÜ»`ãëS‡⇧)Ãp−w−†i¢o)ÑûÃÏ»¡´»t¡Ï´L¼è™VxÁÝyÂÝ ³í¡¡¾ö;¿!*Ϩ͗;ܼ0©Y%ÃíÂ¥Þ±yÝLlÍ™ßlß¡Ë³Ï"ªŷSÃGª8ó(öû—!¼×⇨ͳ\¹ådŵ⇩†⇩ Ê»fi¿Í›îÌÝ“†ëÁÇÞ¿Ý”†ë²7ïM½Ü³îM½Üǽì7“þ*öû—!¼aÍÙܜp膋−ÀÉoy−´þ¡²⇦¡û´L¼€ã…VxÄÝ{ÅÝzÆÝ,
  33460. æ¡–¾ö8¿!3Ï@Í—;ܼãë»™`fipĆ‹−ÅÉoy−ÑÚ¡²Ï¿´Ã»¡ûLt̺…´kÄ$ÕÅxÝÆ{ݵzÝ¡ î;¡û-öû—!¼ÍÃâÜ»‡†™)Áp−y−†³¡o)´Â»¡û´L¼°–…VxÄÝ{ÅÝzÆÝ µí¡¡¾ö9¿!3ÏôÌ—;ܼãë»™`fipx†‹−ÅÉoy−щ¡²Ï¿´Ã»Ŷ¡ûLtÌn…´kÄTÕÅxÝÆ{ݵzÝ¡ î;¡û*öû—!¼ËÌéܜϤÕ£ îzÆÝ{ÅÝl ☓ÕßLÌ¡Ê⇧¶–ßü\¾,t":ŷ¬8G:ö8¿!(Ϫ̗;~¸×kŵ⇩†⇩ Ê»fi¿Í›îÌÝ“†ëÁÇÞ¿Ý”†ë²7ïM½Ü³îM½Üǽì7“þmm€n4@LÒÃmálöû"4Ï|Ì—;¾×Û‘áÍ"◰©⇩¢Ãìép\ÆM
  33461. w‹, Î²I¯w‹w@Î$
  33462. ÖÒ¸íVüË«Û8Þt«»ôúÛè=ïij†»+Í“g-ͤ/í⇨dÛ5¾¢Èº=§⇩ö èÞ/Oï⇨2Ü5¾ò~ÒjÁî[ÃÜEξø;]ͤ"îb²¬b•¬2/Î5⇨íÀ«☓?¦:xÍ[LÖXÆ"ômJ2/Î5⇨íÀ«v?¦:Ig[la
  33463. Í¢Të ]€ýλÉ`%´2/Î5⇨íÀ«b?¦:ý[씀¬k‡,gjV¹] ÊùN½É⇩»/Wë⇨2Ü5¾¦Àª[G?Ãø@í“€¬®‡†=…ô¦[ŒYÍVê½²ÎMí×8ÜY¹Ü¹ì¡fl¾îú<?Ì] ÊùNÜÄY€øÎM0¹¢WjÇ$⇩7¹²W»2/Î5⇨íÀ«?¦:,[\ ÇøN‡‰ÊÉ~ÌŒb*öû—!¼×§Ë³&ÜËá¾Ý◰‘†Ë":Ä⇩†¡¸»Óï⇩¯ÍmZêsŷí¸xœ²îM½Ü8ι×͹YÍflî8¡û*öû—!¼×}˳&ÜËá¾Ý◰‘†¡":È⇩†¡¸»Ëï⇩¯Ím]êªã¾2äîA<»Km¾·é½²ÎMí½³Î½MÍ“î8¡û*öû—!¼×O˳&ÜËĸû¯Þ]⇩¬ãmîäªë»2¾m!<ä·œ²îM½Ü³îM½Ü½ì¡“¾ö8¿!*Ï*Ë—;Ü×»¸&¼½ï⇩¯ÍmZêsŷí¸xœ²îM½Ü8ι×͹YÍflî8¡û*öû—!¼×    Ë³&Ü˵¸û¯ÞZ⇩¬ŷmÞxs¾¸é½²ÎMí×8ÜY¹Ü¹ì¡fl¾€8ïDLÒk&á4Íö(l¶!-ÏâÊ—;®×ÛV¸Î¿8Ëê«Û½út»=ôýlãè^ûÎ/·é⇨2Ü5¾¦Àªû%>ã—¬pþ³,²îM¼Ü³îM¼Üżì9“þöV¹!0Ï°Ê—;Ü×»ñ¾ÝáÝg‡Ó#:ð–⇩,^ÄÜYüÍ«ÛLÞv«»ôúÛ›³†J¯é¯0í/³¬Jü¢²îM¾Ü³îM¾Üžì:“þ4öû—!¼×}ʳ¾ÜÛÇï½íÛÝÜîî¾ÝëÊÄá´Ùd‘†–":æ⇩††EÏ'á­d‘†™µ2ä⇩†ºîYüË«ÛLÞv«»ôúÛè=ïV³¬Áî[ÃÜEξø;]ͤ"î²ØNÅù    ô3.Eß2CÎK•íÀ«‹=§:ýγ\Ê ¾ÉK²¼.Jß2CÎK•íÀ«€=§:DƳLÊ1„jU³¬²îM¼Ü³îM¼Ü¼ì¡“¾c<ÿ(öû—!¼×ʳÉÈ» ¤⇩UHfl¬⇩Ã^‰‘µyK8ZeÖÕ»ŵ¼øâ"Cfiû ¢Ò]f»»ú±»³$¥ÅU꿲ÎMí¿³Î¿MÍ“î7¡û-öû—!¼×Õɳ¾ÜÛ‘áÍ"◰©⇩úÃÊé¾®½²Áݪ⇧«–¶Êâ½¹Í⇧«ÛLÞv«»ôúÛ›³†J¯é¯0í?ãþ¡´»¡Í¿ö9¿!-Ϧɗ;Ü×»á¾Ý◰‘†Ë":Ê⇩†®ÞÁ¾Û⇧²½¶ªª½–†⇧â»LÍê«Û½úv»³ôͯ›−0JÞã¯î´?¿Å¡û9¡û-öû—!¼×wɳ¾ÜÛáÝf ‡œ#:É⇩†ÊÞGü©…«‘·ÊŵÀÙYºÎ¿LÍê«Û½úv»³ôͯ›−0JÞã¯î´?¿»¡û9¡û-öû—!¼×Eɳ¾ÜÛáÝf ‡i#:É⇩†ÊÞGü©…«‘·ÊŵÀÙYºÎ¿LÍê«Û½úv»³ôͯ›−0JÞã¯î´?¿±¡û9¡ûýi€n4HLÒSjál3öû—!¼ÉÃLãØ[×Læ¥Ö´Ëj    ‹¶^l»,CfFzdÙ$½¢Û˦LËNû C¨B"åï»Ö´Ëjó’¶al»%GÖ%üÞج¦¼IPÌö;¿!0ÏÜÈ—;ØÛ»x@xEUÖ´Ëj×’¶^l»%EÖ%üÞ¢Û˦ËI²ÃY:O"0œÔ¢ 7Ä>Ë Ì©ÌË W«³©"½¢¼ >Ì̼7«©<" Û¢©Ë>Ëö ¼!4Ϥȗ;Ü×»ï½ÝíÇ»Üí½ÝÞöâMh‘†⇩Ã−ïÉîé´…Õ    ·Ã$´MT
  33464. ØÈ☓E†0óÃfi®ÉJÕI®ï¾Ïÿœ®ñ¾\¯ËZüÌ…«Mì«÷½úv»?üý)ͳ’ÍV꿲ÎMí¿³Î¿MÍ“îñ@ïÿ®» JWg_k⇨’¢k
  33465. îK*ù²<ofi¬ ¤ËU¢¼é»ZüÌ…«Mì«÷½úv»?üý)ͳ’ÍV꿲ÎMí×8ÜY»Ü»ì¤fl¾¢ ÌEë‘¿Íjj ®ô0[KÄ&»:’´kd ¿µ¥ ¶$ÁD_«@ µÄ@*´ú´»~D¥µ·é¾²ÎMí¾³Î¾MÍ“îë²<ðî3Uë®é¾Z¯Ë…¿ÌÊ÷MÞv«»üúÛ)?ß’ÜV³¬²îM¿Ü8λ×Í»YÍflî ¤ËE¢¼Èŷ‘UŴDÈîA;T³Þ⇩¬¡V³ö<¿!4ÏÂÇ—;ÚÜ»Æ(\ñ½ÝÔ0–µ0)m)F­CÔ.7(•eðL´L̤j
  33466. ̤ ¤Ëù¢<9ÿjDfi¯Û§ÍX‡Í¿uÌê÷MÞv«»üúÛt@ï‰'ݳnÎÈLʤ|g¶¢ ÌïGëÿ®»ïÅ鯮»ZWÌ…¿ÌÊ÷MÞv«»üúÛ)?ß’Üñ³†®ï¾™ÿ«ÊÌ“ ¤ËT¢¼FÿlDEFÄX†Í¿    :ÌJ÷MÞv«»üúÛ(?ßm‰íÀŒ³, ¤ËI¢¼®î¾Åÿœ®î¾P¯ËZüÌ…«Mì«÷½úv»?üý)ͳ’Íâÿ®»¤™º¢ Ì¥T»DÿkDÿaDDDXüÌ«M·ë«÷½úv»?üý‰Õ³¢Ë¤ŶŒ²¢ ÌÄIËö<¿!0Ï
  33467. Ç—;Ü×»â½Ý•‘†r£‘ÄÌOêÛÚî:¡ûÂ)Lå í´îaÌ»“†h”¬°☓¼À¢œ¯ïŴäÍ\ª!g°0²¬¢ûäÞŴ¬^ªQfl«ïŴäͼIIý°0²fi¢û%³®<$ëÉäM Â®IgÍ\ûÃÊ»¡µ»tÌϹ⇩†ì‡Á¾ú[Mn[‡Ûœëflî⇩³Í1::¡û
  33468. −0öû—!¼×œÆ³½ÜÛ‘âÍ•9ÄÊO‘¬Úî¡Û¾):Ï [⇨Ôåî´Î“aÌ”¹É☓eÊ¢°»fl¾ùäÞŴ¬Q[ú¢°»œïŴäÍ−»ÉÖ*ŒGÿäÞ²Ŵ†l⇨Ô°?¿“¢û\g¼Ê¿µÃ»·¡û⇩t̺ÉÁî[‡Ûùä5F±[½!3äúå⇩³ÍÍ::¡û-öû—!¼×9Ƴ½ÜÛâñÝ◰‘†⇩ Ã−áÉWê½²ÎMí×8ÜY¹Ü¹ì:gflnVüË«Û8Þt«»ôúÛè=ïÒ³†ZüÌ…«Mì«÷½úv»?üý)ͳ’ÍW꿲ÎMí×8ÜY»Ü»ìFflþ2/Î5⇨íÀ«J<¦:ŷ³¬³Þ⇩¬¡r³ö9¿!-ÏÞÅ—;Ü×»ðí­MÇŷÀìd´à»Ã¡ûµÛ¿ŷn9¡û(öû—!¼×Éų¡Â¿ö7¿!(ÏÀÅ—;Ô×û7¡û-öû—!¼×·Å³HÜK½èÛ‘âÍ◰9Î⇩†®Þ9ÿcÄ…¿²ÌºûÍÝhÔ»üúÛ+?ß ›¾U³¬²îM¾Ü³îM¾Ü¾ì“î⇩³Í:9¡û(öû—!¼×ŴųÉÈ»Ñífifl†Ŵ©d£ªÃΠ   =üˉ«ûÍÝhÔ»üúÛ-?ßfiŒ¾U³¬²îM¾Ü³îM¾Ü¾ì“î⇩³Íá:7¡û(öû—!¼×MųÈѽÉëfifl†Ŵ©dŷ+£ÃΠ   =üˉ«ûÍÝhÔ»üúÛ-?ßfiŒ¾U³¬²îM¾Ü³îM¾Ü¾ì“î⇩³Í­:7¡û@€þ4LLÒYgál4öû—!¼ÅÃøp‹àp−¿$ìU|2\BóØ4¶çµðHéd»ŷßl´üàµêÕlßlµèãµäÕlßl·ÔéµÞÕlßlÄßÌ°¥·¶þŷ¤kÄàÌ°fl·¶+¢kÄáÌ°−·¶%£kÄáÌ°›·¶¥këÜÃŶPnÝ¿Ŷ?n!´k´œŶ¶—Ŷ f"´kÅ”ŶÆ¡œ½€C</ÐC⇦C"XDD"*öû—!¼¹ÄÃ8.©Yv£Eü^Tù¨<G−¬8vú⇨☓\e☓`eŶ☓8m−¬qGªö8¿!%φė;Ŵ¾nß9Í°PŷV²ŷßl߸ÅÀ¯ŷVßüPL«m&%öû—!¼èÄSŷáláøÅ|ŷVyŷáláÅ7QŷÖáü⇩¸~Æ ´Ã*öû—!¼oÄáu²⇩«™ÆàIZ⇩,ΠʢM ª8Äü¡T¹⇩‡™Æ8ôù0öû—!¼×UijáËá¾Ý‘'Ê◰©⇩xîXÊ1ùã¾²ÎMí×8ÜYºÜºìTflþ»îS¹å⇨X»Á&»R™£kQN¢¶$¼D_«H µÁw»úµ»^L¥Õ⇨»²îM¾Ü³îM¾Ü¾ì¡“¾ö:¿!4ÏÄ—;Ü×»ßâ˾MÝáÝ#◰©⇩0ÃLª<¡ûÞ»!í¬ôÍ«Û$ºÕw«»ôúÛh³†S¯éu0]V³¬²îM¾Ü³îM¾Ü¾ì@“þ}\¼⇨³¢Õ~ke4öû—!¼×ÑóáËINND¾ÝWÖ¬éáÝ◰©⇩îÃÝ‹‹<ù®<®Þ:üË…«íÅÝgÇ»ôúÛí=ïb³¬²îM¾Ü8κ×ͺYÍflîgV2QÎT”íÀ«ô;¨:|äp?ÜΠ   ,$Û®I3JkU³¬²îM¼Ü³îM¼Ü¼ì¡“¾ö<¿!3Ïx×;Ü×»ðL´ß®Íà­⇦¶°Þ◰⇩†"ª⇩„õëå¡⇦„ßÎp™Õ:®Í…¿ÅËÚÇí½úg»=ôýàí¾p³¬²îM¾Ü³îM¾Ü¾ìV“þUüÌ«;ÿgä«÷½út»@üý'µÛÿf⇦M½³†2QÎT”íÀ«⇦;¨:àë^2ܯ-“⇨·¬·>ÏVê¼²ÎMí×8ÜY¸Ü¸ì¡fl¾ö;¿!-Ï Ã—;Ý×»èH´×ÏûìÏx+Ñé¿Í®jÚ:üË…«íÅÝgÇ»ôúÛí=ï\}«2Î^íV¸Î¿8Ìê«Û½út»³ôÍ/¯é2l9¡ûÖÕ»«Ã~Öö ¼!0ÏΗ;Ü×»á¾Ý◰‘†ó":â⇩†®Þ:àË…¿ÅËÚÇí½úg»=ôýéí¾W³¬²îM¾Ü8κ×ÍYíº@ÌUUÏ¿ÿiÌJ÷;Þt«»üúÛ¶@¿⇦'ݳÿhÄC¸é•2ÜK¾§Àªé±º⇧³¬à>OWê¼²ÎMí×8ÜY¸Ü@ÎY¸Ü:¡û^€þ4TLÒaáü(öû—!¼⇨kÂ㑼ÍàHÊŷMí—Óͨé ⇩¬) ꆗ¬´D7/öM¹!-ÏR—;Û×Ë⇩¥Ïª›−–ÛK«¾¯þœ⇩ÎÄË)ËŴ½œ¥3à eÅß+æ9Äü*öû—!¼×3³´ÜË©ÿp‹⇩ÎUêþ«»Qê«Ù½úr»=óý³ÄÌN¼É¿Ëÿª$ÿbä«÷½rû(üݨÎ8ß¿8ß…⇨µ’þJ⇧¿fl©3 Ü ÜÖ ÜÔf¾Ìh»lêì Í3öû—!¼×ïÁ³âÜ»¬ëÛþ«»¤Ì¹¢ Ìïù㯮» ¤WL…¿ÌÊ÷$Þr«»üúÛ)?ßsÜ`³†«j‹ ¤ËF¢¼;£û    î“´Ä»´ë"ß⇩Fd¾a_Û
  33469. Å÷$Þr«»üúÛ`³† «ÉNü“]»Ã/»´ëÅ⇩æ¨cëöÖ~¶!4ÏŒÁ—;Ü×»JâK¬ëÛþ«»¤È¹¢ Ì!ùÓOüÍ«ÛÞr«»ôúÛh³†¯éu0Ýʳ†¤    µ¢ Ì²HËðøö3Oü”´Å»¥ë    )⇧⇩F
  33470.     
  33471. äc    ÔÛÞr«»ôúÛL³¬< ô î”Z»Ã0»¥ë
  33472. s⇩æþc[<£ûÌ!¿›ÉÍDªªêÌ‘Q˱[ºÍQíÎÞêÍ I6lSÅY YUTëÜÏÑîô¿QD_1T †§3' _eØ'¶ôù»[O]`_UTNÝ'ÑnÒß PP¤ELä-öû—!¼ÁÖ¬☓)Êp−«xÓÕg
  33473. Ýâáî..fíþ«»¯éŵ(⇩<◰ŴÝâáîßêÌRÄÌGÿÞaÜt`Ý9¡ûö,E²!3ÏäÀ—;á¼☓Ýœpj¬‹5ÉÙ «Ý/gm//f/Ö«¾¯þœ⇩ΤU(³kf]ßÞîý$«Õr«»µÁ»úë;¡û*öû—!¼¹Àéܜ«<Ý°g½«´½úr»õí°⇩†»¾.(<ŷ¬*G:ö8¿!(φÀ—;²×Û¯⇩†¾µé«Û½úr»ôía2ÜOüÀ«Gã«Û½rû€ôíXLf}&á4Íö¼}¶!*ÏvÀ—;×Û"I3l\\\\U \\U‘¾ÍPêsÀÜÀÎìtM0-€Ŵf¡1-¶CŴãlç¡Ë¡8Ŵ¶$Ŵßl€ŴÝö8¿!*ÏNÀ—;ܼիŶ)²p−«☓Þk´Ûƾ¡k8¡ûö¼F²!-Ï:À—;ܼ,ªYk«Ý⇩ÎŲÙÇî½úg»
  33474. õÝ⇩ηé³⇩†XŒÍ]f»»úâ¼i\flU⇩ÎÙ¡'#ŷ¬†pý2ö9¿!-ÏÀ—;ܼ⇨âœp“«‹−ÁÉou−´þ¹±¡k´J¼ÅVq½Ýs¾Ý¯íµ¡¾âþ9¡û*öû—!¼ë¿Ã©Üœ¿hÕ¥"îs¾Ý_­ÝßJÌ¡X¶#ßl¾,¢"ªŷ¬ZG:ö8¿!-ÏÌ¿—;ܼ⇦âœpR«‹−¹ÉtŒ`ýÙëÕâ}ݵ–¾Úþ9¡û*öû—!¼±¿Ã©Üœ⇨PU£î_°Ý¬d+":ŷ¬(G:ö8¿!-ÏŒ¿—;ܼâœp «‹−¹ÉsŒ_üÙíÐÕã|ݵ–¾Ðþ9¡û*öû—!¼¿Ã©Üœ⇨U£î^²Ý¬2+":ŷ¬ö G:ö8¿!*Ïh¿—;ܼïª⇨)¾p−u−†ûo−¡´»J Æ ´k½¨Õ¾qݯsÝ¡î8¡û*öû—!¼I¿Ã⇦ÜœpЪ‹−¶ÉtŒ`úÙë Õâ}Ý¡–¾ö8¿!*Ï2¿—;ܼ¹ª)¶p−−¬ùs−l _]|íÝ–ãí8¡û(öû—!¼×¿³â½Ý◰‘†⇩¡ÊÖé°®½ ⇩ê\j–†°;*¶‘†úÍÝf»»ú½³üÍJcú
  33475. P”dB04À›†îÅÝgÇ»õúÛV³¬²îM¿Ü8λ×Í»YÍflî7¡û®­ÝbÖíf»»ëÍlßì®®ÝbÖíf»»ëÍlßì(öû—!¼×ɾ³®­ÝÿÒÝgÇ»úì¼³ÎU꿲ÎMí¿³Î¿MÍ“î7¡û(öû—!¼×«¾³®­ÝfÖíhÔ»ú½³lÎU꿲ÎMí¿³Î¿MÍ“î7¡û(öû—!¼×™¾³®®ÝÿÒÝgÇ»úë¼³ÎV꿲ÎMí¿³Î¿MÍ“î"MïúXöM4L ûåÌÝ“†ëÁÞ¿Ý”†ë7¡û(öû—!¼×]¾³®®ÝfÖíhÔ»ú½³lÎV꿲ÎMí¿³Î¿MÍ“îNïúYÚMœ¼° õµÌÞ†½“îÁ݆¿½¡”¾Í7ß‘$XűÀ‡PÁÜÁÁÍ@ßÁPÝ”í flËÉÈ»¼.5¶.'½k fiËÇϽ,&B?d-&ºk flËõ(⇩µWþCRŒÛÀÜ‹©ÆP݉◰†„#ê §Ë†Î½RÍ‹À‡PÚ◰ÆÍ#‰©fl„¾Î ÜRVÔÀÜ‹©ÆP݉◰†„#ê flËRÎÝÀÜ‹©ÆP݉◰†„#ê flË-öû—!¼×ͽ³¾ÜÛ€ÃÚMÄ®É
  33476. 9ß⇩$‹ÅÉÀÙ ‡†Uh–,±æ"·›†´−†GÀÎ…¿·5£0´¶ï‘¿ÍNo¢Æ°M¼#:ÚÞ¸|†¼ —ÔM½Ü³îM½ÜŽìÌ~“n⇩¬9◰ù*öû—!¼×⇧½³¿­ÝŴ¬$☓IZ⇩ͽµÙ „ß]g›,¯;*W*‘<¯ÄÞ⇩¬8◰ù(öû—!¼×m½³´­Ý±Ä“«(ÓÕ ⇩¬ êÅ´MFª7<óß0EÒ ‹Î%öû—!¼⇩S½ÃÛ©Ŷ)§~−ÝÐ#Õ¿8XÕ€ì4XE6Oý*öû—!¼A½Ã⇦ÜœpÈ©‹−¼Éot−´ÿ¹§¡ûÄ8Õ$
  33477. qm–îÇÞ¡›¾ö8¿!*Ï$½—;ܼ☓$©Y'$„å “¦^ßqÍ’Ï"ªŷÕ(ÃGª8− ó(öû—!¼× ½³±¼î|þ7¡û*öû—!¼ÿ¼Ã©Üœî%Õ¦«åp,“Õ‹ßü¬°(":ŷ¬t G:ö8¿!(Ïæ¼—;®×Û¡z¿ö7¿!*Ïܼ—;ܼc©)¼p−s−†y®o)¡´»Ì—_p,ŷÕ´î–î›Çí8¡û(öû—!¼×¿¼³±æ>½n7¡û(öû—!¼×³¼³4½­m7¡û*öû—!¼©¼Ã⇧Üœp0©‹−¾Éow−´F®²…¡û0ŷ—UÇqÝ¥"îa8☓ÕÇÞ¡›¾ö8¿!*Ï⇩¼—;ܼì&©Y f8„U'4„å0“¦^ßqÍ}Ï"ªŷ9(ÃGª8ý
  33478. ó(öû—!¼×o¼³®ßݡVö7¿!(Ïd¼—;®×ۡ弶ö7¿!-ÏZ¼—;Ü×»⇧«½Èp·ÃݸdÄàË¥ÎRë<÷n2ì1»Ì¸nTüö9¿!*Ï<¼—;ÛË2Õê
  33479. ‘»Ëë8eû*öû—!¼Û-¼³Õ¬‘2¾
  33480. »e˾ì 8_€>ØM ÷ÅÙ!Õ÷›T€ ì\Lþz&á4ÍfiT{¶ Ù \\øÝ fiËTù¥|ÜÅQ(£µP§¼?àÌnëT¤–;(ýn[⇩ÌK±~“ øTUÄ¢flÊØ"KÓPËÄÅ *¶üF/öY¹!0Ïâ»—;ØÛ»(½,EU°Ŷ¶Q«¼P­¼‘Ø»P¯Ã,»u[d£⇦;(uk?£ËÄç±ÉR/Mfl¬¼ð¾²†/ ռ𾇬2ßlö:¿0ÿ—"¼è@±»SM(¶Åô;,´U‡;H¯Ô¡Æ»ŶÂe†ÝÕ☓¡k Ä›‘´☓Éêð☓De«Ù☓F¡(¶ÈI:/í O"¥¼P§¼‘ßÌHÊc…Påho놡−;HmË°Þ‘$ÍZÀIW¬
  33481. Ù4$0±Ó®/†Œý«fiËS¢¼$ ñÔfiËN¢¼XCO ¦¼#Û†ý«Fü í O"¥¼P§¼‘ßÌHÊc\Qåhoël¢−;HmË°Þ‘$ÍZ¾I$0flÔ®/††ü«fiË ù¢<Ó\ËËNª¼XAO#AÜfiü«Fü0öû—!¼Ø)»³¢
  33482. Í°µ3« ìÄ­"ËPÛµ—,@/D\(¢E–¾P C(üD\"êÜ-ôÜK—†Aû◰Æ⇧&M‡ª¯Œ†í«<¡ñ³¢ÌÓS˳µ¥ÌCNûAå◰Æ⇩&ÍŒfiÊT×Â;h:oö:h¶!3Ï溗;ܼãë»⇦`fipj¨‹−¿ÉtŒ`€­Òç8ÖÕÞ}ݶ–¾T»nµë·    €¶~þ;¡ûö8G²!3Ϻ—;á¼ìÝ»⇦`fipF¨‹ŒÄÉtŒ`\­Òç@ÝÞ}ÝÁ1¼¶–¾xÄl°ëÅ+»Æ î·ë¡Ý¶ö;¿!3ÏŒº—;ܼãë»⇦`fip¨‹−ÅÉtŒ`4­ÒçAÝÞ}ݶ–¾<¶Äl°ëŻƠîµë··¶F½n;¡û-öû—!¼qºÃâÜ»÷§)¿p−−¬­s)“_]|êÝ–àíĵ˰¶¶ÞºnÅì¡ ¾ö9¿!0ÏPº—;ܼãë»Õ§)Áp−−¬ë¬s)_]|êÝÃཱུ–¾ÄÍ°¶ººnÅì¡ ¾ö:¿!4Ï,º—;ê¼Þâ»±§☓)Æp−°—ÕgÝ00f00fíþ«»¯é†%⇩<f¥ÛÞlåÎß¾¶Â»¡k<¡û‘"_fl¬EÚQ¨¼[‘¬Q :ÔÎÍîêÍ5Í−Jæ ZpTëSÍÑZåÏþDùª¼'Ý»’X½fi ¨3Ø `åØÙ¾ùK6ËËFIÖIü’X½ [ ¦SÙØîùØ»6ÄFIÖOÜSNÝ((fö¿!%Ͼ¹—;ë‘Ì©¼#jŵ|†6 úœy€n4`LÒñyál-öû—!¼×«¹³á¾Ý◰‡Ñ'#:Ö⇩†¸îVüË«Û8Þt«»ôúÛè=ïû☓ãå·†2/Î5⇨íÀ«æ@¦:ûγ—ÊYê¿Í›¼ìÌÞ†½“îÁ݌˽¡”¾V9fl(öû—!¼×k¹³ì½Ý‡›†"€©¥    F:À¼Þ™Ë½ÍÌÚ»ú½ßfËüúÛß@Ï—,í³fiËUê¾²ÎMí¾³Î¾MÍ“î7¡û(öû—!¼×=¹³ì½Ý‡›†$€©ex$£À¼Þ™Ë½ÍÌÚ»ú½äfËüúÛä@Ï—,í³fiËUê¾²ÎMí¾³Î¾MÍ“îóº¡k7¡û(öû—!¼×¹³‘Γ´ r‹‘
  33483. Γ°r‹ÿ‹Ì"@r¢¡î»¶•7ïKJÝ°Æ»¨ûuþÎh9 ,(öû—!¼×í¸³ß¿Ë¡Ø»¶•7ïKJÝ°Æ»¨ûuþÎè9 ,(öû—!¼×׸³¡Ö»¶•7ïKJÝ°Æ»¨ûuþÎ@: ,(öû—!¼×ø³½¼»¡fi»¶•7ïKJÝ°Æ»¨ûuþΑ: ,(öû—!¼×­¸³¡‹»¶•7ïKJÝ°Æ»¨ûuþÎè: ,ºÐ¾ 1&ÆJ•ÞÆK½¨°»þï uÌö8;²!(Ï⇩¸—;ÿ×Ëu»@ìd7¡û(öû—!¼×¸³åÿÌ¡j»¶ö7¿!(Ït¸—;ÿ×Ë_»çl7¡û(öû—!¼×i¸³¡Fº¶ö7¿!(Ï`¸—;ŵ†ú粡û»ö7¿!(ÏT¸—;ŵ†ú粡û»€7ïdM2x&á4ÍÌ⇦x¶ìëüö ¼!ÿÃÃö çÁÆ ÜÁÆ–'¿Æ6-Jö ¼pS"o~ÏÃæ5¡¬¡Îfi6ºêÿ fiËAì¿KEãBäD¿âdö ¼!ÿêÂüfiûÌ÷»°¿»ùÔĦ÷ ¼Ø¿Ê°Ëùç¯ ÏÅíÌK ìÏþÌËìæôö ¼!ÿÌÚ»æëL¢ì¿Ì¿ìñüÌ ¼ìòü üÌÚ»ìîô ÏÚ¿þÌË ìÿÅà lÄà l üŶíÌKìæôflyÎt1Ê üÌÚ»ìÄíô ÏÚ¿ìÌË ìÿö ¼!ÿÌÚ»ìíü¢ûíÌK ìÏÚ¿ïÌK ìÿö ¼!ÿùÃƦ°¿ ÏÁÆÀ÷k ùÊËÁ°k üÌÚ»ìaðô Ï–☓ÇÆy+ê1fl¬° ¼ ÈÁÆ æÁÆ E¿Æ°¿»ëÄü0` lÙÞ»Ýë¹ü 0[Æ°¿»ëÅü° ¼ ÊÁÆ ÀÃÆôÏyìïÝfl,flzÎ{1ê2fl¬fl ÑÅu3Êö ¼$ÿÌÚ»°¿»éÒüùú!öûÚ¿¿Ì»%é°Ké鯡|ÎÄ8Ê÷¿°¿çÑüÒëZ5¡¬¡ÒÅÒ6Z7¡¬¡}Î~àâ8¡¬¡ÎÄá vüÞÁ l üÌÚ»ìõü Ï!öûÚ¿íÌËéö¯¡|ÎÄ8ÊÿÌÚ»ìíô ÏëÌË ìÏ÷ûÌÚ»öêü ùú üÌÚ»ìêü ÏöÌË ìÏ°¿¿édflyÎz2ê3fl¬fl{ÎÑÞR4fl¬flÑÅvß Ï"öûÚ`S¶¿Ì»    é°K} ¿æ7¡¬¡û#öûÞÀS¶ËÙ»é°Kæÿ$öûÚ¿¿Ì»Ò°Ëæÿ#öûÂo¡$ÒÅfl7ºÌ¿ ÇÁÆÅ÷k ùÊ#öûÅoùúÅ÷k ùÊ#öûÂoÀo‘׿[ÝR½M°€äÅA’©çæ»ïŴȦ±çËQ­ª3®³+¿¼dCV‘e"CW’e"ñ¿µÖÞMë t"² ì"éJçè¯b}UÉ MTÈ °TäÜTÔㆼTv°,æAºŵÈ
  33484. lçêº,±¼€QŒd×€c¶Y⇦¼ôÉ°Ëè >ôœÄÜ\fikèôç̾¦^afD¼^F JT°HãÅA’©;g„<;−UXG‹<−U@−ÿÉWi@−hPA)A‘WÙÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ−“<‹    =<−?>−Ak0s⇧r„3h1r03ão”£h. “3òt-£njrb3purJ3o|cw3q›¥:ec ~3 tŒ›("Ô> $"Ä!?"Ð!G−G    8? 4"(""‘e–N33e‰g{3lfy`3fz¤:e‹CXL−öNg£r/ …3=:CY)L@ à©x@p"Nh9⇦@)−    LG    d? x(l("0‘☓# $ 1‘Ô% ´& 2‘3‘4‘Ô' ☓' ¼@È@"†*‘*"/¤)‹/)−/'−/‘.(−.)−.‘&'−&)−&‘%)−%‘0BHB"BB"ÐAèA" A¸A"pA⇦A"@AXA"ü+4A"‘B,"\-P-"»ª¾¸ª»Åª¸ÂªÅ¾ªÂ»ª¾¸ª»Åª¸ÂªÅ¾ªÂ»ª¾¸ªµÅª0Cµ:¹¹ªººª¼2D£½¼ª4E½:¿¿ªÁÁªÃ6F£ÄêÆĪÇǪ†B)D.8."tC €/,/"Ø0†D"ä0¬5¨D"¸50    Ð1☓21    ´2Ø22    3    4    €3¸4O‘-‘‘‹L7¸D"X7+‘:    (‘:    :    ,‘9    9    +‘8    8    +‘6    6    ,‘7    7    *‘5    +‘5    5    ´6¤F tF…F"Q\F‹SP−äER)†EÌE"☓E´E"TElE"ñ  ™r€3 ⇦mH3ym 3t’â:Y−HEcM"ä8Ø8"PQ−RS−,GO)⇦<|<"     ( \ìK—Î☓÷cn{ì^Vy“|´wì^†>^ü_tŶä]X.]Tb¼\è\Èel\“]Ôup\À^Ø2]:] &&"\p\“`]8"""\´_|^‘d¸\daD`]]^]]òflrÍZv¶öò«„Âo  h7_Â{þ{ú½ð®°ýö☓>¹ÕkÑ\T£Ð ¯öÿ¸d1>khlo¥’βÌþã ®ð²l®`® ¸®üÿl° œä¯(®Øÿ´ð\−kg@ã¿XÊ*J]€^T¤                 .) ÿÿ \ ]4!);<L4ýÿ& kù kül®    °kñm®Þfl°±®üÏN·@°m^þ‘ °±ð¸fù]²4Èþ¯kþ Ïá Ìýôÿfl¯ð¯ll®à®p® µll|¯°|l|¯(°¯Ü° ð^ iÌl(°Ô?·°†,0]JË ç*îà?*\ÀW¤          +.þþÿ     ]MFþÿ.§te¼ÿ‘…+ù|%C‰ì…Ñ5qÿÿ^0ŶseÌÄÎâ9ë½
  33485. ǽÑÿ¯à7)î®ù÷þþÿ¯þþÿ¯ËÊŒ66fþþÿ¯þþÿ¯]ÉÆÆ \Woÿÿ0/s.Ä å»çZÀ_àÿÿrdC÷ÅÊÇ_ äþú    ¼$ïøïÔöý*‡Oa¤ŷ¢Û»OppÀð%ý噑6ti¶äý*îõî¯Ñê³ñ´N.³÷ôüïè–†EdÉ*lìëÎÿÜËóïÏÿÿ"ñ•p    &fgǽ©SáÝÿÌï{  4‰ÿÿâÿÿ[Ŵ°Oàŵÿ_  ±ÿÿ y8A\|\¡(\o1$&"!!12âßÿÙÿÿ  Ŵÿï~fiÿÿÕ    )Äjöl®€®ÿ|¬±’°_Çy²€ Èï\üc=c]]஀în¯®þfl|«ý®Ñc;dÅ®;÷®Ä÷d<¯Á÷¨ ®øÿ¯õÿ®þÿ¯¯´Â ®ùÿ ®ÿÿ¯ ®ôÿ¯®÷ÿ®ûÿ¯¯±®üÿ®úÿÑþ®þïl¯Êÿß^^ _À^*]àJ_À `3_À`J_¿cõ_ÿK_¾ cö`J_½kýküa?^À`@_ºd?c¾hB_¸⇧û {òkò½fl\€b `_ÀdA`h`o¾kÿ kþd®⇦ ýr\lklð®Ŵß\kq±•àè    ÿ&¯Ñ…±®Ý¿¯`¯³@¯ý]1\Á\lgq_?±À0¹°¶ÿoÈÐkèkükøgö®
  33486. ☓œõl*fÑ]`®ñß|kí¯Ð*&g¹` ⇧í®Ý¿l œí® Àkøœõ° ²€4g¹^]ó\qiª\éh¾`gù®“¯ ?kð\‰kfÑ€)\f®{ÿ)\`e€]ü®ô°ùÿ(*ÈÀÿ*®Ðÿ®ðÿ**e®þõ¯¯¯®ÿÿ¯¯±¯ÿÿÀ"®àÿg÷®ÿó®öÿ¯gí®ÿó®ýÿd®ú÷ǯ±¯¯¸¯ý\~f]¯Ëýß *%\€dþ]]^]°I\Üg_ÿ +9e‹]ÿ_ÿg÷_ÿlkÿkÿkþkÿ……Îÿ faþ¯»ë¯¼þã\ÿkll|l…‘`®ð|¯ð®ð{†®°|†®°¯¯à¯¸ðø'l±àï:N"\⇦\è`LeÄ\ \“>£]T¯àŶ±0¶ð\üklîÀüßkèl{ð|l®`{ü{ø®àl¯ð]ìiÌ"k¬".⇧Àkü*|®Ì®Ø_m ®ô‰kìœô®°kì…lkø®üfl¯²*kÄ®4p°¸ 26\ ]\ÐikÌkÔ*kÜll®$`œÜkØ^ \Ìi^−Ø®ü_…kàkð|®Àl<làk®Üfl|l"k¬ \ìjÐkÀ*\ìjØkð®$€⇧èkôkØkì{ðkì®°]jÐlœÜ® kì{膮‘⇧𬮀°0«ô®,€lkøkØ6kÐ6kØll®(€kÌFKkokôl®ü•|¯à"k´**\°k$NB®lï&kÔkü~ôi]mô®™"^Èy8®Øï2¯®Ìß\üjä®ð¯ü´ ±àß"kälkàl^øil®‘^yÔ®à®ôÿ®üÿBkàll®ÜÏl ¸ðÿ 7kÒœþ]]j]]ª†/®ÿ°Ï9®Ð_®ÿfl¶\q°hÿ8 kÐ^®î±¯l°ð    q¨²÷fl¸ð®€®÷•íÿl°à°úl°ÿ侮ýï&*ºÇ®ûﯸ\À\ðj(²Êð\`¯fiíòo*J\€]Ëæ*J\€¿– \nœŵ*J\€]®„) G\y\ñ^ÛÌ*J\€]^T¤         yu\V:ßÿJ\­]+\b 6#fXn3]¤-&\pe€e@^\nÀÇÿ( &  #!   Dq¯ßÿ °¶$©Í®zm¯~‹®zm#$            ^¿\__l ŷ ]]\ýfÍckgk ]÷]¼aJ`¶J]g–¯òZ®‘fl◰zfJ®¡¥®k1¯‘~®ïe H\À]^@bÀ* _Þ*^àd] \q\} ^ýhÿ_n€b‘°@Óm®j†@®s¤®Ùÿ ®Æÿ  ²B]^®Ðò®hZ*lp®•†\ÿ^å_b ]á)J®¡ ]]]ö^]|ub]ecuZ®¥¯‘;_`]àJ\€aJ*]à*] \î] ]à _.d\Á*\ÀL*\‘]ñh0kïZ`‰±hV†@®_¤ ®Îÿ       ®¼ÿ ²SMte]_\ò]^ö¯«(±c€uùbû^±¹ì¯âÏ®íÿ°m>°»®î°°°°r$®€Í²9G°Í¯¯;G® Óq­¬B¯â¬v®ææu°ýÿ´ýÿ°áÇrý®þúŵ'¯¯þ´Òȯ87¯¶º⇦wò]Df¯±ßxH¯±⇨tbôb¼¯Fö®ºùXló®¿°Qzýn÷q    aç^
  33487. ¯ó·¤é`®ôc³Aaâ®ÞÒ]@]Õc1a°¹Ï|òf>_®þ²¨ò®þîd ®ìùh°    ®íí¯´«Ùd°¯€Q\ ¯ ÿ¯H®Àºð:\€*° ?»@À®àá]g߯!»àÿ®ð¿0]g/¯¡Z²°$¯—„¯Z¤                ´Éfl®  ` _0” ®ðήpõ¯‘W²cµp ®°fl¯à_¯㱜خU¤®ÿÿ³]œJ\€\`\°`À\p\‘\€g‘_`fz⇦*K\fl\‘N]Z\°Z\’Y]°\_\‘*\`\⇦®ø{bdn]^`ŷ]yà ."k@&\ m0]—ð\Ü**]0]À\À*JZJ\ð]\pd‘`Jŷ‘*\`\€\¼\T\Œ\f\ð*]]a°]½]1:^Q^€pÀs 9\”&\d\ ]\Ð\À\ð:\Ð\ð]]ð]\ð:\`]$*®’€ \ô \õ_`s]]^ö]\ôa]ón_]]]]^sce`\³]`tÂ]  +/{ldDs“ZJ®@a_®0{]0\‘\À_@^i¡`î             8\û_@eI®ÀRZ**]0]Ñ*\p\`\€*\Ð:\°\_\‘_ \à::^€  *:** \À\°\ :JZ)]*\ :*]€*]à\`Z:\ J\«*]   \~:\‘)\Ð]\ JL\ ]Z\°Z\ð\À_`*'\p*J\p**]Ð\à\ð]]`\ð_\ ]J^**]\‘\peŵ\o^°\ð]0¯±°eð]]0™ÏJmà\à\ð\஧`\ðd]`\ða\ÿ_^]ð]hð`bð`J\Àœ€ŵ€e \×®(^`ÿfe®\  ®¼ÿ                  ®pÿJ±^^C]²C]Ú]Þ¾ùõ@ý·eÍʸû ã?Îãå,Oâ?‘è
  33488.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  33489. P á@ ã  á0àã°[â)ºÕä
  33490. QâªQã
  33491. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  33492. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  33493. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿê|€Hâð árcc 5.00
  33494.           sed to start the ARMEdit configuration
  33495. |                 application. This assumes that the main front-end has
  33496. |                 already been started.
  33497.  
  33498. | Check that there is sufficient memory to run
  33499. WimpSlot -min 88K -max 88K
  33500.  
  33501. | Start the application
  33502. Run <Obey$Dir>.!RunImagenderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     RESFe ÿÿÿÿ`$€(fFrontWin2$0lÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ì ´ÿÿÿÿŶ 8ÿÿÿÈlÿÿÿÿ@(⇦ÿÿÿðøÿÿÿÿÿÿÿÀ00†ÿÿÿàÈÿÿÿ⇨°9€4`Hÿÿÿð|ÿÿÿOn½ÿÿÿÿUse this box to configure the !ARMEdit front-end application.|MClick CLOSE when finished to close this box.ARM Edit front-endFront-endSwitch on to quit the !ARMEdit front-end at the same time as the PC software.|MThis option is useful if this application is started automatically when the PC front-end is run.Quit with PC softwareClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.Close <@DH—…“$,ÀÈèð (ÿÿÿÿLh€(fSpeedWin2\$oÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬°¬øÿÿÿÿŶ ¸þÿÿHoÿÿÿÿ€4`ÈþÿÿðüþÿÿŷnôÿÿÿÿA@DP—ÿÿÿàÌÿÿÿúnd
  33503. PÀ00†ÿÿÿ@ÈÿÿÿhbÊ @(ÿÿÿðøÿÿÿÿÿÿÿÕÀ00\ÿÿÿ@⇦ÿÿÿèjR A@DPXÿÿÿà…ÿÿÿ]vdP€4‘ÿÿÿpLÿÿÿÓ9 ÿÿÿÿUse this box to configure the multitasking speed of the PC card.|MClick CLOSE when finished to close this box.ARM Edit speed controlClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.CloseAdjust the value to the required foreground speed.|MThis is used when the PC card window has the input focus.Switch on to set the foreground speed.|MThis is used when the PC card window has the input focus.ForegroundMultitasking speedSwitch on to set the background speed.|MThis is used when the PC card window has not got the input focus.BackgroundAdjust the value to the required background speed.|MThis is used when the PC card window has not got the input focus.Click SELECT to read the current speed control settings.Read current <@DH—…“$,ÀÈÐô8@hp‘—À Ìh€(fConfigWin\$†oÿÿÿÿÿÿÿÿ
  33504. ¤ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXpH´ÿÿÿÿŶ ¼ýÿÿððDoÿÿÿÿ€4PÈýÿÿàüýÿÿnõÿÿÿÿ@(⇦ÿÿÿàøÿÿÿÿÿÿÿûÀ00†ÿÿÿàÈÿÿÿ °»À( ÿÿÿÌHÿÿÿ!Í{@(þÿÿàxÿÿÿÿÿÿÿHÀ8 þÿÿ⇦þÿÿ2[O 1ª À8 —þÿÿÿÿÿ0°“ 1D
  33505. À8ðþÿÿÐ⇦þÿÿ3S´ 1
  33506. %À8ð—þÿÿÐÿÿÿ1fl 1° *
  33507.     <0ÿÿÿ‘Lÿÿÿ ¼⇧G] ÿÿÿÿÿÿÿÿCfgMenuCfgMenusdirectoryseditutilsdossediteditUse this box to control multiple configurations for the PC card.|MClick CLOSE when finished to close this box.ARM Edit configurationsClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.CloseDefault optionsSwitch on to automatically include the AUTOEXEC.BAT and CONFIG.SYS files from the primary partition when new configurations are created (by copying the current configuration).Include DOS filesClick SELECT to list the currently named configurations.|mThis allows new configurations to be created, edited or deleted.Edit configurationClick SELECT to change application and partition paths for this configuration.PathsClick SELECT to edit the selected configuration using the PC card configuration utility.|MThe utility to use may be changed under the PATHS option.Config utilityClick SELECT to view or change the list of DOS files associated with this configuration.|MIt may be useful to include the CONFIG.SYS and AUTOEXEC.BAT files with the configuration.DOS filesClick SELECT to edit the selected configuration using a text editor.|MThis uses the External Data Editing Protocol.|MUse this to include non-standard options.Text editorThis is the name of the configuration being edited.|MA different configuration can be edited by clicking SELECT on the pop-up menu button.Current configurationa-zA-Z0-9 & <@DH—…“$,ÀÈÐôü$LTt|†¨°Ôàè  DPX|☓…ÿÿÿÿ¬Ü€(fPathWinn2Ð$|−ÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼à¼¸ÿÿÿÿŶ (þÿÿØ−ÿÿÿÿ€4`8þÿÿðlþÿÿ¨nÿÿÿÿ@(xþÿÿðøÿÿÿÿÿÿÿÀ8 pÿÿÿd´ÿÿÿÿÿÿÿ.ÿÿÿÿ    <phÿÿÿà†ÿÿÿ1⇩»ÆÀ8 üþÿÿhDÿÿÿÿÿÿÿËÿÿÿÿ    <pøþÿÿà,ÿÿÿÒ…^uÀ8 ‘ÿÿÿäÔÿÿÿz=·    ÿÿÿÿ@(p—ÿÿÿ°ÌÿÿÿÿÿÿÿÀ@(p(ÿÿÿ°\ÿÿÿÿÿÿÿÒÀ8  ÿÿÿädÿÿÿå?$    ÿÿÿÿÀ8 …þÿÿhÔþÿÿÿÿÿÿ-
  33508. ÿÿÿÿ    <p⇦þÿÿà¼þÿÿ7‘ÀÒ@(p¸þÿÿ°ìþÿÿÿÿÿÿ×À8 °þÿÿäôþÿÿéC%    ÿÿÿÿUse this box to configure the paths used by ARMEdit to access the PC card software and DOS partition file.|MClick CLOSE when finished to close this box.ARM Edit pathsClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.CloseApplication pathspcSet this to the path of the PC card software (!PC, !PCx86 or !PC486).|MAlternatively, drag the icon from a filer window and drop it here.<Diva$Dir>~ *#configSet this to the path of the PC card configuration software (!PCconfig).|MAlternatively, drag the icon from a filer window and drop it here.<Diva$Dir>.^.!PCconfig~ *#Drop the PC card software (!PC, !PCx86 or !PC486) icon here.loadiconPC card front-endConfiguration toolDrop the PC card configuration software (!PCconfig) icon here.loadiconpartitionSet this to the path of the primary PC card DOS partition (Drive_C).|MAlternatively, drag the icon from a filer window and drop it here.ADFS::4.$.Drive_C~ *#Primary partitionDrop the primary PC card DOS partition (Drive_C) icon here.loadicon2 <@DH—…“$,ÀÈÐôü(0T\d‘†¤ÈÐØ<Ddl…— ÄÐØü 8@`ltÿÿÿÿÿÿÿÿH‘*dQuit<$ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÈÜÀ( fCfgMenuÐ$—7ÿÿÿÿEÿÿÿÿÿÿÿÿJ;Ŷÿÿÿÿÿÿÿÿ…3¿ÿÿÿÿÿÿÿÿÕ>ConfigurationClick SELECT to choose this configuration for editing.CopyClick SELECT to make a copy of the selected configuration.DeleteClick SELECT to delete the selected configuration.Current configurationClick SELECT to choose the current configuration for editing. (04@PX\hx€☓‘ÿÿÿÿ¤À    €(fCfgPathWin´    $tvÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿX†XÿÿÿÿŶ ⇦ýÿÿxvÿÿÿÿ@(¸þÿÿðøÿÿÿÿÿÿÿ⇩À8 @ÿÿÿd☓ÿÿÿÿÿÿÿflÿÿÿÿ    <p8ÿÿÿàlÿÿÿ¢⇩,7À8 Ìþÿÿhÿÿÿÿÿÿÿ<ÿÿÿÿ    <pÈþÿÿàüþÿÿC…ÏæÀ8 `ÿÿÿä¤ÿÿÿë=(    ÿÿÿÿ@(phÿÿÿ°†ÿÿÿÿÿÿÿ1@(pøþÿÿ°,ÿÿÿÿÿÿÿCÀ8 ðþÿÿä4ÿÿÿV?”    ÿÿÿÿ@(Øýÿÿð¨þÿÿÿÿÿÿfi€40†ÿÿÿÈÿÿÿ¬3߀4†ÿÿÿÐÈÿÿÿç<#€40Lþÿÿxþÿÿ)3\€4LþÿÿÐxþÿÿd< €4`—ýÿÿðÌýÿÿ¦nÿÿÿÿÀ8 ìýÿÿh4þÿÿÿÿÿÿ
  33509. ÿÿÿÿ    <pèýÿÿàþÿÿ$‘­¿@(pþÿÿ°LþÿÿÿÿÿÿÄÀ8 þÿÿäTþÿÿÖC    ÿÿÿÿUse this box to configure the paths associated with this configuration.|MClick CLOSE when finished to close this box.Configuration pathsPC card applicationspcSet this to the path of the PC card software (!PC, !PCx86 or !PC486).|MAlternatively, drag the icon from a filer window and drop it here.<Diva$Dir>~ *#configSet this to the path of the PC card configuration software (!PCconfig).|MAlternatively, drag the icon from a filer window and drop it here.<Diva$Dir>.^.!PCconfig~ *#Drop the PC card software (!PC, !PCx86 or !PC486) icon here.loadiconPC card front-endConfiguration toolDrop the PC card configuration software (!PCconfig) icon here.loadiconDOS partitionClick SELECT to use the globally configured paths.DefaultClick SELECT to set different paths for this configuration.OtherClick SELECT to use the globally configured paths.DefaultClick SELECT to set different paths for this configuration.OtherClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.ClosepartitionSet this to the path of the primary PC card DOS partition (Drive_C).|MAlternatively, drag the icon from a filer window and drop it here.ADFS::4.$.Drive_C~ *#Primary partitionDrop the primary PC card DOS partition (Drive_C) icon here.loadicon< <@DH—…“$,ÀÈèôü (0\hp“†¤ÐÜä08Xdl‘—¸Äìø ,T`⇦‘—¼ÈÐôü08Xdl†¨,€(fCfgFileWin $l|ÿÿÿÿÿÿÿÿÿÿÿÿ    ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ —… ÿÿÿÿŶ øýÿÿll|ÿÿÿÿ€4Ðþÿÿ`<þÿÿ“ ´ÿÿÿÿ    <p—þÿÿPÌþÿÿºâ†§À8ÀþÿÿTÿÿÿ¬Cç    ÿÿÿÿÀ0 \þÿÿÀ⇦þÿÿð¬†@(Hþÿÿ`(ÿÿÿÿÿÿÿ²€4àþÿÿÀ<þÿÿ¿Oÿÿÿÿ€4ÀXþÿÿP…þÿÿSoÿÿÿÿÀ8  þÿÿdäþÿÿÿÿÿÿvÿÿÿÿ@(pÈþÿÿ°üþÿÿÿÿÿÿzCfgFilePWinUse this box to set the list of DOS files associated with this configuration.|MClick CLOSE when finished to close this box.Configuration DOS filesClick SELECT to close this box.CloseSet this to the path of a DOS file to associate with this configuration.|MThe path may be specified relative to the primary partition for this configuration.|MAlternatively, drag the icon from a filer window and drop it here.CONFIG/SYS~ *#Drop a DOS file to associate with this configuration here.loadiconSelect this option to store the file pathname relative to the primary partition associated with this configuration.|MThis will make it easier to move or change partitions.Relative to partitionFile detailsClick SELECT to update the copies of all files stored with this configuration.Update copiesClick SELECT to remove this file from the list associated with this configuration.RemovedosDOS file$ <@DH—…“$,ÀÈÐôü0<Dhp— ÀÈÐôü(4<`hÿÿÿÿÔX€(fCfgFilePWinL$¤ŵÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤ôèÄÿÿÿÿ"› 0ÿÿÿD0ÿÿÿÿDÐÿÿÿÿÿÿÿÿThis area lists the DOS files associated with this configuration.|MClick SELECT on a filename to allow the details to be altered.  <@DH—…“$,|¨ø€(fMainWinì$Liÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤È,ÿÿÿÿŶ xþÿÿÀÀ⇦iÿÿÿÿ@(Èþÿÿ°øÿÿÿÿÿÿÿ€€4€⇦þÿÿ¼þÿÿ—s ÿÿÿÿ€4 ⇦þÿÿ°¼þÿÿq◰ÿÿÿÿÀ8 ØþÿÿHÿÿÿ⇦z 1 À8⇦XÿÿÿhÈÿÿÿ> 1F
  33510. À8ðØþÿÿÐHÿÿÿP; 1⇧À8XXÿÿÿ8ÈÿÿÿŒP 1êÀ8ÀØþÿÿ HÿÿÿøO 1G    #sdirectorys!armeditsmultisspeedsobeyClick SELECT on an option to configure part of ARMEdit.|MWhen finished, click SAVE to apply the changes.ARM Edit configurationClick on item to modifyClick SELECT to close the box without applying any changes.|MClick ADJUST to restore the last saved configuration.CancelClick SELECT to save and apply the changes.|MClick ADJUST to save and apply the changes without closing the box.SaveClick SELECT to configure application and partition paths.|MThis information is required for some of ARMEdit's operation.PathsClick SELECT to configure the !ARMEdit front-end application.Front-endClick SELECT to configure multiple PC card configurations.ConfigurationsClick SELECT to configure the multitasking speed of Acorn and Aleph 1 PC cards.Speed controlClick SELECT to set Obey files to run when the PC software is started or quit.Auto run# <@DH—…“$,ÀÈèðø$,P\d⇦“†ÀÌÔø 0<DÿÿÿÿØ\€(fAutoWinn2P$¨”ÿÿÿÿÿÿÿÿÿÿÿÿ
  33511. ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔàÔHÿÿÿÿŶ —þÿÿh”ÿÿÿÿ€4`¨þÿÿðÜþÿÿ§nÿÿÿÿ@(èþÿÿðøÿÿÿÿÿÿÿÀ8 pÿÿÿd´ÿÿÿÿÿÿÿ&ÿÿÿÿ    <phÿÿÿà†ÿÿÿ+¦ÿÿÿÿÑÀ8 üþÿÿhDÿÿÿÿÿÿÿÖÿÿÿÿ    <pøþÿÿà,ÿÿÿÛ›n◰À8 ‘ÿÿÿäÔÿÿÿ⇦pø    ÿÿÿÿ@(p—ÿÿÿ°Ìÿÿÿÿÿÿÿ@(p(ÿÿÿ°\ÿÿÿÿÿÿÿ À8  ÿÿÿädÿÿÿ]z    ÿÿÿÿUse this box to configure the obey files to be run by ARMEdit when the PC software is started or quit.|MClick CLOSE when finished to close this box.ARM Edit auto runClick SELECT to close this box.|MClick ADJUST to open the main configuration window, but leave this box open.CloseObey filesobeySet this to the path of an obey file to run when the PC card software is initialised or rebooted.|MAlternatively, drag the icon from a filer window and drop it here.~ *#obeySet this to the path of an obey file to run when the PC card software is quit.|MAlternatively, drag the icon from a filer window and drop it here.<ARMEdit$Dir>.PCQuit~ *#Drop the icon of an obey file here.|MThe file will be run when the PC card software is initialised or rebooted.loadiconPC bootedPC front-end quitDrop the icon of an obey file here.|MThe file will be run when the PC card software is quit.loadicon' <@DH—…“$,ÀÈÐôü(0T\d‘†¤ÈÐØ<Ddl…— € d7|pc!,Ôwwwwwwwwwww§ªªªªªªªªªz§ªªªªªªªªªz§ªw¤zGªJwªz§ªw§zwªzwªz§ªtGªw¤twªz§ªzwªw§wwªz§ªtwGwJwwªz§ªwwwDJwwªz§ªw§w§ªzwªz§ªw§t§ªzwªz§ªw§zGªzwªz§ªw§Jwªzwªz§ªw§ªw¤zwªz§ªw§ªt§zwªz§ªªªªªªªªªz§ªªªªªªªªªzwwwwwwwwwwwpwwwwwwwwwwwpwwwwwwwwwwwpBBBBBBBBBB"pBBBBBBBBBB"pBBBBBBBwww"pBBBBBBBwww"pppwwwwwwwwwwwtwwwwwwwwwwwGGt@AAAAAA1qp11111At111111GGtwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌconfig#,üUÅUwwwwwwwwwwwwUUUUÅUpUUUeÆfffffffffffffUUeªªªªªªªªªzwwwwwWUÌÊǬªªªªªz·»»»»»{UewwªŒ©z§ww""""""rUuwwwwww·»»»»»»{Uuwwwwww'""""""rUeww»ªªzªzw»»»»»»{UeÊ·»ªªzwwz'"""""rUeʪªªªªªªªzwwwwwWUeÆfffffffffffgffUUUÅUUUªe¦–––––wUUUUUUUUUUU–––––wUUUWUUUUUUUwwwwwwUUWWWW''''''''''wWWWW""""""""""""""""W""""""""""""""""W"""""""""""""""RW"»"ª""""""23#""RW"»"ª"""""fFDdf"RW""""""""""bf&""RW"""""""""""""""RW"""""""""""""""RWUUUUUUUUUUUUUUUUWwwwwwwwwwwwwwwwwwWU700000000003WUU733333333333333WUu3sUu333333333333333sUu00000000003sU73333333333333333W3W73333333333333333WwwwwwwwwwwwwwwwwwWðÿÿðÿÿðÿÿðÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|loadicon!,Ô»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»{wwwwwww·»»»»»»»»{wwwwwww·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»»»»»{p·»»»»wwwwwpwwwwwwwwwwpwwwww{ww·»wpw»»{ww·»»»wpw»»»»{ww·»»»»»wpw»»»»»»{ww·»»»»»»»wpw»»»»»»»»{ww·»»»»»»»»»wpw»»»»»»»»»»{ww·»»»»»»»»»»»wpw»»»»»»»»»»»»{ww·»»»»»»»»»»»»»www»»»»»»»»»»»»»»{w·»»»»»»»»»»»»»»»w»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|partition!,Ôpwww÷ÿÿÿ÷ÿÿÿpÿÿÿÿÿpwwÿÿÿÿÿwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿwwwwwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷wwwwwwwwwwwwwww÷""""""""""""""r÷""""""""""""""r÷rrrrr"""""""""r÷rrrrr"""""""""r÷rrrrr"""""""»+r÷rrrrr"""""""»+r÷rrrrr"""""""""r÷rrrrr"""""""""r÷""""""""""""""r÷""""""""""""""r÷wwwwwwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿpwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|speed!,Ôÿÿÿÿwww÷ÿÿÿÿÿÿÿÿÿÿÿÿw†††y÷ÿÿÿÿÿ»ÿÿÿÿÉ−−−−yÿÿÿÿÿ»¿ûÿÿ–†3“−−−÷ÿÿÿÿ÷¿ûÿÿÇ9éI“−−yÿÿÿÿ÷÷ÿÿ†›fi−I−−−÷ÿÿÿ÷÷ÿÿ−ãÉ−I−−−÷ÿÿÿwÿÿ†›,‹−“−−yÿÿçî÷ÿ−›Â‹−“−−yÿÿçî»~ÿ−›"ã−“−−fi÷ÿçî¾~ÿÿ–99›−”−−é÷î>î~ÿÿ−3é−”−−fi÷çéîDtÿÿW−fifiY−−−éwfiîîî÷ÿfi”−−”fi−−fiçéÞîwÿÿéYUUé−ééyfiîî}ÿÿw−fifififi−fifiçéÞÞ÷ÿÿç}w−−−−ééwfiîîí÷ÿÿÞîw−−éywîéÞÞ~ÿÿÿÿçíîwwwçîîîîí}ÿÿÿÿ×ÞîîîîÞÞÞÞ~÷ÿÿÿÿÿwííííííí}÷ÿÿÿÿÿÿÿÿwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿»wwwwwwwwwww÷ÿÿ¿ëœpÿÿ뜆÷ÿ¿¾É0303333pÿÿëœ000÷ÿ¿ë000qÿëœ@@@÷¿¾Ì@EPEE!qÿëë−'!!!!!!!!!!÷ÿ¿»î72222222222rÿÿÿÿ»wwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|directory!,Ôpwww÷ÿÿÿ÷ÿÿÿpÿÿÿÿÿpwwÿÿÿÿÿwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿwwwwwwwwwwwwww÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦x÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿpwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|multi!,ÔwwwwwwwwwgE'"""""""""2'""""""""ww'"D#B4"2rÚ­z'"D$BD""§Ýªª'"C4"D#rÚ­ªÝz'"BD"D"§ÝªÚ­}'"CD4$rÚ­ªÝÚz'"DDD4rݪڭ­}'"D$D#×­ªÝÚÚ}'"D$3rÚªÚ­­Ý'"D$2rªªÝÚÚ}'"D$2r­Ú­­Ý'"D$"ÇÚÚÚÚ}'"D$"§¬­­}7'""""ªÚª'r'""""1§zw"rwwwwss7Tvwpwwww173swwwpwwwsswwwwwpBB"1GBBBBB"pB2sBBBBBB"pB"1GBBBwww"p2sBBBBwww"p!1ps17Tvwwwwwww1sCewwwwwwwwG3st3wAAAAA1q1w11111Ar111111GtwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔdos!,,wwwwwwwwwwwwwwwwwpUUUUUUUUUp%"""""""Rp%fffffffRp%fffffRp%ff`fffRp%fffffRp%ff`fffRp%fffffRp%fffffffRp%fffffffRp%fffffffRp%fffffffRp%"""""""RpUUUUUUUUUpwwpUUUUUUUUUUUUUp%"""""""""""Rp%""""""rwwwwRp%""""""""w'"Rp%"""""""""""Rp%bfffffffff&Rp%b"""""""""&RpU&bfb&fbfb&bUp&"""""""""bp%`bfbfRp%bfRpPbf"&&pPbb`bbf&pP"""""""""""pPUUUUUUUUUUUppwwwwwwwwwwwwwwwww|editutil!,Ôwwwwwwwwwpwpw€⇦pwpw€⇦x⇦•pwwwww⇦•ppÚ­zwww€øp§Ýªª€øppÚ­ªÝzwwp⇦•p§ÝªÚ­}wwp⇦•ppÚ­ªÝÚz€øppݪڭ­}wp€øwp×­ªÝÚÚ}wpî‰wppÚªÚ­­Ýfi‰ppªªÝÚÚ}wàîppp­Ú­­ÝwàppÇÚÚÚÚ}p§¬­­}wwwwwwwwwªÚª1§zwsp1s1s1s1s11s3s3w1wrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿðÿÿðÿÿðÿÿðÿÿÿÿÿðÿÿðÿÿÿÿÿ|editedit!,Ôwwwwwwwww⇦ø•p€⇦ø⇦wpw€⇦p€⇦ÿ⇦wpw€⇦x⇦⇦•⇦⇦•p⇦ø•⇦www⇦•p€⇦ø⇦www€øp€⇦ÿ⇦€øp⇦⇦•⇦wwp⇦•p⇦ø•⇦wwp⇦•p€⇦ø⇦€øp€⇦ÿ⇦wp€øwp⇦⇦•⇦wpî‰wp⇦ø•⇦fi‰p€⇦ø⇦wàîpp€⇦ÿ⇦wàpp⇦⇦•⇦p⇦ø•⇦wwwwwwwww€⇦ø⇦€⇦ÿ⇦⇦⇦•⇦⇦ø•⇦à⇦ø⇦à‰ø⇦îî⇦⇦îé⇦⇦àfié⇦à−î⇦çéî⇦çî~àçîwàî~îîîàîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÔobey!,,wwwwwwwwwwwwwwwww⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦x⇦•⇦⇦•⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦xøÿ⇦øÿ⇦⇦⇦⇦⇦⇦⇦⇦⇦€x⇦ÿ⇦ø•⇦⇦⇦⇦⇦⇦⇦⇦€x⇦ø•ÿ⇦⇦⇦⇦⇦⇦⇦⇦⇦€x⇦⇦ÿ•⇦⇦⇦⇦⇦⇦⇦⇦€x÷ÿÿÿÿÿÿ⇦⇦⇦⇦⇦⇦€x÷ÿÿÿÿÿÿ⇦⇦⇦⇦⇦ €x⇦⇦ÿ•⇦⇦⇦⇦⇦⇦⇦° €x⇦ø•ÿ⇦⇦⇦⇦⇦⇦» €x⇦ÿ⇦ø•⇦⇦⇦⇦⇦°» €xøÿ⇦øÿ⇦⇦⇦⇦»» €x⇦•⇦⇦•⇦⇦⇦⇦°»» €x⇦⇦⇦⇦⇦⇦⇦⇦»»» €x⇦⇦⇦⇦⇦⇦⇦⇦°»»» €x⇦⇦⇦⇦⇦⇦⇦»»»» €x⇦⇦⇦⇦⇦⇦⇦ €x⇦⇦⇦⇦⇦⇦€x⇦⇦⇦⇦⇦⇦‘−−−−    €x⇦⇦⇦⇦⇦−−−−−−    €x⇦⇦⇦⇦⇦‘−−−−−−    €x⇦⇦⇦⇦−−−−−−−    €x⇦⇦⇦⇦‘−−−−−−−    €x⇦⇦⇦−−−−−−−−    €x⇦⇦⇦‘−−−−−−−−    €x⇦⇦−−−−−−−−−    €x⇦⇦‘−−−−−−−−−    €x⇦−−−−−−−−−−    €x⇦‘−−−−−−−−−−    €x−−−−−−−−−−−    €x‘−−−−−−−−−−−    €x−−−−−−−−−−−−    €xwwwwwwwwwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ê
  33512.  
  33513. Ensure 1.00 (09-May-95)
  33514. © A.Thoukydides, 1995
  33515. Syntax: Ensure <ModuleTitle> <Version> <Filename>
  33516.  
  33517. @-é…åÎ뀽x •â€â ã! ã0 ã@ ã#ï2ã”
  33518. -é†å€ã…âü  ã?•â?◰â@ ãCïêSystem:modules.%2½è€½h ã…âï*j®ë€½x-é†å€ã…âü  ã?•â?◰â^@ ãCïêThe version of %0 in your copy of !System is too old. Please install '%2' version %1 or later.½è€½h…â ã€å_〽è‘åÖ1ã+
  33519. €â-é-é†å€ã…âü  ã?•â?◰â(@ ãCï
  33520. êUnable to install module %0 version %1:  j½è Bâü0 ãRáª@ÐäTãÚ@Áç ŵâ÷ÿÿê ãÁç½è€½h…â ã€å_〽è-é†å€ã…âü  ã?•â?◰âU@ ãCïêModule %0 not found in your copy of !System. Please install '%2' version %1 or later.½è€½h…â ã€å_〽è-é†å€ã…âü  ã?•â?◰ât@ ãCïêSystem resources could not be found (%0 module is required). Please double-click on a copy of !System and try again.½è€½h…â ã€å_〽è-é†å€ã…âü  ã?•â?◰â@ ãCïêRMEnsure %0 %1½èð a…âïð áSystem$PathWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!RunGëÿÿá`.A!RunImageGøÿÿTT    `ï    A!RunGëÿÿá`.A!RunImageGøÿÿTT    `ï    A9LaunchLaunchNickŵ|   File        : !Run
  33521. |   Date        : 21-Feb-97
  33522. |   Author      : © A.Thoukydides, 1996, 1997
  33523. |   Description : The script used to start the ARMEdit application launcher.
  33524.  
  33525. | Check that there is sufficient memory to run
  33526. WimpSlot -min 20K -max 20K
  33527.  
  33528. | Start the application
  33529. Run <Obey$Dir>.!RunImage %*0  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     âë á áºëïxd€ áÀNà À•à†éÀLâ0 †å ã4À†À…À…à ãSãð Ñ…ä0SâûÿÿêÅê¥−C‹−­ŷ−e¸−¾§−£Ì−#u−X´−]¹−¦Ç−»É−−4−Ù‘ºX−^]−AF−PQ−_−Œ…−Ŷf−⇨⇦−²™−-`−w°−>=−ˆ−‡V−TÊ−v⇧−®B−"p−.$−f¯−cÈ−@E−⇨o−◰⇦−Äa−sO−g,−⇦−pÅ−q−+%−p −s−☓−„−¤–−œ—−L¡−J−−Ôŵ−ÃH−¼−/−87−0−h−Âf−p−Œ−¶Á−KN−}−{|−¢Ò−'t−iG−N\−\Ó−Y−|}−Õ{−[6−ÖY−r2−&−Ð[−¨K−⇩•−n‘−x¬−(−SR−5×−yS−:9−<;−Ïj−−−V¸−⇩Í−z‘−)− *−€!−1Ñ−›”−flW−fid−©D−«m−x−R(−ØZ−S3−?y−±b−O½−Àl−ŴI−ÑM−“−³G−¸~−1Î−Æ·−kµ−’U−xª−(−¿−
  33530. −− −−Ú−−−‘‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−‰‰−−    −     −− (%9®€\l]…^0\À^Ø2]^gH²g%Ûz¯úMØ{! ‹õ_„_(Ãÿÿ0E>·õÛ¯ÿó{.äà îÿP¹¸`¶ákôö®`ïÿÿ]&QM-E‹U€Beai¾fi„ÕÿflEdÉÛç÷àó>,QÏVÐ_«ÿfl    9`‡ÿÿ'])íþÿ÷ÿ° àÓ´ñ÷ÿkükôkökþkÿqF^Àsúkô…½ø§®⇦ ö¿œ¯.m•¼@àÑL¯t²íß³ °®øïgýl®´¯0FNj¶kÕÙà ®ïÿ´³Â³®üÿd°ú÷Ö`,` Ë´Ø¯ÿ/gË_ÿkT\«ll|ký¬⇧ëí@|®pR9èh´Ð± ®à^è®}´ð¶ø® fi\𮽯,@"kÀ2]\{T⇧d\…\¬Î€®Êñ·ïëÆxµ‰þËò?î@Ý€]øŒ®—_óÛÌ_ðÞ‘U²ŷþ5o’ÿÿH1\ +"ßÝÿ|ª_¯åÿ°¢*¯öÿ²£ŷùõ÷ÿÿ`Ç-Û§û ã?Îãå,Oâ?‘è
  33531.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  33532. P á@ ã  á0àã°[â)ºÕä
  33533. QâªQã
  33534. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  33535. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  33536. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿê|€Hâð árcc 5.00
  33537.            WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickBannerGùÿÿ†w¤èXCBanner22Gùÿÿ€s¤—±DMessagesGÿÿÿ=Ö`cBResG®ÿÿñVWBTemplatesGìÿÿ›m„NABBannerGùÿÿ†w¤èXCBanner22Gùÿÿ€s¤—±DMessagesGÿÿÿ=Ö`cBResG®ÿÿñVWBTemplatesGìÿÿ›m„NAB9ResourcesResourcesNickô#   File        : Messages
  33538. #   Date        : 21-Feb-97
  33539. #   Author      : © A.Thoukydides, 1996, 1997
  33540. #   Description : Text messages for the ARMEdit application. This is a common
  33541. #                 resource for both the Banner application and the main task.
  33542.  
  33543. # Special message for development versions
  33544. VerLabel:Version
  33545.  
  33546. # General messages
  33547. _TaskName:ARM Edit
  33548. Version:1.03 (21-Feb-97)
  33549.  
  33550. # Banner specific messages
  33551. VerLabel:Version
  33552.  
  33553. # Serious error handling
  33554. SigBut:Continue,Quit
  33555. SigTpl:%0 Click Continue to attempt to carry on, or Quit to exit immediately.
  33556. SigFPE:An arithmetic exception has occurred.
  33557. SigIll:An illegal instruction has been executed.
  33558. SigSegV:A bad memory access has occurred.
  33559. SigStak:A stack overflow has occurred.
  33560. SigErr:An unexpected error has occurred: %0
  33561. SigUnk:An unexpected error has occurred.
  33562.  
  33563. # Application specific messages
  33564. Running:A copy of ARMEdit is already running. Please quit the first copy before attempting to run another copy.
  33565. Quit1:There is 1 external edit active. Do you wish to abandon the file and quit?
  33566. Quit2:There are %d external edits active. Do you wish to abandon the files and quit?
  33567. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     RESFe h|À)dIBarIcon´$8`ÿÿÿÿ    ÿÿÿÿ    ÿÿÿÿÿÿÿÿD!armeditIBarMenuThis is the ARMEdit application, that enhances the use of PC cards. (,0ÿÿÿÿP“@+dProgInfo⇦$ ÿÿÿÿÿÿÿÿ3ÿÿÿÿUtilities for PC cards© A.Thoukydides, 1996, 1997x.xx (dd-mmm-yy) @pTÀ(fIBarMenuH$    ÿÿÿÿÿÿÿÿ    ÿÿÿÿI Wÿÿÿÿ    _‰ í    ö½ ³ÿÿÿÿ#Á“Uÿÿÿÿÿÿÿÿb#Ŷÿÿÿÿÿÿÿÿ⇩XProgInfoCfgMenuSpeedWinSpeedWinRelogMenuARM EditInfoMove the pointer right to see information about this version of ARMEdit.PC cardClick SELECT to start the PC card software using the current configuration.|MMove the pointer right for a list of alternative configurations.Speed...Click SELECT or move the pointer right to open a window allowing the multitasking speed of PC cards to be controlled.|MThis is especially useful if the PC card has not got the input focus.Relog devicesClick SELECT to force a relog of the ARMEDIT.SYS device driver (if running).|MThis option is equivalent to using the *ARMEdit_DevicesRelog command.Configure...Click SELECT to configure ARMEdit.QuitClick SELECT to quit the ARMEdit front-end application.|MThis does not kill the module.on (04@PX\hx€☓‘ ¨¬¸ÈÐÔàðøüÿÿÿÿÿÿÿÿH‘*dQuit<$ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿHTÀ+
  33568. dSaveAsH$äÿÿÿÿÿÿÿÿARMEDIT/TXT ÿÿÿÿxÀ( fCfgMenu $Hŵÿÿÿÿ⇩ÿÿÿÿÿÿÿÿÿÿÿÿPC cardThis menu lists the currently defined PC card configurations.|MClick SELECT to start the PC card with the selected configuration.Current configuration (04@ÿÿÿÿ¼Ð€(fSpeedWin2Ä$…>ÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘l`ÿÿÿÿ hÿÿÿÐdd>ÿÿÿÿA@D0¸ÿÿÿÀìÿÿÿLnd
  33569. PÀ0¼ÿÿÿ èÿÿÿºb À0|ÿÿÿ ¨ÿÿÿ'j’ A@D0xÿÿÿÀ¬ÿÿÿ†vdPUse this box to change the multitasking speed of the PC card.PC card speedAdjust the value to the required foreground speed.|MThis is used when the PC card window has the input focus.Switch on to set the foreground speed.|MThis is used when the PC card window has the input focus.ForegroundSwitch on to set the background speed.|MThis is used when the PC card window has not got the input focus.BackgroundAdjust the value to the required background speed.|MThis is used when the PC card window has not got the input focus. <@DH—…“$,À 4<dÿÿÿÿx`À( fRelogMenuT$HÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓRelog devicesNowClick SELECT to force an immediate relog of the ARMEDIT.SYS device driver (if running).|MThis option is equivalent to using the *ARMEdit_DevicesRelog -now command.|MOnly use this if you know what you are doing.;a0 (04@WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ±,Ŷbanner8BBÖÿÿÿÿ€ÿ lþÿÿ
  33570. 0
  33571. “ÿÿÿÿlþÿÿ
  33572. aÇ)* †þÿÿøÿÿÿaÇ-. ¤þÿÿüÿÿÿbannerowÿnþÿÿ
  33573. fiþÿÿYa1M¨þÿÿöØþÿÿ]aPa@¨þÿÿØþÿÿQcpx0DataMagic BannerR1R4© A.Thoukydides, 1996, 1997F1v.vv (dd-mmm-yy)R2;MVersion;F1VersionMVerLabel;F1ÀÀHomerton.MediumÀÀTrinity.MediumÀÀTrinity.Medium.ItaliconderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ìXÜXbanner U,☓, »»»»»»»»»»»»»»»»»»»»»»#ª÷ú÷ª÷ú÷ª÷ú÷ª22Bsú÷ª÷ú÷ª÷ú÷ª÷!2"2C÷ú÷CCC3tsw§÷ú 32!""1t»  ! 2$3t"#3B#3B"#"""""#3" $C·»»»»» »»»»»»»»»»»»»»»»»»»»B4w2"#"2tw""!! 4·»"""$12Ct "$2"#"C!!3B!"A"!!2"#2"3°»»»» »»»»»»»»»»»»»»»»»»#ö÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷0DCs÷ú÷÷÷ú÷÷÷ú÷÷0"!1t÷ú÷÷÷ú÷÷÷
  33574. ÷÷÷
  33575.  "##CCC3s»»""""2#2C@444D#C2" "!3"""#!"#2"!3B#°» »»»»»»»»»»»»»»»»Bwp3"""Cw4wOCssw··»»»»  "!###2$Ct{wwsGwCGCC3D4$2 #22#!"#2"$222# »»»»»»»»»»»»»»#ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷
  33576. Bsú÷
  33577. 3""#Ctª÷ú!"#BB3÷ª÷ú÷ª÷úµ»»°»»4D34CCssw·»»»»»»»»»»{·w7wCC4!D!"32#332 C2#»»»»»»»»»»»»B 2#3wO4Dsswww""3"2Cs°@s»{7wwpD·»»»»»»»»»»»»»»»»wG 3"#"#2"2"#"!»»»»»»»»»»#ö÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷"$23÷ú÷w÷ú÷÷÷ú÷÷÷"$"2"#4÷÷÷0#32#4²4s»   "#"32Bs»»»»»»»»»»»»»»»»»»»2B#32#323"$"»»»»»»»»B #32s!!!#32s"B"$2D"C·»B"#$""4·»»»»»»»»»»»»»»»»»»»2"$2B342"#2"""»»»»»»#ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú
  33578. 4÷ª÷ú4CCs§÷ú÷ª÷ú÷
  33579. ú÷ª !"32$Bsú÷
  33580. 0"#"32#3t»  2"#B"""B3·»»»»»»»»»»»»»»»»»»  #2"#@sw344##!»»»»B"Dw4w"24BC3w""#" "CW» 0"3"!"2BAs»»»»»»»»»»»»»»»»»»»23"#4·»»{w34""»»#ö÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷ð÷ú÷÷÷ú÷÷ CC÷÷÷÷ú÷÷÷ú÷÷÷
  33581.  2"2#Csú÷GC34C7www÷ú÷#1"#"3C÷ºC#!""!4·»»»»»»»»»»»»»»»»»» 32$2Bs»»»»»{4DCB !2t 23ww02#C22"Ct ""#22"2t»»»»»»»»»»»»»»»»»»» @#"#3w»»»»»»»{7÷ú÷ª÷ú÷ðú÷ª÷ú÷ª@CCs÷ú÷ª÷ú÷ª÷ú÷ª÷!#23s÷ú÷ª÷ú÷
  33582. ÷ðª÷ú$4CCC44t§÷0"#""C2#Bs»»»»»»»»»»»»»»»»»»»!2"3#C·»»»»»»»»»pp2""2s  3t4Gwww#2"#242CC·»»»»»»»»»»»»»»»»»» 022"3Bt»»»»»»»»»» ûú÷÷÷ú÷÷ðð÷÷ú÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷D÷÷÷2$2B34÷÷ú "#32C÷÷÷ú÷÷÷ú÷ð
  33583. ð÷DCC34C7wws»»»»»»»»»»»»»»»»»»»  !#2"C·»»»»»»»»»» »4Cs3437ww""""!3Cw$CwwpCw»»»»»»»»»»»»»»»»»»»!$!3C·»»»»»»»»»» »û÷ª÷ú÷ª÷ú÷ª ÷úª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷
  33584. 4÷ú÷ª÷ú÷ª÷ú÷ª÷
  33585. "Ct÷ª 3"2"#2Bs÷ª"$#"""C·»»»»»»»»»»»»»»»»»»  2!"2t»»»»»»»»»»» »»"234w!"!Dw C"#3B"Bs B"#"3#2t»»»»»»»»»»»»»»»»»»»2##"C·»»»»»»»»»»» »»û÷÷ú÷÷÷ú÷÷÷
  33586. ðð÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú744C7w÷ú÷÷÷ú÷÷ðð÷÷÷32"#"As÷÷÷2"#222#D÷÷"#"2"#32C·»»»»»»»»»»»»»»»»»»»"!"At·»»»»»»»»»»» »»»pw0 3w0"CBC4Cs0"B2$Bt"#2"#2"3C·»»»»»»»»»»»»»»»»»»  """1t»»»»»»»»»»»» »»²¢÷ú÷ª÷ú÷ª÷ú ÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú#""#4÷÷ª444Gssw§÷ú÷ #2"2"4wú 22$1B2"Ct»»»»»»»»»»»»»»»»»»»23""D·»»»»»»»»»»»» ++!!p "2#CAtC2#4B""4w"3#""#2D·»»»»»»»»»»»»»»»»»»»"#2Bs»»»»»»»»»»»»» òú÷÷÷ú÷÷÷
  33587. ð÷÷÷ú÷÷÷ú÷ð÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ !#2"C÷ú÷÷÷ú÷ðð÷ú0CC3434Cw÷
  33588.  3!"$#2Cs·»»»»»»»»»»»»»»»»»»  C2!#Dt»»»»»»»»»»»»» +!!!!"0""C4w #4wGwswww #!"2AC4Cs»»»»»»»»»»»»»»»»»»»B!3#4·»»»»»»»»»»»»» »ò÷ª÷ú÷ª÷
  33589. ÷ú÷ª÷ú÷ðª÷ú÷ª÷ú÷ª÷ú÷ª22DCs÷ú ""!32sª÷ú÷ª÷ú
  33590. ª÷0444CGstw7§°»°»»»»»»»»»»» 0B"#2Bs»»»»»»»»»»»»»» »+!!!!37sswww "!!"Cw0 AspBs2""2 0° »»»»  #2$4w»»»»»»»»»»»»»» »»ò÷÷ú÷÷÷ú÷÷÷ú÷÷ð÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú"""!3÷÷÷"1"2"4÷÷0 A2"C#Cs #""""""#2$°»C2$1#4·»»»»»»»»»»»»»» »»+!!!! "!#2t##AACsw22#B!3"#4w"!!2#B#1""! @!2#22s»»»»»»»»»»»»»»» »»»¢÷ú÷ª÷ú÷ú÷ª÷
  33591. ðú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ !!!32C÷÷ª 2"2!3s÷
  33592. 0""""2#D2s ""!!""###2#32#2"320·»»»»»»»»»»»»»»» »»»+!!!!p"#DC44Cw"#2""44w#"#B""2"Cw !""2""$32###$B"!"!""°»»»»»»»»»»»»» »»»»òú÷÷÷ú÷÷÷÷ú÷÷÷÷úð÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷G3tswwww÷ú÷ ##2"#2tú÷"""#2"!!3÷2"""B"#2"#2"2#2#!""2"#2°»»»»»»»»»»»» »»»»+!!!!p B"#2"A3t ##"""1t ""!"B42#3#2"#2#C2""$2"#B"##°»»»»»»»»» »»»»»ò÷ª÷ú÷ª÷ú÷ª÷ú÷ªª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷444434st÷ú"##12"#2C÷0!2""#2## ""#"$23B"!#3"3"#""#»»»»»»»»»»»»»+!!!!pwww""2DC3D4wCA#C2$2#2 #A#"#2"#2"#"322""A°»»»»»»»»»»»»ò÷÷ú÷÷÷ú÷÷÷ú÷÷ð÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷
  33593. 443tswwww÷÷zww7ws7t4DC4$"2"$2"$#"2$32#2""!"!»»» »»»»»»+!!!!_w{wC74C322"""#2"#2#"!!"»»»»»»»»»¢÷ú÷ª÷ú÷ª÷
  33594. ª÷ðª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷úµ»»»»»wGCCCC##2""#A22#"!"!""#°»»»»»»»+!!!!pphhhx_»»»»»»»»»wG4C##"""!"!#1""""!" »»»»»»»»òú÷÷÷ú÷÷ð÷÷÷ú÷÷÷÷÷÷ú÷÷÷ú÷÷÷ú÷÷E0DDŶ÷÷÷úFV4E4E4Fö÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷µ»»»»»»»»»»»w7444#2""!"222#2"""»»»»»»»»+!!!!pchohhE#Cdot_»»»»»»»»»»»»»{w434""" "#2!"»»»»»»»»»ò÷ª÷ú÷ª÷
  33595. ðª÷ú÷ª÷ª÷ú÷ª÷ú÷ª÷ú÷:Ô÷ú÷ª÷⇩$A™÷ª÷ZPú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ªµ»»»»»»»»»»»»»»»{GD#"""""$3»»»»»»»»»+!!!!PHc?`o33#»»»»»»»»»»»»»»w74!""!"A! "»»»»»»»»»»ò÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷6@÷÷ú÷&◰÷÷ú÷÷ öú÷÷÷ú÷÷÷ú÷÷÷ú÷÷$"""""b»»»»»»»»»»»»»»»»G34"!"!2"»»»»»»»»»»+!!!!ouHah0to#»»»»23D$»»»»»»»»»»G3$" """»»»»»»»»»»»¢÷ú÷ª÷ú÷
  33596. ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ªD0Ŷú@ý÷ªFD!Cöª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª@²»»»3 ´»»»»»»»»»»wCC"!" »»»»»»»»»»»+!!!!poD$3eD4Bcdx( EDD»4#»»»»»»»»»»»{wC#!!"»»»»»»»»»»»»òú÷÷÷ú÷÷ú÷÷÷úð÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ZQVUõŷöú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷úWTDD´[µ»»»K""""""R»»w3D"!"»»»»»»»»»»»»+!!!!ppofhhhoPDDD»QD´»»[A»»»w74"»»»»»»»»»»»»»ò÷ª÷ú÷ª÷ú÷
  33597.  ÷ú÷ªª÷ú÷ª÷ú÷ª÷ú÷ª÷⇩23"!☓ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ EDD´»1EDD»+ ´»»»»{7D3»»»»»»»»»»»»»+!!!!poh3140exx_TDD´»»[!DEDD´»#TDD´»»»»w3»»»»»»»»»»»»»»ò÷÷ú÷÷÷ú÷ð÷ú÷÷÷ú÷÷DDö÷E% "2Ŷú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷PDDD»»»»RUEDDDD»KQDDD»»»»»»w»»»»»»»»»»»»»»+!!!!ppoD0xhhho2 EDD´»»»»»DDDDD»+0EDD´»»»»»»» »»»»»»»»»»»»»»»¢÷ú÷ª÷ú÷ªðú÷ª÷ú÷
  33598. ÷ú÷ª÷J ­÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷úŷE%"!33TDDBDDDDDTETEDD$eUUU²»»»»»»» »»»»»»»»»»»»»»»+!!!!X xh$"DPDDD!#µRDD%RUUUD»»»»»»»» »»»»»»»»»»»»»»»»òú÷÷÷ú÷÷÷ú÷÷ú÷÷÷ú÷◰÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú6143 EDDBA»»»;@EDD´»»»»»»»»» »»»»»»»»»»»»»»»»+!!!! xoBEDDTDD$1 ´»»»$EDDD»»»»»»»»»» »»»»»»»»»»»»»»»»»ò÷ª÷ú÷ª÷ú÷ú÷ª÷ú÷ª÷úWPú÷ª÷ú÷ª÷ú÷ª÷ú÷ª÷ú÷ªREDDTPDDD3TDD´BSDDDDDDD´»»»»»» »»»»»»»»»»»»»»»»»+!!!!p(`oPEDDD EDD´[PDDD1PEDDAµ»»»»»»»»» »»»»»»»»»»»»»»»»»»ò÷÷ú÷÷÷ú÷÷ú÷÷÷ú÷÷÷ú€ú÷÷÷ú÷÷÷ú÷÷÷ú÷÷÷ú EDDDCTDD´K EDDDDDD!4³»»»»»»»»» »»»»»»»»»»»»»»»»»»+!!!!p0o$TDDDAPDDD!5TDDSCDDD4$»»»»»»»»»» »»»»»»»»»»»»»»»»»»»¢÷ú÷ª÷ú÷ª÷úª÷ú◰÷ª÷ú÷ª÷ú÷ª÷ú÷ª5BPDDD$ EDDTPDDDQPEDDC4»»D»»»»»»»» »»»»»»»»»»»»»»»»»»»+!!!!puoC3$EDD$CTDDS EDD4 EDDC4²»K´»»»»»»»» »»»»»»»»»»»»»»»»»»»»òú÷÷÷ú÷÷÷úWŶöú÷÷÷ú÷÷5404@DDCPDDD35TDD4CTDDD4D²»K´»»»»»»»»» »»»»»»»»»»»»»»»»»»»»+!!!!p1dThcUCB#!QDDCEEDDEDPDDTC%@DDT33²»»D»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»ò÷ª÷ú÷ª÷
  33599. ú÷Ú14DQUED²FTDD²SDE4$2aTE34»»»D»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»+!!!!po43C#!DDDDB4»»30T4»»2 DE³»+"2$»»KD»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»ò÷÷ú÷÷÷úð÷÷÷ú65"!"BDEUDDDDDDRUTUEUE»»»DS3DDTU´»»KDB4#"CDU»»»K;5$ BT²»»KD»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»+!!!!poeUUUDDDDDDDD!!!!!DDDDDD´K´»KDDDDD´»K´»KDTDDDD»»D»»DTUUDD»»D´»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»¢÷ú÷ª÷ú÷
  33600. ð÷ª÷ú÷ª÷ú÷ªFDDDDDDDDDDD²²KDDDDDD»»»»DDDDDDD´»»»DDDDDDD´»»»»DDDDDDD»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»+!!!!po2!!!DDDDDD$!!!!!!++»»»»»»»»»»»»»»DDDD»»»»»»»»DDD´»»»»»»»KDDD»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»òú÷÷÷ú÷÷ð÷÷÷ú÷÷÷ú÷÷²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»+!!!!o2!!!!!!!!!!!!!!!!++»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»ò÷ª÷ú÷ª÷ú÷ª÷ú÷ª²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»+!!!!o2!!!!!!!!!!!!!!!!++»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»ò÷÷ú÷÷÷ú÷÷²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!o2!!!!!!!!!!!!!!!!++»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»¢÷ú÷ª²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!o2!!!!!!!!!!!!!!!!++»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»²²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  !!!!!!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿððÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿ *#Drop the icon of an obey file here.|MThe file will be run when the PC card software is initialised or rebooted.loadiconPC bootedPC front-end quitDrop the icon of an obey file here.|MThe file will be run when the PC card software is quit.loadicon'ÿŒ8ð−8IOSupport
  33601. ARMEditKill PCSound
  33602. ARMEditKill PCNE2
  33603. ARMEditKill 386PCSupport
  33604.  
  33605. | Kill third party modules
  33606. ARMEditKill ARMASPI
  33607.  
  33608. | Clear any system variables that have been set
  33609. UnSet Alias$ARMEditKill
  33610. UnSet ARMEdit$Active
  33611. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     †±…±banner «,ÜX»»»»»»»»»»»»»»»»»»»»»»»»r¯¯¯¯¯¯0#3t¯¯¯¯¯¯@ 224w¯ 22DC3Ds¯0"##" @s» 2""#2B4#32##32#22$A"#2" 2"Cs»»»»»  »»»»»»»»»»»»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷22Bs÷÷÷÷÷÷÷÷÷÷÷÷A2"2C÷÷÷CCC3tsw÷÷÷ 32!""1t»  ! 2$3t"#3B#3B"#"""""#3" $C·»»»»»  »»»»»»»»»»»»»»»»»»»»»»rBCw#2#"4w37wwwww0"""!!4w»  !"232Cs 23"#2"#2"##!!#3"#3"2"#4°»»»»»  »»»»»»»»»»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷4÷÷÷÷÷÷÷÷÷÷÷÷÷2"#"2t÷÷÷ww÷÷÷÷÷÷÷÷÷""!! 4·»"""$12Ct "$2"#"C!!3B!"A"!!2"#2"3°»»»»  »»»»»»»»»»»»»»»»»»»»r¯¯¯¯¯¯¯ #BDw¯¯¯¯¯¯ "Bs¯¯¯¯¯¯¯"""$2C·»3""2"#4232#32"3"#"A!##2" ""#»»»  »»»»»»»»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷0DCs÷÷÷÷÷÷÷÷÷÷÷÷0"!1t÷÷÷÷÷÷÷÷÷÷÷÷ "##CCC3s»»""""2#2C@444D#C2" "!3#""#!"#2"!3B#°»  »»»»»»»»»»»»»»»»»»r"C7ww 2"#"3wpp34C3C37ww» "!!32"#2s3C3CC43DB#2A!#A"242$32"#A"#»  »»»»»»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷3"""C÷÷÷4÷÷÷GCssw··»»»»  "!###2$Ct{wwsGwCGCC3D4$2 #22#!"#2"$222#  »»»»»»»»»»»»»»»»r¯¯¯¯¯¯¯¯¯¯¯¯¯¯t¯¯"!"24§¯@ C"2"Cw¯w§w¯»»»»»» $BCCC3Ds»»»»»»w{wwGs4D34$#"!!"B#22#0B## »»»»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Bs÷÷3""#Ct÷÷÷!"#BB3÷÷÷÷÷÷÷÷´»»°»»4D34CCssw·»»»»»»»»»»{·w7wCC4!D!"32#332 C2# »»»»»»»»»»»»»»r #23t@34D34s "32#3t»»4447wwwC»»»»»»»»»»»»»»{»wGCC!"2#32#323"# »»»»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ 2#3÷÷÷G4Dssw÷w÷÷""3"2Cs÷÷÷@s»{7wwpD·»»»»»»»»»»»»»»»»wG 3"#"#2"2"#"! »»»»»»»»»»»»r¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ !2Dw¯wwww§¯¯ !!#C2Cw¯$23"2t» #As»»»»»»»»»»»»»»»»»»{@"#B"$B4B"#A# »»»»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"$23÷÷÷w÷÷÷÷÷÷÷÷÷"$"2"#4÷÷÷0#32#44s»   "#"3"Bs»»»»»»»»»»»»»»»»»»»2B#32#323"$" »»»»»»»»»»r2"Ct2"""2Cw2###2"4·»"2"2"3s»»»»»»»»»»»»»»»»»»»##A "C2"#2"" »»»»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ #32s÷÷÷÷÷÷÷÷÷÷÷÷!!!#32s÷÷÷"B"$2D"C·»B"#$""4·»»»»»»»»»»»»»»»»»»»2"$2C342"#2""" »»»»»»»»r¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯@A34t¯¯¯¯¯¯ "A$2"Ct¯"#2"#2Bs·»###!"C·»»»»»»»»»»»»»»»»»»  23"#2DC4$#$3" »»»»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷4÷÷÷÷4CCs÷÷÷÷÷÷÷÷÷÷÷ !!32$Bs÷÷0"#"32#3t»  2"#B"""B3·»»»»»»»»»»»»»»»»»»  #2"#@sw344##! »»»»»»rs7wwwwwp0!2"#2Dw C2#0"3Bs»  !" #2!1t»»»»»»»»»»»»»»»»»»»0B#C2C·»w7C4" »»»»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"D÷÷÷÷÷w÷÷÷÷÷÷÷4÷÷÷"23BC3÷÷÷""#" "C'» 0"3"!""BAs»»»»»»»»»»»»»»»»»»»23"#4·»»{w34"" »»»»r¯¯¯¯¯¯¯¯¯¯¯¯¯¯"3§¯¯¯¯¯"22t¯¯$C4444Cw¯2"##3w»!##22Cw»»»»»»»»»»»»»»»»»»»"#2"CD·»»»{7C! »»»ô÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷ "CC÷÷÷÷÷÷÷÷÷÷÷÷ 2"2#Cs÷÷GC34C7www÷÷÷#1"#"3C÷´C#!""!4·»»»»»»»»»»»»»»»»»» 32$2Bs»»»»»{4DC »»r2s0"42#4sswww $!#2 22s¿"#2"#1""C·»»»»»»»»»»»»»»»»»»  2"3#2t»»»»»»w74 »ô÷÷÷÷÷÷÷÷÷÷÷÷÷ !2t÷÷÷÷÷÷÷÷÷÷÷÷ 23÷÷÷÷÷÷÷÷÷÷÷÷÷÷02#C22"Ct÷ ""#22"2t»»»»»»»»»»»»»»»»»»» @#"#3w»»»»»»»{7 r¯¯¯p¯¯¯¯B34t¯¯¯¯¯¯"""$Cw¯¯¯¯¯¯¯ #B42D3s 32!3#2"Bs»»»»»»»»»»»»»»»»»»»"2"#"C·»»»»»»»»w ÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷@CCs÷÷÷÷÷÷÷÷÷÷÷÷÷!#23s÷÷÷÷÷÷÷÷ð÷÷÷$4CCC44t÷÷0"#""C2#Bs»»»»»»»»»»»»»»»»»»»!2"3#C·»»»»»»»»» wswww@""Bts@3CC7wswww2$##2"#BC·»»»»»»»»»»»»»»»»»»»B#222t»»»»»»»»»»  ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷w÷÷÷÷÷÷÷÷÷ðð÷÷2""2s÷÷  3t÷÷w4Gwwww÷÷÷÷÷#2"#242CC·»»»»»»»»»»»»»»»»»» 022"3Bt»»»»»»»»»»  r¯¯¯¯p¯¯¯¯¯¯¯¯¯¯¯3§¯ "C§¯#2"Bs¯w§¯¯¯¯2!$C444C4·»»»»»»»»»»»»»»»»»»  32##2s»»»»»»»»»»  û÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷D÷÷÷2$2B34÷÷÷ "#32C÷÷÷÷÷÷÷÷÷ðð÷DCC34C7wws»»»»»»»»»»»»»»»»»»»  !#2"C·»»»»»»»»»»  K""24w0C3DCC3w!"!#4wp0wO3tswp@³»»»»»»»»»»»»»»»»»»»"!2"!4·»»»»»»»»»»  »÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷4Cs÷÷÷3437www÷÷÷""""!3C÷÷÷$C÷÷wpCs»»»»»»»»»»»»»»»»»»»!$!3C·»»»»»»»»»»  »¢¯¯¯¯¯ ¯ ¯¯¯¯¯¯¯ !2s¯w§w¯¯ "!B2s¯ 0"""2Cw¯  34·»»»»»»»»»»»»»»»»»» ""Bs»»»»»»»»»»»  »û÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷4÷÷÷÷÷÷÷÷÷÷÷÷÷"Ct÷÷ #"2"#2Bs÷÷"$#"""C·»»»»»»»»»»»»»»»»»»  2!"2t»»»»»»»»»»»  »Kp ""Cw """""3s !22BCs0#"!1"#Bs»»»»»»»»»»»»»»»»»»»  ""#4s»»»»»»»»»»»  »»÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"234÷÷÷÷÷÷÷÷÷÷÷÷÷!"!D÷÷÷ C"#3B"Bs÷ B"#"3#2t»»»»»»»»»»»»»»»»»»»2##"C·»»»»»»»»»»»  »»r¯¯¯¯¯p ¯¯¯¯¯¯¯¯C44t¯¯¯¯¯¯"""""3§¯$"!""#23§ #2#C23Bs»»»»»»»»»»»»»»»»»»»"!#"#4·»»»»»»»»»»»  »»û÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷744C4w÷÷÷÷÷÷÷÷ðð÷÷÷32"#"As÷÷÷2"#222#D÷÷"#"2"#32C·»»»»»»»»»»»»»»»»»»»"!"At·»»»»»»»»»»»  »»Kptwwws 3#2"#2t#3B#433w "#322"$4·»»»»»»»»»»»»»»»»»» "!"2s»»»»»»»»»»»»  »»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷0 3w÷÷0"CBC4Cs÷÷ "B2$Bt÷"#2"#2"3C·»»»»»»»»»»»»»»»»»»  """1t»»»»»»»»»»»»  »»»¢¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯"0"#2D§¯@CCCCCsw¯0B223"3s¯0"#!#2#42s»»»»»»»»»»»»»»»»»»» @!#!3·»»»»»»»»»»»»  »»²ò÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷#""#4÷÷÷444Gssw÷÷÷÷ #2"2"4w÷ 22$1B2"Ct»»»»»»»»»»»»»»»»»»»23""D·»»»»»»»»»»»»  »+!Q"#2"2s7ww"#"4""3Cw"2"#2"3s»»»»»»»»»»»»»»»»»»»#"""3·»»»»»»»»»»»»  ²÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ "2#CAt÷÷÷w÷÷÷÷÷÷÷÷÷÷C2#4B""4÷÷"3#""#2D·»»»»»»»»»»»»»»»»»»»"#2Bs»»»»»»»»»»»»»  !!!!r¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ #2#2Cs¯¯¯¯¯¯¯ "#2$4CCs¯$"!#2"2"3·»»»»»»»»»»»»»»»»»» 0BD"2s»»»»»»»»»»»»»  ò÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ !#2"C÷÷÷÷÷÷÷ðð÷÷0CC3434Cw÷ 3!"$#2Cs·»»»»»»»»»»»»»»»»»»  C2!#Dt»»»»»»»»»»»»»  !!!!Q!#34wp@wC44ttwww0"!2"#2t»»»»»»»»»»»»»»»»»»»0"#""C·»»»»»»»»»»»»»  ÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"0""C4÷÷÷ #4÷÷÷Gwsw÷÷÷÷÷÷÷ #!"2AC4Cs»»»»»»»»»»»»»»»»»»»B!3#4·»»»»»»»»»»»»»  +!!!!¢¯¯¯¯¯¯p¯¯¯¯¯¯¯! "!3t¯ "2"CD§¯¯¯¯¯¯$D2DC4DCs§»»»»»»»»»»»»»»»»»»»B2#3D·»»»»»»»»»»»»»  »ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷22DCs÷÷ ""!32s÷÷÷÷÷÷÷÷÷0444CGstw7÷°»°»»»»»»»»»»» 0B"#2Bs»»»»»»»»»»»»»»  »+!!!QpDC44stw !""""Ctpt447wwpC° »»»»»»»  2"#2t»»»»»»»»»»»»»»  »÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷37ssw÷÷÷÷÷ "!!"Cw÷÷0 As÷wpBs2""2 0° »»»»  #2$4w»»»»»»»»»»»»»»  »+!!!!r¯¯¯¯p¯¯  ¯¯¯¯¯¯w¯¯¯¯""""2Dw¯""3B#4s¯ 0"#1t " 2»»»"2#AC·»»»»»»»»»»»»»»  »»ò÷÷÷÷÷÷÷÷÷÷÷ð÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"""!3÷÷÷"1"2"4÷÷0 A2"C#Cs #""""""#2$°»C2$1#4·»»»»»»»»»»»»»»  »»+!!!Qp""2CsA"!"""$3w2"##2"Cw "#"#!!3"#2#3"#2"Bt»»»»»»»»»»»»»»»  »»÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ "!#2t÷÷##AACs÷÷22#B!3"#4÷"!!2#B#1""! @!2#22s»»»»»»»»»»»»»»»  »»+!!!!¢¯¯¯¯¯p¯¯¯¯¯¯¯¯¯¯ """"#Cs¯ "2"B!BBs "#"""!CDw#""2$""#2"" #"2#23t»»»»»»»»»»»»»»»  »»»ò÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ !!!32C÷÷÷ 2"2!3s÷0""""2#D2s ""!!""###2#3"#2"320·»»»»»»»»»»»»»»»  »»»+!!!Qpp#"!2#34w##2"!"4w 22!13"Ct "!"4"$222#020"!"#"»»»»»»»»»»»»»»»  »»»÷÷÷÷÷÷÷÷ð÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷"#DC44C÷÷÷"#2""44÷÷#"#B""2"Cw !""2""$32###$B"!"!""°»»»»»»»»»»»»»  »»»+!!!!r¯¯¯¯ ¯¯¯ ¯¯¯¯¯¯¯¯¯D344437w¯¯4"#"#4§"#1""2D§"" !3"#3#2"#B!#2"BA#32»»»»»»»»»»»»  »»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷G3tswwww÷÷÷ ##2"#2t÷÷"""#2"!!3÷2"""B"#2"#2"2#2#!""2"#2°»»»»»»»»»»»»  »»»»+!!!Qpppwww0"3B3"#Bs !"3"!!Bs"!2"2#C2$C2###2"!2""2"$2»»»»»»»»»»»  »»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ B"#2"A3t÷ ##"""1t ""!"B42#3#2"32#C2""$2"#B"##°»»»»»»»»»  »»»»+!!!!¢¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯232CC43w¯ #B"""#Bs 22"!$3#3B#"2"#""#"#2#3"!1"»»»»»»»»»  »»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷444434st÷÷"##12"#2C÷0!2""#2## ""#"$23B"!#3"3"#""#»»»»»»»» »»»»»+!!!QODC47ww2"#4"2#24w""!!"!""#232$32#42""""#A"##3B#»»»»»»» »»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ww÷÷w÷÷÷÷÷÷""2DC3D4÷CA#C2$2#2 #A#"#2"#2"#"322""A°»»»»»» »»»»»+!!!!r¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯0CD3D34C7w?D44DCC34C#@2"#A" 232#2!#2"D"12"A2"""°»»»»  »»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷443tswwww÷÷www7ws7t4DC4#"2"$2"$#"2$32#2""!"!»»»  »»»»»»+!!!Q7wtwwwwww4GC4CC"32#4#3"2"#"!2""!"»»»  »»»»»»÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷w÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'w{wC74C322"""#2"#2#"!!"»» »»»»»»+!!!!¢¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯»»»w{w4CC4$#32"""""!""!"!°» »»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷´»»»»»wGCCCC##2""#A22#"!"!""#° »»»»»»»+!!!Qp¿»»»»»»{·wCCC#32##"!#2"2#!!2  »»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'»»»»»»»»»wG4C##"""!"!#1""""!"  »»»»»»»+!!!!r¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯oXfVh¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯»»»»»»»»»»{w34C#32"!!"##!"$""A4 »»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Sŷ÷÷÷÷÷÷÷ŷVEVŷö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷´»»»»»»»»»»»w744$#2""!"222#2""" »»»»»»»»+!!!Qo ehE"Au¿»»»»»»»»»»»»{w4442B!""2"##2"#! »»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷0ŷŷŷf÷÷515 ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'»»»»»»»»»»»»»{w434""" "#2!" »»»»»»»»+!!!!¢¯¯¯p¯¯¯¯p¯¯¯¯¯¯ou¯¯¯Xu¨b¯¯¯¯¯¯¯¯¯¯»»»»»»»»»»»»»»»wGC22D!2"2" »»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷GŴ÷÷÷÷÷÷6ŷ÷÷÷GP÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷´»»»»»»»»»»»»»»»{GD#""""#$3 »»»»»»»»»+!!!QuXb_P¿»»»»»»»»»»»»»»»»{34$"!!!!"!!# »»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷0÷÷÷÷÷W@ö÷÷÷÷WP÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'»»»»»»»»»»»»»»»»»w74!""!"A! " »»»»»»»»»+!!!!r¯¯¯¯¯¯pp¯¯¯¯¯¯`¯¯¯¤¯¯(p¯¯¯¯¯¯¯¯¯¯33#»»»»»»»»»»»»»»»w74"!!!"" " »»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷P÷÷÷÷GP÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷""""""R»»»»»»»»»»»»»»»»G34"!"!2" »»»»»»»»»»+!!!Qpp_0uo@@»»»»»»»»»»»»»»»»{w3$"""2  »»»»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷W@÷÷÷÷÷÷◰÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷2»»»»»+3»»»»»»»»»»»G3$" """ »»»»»»»»»»+!!!!¢¯¯¯p¯p¯¯¯¯¯¯¯¯£¯Ò¯¯o%P¯¯¯¯¯¯¯¯¯Oµ»»»»R424»»»»»»»»»»{GC!" !!! »»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷@ö÷ö÷÷÷V0ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷0ED»»K0³»»»»»»»»»»wCC"!"  »»»»»»»»»»»+!!!Qpphbx`oEQxoQDD»»µ»»»»»»»»»»»GC"" "! »»»»»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷WRŶŷVTö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷GFDD»K´»»»»»»»»»»»{wC#!!" »»»»»»»»»»»+!!!!r¯¯¯¯p¯¯p¯¯¯¯¯¯¯¯¯¯oE$Sh¯¯¯¯¯¯¯¯¯¯@EDD»3»»»»»»»»»»»»»3$ »»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷V "2EUŷ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷QDD´KE»»»;DDDDDDD»»w3D"!" »»»»»»»»»»»»+!!!QporOEDD»KE´»»[P»»»3##"! »»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷0EDD»@D´»»K@»»»w74" »»»»»»»»»»»»+!!!!¢¯¯¯¯¯p¯¯¯¯p¯¯¯¯¯¯¯¯fhUu¨¯¯¯¯¯¯¯¯¯¯oQDD´»QDD»»KA»»»»KC2" »»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Aö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷7EDD»»EDD»»´»»»»{7D3 »»»»»»»»»»»»»+!!!Aph% TT$`0EDD»»ADD´»;@DD´»»»{44 »»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷ðð÷÷÷÷÷÷÷÷÷÷÷VPö÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷QDD´»»;@EDD´»[aDD´»»»»w3 »»»»»»»»»»»»»+!!!!r¯¯¯¯ ¯¯¯¯¯o%QXRx¯¨¯¯¯¯¯¯¯¯¯?EDD»»»;1EDDD»»EDD»»»»»»C »»»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷@ö÷F 4Q÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷@EDD»»»»RUEDDDD»;@DDD»»»»»»w »»»»»»»»»»»»»»+!!!Aph uhURx_QDD´»»»»KDDDDD´»KbDD´»»»»»»» »»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷W☓÷÷÷÷÷÷VVŷ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'$EDD»»»»»»DDDDD»»EDD»»»»»»»»  »»»»»»»»»»»»»»+!!!!¢¯¯¯¯¯p¯¯¯oP¯¯¯¯¯¯¯¯¯¯¯¯¯h¨?!@EDD»»»»»»DDDD»»K@DDD»»»»»»»»  »»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷V"1ERQDD²»»»»»KDD»»»BRDD´»»»»»»»»  »»»»»»»»»»»»»»»+!!!A8`X##EDD!BDDDDDDµKDDDUUUD³»»»»»»»  »»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷F@EDD3´["" """R»»»»»»»»  »»»»»»»»»»»»»»»+!!!!r¯¯¯¯¯¯¯¯¯¯@¯¯¯¯¯¯¯¯¯¯¯83TQDD$!µBDD5TUUE4»»»»»»»»  »»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷€÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷WSU&EDD"@»»»»EDD»»»»»»»»»»  »»»»»»»»»»»»»»»»+!!!Ap_toQED@EDD!QA»»»KPDDD»»»»»»»»»»  »»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ EDDQDDEDD»2DDDDDDD´»»»»»»  »»»»»»»»»»»»»»»»+!!!!¢¯¯¯ ¯¯¯¯0¯¯¯¯¯¯¯¯¯¯_SDDDEDD!1@DD´» FDDDDDD»»»»»»»  »»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷P÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷0EDDd@EDD²RQDD´KPDD´»»»»»»»»»»»  »»»»»»»»»»»»»»»»»+!!!Apo`oSDDDTQDD$»EDD»3DDD´»»»»»»»»»»»  »»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷ð÷÷÷÷7€÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷EDDEDD²K@EDD» EDD»;µ»»»»»»»»»  »»»»»»»»»»»»»»»»»+!!!!r¯¯¯¯ ¯¯¯ ¯¯`¯¯¯¯¯¯¯¯¯OaDDD1@EDD»[QDD´[`DD´»B#»»»»»»»»»  »»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷ð÷÷÷÷€÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷EDDRQDD´»EDD»3EDD´»µ»»»»»»»»»  »»»»»»»»»»»»»»»»»»+!!!Ap`o@DDD!#EDD»[@EDD» EDD»KR»»»»»»»»»»  »»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷P÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷6bDD@EDD»SQDD´[`DD´»B3»»»»»»»»»»  »»»»»»»»»»»»»»»»»»+!!!!¢¯¯¯¯¯¯p¯¯¨¯¯¯¯¯¯¯_EDD!AQDD´+EDD»3EDD´»´»K»»»»»»»»  »»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷ð÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷G3@DDD3EDD»[@EDD» EDD»[Q»»D»»»»»»»»  »»»»»»»»»»»»»»»»»»»+!!!AaO%@PDD$!@DDD»UQDD´[QDD´»´»K´»»»»»»»»  »»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷ ö÷÷÷÷÷÷÷÷÷÷÷'CPEDDRQDD´[EDD»&EDD´[2²»K»»»»»»»»»  »»»»»»»»»»»»»»»»»»»+!!!!r¯¯¯¯ ¯c¯¯¯¯¯?SFD$!EDD»40EDD[0EDD»´»»D»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷Gö÷÷÷÷÷÷÷÷'DC@DD2@DDD;SQDDDQDD´[A²»K´»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»+!!!AoPx_UP#PDD!3QDD#%EDD1REDD$$»»D»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷Qŷ÷÷÷VPDD"4EDDQA0EDD50EDDC0²»K´»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»+!!!!¢¯¯¯p¯TU4S!ARD$CCFDD$`DDTB#PDDDµ»»D»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷SBDQDTB³EDEA²SDD$#RDTQ»»K´»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»+!!!AR#ADD%0U$»ETµ»RDE@²[aT50´»»D»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷SDDDDRD»»PC»»#@U1µ»;$4»»K´»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»+!!!!r¯¯¯¯ ¯_ TEDDDD!!S²»»TT²»»T5»»K%C»»»D»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷VRUDDDDDRU#"BeE»»K$% U´»»K´C0U»»»D;S³»»D´»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»+!!!ApU$!"TUEDDDDD$!!!ADTUEDD»»D»[UVUUD´»»D»KUEDTVD»»K´»e5 UE»»KD»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷VUUVDDDDDDDDDDDDDDD´»KDDDDD´»D»»KDTDDDD»KD»»KTUUDD´KD»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»+!!!!¢¯¯¯p¯¯¯¯¯ßDDDDDDDDDD$!!!!!!ADDDDDD´»»»DDDDDDD»»»»DDDDDDDD»»»KDDDDDDD´»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷GDDDDDDDDDD²²KDDDD»»»»»KDDDDD»»»»»KDDDDDD´»»»»DDDDDD´»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»+!!!ApOADDDDDDDD$!!!!!!!!»»»»»»»»»»»»»DDD´»»»»»»»KDDDD»»»»»»»DDDD´»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷'BDDDD²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»DD´»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»+!!!!r¯¯¯¯p¯¯¯¯¯?!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷ð÷÷÷÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»+!!!AO!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»+!!!!¢¯¯¯¯¯¯¯?!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»+!!!AO!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»+!!!!r¯¯¯¯¯?!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»+!!!AO!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»÷÷÷÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»;´»;7»»k¶»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»K»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!¢¯¯?!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»»»»»»»»»»3»»»6»»;¶»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»µ»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»ò÷÷÷÷'²²»»»»»»»»»»»»»»»»»»»»»»»»»»¶»»»6»»;¶»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»D»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!AO!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»[&+µ»»d³["V»C»»Kµ»[37»Cc¶»»;FT6d¶K6d6dµ[6t4u´»»+V»CK6»%»b²»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»÷÷'²²»»»»»»»»»»»»+¶+³»»k³;»d»#»»[µ»56+1¶»»»V»F»6+7»7+';';';¶»»»d»#»6»´»r³»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!r?!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»F;»»»Kµ"»k²´»»k³+6[1¶»»»6»6»6+'»'+';¶;¶;¶»»»k³´»d+²»{µ»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»"²²»»»»»»»»»»»»»»»c2»»»+7´»[%³»»k³;6k1¶sw´6»6»6+'»'+';¶;¶;¶kwµK%³»kD»»{µ»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!!!!!!!!»»»»»»»»»»»»»»»»»k&»»»»e³»+W»»»[µ+'6[1¶»»»6»6»6+'»'+';¶;¶;¶»»»+V»»[6»»r´»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»[·»;²»s»»»f»»»Kµ»VW;'A'»»»F»F»F+'»'+';·;·;·»»»»f»»+'»»b²»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»+´»{´»K»»»3»»»»¶»[F5»cF$»»;f»f+fKW+W;W[7[7[7»»»»3»»»´»»D»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»3»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»$»»+³»»µ»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»;²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»D³»;C²»;»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»+g»»k7»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»+!!!!!!+»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»²»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» €ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿðÿðÿÿÿÿÿðÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿððÿÿÿÿÿÿððÿÿÿÿÿÿ€¹>nsurÿ   ¤@ð£@Õ  ç  C%=19 € !(B%+12)=0 …Ö    ÿ "Filer_Run "+$(D%)×    Q%=32Ø  Íú ý Q%>=32È−"Wimp_CloseDown"ÿ WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickARMEDIT/LIGäÿÿÆ
  33612. `ÖFARMFILE/HGÿÿÿh    `Ì
  33613. ECLI/HGÿÿÿ Û    `° EhGýÿÿæpØàG8oGýÿÿñpØàI8SWI/HGÿÿÿxm    `◰ETALK/HGÿÿÿØ]    `•7JARMEDIT/LIGäÿÿÆ
  33614. `ÖFARMFILE/HGÿÿÿh    `Ì
  33615. ECLI/HGÿÿÿ Û    `° EhGýÿÿæpØàG8oGýÿÿñpØàI8SWI/HGÿÿÿxm    `◰ETALK/HGÿÿÿØ]    `•7J8CodeCodeNick#/*
  33616.     File        : armfile.h
  33617.     Date        : 21-Feb-97
  33618.     Author      : © A.Thoukydides, 1995, 1996, 1997
  33619.     Description : Transfer of files between DOS and RISC OS.
  33620. */
  33621.  
  33622. // Only include header file once
  33623. #ifndef ARMFILE_H
  33624. #define ARMFILE_H
  33625.  
  33626. // Include system header files
  33627. #include <stdlib.h>
  33628.  
  33629. // Variable to contain any error message
  33630. extern char armfile_error[256];
  33631.  
  33632. #ifdef __cplusplus
  33633. extern "C" {
  33634. #endif
  33635.  
  33636. // Should multitasking be enabled during transfers (default is FALSE)
  33637. extern int armfile_mtask;
  33638.  
  33639. /*
  33640.     Parameters  : src   - The source DOS file.
  33641.                   dest  - The destination RISC OS file.
  33642.     Returns     : int   - Standard C return code giving status of operation.
  33643.     Description : Copy a file from DOS to RISC OS. If there is an error then
  33644.                   it is stored in the variable armfile_error and a non-zero
  33645.                   value is returned, otherwise zero is returned.
  33646. */
  33647. int armfile_copy_dos_riscos(const char *src, const char *dest);
  33648.  
  33649. /*
  33650.     Parameters  : src   - The source RISC OS file.
  33651.                   dest  - The destination DOS file.
  33652.     Returns     : int   - Standard C return code giving status of operation.
  33653.     Description : Copy a file from RISC OS to DOS. If there is an error then
  33654.                   it is stored in the variable armfile_error and a non-zero
  33655.                   value is returned, otherwise zero is returned.
  33656. */
  33657. int armfile_copy_riscos_dos(const char *src, const char *dest);
  33658.  
  33659. /*
  33660.     Parameters  : src   - The source DOS filename.
  33661.                   dest  - The resulting RISC OS filename.
  33662.     Returns     : void
  33663.     Description : Perform character translation from DOS to RISC OS
  33664.                   filenames.
  33665. */
  33666. void armfile_translate_dos_riscos(const char *src, char *dest);
  33667.  
  33668. /*
  33669.     Parameters  : src   - The source RISC OS filename.
  33670.                   dest  - The resulting DOS filename.
  33671.     Returns     : void
  33672.     Description : Perform character translation from RISC OS to DOS
  33673.                   filenames.
  33674. */
  33675. void armfile_translate_riscos_dos(const char *src, char *dest);
  33676.  
  33677. /*
  33678.     Parameters  : buf   - Buffer to receive the filename.
  33679.                   len   - Size of the buffer.
  33680.     Returns     : int   - Standard C return code giving status of operation.
  33681.     Description : Generate a filename for a temporary RISC OS file. The file
  33682.                   is deleted before exiting.
  33683. */
  33684. int armfile_temporary(char *buf, size_t len);
  33685.  
  33686. /*
  33687.     Parameters  : dir   - The name of the RISC OS directory to create.
  33688.     Returns     : int   - Standard C return code giving status of operation.
  33689.     Description : Create a RISC OS directory.
  33690. */
  33691. int armfile_create_dir(const char *dir);
  33692.  
  33693. #ifdef __cplusplus
  33694. }
  33695. #endif
  33696.  
  33697. #endif
  33698.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  33699.     File        : cli.h
  33700.     Date        : 21-Feb-97
  33701.     Author      : © A.Thoukydides, 1996, 1997
  33702.     Description : Execute RISC OS *commands.
  33703. */
  33704.  
  33705. // Only include header file once
  33706. #ifndef CLI_H
  33707. #define CLI_H
  33708.  
  33709. // Include system header files
  33710. #include <stdio.h>
  33711.  
  33712. // Variable to contain any error message
  33713. extern char cli_error[256];
  33714.  
  33715. #ifdef __cplusplus
  33716. extern "C" {
  33717. #endif
  33718.  
  33719. /*
  33720.     Parameters  : cmd       - The command to execute.
  33721.                   stream    - Optional stream to redirect output to. If a
  33722.                               NULL pointer is passed then no redirection is
  33723.                               used.
  33724.     Returns     : int       - Standard C return code giving status of
  33725.                               operation.
  33726.     Description : Perform a *command simply. The { > file } method of
  33727.                   redirection is used if required. No redirection of input
  33728.                   is supported.
  33729. */
  33730. int cli_simple(const char *cmd, FILE *stream);
  33731.  
  33732. /*
  33733.     Parameters  : cmd   - The command to execute.
  33734.                   in    - Stream to use for input. If a NULL pointer is
  33735.                           passed then the keyboard is used for input.
  33736.                   out   - Stream to use for output. If a NULL pointer is
  33737.                           passed then stdout is used.
  33738.     Returns     : int   - Standard C return code giving status of operation.
  33739.     Description : Perform a *command with full redirection. Due to the way in
  33740.                   which the command may need to be suspended, the commands
  33741.                   that may be executed are more restricted.
  33742. */
  33743. int cli_redir(const char *cmd, FILE *in, FILE *out);
  33744.  
  33745. #ifdef __cplusplus
  33746. }
  33747. #endif
  33748.  
  33749. #endif
  33750. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  33751.     File        : swi.h
  33752.     Date        : 21-Feb-97
  33753.     Author      : © A.Thoukydides, 1995, 1996, 1997
  33754.     Description : Call RISC OS SWIs by name. Note that this is a very
  33755.                   inefficient operation.
  33756. */
  33757.  
  33758. // Only include header file once
  33759. #ifndef SWI_H
  33760. #define SWI_H
  33761.  
  33762. // Include project header files
  33763. #include "talk.h"
  33764.  
  33765. // Define some useful SWI numbers
  33766. #define OS_CLI 0x05
  33767. #define OS_File 0x08
  33768. #define OS_GBPB 0x0c
  33769. #define OS_Module 0x1e
  33770. #define OS_NumberFromString 0x39
  33771. #define OS_ReadMonotonicTime 0x42
  33772.  
  33773. #ifdef __cplusplus
  33774. extern "C" {
  33775. #endif
  33776.  
  33777. /*
  33778.     Parameters  : swi           - The name of the SWI to call.
  33779.                   in            - Pointer to the values for the ARM registers
  33780.                                   on entry to the SWI.
  33781.                   out           - Pointer to the values that the ARM
  33782.                                   registers contained on exit from the SWI.
  33783.     Returns     : talk_error    - A pointer to a RISC OS style error block
  33784.                                   (in PC memory), or NULL if there was no
  33785.                                   error.
  33786.     Description : Call the specified RISC OS SWI. The SWI is always called
  33787.                   with the X bit set.
  33788. */
  33789. const talk_error *swi_swi(const char *swi, const talk_swi_regs *in,
  33790.                           talk_swi_regs *out);
  33791.  
  33792. #ifdef __cplusplus
  33793. }
  33794. #endif
  33795.  
  33796. #endif
  33797. derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ðЀ    ARMFILEp⇦TC86 Borland Turbo C++ 3.00’⇦é)”U"    ARMFILE.CÏ⇦麓U"    ARMFILE.H:⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\DOS.HW⇦éRC:\TC\INCLUDE\FCNTL.HÂ⇦éRC:\TC\INCLUDE\IO.H§⇦éRC:\TC\INCLUDE\STAT.Hÿ⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\STDIO.H¶⇦éRC:\TC\INCLUDE\STRING.H`⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éÓU"SWI.HF⇦é­“U"TALK.H!⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦å…⇦å⇨⇦ç?M⇦ç?M⇦î &-=Ú⇦å?M⇦åFF⇦    ã(+⇦ ârÀ(⇦ãtalk_swi_regs(§⇦    ãüX⇦âerrnumerrmessÀñ⇦ã
  33798. talk_error
  33799. ã;⇦æregsØÿerri⇦çâª⇦çâª⇦î?FKu£¬µ¼ÅÓÝõ⇦åâª⇦åæ¦⇦æerrdoneM⇦ç/\⇦ç/\⇦îâæí $*,9⇦å/\⇦
  33800. ãQ⇦ædest
  33801. src
  33802. '⇦å;P⇦    ãM⇦    ãP⇦    ã €>‹⇦kæregsHÀtypeðÿ riscos_dateòÿdate
  33803. øÿtime
  33804. úÿnamepÀbuffer pÁerrsizeüÿsrc dest
  33805. 5⇦ço⇦ço⇦Rî/;BHO\bqŷ…´Ìî"/OUmu†¼Çì    *E¥çë€⇦åo⇦ædest
  33806. src
  33807. '⇦å%c⇦    ã!N⇦    ã"€>‘⇦bæregsJÀ riscos_dateòÿdate
  33808. øÿtime
  33809. úÿname!rÀbuffer"rÁerrsizeüÿsrc dest
  33810. ï⇦ç‘ö⇦ç‘ö⇦Fî%,29FL[w‹°Ê$+>Sk◰fi¸ÅÌÙ"*IO`k⇩r⇦å‘ö⇦
  33811. ã#K⇦ædest#
  33812. src
  33813. !⇦åfiè⇦æptrþÿsrc dest# fl⇦çÛ«⇦çÛ«⇦î‘fi ·ÇÌÍÒÕ±⇦åÛ«⇦ædest#
  33814. src
  33815. !⇦åé‡⇦æptrþÿsrc dest# fl⇦ç&_⇦ç&_⇦îÛéë ⇦å&_⇦ælen
  33816.  
  33817. buf#
  33818. ²⇦å1T⇦    ã&I⇦ânext$name&À ⇦ã%armfile_files_structÉ⇦
  33819. ã$%'⇦!æptr$errþÿbuf# len
  33820.  
  33821. ³⇦ç—í⇦ç—í⇦î&18=Pjz‘‹⇦å—í⇦ ædir
  33822. ⇦å£â⇦æregsØÿerrdir ð⇦çE?⇦çE?⇦î—£ª°Îç#=?H⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(Eæ—H⇦☓—H ŒÿÿU… N_LXLSH@é⇦ ã'#7⇦à'm…_talk_temporary⇦ ã(#%⇦à(l… _talk_fasterj⇦ ã)#$⇦à)k…_talk_date_to_riscos⇦ ã*##⇦à*j…_talk_date_to_dos`⇦ ã+#"⇦à+i…_talk_file_write½⇦ ã,#!⇦à,h…_talk_file_readN⇦ ã-# ⇦à-g…_talk_file_closeÒ⇦ ã.#⇦à.f…_talk_file_open8⇦ ã/#⇦à/e…_talk_ext_to_filetype⇨⇦ ã0#⇦à0d…
  33823. _talk_freeQ⇦ ã1#⇦à1c… _talk_mallocw⇦ ã2#⇦à2b… _talk_writeÆ⇦ ã3#⇦à3a…     _talk_swi¢⇦ ã4#⇦à4`…
  33824. _strlenl⇦ ã5#
  33825. (⇦à5_…
  33826. _strcpy_⇦ ã6##⇦à6^…
  33827. _strchrn⇦ ã7##⇦à7]… _sprintfü⇦ ã8#*⇦à8\…    _writeÛ⇦ ã9#*⇦à9[…_readl⇦ ã:#)⇦à:Z…_openV⇦ ã;#'⇦à;Y… _filelengthÚ⇦ ã<#%⇦à<X…    _closeð⇦ ã=#&⇦à=W…__dos_setftime’⇦ ã>#
  33828. ⇦à>V…__dos_getftime‡⇦ ã?#
  33829. ⇦à?U…
  33830. _malloc…⇦
  33831. ãA.⇦ ã@#Aæ⇦à@T…
  33832. _atexitu⇦ ãB#!⇦àBR‘_armfile_create_dir—ó⇦ ãC# ⇦áC7‘_armfile_temporary&„⇦ ãD#⇦áD6‘$_armfile_translate_riscos_dosÛJ⇦ ãE#!⇦áE5‘$_armfile_translate_dos_riscos‘”⇦ ãF# ⇦áF4‘_armfile_copy_riscos_dos+⇦ ãG#⇦áG3‘_armfile_copy_dos_riscos/⇦ ãH#⇦áH2‘_armfile_mtask…⇦ቑ_armfile_error€⇦    ãI&⇦áII⇦ ãJ#⇦ ãK#⇦ ãL#⇦    ãM ⇦    ãN ⇦ ãO#⇦ ãP#⇦ ãQ#⇦ ãR#⇦ ãS#⇦ ãT#⇦ ãU#⇦ ãV#⇦3æ@initialise$qvJâ@tidy$qvK?@close_files$qvL
  33833. files_head$ char_armMchar_dosNarm_memarm_filedos_file@randomize$qvS
  33834. @random$qiTabsVarmfile_files%    talk_date
  33835. talk_errortalk_swi_regsfpos_twchar_tsize_t
  33836. armfile_files_struct%É ýU⇧ì¡ tÿ6ÿ6è◰ÄÇÇ◰>ÿtÿ6è◰ÄÇÿÿ]ÃU⇧ì◰ì(Vè·ÿëaÿ6
  33837. ÿ6¡ Pè◰Ä@P¡ Pè◰Ä⇧ð öu.ÇFÚÇFØ¡
  33838. ⇧⇨FÞ⇨VÜ™FØP™FØP3ÀºPRè◰Ä⇧ð⇧ ⇧£ ¡ 
  33839. t◰> u•¡ 
  33840. tÿ6
  33841. ÿ6è◰Ä3ÀPPè◰Ä^⇧å]ÃU⇧ìV◰>u=¸?Pè◰ĸP¸Pè◰Ä⇧ð öt⇧ÆP¸&P¸Pè◰ĸëÇ3À^]ÃU⇧ìŴì¸?VW⇧~è¤ÿ Àt¸éË◰>u3ÀºdPRè◰Ä◰~u™ŷpÀ⇨FPWè"◰ĸ€PWè◰Ä£◰>ÿu¸é™FúP™FøPÿ6è◰Ä™FòPÿvøÿvúè◰Ä⇧ð ötW¸FP¸Pè◰Äè:þ¸éG¸P3ÀPÿ6è◰ÄRPÿvè◰Ä
  33842. ⇧ð öt ⇧ÆPÿv¸qP¸Pè◰Äèøý¸éÇFþÇFüé¡◰>u3ÀºdPRè◰ĸ€>P™ŷpÁPÿ6è◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuW¸œP¸Pè◰Äè−ý¸é¦⇧Fü FþtG™ŷpÁPÿvþÿvü¸ÿÿºÿÿPRÿ6ÿ6è◰Ä⇧ð öt ⇧ÆPÿv¸¸P¸Pè◰ÄèJý¸éW⇧Fü FþtéTÿè6ýÿ6
  33843. ÿ6ÿvè◰Ä@Pÿvè◰Ä⇧ð öt⇧ÆP¸ØP¸Pè◰ĸéëG€=t€=.uõ€=tG™FðPWè◰Ä⇧ð öt⇧ÆPW¸P¸Pè◰ĸéÎÇŷJÀÇŷHÀ¡
  33844. ⇧⇨ŷNÀ⇨„LÀ⇧Fð−±è⇨„RÀ⇨ŷPÀ⇩Fö—−    ŷPÀ    „RÀ◰‰PÀ◰‰RÀð™ŷHÀP™ŷHÀP3ÀºPRè◰Ä⇧ð öuBÇŷJÀÇŷHÀ¡
  33845. ⇧⇨ŷNÀ⇨„LÀ⇧Fô⇧Vò⇨ŷVÀ⇨„TÀ™ŷHÀP™ŷHÀP3ÀºPRè◰Ä⇧ð öt⇧ÆPÿvð¸4P¸«†£ÇõàVǶDzŒVgVÇVÇR:VÇ6Ç2V
  33846. ŷûVÆ÷ÆóŷáVŷÖVÆÐÆÌŷ®VƪƦŷ’VƉÆ⇩ŷ_VÆ[ÆWŷ=VÆ:ŷ*VÆŷVÅüÅøŶãV    ŶØVÅÕÅÍŶ¾VźŶŶ©VŶ−VÅ„ÅŴÅ}ŶwVŶWVÅJÅ&ŶVÅÅŶV Äø☓òVÄîTÄè☓ØV☓ÎV ÄËÄÇÄÁĽÄ·ıÄ­ĪÄ¥☓†VÄ☓Ä€☓jVÄc☓[VÄTÄQÄMÄ9☓2VÄ/Ä(Ä"Ä☓VÄÄÄÄ‘ ýùPè◰ĸë 3ÀPPè◰Ä3À_^⇧å]ÃU⇧ìŴì¶?VW⇧~èºü Àt¸éX◰>u3ÀºdPRè◰Ä◰~u™ŷrÀ⇨FPWè◰◰ĸP3ÀP¸ÿÿºÿÿPRWè◰Ä
  33847. ⇧ð öt⇧ÆPW¸TP¸Pè◰ĸéøÿ6
  33848. ÿ6Wè◰Ä@PWè◰Ä⇧ð öt⇧ÆP¸ØP¸Pè◰ĸéÀÇŷLÀÇŷJÀ¡
  33849. ⇧⇨ŷPÀ⇨„NÀ™ŷJÀP™ŷJÀP3ÀºPRè◰Ä⇧ð öt⇧ÆPW¸yP¸Pè◰ĸém◰¾dÀÿu◰¾bÀÿu°⇦Fö⇦Fõ⇦Fô⇦Fó⇦Fòë⇧ŷXÀ⇧„VÀ⇨Fô⇨Vò⇩ŷRÀ⇦Fö™FøP™FúP™FòPè◰Ä⇧ð ötW¸FP¸Pè◰Äè◰ú¸é¸€P¸◰Pÿvè◰Ä£◰>ÿuÿv¸¦P¸Pè◰ÄèNú¸éÒÇFþÇFüéœ◰>u3ÀºdPRè◰Ä™FüP™ŷrÁP3Àº€>PR¸ÿÿºÿÿPRÿ6ÿ6è◰Ä⇧ð öt⇧ÆPW¸ËP¸Pè◰Äèãù¸ëh⇧Fü Fþt6ÿvü™ŷrÁPÿ6è◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuÿv¸íP¸Pè◰Ä⇧Fü FþtéZÿÿvúÿvøÿ6è◰Äèŵù3ÀPPè◰Ä3À_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸Pè◰Ä⇨Fþ◰~þt⇧^þŴë⇩⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸Pè◰Ä⇨Fþ◰~þt⇧^þŴë⇩⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~è®ù Àt¸ëUÿvWè◰Ä⇨Fþ◰~þt⇧FþP¸P¸Pè◰ĸë(¸Pè◰Ä⇧ð öt¡ ⇨W⇧ÆPè◰Ä⇨6 3À_^⇧å]ÃU⇧ì◰ì(VW⇧~è<ù Àt¸é•ÿ6
  33850. ÿ6Wè◰Ä@PWè◰Ä⇧ð öt⇧ÆP¸3P¸Pè◰ĸëXÇFÚÇFØ¡N†KäVÇàÇÜÊVÁVǽǹÇ”‰VÇŵvVgVÇcÇ_IVÇÇŷûVÆ÷ÆÇÆÃŷ°VƬŷ⇩Vŷ}VÆzŷbVÆ^ÆZŷ>VÆ;ŷVÆÆŷVÅþÅúŶÛVÅÎŶ±VÅ­Å©Å ņŶ„VŶ|VÅxÅtŶgVŶVÅÅ☓þVÄâÄÞ☓ÆVÄÂľ☓¬V☓£VÄflÄœ☓‰VÄ⇩Äŷ☓sV    Äc☓HVÄ;☓V☓VÄç Wò
  33851. ⇧⇨FÞ⇨VÜÇFêÇFè™FØP™FØP3ÀºPRè◰Ä⇧ð öt⇧ÆPW¸cP¸Pè◰ĸë3À_^⇧å]Ãâ†☓AVÄ=Ä9☓&VÄÄ& …ÿÿ?#&@%$^.\/#?+=;<>/.\Failed to allocate memory (%s)
  33852. Unable to convert date stamp for file '%s'Unable to open destination file '%s' (%s)Error reading from file '%s'Error writing to file '%s' (%s)Unable to write filename for RISC OS (%s)Unable to convert extension '%s' to filetype (%s)Unable to set filetype &%x (%s)Unable to open source file '%s' (%s)Unable to read date stamp for file '%s' (%s)Unable to open destination file '%s'Error reading from file '%s' (%s)Error writing to file '%s'Unable to generate temporary filename (%s)Unable to write directory name for RISC OS (%s)Unable to create directory '%s' (%s)Ú⇦è    ARMFILE.C)”U"Ï“+8;= >B&D-E7G=O?UFZK[K\q^u_`…c£X¬g¼jÓkÝsâyæ|í÷€ŵ ◰ ☓⇦$…*™,–/£;¤H§\ªq«­ŷ±…´fiµ°·´¸´¹ÃºÆ¾Ì¿êÁîÂîÃÄÈËÌ/ÍIÏUÐdÑgÓmÕuÖ—؆Ù†Ú³Û¶ɼáÇäÊåèçìèìéíðñò&ô*ö*÷?ûEüQý`þqÿ~⇦¡¥±ÀΠ   ç ëë)%*2-F0[1s3w4w5…9‹:¬<°=°>ÄBÊCÖDåEþGIJLO+P+Q<U>VLZS[g]k^k_z`}d◰f◰g–ifij¯k²o¸rÅsÙtvwxy{"}*~C€Op`ŷk⇨{…~™⇦‰⇩–‘fi fl± Ç¡Ì†Í¥Ò¦Õ¯Û¶ë·ü¸¹´½¾ Ç&Í1Ð=ÑJÓPÔPÕeÙjÚvÜzÝÞ…â‘ã‹ê—ð£ó°ôÊöÎ÷Îøâüçýñþþÿ##8    =
  33853. ?k⇩t€CLI ⇦TC86 Borland Turbo C++ 3.00’⇦é%”U"CLI.C⇦éX”U"CLI.HË⇦éRC:\TC\INCLUDE\STDIO.H¶⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\CONIO.HÁ⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\STRING.H`⇦麓U"    ARMFILE.H:⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éÓU"SWI.HF⇦é­“U"TALK.H!⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦å…⇦å⇨⇦çn⇦çn⇦î &/IRl
  33854. ⇦ån⇦åq⇦ædone Æ⇦ç⇩⇦ç⇩⇦ înqx⇦fi⇦å⇩⇦
  33855. ãV⇦
  33856. ãM⇦Mâlevelflags
  33857. fdholdbsizebuffercurpistemp
  33858. tokenÀU⇦ ãFILE⇦
  33859. ã=⇦æstream
  33860. cmd
  33861. d⇦å„ö⇦    ã('⇦ ârÀ(⇦ãtalk_swi_regs(£⇦    ã üT⇦âerrnumerrmess Àí⇦ã
  33862. talk_error⇦
  33863. ã3⇦    ã!N⇦    ã"M⇦@æsizeüÿregsÔýerrstr!üýspool"üþcmd
  33864. stream ”⇦ç{⇦ç{⇦0î⇩„«¾Ö!;a{¥»Âãü4MUhpuz⇦å{⇦æout
  33865. in
  33866. cmd
  33867. ›⇦å⇦åû•⇦
  33868. æchöÿÀ⇦ç%d⇦    ã#L⇦=ædata#öþsizeøÿstatusüÿerrcmd
  33869. in out
  33870. ×⇦ç)_⇦ç)_⇦Pî{”—fi£¹ÓÖßèïû%+-4;=DPT^euwŴ­ÆÎãìõ    #¨⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—()—Hì"—H ŒÿÿU…_talk_oscli_end9⇦ ã$#%⇦à$p…_talk_oscli_poll·⇦ ã%#$⇦à%o…_talk_oscli_start>⇦ ã&##⇦à&n…_talk_file_readN⇦ ã'#"⇦à'm…_talk_file_closeÒ⇦ ã(#!⇦à(l…_talk_file_open8⇦ ã)# ⇦à)k…
  33871. _talk_freeQ⇦ ã*#⇦à*j… _talk_mallocw⇦ ã+#⇦à+i… _talk_writeÆ⇦ ã,#⇦à,h…     _talk_swi¢⇦ ã-#⇦à-g…_armfile_temporaryÌ⇦ ã.#5⇦à.f…_armfile_error™⇦    ã/@⇦à/e…
  33872. _strlenl⇦ ã0#
  33873. -⇦à0d…
  33874. _strcpy_⇦
  33875. ã2<⇦ ã1#2⇦à1c…
  33876. _strcats⇦ ã3#2⇦à3a…
  33877. _atexitu⇦ ã4#/⇦à4`…    _kbhitô⇦ ã5#.⇦à5_…    _getchû⇦ ã6#-⇦à6^…
  33878. __fgetc†⇦ ã7#,⇦à7]… _sprintfü⇦ ã8#*⇦à8\…
  33879. _fwrites⇦ ã9#
  33880. $⇦à9[…     __streams¢⇦    ã:⇦à:Z‘
  33881. _cli_redir{Ë⇦ ã;#(⇦á;?‘ _cli_simple⇩H⇦ ã<#'⇦á<>‘
  33882. _cli_error2⇦    ã=2⇦á=U⇦ ã>#(⇦ ã?#'⇦ ã@#&⇦ ãA#"⇦ ãB#!⇦ ãC# ⇦Çæ@initialise$qv>n@tidy$qv?
  33883. cmd_handle file_handlearm_mem@randomize$qv@
  33884. @random$qiAabsC
  33885. talk_errortalk_swi_regswchar_tFILEfpos_tsize_t
  33886. à ÿU⇧ì¡ tÿ6ÿ6è◰ÄÇÇ¡ tÿ6ÿ6è◰ÄÇÇ¡ 
  33887. tÿ6
  33888. ÿ6è◰ÄÇ
  33889. Ç]ÃU⇧ì◰> uÇ ¸Pè◰Ä]ÃU⇧ìŴì,VW⇧~èÕÿÿv™ŷüýPè◰Ä ÿtY¸P™ŷüþPè◰Ä Àt¸P¸P¸Pè◰ĸéfl¸;P™ŷüýPè◰Ä™ŷüþP™ŷüýPè◰ĸAP™ŷüýPè◰ĸP™ŷüýPè◰Ä@Pè◰Ä⇧ð öt⇧ÆP¸DP¸Pè◰ĸé:ÿ6ÿ6™ŷüýPè◰Ä@P™ŷüýPè◰Ä⇧ð öt⇧ÆP¸dP¸Pè◰ĸéú¡⇧⇨ŷÖý⇨„Ôý3ÀP™ŷÔýP3ÀºPRè◰Ä⇧ð öt⇧ÆP¸Pè◰Ä¸éº ÿu鮸P¸P¸ÿÿºÿÿPR™ŷüþPè◰Ä
  33890. ⇧ð öt⇧ÆP¸P¸Pè◰ĸëyÇFþÇFüë`™FüP™ŷüýP3ÀºPR¸ÿÿºÿÿPRÿ6ÿ6è◰Ä⇧ð öt⇧ÆP¸P¸Pè◰ĸë(⇧Fü FþtWÿvü¸P™ŷüýPè◰Ä⇧Fü Fþu—è™ý3À_^⇧å]ÃU⇧ìŴì
  33891. VW⇧vÇFþÇFü öu¾◰~uÇF¸Pÿvè◰Ä⇧ø ÿué*⇧ÇP¸­P¸Pè◰ĸéPé◰~þté—◰~üté•÷DtNÇFúÇFøë*è⇨Fö◰~öuè⇨Föë⇧^ø™ŷöþØ⇩Fö⇦◰Fø◰Vú◰~úV|Ŵ~øsMè ÀuÀëD÷D t ÇFúÿÿÇFøÿÿë1ÿ |
  33892. ⇧\
  33893. ÿD
  33894. ⇩ëVè◰Ä⇦ŷöþÇFúÇFøë ë
  33895. ÇFúÇFø™ŷöþP™FøP™FüP™ŷöþPÿvúÿvøÿ6
  33896. ÿ6è◰Ä⇧ø ÿt⇧ÇP¸ÌP¸Pè◰ĸë]⇧Fø Fútÿvÿvø¸P™ŷöþPè◰Ä◰~þtéêþ◰~ütéáþÿ6
  33897. ÿ6­†⇨Ç÷ÞV¼VǸÇ´¢VÇflÇœ`V5VVŷüVŷÈVÆÄÆÀŷ«VƤÆ¡Æ„ŷcVŷCVÆ?Æ;ŷ)VÆ&Æ"ŶòVÅîÅêŶØVÅÃŶ°VŬŶŒV
  33898. Å€Å|ŶpVÅlÅhŶVV    ŶIVÅAÅ=Ŷ0VÅ,Å(ŶVŶVÅ☓ÿVÄö☓ðV☓àVÄ×☓ËVÄÇÄÃÄ¿ ☓µV ☓¢V☓◰VÄTÄzÄsÄhÄb☓[VÄXÄTÄNÄJÄEÄ?☓8VÄ5Ä1Ä+Ä'Ä"Ä☓VÄÄÄÄ8 2ûè◰Ä⇧ø ÿt⇧ÇP¸Pè◰ĸëèßû3À_^⇧å]ÃL†☓VÄ☓Vħ ðUnable to generate a temporary filename (%s) { >  }Unable to claim ARM memory (%s)Unable to write to ARM memory (%s)Unable to read output of command (%s)Unable to execute command (%s)Unable to continue command (%s)⇦èCLI.C%”U"“s'*, -1&3/4=8I:R;`=lDnIqLxO~Q⇦^⇩g„j−m§o«q¾rÐtÖuåvõz{}!~5ŵ;◰]Ŷaŷu⇩{⇧⇩…¡‰¥•µ›»„–ß−ãŒãœ÷flü¢£0¥4¦4§H©M h®p±s²u¿{ÂÇ’È—Ë£̲ιÏÍÖÖÙèÜïáûâåæçÝ%é;í=ðPñiôuõw÷Ŵø©ú­ûÁþÆÓãõ    
  33899. !#¿⇩t€HPC‡⇦TC86 Borland Turbo C++ 3.00’⇦é ”U"HPC.C⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\DOS.HW⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\MEM.H^⇦éRC:\TC\INCLUDE\STRING.H`⇦é°“U"SVC.H`⇦å…⇦åŷ⇦ævalue
  33900. þÿZ⇦ç.^⇦ç.^⇦î#(*⇦å.^⇦å4X⇦6âax
  33901. bx
  33902. cx
  33903. dx
  33904. si
  33905. di
  33906. cflag
  33907. flags
  33908. À⇦ãWORDREGSÉ⇦0âalahblbhclchdldhÀê⇦ãBYTEREGSØ⇦âxhÀ¡⇦ ãREGS⇦æoutregsàÿinregsðÿØ⇦ç[1⇦ç[1⇦î.4PUW⇦å[1⇦
  33909. ãU⇦
  33910. ãT⇦gærx2_size
  33911.  
  33912. rx2_buf
  33913. rx1_size
  33914.  
  33915. rx1_buf
  33916. tx2_size
  33917.  
  33918. tx2_buf
  33919.  
  33920. tx1_size
  33921.  
  33922. tx1_buf
  33923. Õ⇦åa+⇦Iâbuffertx1s
  33924. tx1btx2s
  33925. tx2brx1s
  33926. rx1brx2s
  33927. rx2bÀ⇦ã8⇦âes
  33928. cs
  33929. ss
  33930. ds
  33931. À⇦ãSREGS»⇦“æblock¾ÿsegregsøÿoutregsØÿinregsèÿtx1_buf
  33932. tx1_size
  33933.  
  33934. tx2_buf
  33935.  
  33936. tx2_size
  33937.  
  33938. rx1_buf
  33939. rx1_size
  33940.  
  33941. rx2_buf
  33942. rx2_size
  33943.  
  33944. ⇦çÖ¶⇦çÖ¶⇦
  33945. î[aÒñ⇦åÖ¶⇦gærx2_size
  33946.  
  33947. rx2_buf
  33948. rx1_size
  33949.  
  33950. rx1_buf
  33951. tx2_size
  33952.  
  33953. tx2_buf
  33954.  
  33955. tx1_size
  33956.  
  33957. tx1_buf
  33958. Õ⇦åá«⇦
  33959. ãJ⇦~æptrúÿi
  33960. statusþÿtx1_buf
  33961. tx1_size
  33962. tx2_buf
  33963.  
  33964. tx2_size
  33965.  
  33966. rx1_buf
  33967. rx1_size
  33968.  
  33969. rx2_buf
  33970. rx2_size
  33971.  
  33972. ⇦çÒ¹⇦çÒ¹⇦2îÖáõû%237GTUZŷ›“−©¶·¼Ì¤⇦åÒ¹⇦gærx2_size
  33973.  
  33974. rx2_buf
  33975. rx1_size
  33976.  
  33977. rx1_buf
  33978. tx2_size
  33979.  
  33980. tx2_buf
  33981.  
  33982. tx1_size
  33983.  
  33984. tx1_buf
  33985. Õ⇦åس⇦    ã!@ ⇦ âr!À@ö⇦ã  svc_swi_regs@é⇦{æstatusþÿregs ¾ÿtx1_buf
  33986. tx1_size
  33987.  
  33988. tx2_buf
  33989.  
  33990. tx2_size
  33991.  
  33992. rx1_buf
  33993. rx1_size
  33994.  
  33995. rx2_buf
  33996. rx2_size
  33997.  
  33998. €⇦ç}⇦ç}⇦îÒØkrvyù⇦å}⇦gærx2_size
  33999.  
  34000. rx2_buf
  34001. rx1_size
  34002.  
  34003. rx1_buf
  34004. tx2_size
  34005.  
  34006. tx2_buf
  34007.  
  34008. tx1_size
  34009.  
  34010. tx1_buf
  34011. Õ⇦å⇧ÿ⇦¤æregsîÿis_hpc is_softwarefirststatusþÿtx1_buf
  34012. tx1_size
  34013. tx2_buf
  34014.  
  34015. tx2_size
  34016. rx1_buf
  34017. rx1_size
  34018.  
  34019. rx2_buf
  34020. rx2_size
  34021.  
  34022. ¿⇦ç} ⇦ç} ⇦î}⇧©¶¼ÂÉô    4]wfi⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(}³—H    —H ŒÿÿU… _svc_swi⇦ ã"#A⇦à"r… _svc_addressi⇦ ã## 8⇦à#q…     _movedata¯⇦ ã$#B⇦à$p… _outportå⇦ ã%#A⇦à%o…
  34023. _int86xÓ⇦ ã&#=⇦à&n…    _int86M⇦ ã'#<⇦à'm…
  34024. _inporth⇦ ã(#;⇦à(l‘@hpc_is_software$qv·⇦ ã)#:⇦á)Q‘ _hpc_message}ó⇦ ã*#9⇦á*P⇦ ã+#8⇦ ã,#7⇦ ã-#6⇦ ã.#5⇦ ã/#7⇦ ã0#6⇦ ã1#4⇦ ã2#1⇦ ã3#3⇦ ã4#/⇦ ã5#.⇦ ã6#-⇦æ @hpc_software$qnxvuit1uinvuit5ui+Ò@hpc_emulate$qnxvuit1uinvuit5ui,Ö@hpc_execute$qnxvuit1uinvuit5ui-[@hpc_present$qv..@randomize$qv3
  34025. @random$qi4abs6 svc_swi_regs     ptrdiff_twchar_tsize_t
  34026. SREGSREGSBYTEREGSWORDREGS^ ŴU⇧ì◰ì¸P™FþP¸þP¸ÿPè◰Ä
  34027. ◰~þÿu¸ë3À⇧å]ÃU⇧ì◰ì ÇFð™FàP™FðP¸MPè◰Ä=PHu¸ë3À⇧å]ÃU⇧ì◰ìBÇF¾⇧F⇨FÀ⇧F⇧V⇨FÄ⇨VÂ⇧F⇨FÆ⇧F ⇧V
  34028. ⇨FÊ⇨VÈ⇧F⇨FÌ⇧F⇧V⇨FÐ⇨VÎ⇧F⇨FÒ⇧F⇧V⇨FÖ⇨VÔÇFè™F¾⇨Fê…Vø™FøP™FØP™FèP¸MPè◰Ä⇧å]ÃU⇧ì◰ìVW⇧~¸àPè◰Ä⇨FþŴ~þEMu¸éÑŴ~þMEt¸éÄ3ÀP¸àPè◰Ä⇧F⇧V⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;÷rî⇧F ⇧V
  34029. ⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;vrí¸P¸àPè◰ĸP¸àPè◰Ä⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí¸P¸àPè◰Ä3À_^⇧å]ÃU⇧ì◰ìB⇧FÇFÀ⇨F¾ÿvÿvè◰Ä⇨VÄ⇨FÂ⇧FÇFÈ⇨FÆÿv ÿv
  34030. è◰Ä⇨VÌ⇨FÊ⇧FÇFÐ⇨FÎÿvÿvè◰Ä⇨VÔ⇨FÒ⇧FÇFØ⇨FÖÿvÿvè◰Ä⇨VÜ⇨FÚ™F¾P™F¾P¸ºF¼PRè◰Ä⇨Fþ◰~þu 3Àu3Àë¸⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFîŴ™FîP™FîP¸/Pè◰Ä◰>tèTý£◰>uèuý£Ç◰>t+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  34031. Vÿvÿvèæþ◰Ä⇨Fþëi¸P¸àPè◰Ä◰>t+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  34032. Vÿvÿvè/ý◰Ä⇨Fþë)ÿvÿvÿvÿvÿvÿvWÿv ÿv
  34033. Vÿvÿvèý◰Ä⇨FþÇFîŵ™FîP™FîP¸/Pè◰Ä⇧Fþ_^⇧å]ÆdoVÇŷýVÆÄƾƺƱÆ­Ƥŷ‡Vŷ]VŷAVŷ$VŷVŶêVŶÅVŶqVŶcVŶV☓æV☓ÍV☓FV☓VJ 
  34034. S⇦èHPC.C ”U"“;EJMN*U.Z4]9^Wv[⇧a…f™l‰x•~‘⇩’‘‹†›¢„®–³—¹œ¼†Ò´Ö¾á¿îÁõÃûÅÉÊË!Ì7ÍCÐZÓhÔvÕŵÖ−×¥Ú¼ÝÊÞÌöÒÿØãõ/:    L eey'}2⇧3‘6¢9©:¯=¼AÂDÉEÉFòJôMP    Q    R2V4W4\]]b`tawS⇩t€SVC…⇦TC86 Borland Turbo C++ 3.00’⇦é”U"SVC.Cù⇦é°“U"SVC.H`⇦éRC:\TC\INCLUDE\DOS.HW⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦å…⇦
  34035. ãX⇦ æptr
  34036. ⇦åŷ⇦#æarm_ptr øÿx86_ptr üÿptr
  34037. D⇦ç5W⇦ç5W⇦î #%(+1⇦å5W⇦    ã@⇦ ârÀ@ü⇦ã svc_swi_regs@ï⇦
  34038. ã=⇦
  34039. ã:⇦æout
  34040.  
  34041. in
  34042. no
  34043. ÷⇦åCI⇦åÉÃ⇦çû’⇦ânoregsÀDÊ⇦ãrecordD◰⇦
  34044. ã6⇦Mæx86_ptr ôÿokøÿoffset
  34045. úÿblocküÿrecordino
  34046. in out p⇦çv⇦çv⇦2î5Cz~⇧•«¬±´·º¾ÀÅÉÍõöûÉ⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(—H—H ŒÿÿU‘_svc_swi5Æ⇦ ã#D⇦á[‘ _svc_address`⇦ ã # ;⇦á Z⇦ ã!#E⇦ ã"#D⇦ ã##B⇦ ã$#?⇦æ svc_swi_regsF U⇧ì◰ì⇧F⇧V⇨Fþ⇨Vü¸⇨ÂÄ^üÿÿs¸⇨Â⇨Fø⇨Vú⇧Vú⇧Fø⇧å]ÃU⇧ì◰ì VW⇧~⇧N
  34047. ÇFø…Vú⇧Fú%üÿ…Vþ⇨Fü⇧Fþ⇧Vü⇨Fö⇨VôÄ^ü⇧F⇧V&⇨G&⇨3öë2 ÿt⇧ÞÑãÑã⇧Q⇧ë3Ò3À⇧ÞÑãÑã‰FþPRS⇧^üXØX&⇨GX&⇨GF◰þ|ÉÄ^ôºas¸efÿÿsÇFø Ét23öë)⇧ÆÑàÑàÄ^üØ&⇧G&⇧W⇧ÞÑãÑãPRS⇧ÙXØXZ⇨W⇨F◰þ|Ò◰~øt3Àë
  34048. Ä^ü&⇧%@_^⇧å]ÃÝ⇦èSVC.C”U"ù“{ ! "#&%'(++,175BCFHGKHZKfLvP±Q´R·SºT¾UÀZÅ]û^û_7⇩t€SWIŶ⇦TC86 Borland Turbo C++ 3.00’⇦éó“U"SWI.C⇦éÓU"SWI.HF⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\STRING.H`⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦å…⇦å⇨⇦çy⇦çy⇦
  34049. îk⇦åy⇦åv⇦çIC⇦çIC⇦î$6:GT⇦åIC⇦
  34050. ãV⇦    ã()⇦ ârÀ(⇦ãtalk_swi_regs(¥⇦
  34051. ã=⇦
  34052. ã:⇦æout
  34053. in
  34054. swi
  34055. q⇦åT8⇦    ãüU⇦âerrnumerrmessÀî⇦ã
  34056. talk_error⇦
  34057. ã5⇦*æregsØÿcodeswi in
  34058. out
  34059. î⇦çÆÆ⇦çÆÆ⇦îIT[`~ŵª®À⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(Æm—H
  34060. —H ŒÿÿU…
  34061. _strlenl⇦ ã #
  34062. =⇦à t…
  34063. _talk_freeQ⇦ ã!#)⇦à!s… _talk_mallocw⇦ ã"#(⇦à"r… _talk_writeÆ⇦ ã##'⇦à#q…     _talk_swi¢⇦ ã$#&⇦à$p…
  34064. _atexitu⇦ ã%#>⇦à%o‘@initialise$qvÃ⇦ ã&#=⇦á&T‘ @finalise$qvº⇦ ã'#?⇦á'S‘_swi_swiI«⇦ ã(#"⇦á(R⇦ ã)#=⇦ ã*#9⇦ ã+#8⇦ ã,#7⇦æerror_initialisearm_mem@randomize$qv)
  34065. @random$qi*abs,
  34066. talk_errortalk_swi_regswchar_tsize_t
  34067. ® ÊU⇧ìÿ6ÿ6è◰Ä]ÃU⇧ì¡ t¸ë#¸P¸Pè◰Ä Àt3Àë¸Pè◰ĸ]ÃU⇧ì◰ì(VW⇧~è¼ÿ Àu¸ë`ÿ6ÿ6Wè◰Ä@PWè◰Ä⇧ð öt⇧Æë>¡⇧⇨FÞ⇨VÜ™FØP™FØP3Àº9PRè◰Ä⇧ð öt⇧ÆëÿvÿvÿvÚÿvØè◰Ä_^⇧å]ÆS☓»V☓flVÄÄ◰☓sV☓jVÄfÄbÄ\☓?VÄ;T☓-VÄ%ÄÄ☓ VÄ    ÄÝ †ÿÿÿUnable to initialise SWI handler⇦èSWI.Có“U"“K"%&.14$7::D;GIIPTS`TzWŵX•Y¦\®]À±⇩t€TALKJ⇦TC86 Borland Turbo C++ 3.00’⇦é”U"TALK.CÀ⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\CTYPE.H´⇦éRC:\TC\INCLUDE\STRING.H`⇦éRC:\TC\INCLUDE\STDIO.H¶⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦å…⇦    ã(*⇦ ârÀ(⇦ãtalk_swi_regs(¦⇦
  34068. ã?⇦
  34069. ã<⇦æout
  34070.  
  34071. in
  34072. no
  34073. ù⇦å~⇦    ãüV⇦âerrnumerrmessÀï⇦ã
  34074. talk_error⇦âcode errÀ¨⇦ãN⇦!âservicereasonswiÀÃ⇦ãH⇦;æcodeöÿhead_outhead_inøÿno
  34075. in out æ⇦çÉÃ⇦çÉÃ⇦*î(-/?DFatz™“œ §®ÁÀ⇦åÉÃ⇦
  34076. ã O⇦æstart
  34077. len
  34078.  
  34079. buf 
  34080. `⇦åÔ¸⇦âcode À⇦ã!J⇦)âservicereasonstartlenÀ ‹⇦ã" A⇦=æcodehead_out!üÿhead_in"ðÿbuf 
  34081. len
  34082. start
  34083. ?⇦ç‰ý⇦ç‰ý⇦îÉÔ05HNTgmsŷ⇦⇦å‰ý⇦
  34084. ã#L⇦æstart
  34085. len
  34086.  
  34087. buf#
  34088. ]⇦å−ò⇦âcode À⇦ã$G⇦)âservicereasonstartlenÀ ‹⇦ã% >⇦=æcodehead_out$üÿhead_in%ðÿbuf#
  34089. len
  34090. start
  34091. 6⇦çS7⇦çS7⇦î‰−âõú,28KM÷⇦åS7⇦
  34092. ã&D⇦æbuf&
  34093. len
  34094.  
  34095. ¯⇦å^,⇦âcode ptrÀ¯⇦ã'@⇦!âservicereasonlenÀ×⇦ã(?⇦3æcodehead_out'ðÿhead_in(øÿlen
  34096.  
  34097. buf& ŷ⇦çm⇦çm⇦îS^«¾ÃÖÜâõûÂ⇦åm⇦ æbuf
  34098. 3⇦å#f⇦âcode À⇦ã)B⇦!âservicereasonptrÀÀ⇦ã*=⇦,æcodehead_out)ôÿhead_in*øÿbuf
  34099. ⇦çÖ³⇦çÖ³⇦î#fy~’–‡°¶¼ÏÑ!⇦åÖ³⇦
  34100. ã+C⇦
  34101. ã,@⇦ætype,
  34102. ext+
  34103. ï⇦åä¥⇦âcode type À;⇦ã-:⇦!âservicereasonextÀÅ⇦ã.9⇦4æcodeîÿhead_out-ðÿhead_in.øÿext+ type, Ñ⇦çêfi⇦çêfi⇦&îÖäý1Dx⇧’¤ª°ÃÉÏâä/⇦åêfi⇦
  34104. ã/?⇦æext/
  34105. type
  34106. ⇦åñ–⇦âcode À⇦ã0;⇦"âservicereasontypeÀR⇦ã16⇦5æcodehead_out0ôÿhead_in1øÿtype
  34107. ext/
  34108. Ö⇦ç£ä⇦ç£ä⇦îêñ3FK^dj}◰⇨†fifi⇦å£ä⇦(æhandle&
  34109. del
  34110.  
  34111. size
  34112. name+
  34113. ¹⇦å®Ù⇦âcode À⇦ã29⇦(âservicereasonsizedelÀ ⇦ã3 0⇦Hæcodehead_out2üÿhead_in3ðÿname+ size
  34114. del
  34115.  
  34116. handle&
  34117. t⇦çq⇦çq⇦+17JPVikL⇦åq⇦æhandle
  34118. þ⇦åx⇦âcode À⇦ã47⇦$âservicereasonhandleÀ¤⇦ã52⇦/æcodehead_out4ôÿhead_in5øÿhandle
  34119. ¹⇦ç+Z⇦ç+Z⇦îqx»ÎÓæìò $&¤⇦å+Z⇦0ædone&
  34120. buf 
  34121. size
  34122. ptr
  34123. handle
  34124. *⇦å6O⇦âcode sizeÀH⇦ã61⇦1âservicereasonhandleptrsizeÀk⇦ã7(⇦Pæcodehead_out6øÿhead_in7èÿhandle
  34125. ptr
  34126. size
  34127. buf 
  34128. done& ÷⇦çw⇦çw⇦î+6†¯´ÇÍÓæìòw⇦åw⇦'æbuf#
  34129. size
  34130. ptr
  34131. handle
  34132. ⇦åp⇦âcode À⇦ã83⇦1âservicereasonhandleptrsizeÀk⇦ã9&⇦Hæcodehead_out8üÿhead_in9ìÿhandle
  34133. ptr
  34134. size
  34135. buf#
  34136. Ó⇦çߥ⇦çߥ⇦îoŵŒ ¦¹¿ÅØÚœ⇦åߥ⇦æhandle&
  34137. Þ⇦åêŒ⇦âcode handleÀ›⇦ã:-⇦âservicereasonÀ)⇦ã;0⇦.æcodehead_out:ôÿhead_in;üÿhandle& Ŷ⇦燠   æ⇦燠   æ⇦îßê,    ?    D    W    ]    c    v    |    ŵ    ”    –    É⇦几   æ⇦æhandle
  34138. þ⇦夠   ß⇦âcode À⇦ã</⇦$âservicereasonhandleÀ¤⇦ã=*⇦/æcodehead_out<ôÿhead_in=øÿhandle
  34139. ©⇦çW
  34140. +⇦çW
  34141. +⇦   ¤    ç    ú    ÿ    
  34142. 
  34143. 
  34144. 1
  34145. 7
  34146. =
  34147. P
  34148. R
  34149. >⇦åW
  34150. +⇦æmsg#
  34151. dest
  34152. handle
  34153. fi⇦å^
  34154. $⇦âcode À⇦ã>-⇦+âservicereasonhandledestÀ ß⇦ã? $⇦@æcodehead_out>üÿhead_in?ðÿhandle
  34155. dest
  34156. msg#
  34157. E⇦ç c⇦ç c⇦îW
  34158. ^
  34159. ®
  34160. Á
  34161. Æ
  34162. Ù
  34163. ß
  34164. å
  34165. ø
  34166. þ
  34167.    5⇦å c⇦0æmsg 
  34168. src_handle&
  34169.  
  34170. src_id&
  34171. handle
  34172. S⇦å, U⇦âcode idhandleÀ µ⇦ã@ #⇦$âservicereasonhandleÀ¤⇦ãA&⇦Pæcodeöÿhead_out@êÿhead_inAøÿhandle
  34173. src_id& 
  34174. src_handle& msg 
  34175. ⇦çú ⇦çú ⇦î , ⇦ œ ¡ ´ º À Ó Ù ß ò ô /⇦åú ⇦
  34176. ãB
  34177. $⇦ædateB
  34178. timeB
  34179. in+
  34180. i⇦å x⇦âcode time
  34181. date
  34182. À‡⇦ãC$⇦âservicereasonÀ)⇦ãD'⇦<æcodeòÿhead_outCôÿhead_inDüÿin+
  34183. timeB dateB ⇦ç« Õ⇦ç« Õ⇦îú L _ e x ~ ☓ ⇩ ‘ £ ¥ ð⇦å« Õ⇦æout/
  34184. date
  34185.  
  34186. time
  34187.  
  34188. R⇦å² Î⇦âcode À⇦ãE&⇦)âservicereasontime
  34189. date
  34190. À®⇦ãF!⇦>æcodehead_outEôÿhead_inFøÿtime
  34191.  
  34192. date
  34193.  
  34194. out/
  34195. ë⇦çS,⇦çS,⇦î« ² ö     !'-39LNï⇦åS,⇦æhandle&
  34196. cmd+
  34197. d⇦å^!⇦âcode À⇦ãG$⇦âservicereasonÀ)⇦ãH#⇦6æcodehead_outGøÿhead_inHüÿcmd+ handle&
  34198. í⇦çø⇦çø⇦îS^Œ­²ÅËÑ×Ýðò0⇦åø⇦Aæout/
  34199. out_size&
  34200. status&
  34201. in+
  34202. in_size
  34203. handle
  34204. Y⇦åx⇦âcode statussizeÀ ⇧⇦ãI ⇦+âservicereasonhandlesizeÀ Ô⇦ãJ ⇦aæcodeþÿhead_outIæÿhead_inJòÿhandle
  34205. in_size
  34206. in+
  34207. status& out_size& out/
  34208. ⇦çó⇧⇦çó⇧⇦0îø?AGLNVX^ce“§­ÀÆÌÒØëí7⇦åó⇧⇦æhandle
  34209. þ⇦åú☓⇦âcode errÀ¨⇦ãK⇦$âservicereasonhandleÀ¤⇦ãL⇦1æcodehead_outKhead_inLøÿhandle
  34210. u⇦ç£Ú⇦ç£Ú⇦îóú=PUhov{ŵ⇨†fiÎ⇦å£Ú⇦æbuf#
  34211. dest
  34212. handle
  34213. ¨⇦åªÓ⇦âcode À⇦ãM⇦+âservicereasonhandledestÀ ß⇦ãN ⇦@æcodehead_outMüÿhead_inNðÿhandle
  34214. dest
  34215. buf#
  34216. 1⇦çj⇦çj⇦ú%+1DJPce⇦åj⇦æ centiseconds
  34217. \⇦åq ⇦âcode À⇦ãO⇦*âservicereason centisecondsÀ⇦ãP⇦5æcodehead_outOôÿhead_inPøÿ centiseconds
  34218. á⇦çj⇦çj⇦îjq´ÇÌßåëñ÷
  34219.  Ü⇦åj⇦ælen
  34220.  
  34221. buf/
  34222. ¦⇦åc⇦âcode À⇦ãQ⇦âservicereasonÀ)⇦ãR⇦4æcodehead_outQøÿhead_inRüÿbuf/
  34223. len
  34224.  
  34225. ⇦ç¬Ï⇦ç¬Ï⇦îObgz€ŷ…‹¥§v⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(¬v—Hì—H ŒÿÿU… N_LXLSH@é⇦ ãS# ⇦àSA… _hpc_message{⇦ ãT#⇦àT@…
  34226. _strlenl⇦ ãU#
  34227. ⇦àU?…
  34228. _strcpy_⇦ ãV#/â⇦àV>… _toupperó⇦ ãW# ⇦àW=‘_talk_temporaryÛ⇦
  34229. ãYú⇦ ãX#Y¶⇦áX"‘ _talk_fasterjç⇦ ãZ#Y´⇦áZ ‘_talk_comms_reply£€⇦ ã[#Y³⇦á[‘_talk_oscli_endó/⇦ ã\#Y²⇦á\‘_talk_oscli_pollø©⇦ ã]#Y±⇦á]‘_talk_oscli_startSÕ⇦ ã^#Y°⇦á^‘_talk_date_to_riscos« M⇦ ã_#Y¯⇦á_‘_talk_date_to_dosú R⇦ ã`#Y®⇦á`‘_talk_comms_rx Q⇦ ãa#Y­⇦áa‘_talk_comms_txW
  34230. ⇦ ãb#Y¬⇦áb‘_talk_comms_end‡    Ŷ⇦ ãc#Y«⇦ác‘_talk_comms_startßI⇦ ãd#Yª⇦ád‘_talk_file_writefl⇦ ãe#Y©⇦áe‘_talk_file_read+⇦ ãf#Y¨⇦áf‘_talk_file_closeqR⇦ ãg#Y§⇦ág‘_talk_file_open£⇦ ãh#Y¦⇦áh‘_talk_filetype_to_extê‹⇦ ãi#Y¥⇦ái‘_talk_ext_to_filetypeÖ§⇦ ãj#Y¤⇦áj‘
  34231. _talk_free)⇦ ãk#Y£⇦ák‘ _talk_mallocS⇦ ãl#Y¢⇦ál‘ _talk_write‰.⇦ ãm#Y¡⇦ám‘
  34232. _talk_readÉŶ⇦ ãn#Y ⇦án ‘    _talk_swi−⇦ ão#Yfl⇦áo ⇦    ãp$Ü⇦    ãq(×⇦    ãr$Ú⇦    ãs(Õ⇦    ãt+Ñ⇦ ãu#ñ⇦ ãv#í⇦ ãw#ì⇦ ãx#ë⇦êætalk_dosmap_failp§talk_memory_unknownqtalk_service_unknownr[talk_not_workings3 talk_in_useterr@randomize$qvu
  34233. @random$qivabsxfpos_t
  34234. talk_errortalk_swi_regswchar_tsize_t
  34235.  U⇧ì◰ì
  34236. VW⇧v⇧~
  34237. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü ÿt¸(ë3ÀPW¸P¸P öt¸(ë3ÀPV¸P™FøPè◰Ä⇨Fö◰~öu¸P¸Pè◰ĸëO◰~öu¸3P¸Pè◰ĸë6◰>u ◰>u¸ë#◰>ÿu◰>ÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  34238. ⇧V⇨Fö⇨VôÇFú⇨vøVÿv¸P™FüP3ÀP3ÀPP¸ P™FðPè◰Ä⇧ø◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~þu◰~üu¸P¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  34239. ⇧V⇨Fö⇨VôÇFú⇨vø3ÀP3ÀPP¸P™FüPVÿv¸ P™FðPè◰Ä⇧ø◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~þu◰~üu¸P¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFøÇFú⇧FÇFþ⇨Fü3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè◰Ä⇧ø⇧Fö⇧Vô⇨D⇨◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~òu◰~ðu¸ËP¸Pè◰ĸë!◰~òÿu◰~ðÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~öu◰~ôu¸ïP¸Pè◰ĸë!◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFøÇFúÇFþÇFü€<tG⇩—ᆆÇËÅVÇÁǽǬ¦VÇ¢ÇfiÇ™VÇ◰ÇÇuoVÇkÇgZVÇ
  34240. VÇÇÆñŷëVÆçÆãÆÒŷÌVÆÈÆÄƺŷ´VÆ°Ƭŷ“VÆGŷAVÆ=Æ9Æ(ŷ"VÆÆÆ    ŷVÅÿÅûÅñŶëVÅçÅãŶÖVÅŵŶ|VÅxÅtÅcŶ]VÅYÅUÅDŶ>VÅ:Å6Å,Ŷ&VÅ"ÅŶVĽ☓·VijįÄ©Ä¢ĆÄ„Ä•Ä⇨☓◰VÄÄ{Äp☓jVÄfÄb☓SVÄ8} Pè◰Ä−    Fü    Vþ€|t0⇩D—Pè◰Ä−±è    Fü    Vþ€|t⇩D—Pè◰Ä−◰Nü    Fþ3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè◰Ä⇨Fî⇧Fô⇨◰~îu¸P¸Pè◰ĸëY◰~îu¸3P¸Pè◰ĸë@◰~òu◰~ðu¸§P¸Pè◰ĸë!◰~òÿu◰~ðÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F−⇨Vþ⇨Fü¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~öu◰~ôu¸§P¸Pè◰ĸë!◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  34241. −⇨Vú⇨Fø¸Pÿv ¸P™FüPVè◰Ä@PV¸ P™FðPè◰Ä⇧ø◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~þu◰~üu¸ P¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~öu◰~ôu¸(P¸Pè◰ĸë!◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFèÇFê    ⇧F⇧V⇨Fî⇨Vì⇧F
  34242. ⇧V⇨Fò⇨Vð⇧F⇧V ⇨Fö⇨Vôÿv ÿv¸P™FøP3ÀP3ÀPP¸P™FèPè◰Ä⇧ø⇧Fþ⇧Vü⇨D⇨◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~úu◰~øu¸EP¸Pè◰ĸë!◰~úÿu◰~øÿu¸[P¸Pè◰冠ûVÇ÷ÇóÇâÜVÇØÇÔÇÃ½VǹǵÇ«¥VÇ¡LJŶVÇ VÇÇÇŷûVÆ÷ÆóÆâŷÜVÆØÆÔÆÊŷÄVÆÀƼŷ¯VÆeŷ_VÆ[ÆWÆFŷ@VÆ<Æ8Æ'ŷ!VÆÆÆŷ    VÆÆŶôVŶáVÅ—Ŷ‹VʼnÅ⇩ÅyŶsVÅoÅkÅZŶTVÅPÅLÅBŶ<VÅ8Å4Ŷ'VÄÞ☓ØVÄÔÄÐÄ¿☓¹VĵıÄ ☓ŒVÄ„Ä‹Ä☓ŴVÄ}Äy☓eV☓7V☓#V☓V☓VU ¸ë3À_^⇧å]ÃU⇧ì◰ìVÇFìÇFî
  34243. ⇧F⇧V⇨Fò⇨Vð⇧F
  34244. ⇧V⇨Fö⇨Vô⇧F⇧V ⇨Fú⇨Vø3ÀP3ÀPP¸P™FüPÿv ÿv¸P™FìPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~þu◰~üu¸fP¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ì VW⇧vÇFüÇFþ 3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FüPè◰Ä⇧ø⇧Fú⇧Vø⇨D⇨◰ÿu¸P¸Pè◰ĸëX◰ÿu¸3P¸Pè◰ĸë@◰~öu◰~ôu¸ŷP¸Pè◰ĸë!◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú ⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~öu◰~ôu¸´P¸Pè◰ĸë!◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  34245. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~þu◰~üu¸äP¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~
  34246. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü¸Pÿv ¸ P™FêP3ÀP3ÀPP¸P™FøPè◰Ä⇨Fö⇧Fð⇧Vî⇨D⇨⇧Fô⇧Vò⇨E⇨◰~öu¸P¸Pè◰ĸëY◰~öu¸3P¸Pè◰ĸë@◰~ìu◰~êu¸ÿP¸Pè◰ĸë!◰~ìÿu◰~êÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìð†„ÇîèVÇäÇàÇÏÉVÇÅÇÁÇ°ªVǦǢǖ’VÇ™Ç⇨dVÇVÇ    ÇÆôŷîVÆêÆæÆÕŷÏVÆËÆÇƽŷ·VƳƯŷ¢VÆLŷFVÆBÆ>Æ-ŷ'VÆ#ÆÆŷVÆÆÅöŶðVÅìÅèŶÛVÅ’Ŷ⇧VÅÅ◰ÅrŶlVÅhÅdÅSŶMVÅIÅEÅ;Ŷ5VÅ1Å-ŶVÄÔ☓ÎVÄÊÄÆĵ☓¯VÄ«ħÄ„☓‘VÄ…Ä⇦Ä~☓xVÄtÄp☓cVÄQ ÿ VW⇧v⇧~ÇFüÇFþ3ÀP3ÀPP¸P™FôP¸Pÿv¸P™FüPè◰Ä⇨Fò⇧Fø⇨⇧Fú⇨◰~òu¸P¸Pè◰ĸëF◰~òu¸3P¸Pè◰ĸë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇨Fü⇧F⇨Fþ¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëE◰þu¸3P¸Pè◰ĸë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFüÇFþ¸Pÿv¸P™FøPVè◰Ä@PV¸P™FüPè◰Ä⇧ø◰ÿu¸P¸Pè◰ĸëE◰ÿu¸3P¸Pè◰ĸë-◰~úu◰~øt ◰~úÿu◰~øÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFòÇFô⇧F⇧V⇨Fø⇨Vö⇧F
  34247. ⇧V⇨Fü⇨Vú¸Pÿv¸ P™FæP◰~
  34248. |◰~v⇧Fë3ÀP◰~
  34249. |◰~v⇧F ë3ÀP¸ P™FòPè◰Ä⇨Fþ⇧Fì⇧Vê⇨D⇨⇧Fð⇧Vî⇨E⇨◰~þu¸P¸Pè◰ĸëF◰~þu¸3P¸Pè◰ĸë-◰~èu◰~æt ◰~èÿu◰~æÿu¸[P¸Pè◰ĸë3À_^⇧å]ÃU⇧ì◰ìVÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P¸P3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëN◰þu¸3P¸Pè◰ĸë6◰>u ◰>u¸ë#◰>ÿu◰>ÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  34250. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPè◰Ä⇧ð◰þu¸@†XîVÇ—‹VljÇ⇩Ç☓Ç}ÇwÇqÇjÇd^VÇZÇVÇLFVÇBÇ>1VÇÆçŷáVÆÝÆÙƼŷ¶VƲƮƣŷ‡VÆ−Æ”ŷpVÅìŶæVÅâÅÞÅÁŶ»VÅ·ųÅ©Ŷ£VÅflÅœŶ‰VŶ{VÅHŶBVÅ>Å:ÅŶVÅÅÅ☓ÿVÄûÄ÷☓êVÄfl☓−VĔĒÄt☓nVÄjÄfÄ[☓UVÄQÄM☓4V¢ µûP¸Pè◰ĸëX◰þu¸3P¸Pè◰ĸë@◰~þu◰~üu¸äP¸Pè◰ĸë!◰~þÿu◰~üÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëE◰þu¸3P¸Pè◰ĸë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸[P¸Pè◰ĸë3À^⇧å]ÃU⇧ì◰ìVÇFüÇFþÿvÿv¸P™FøP3ÀP3ÀPP¸P™FüPè◰Ä⇧ð◰þu¸P¸Pè◰ĸëE◰þu¸3P¸Pè◰ĸë-◰~úu◰~øt ◰~úÿu◰~øÿu¸[P¸Pè◰ĸë3À^⇧å]Ãå†ÇŦŶ VņÅ—Å{ŶuVÅqÅmÅcŶ]VÅYÅUŶHVÅ ŶVÅÄýÄà☓ÚVÄÖÄÒÄÈ☓ÂVľĺ☓­VÄd☓^VÄZÄVÄE☓?VÄ;Ä7Ä&☓ VÄÄÄ☓VÄÄf Communications with ARM are already in useCommunications with ARM are not workingThe required ARM service is unknownThe requested ARM memory does not existUnable to perform DOSMap conversionUnable to claim required ARM memoryUnable to release " ARM memoryUnable to open RISC OS fileUnable to close RISC OS fileUnable to read from RISC OS fileUnable to write to RISC OS fileUnable to register as a communications clientUnable to deregister as a communications clientUnable to transmit messageThere is no message to receive6⇦èTALK.C”U"À“OWghil$o$r[tauowtyzz⇦|™} ®€¼ŵÁ◰ÉɆԇÙfiÞflê¢ò£ò¦¨©+«0­5®C°H²T³bµg·s¸Ŵºŷ»⇦ƉÔ−ÕfiÖ£ׯÚ·Û·ÞÝàâáðãõåúæèêë'í,ï8ðFòKóMýS ^chssœ¦«¹¾ÃÑ Ö"â#ð%õ'(*+4B#C(D-G9H9KaMfNtPyR~S…U’W‡X«Z°\¼]Ê_Ï`ÑjÖxäyézî{ø}ý~€Ŵ+◰1⇨D⇩D⇧m‰r‘x’ŷ›⇧”’„fl—¤Œ°œ¾‡ÃflϠݢâ£ä­ê»ñ¼ö½ûÀÁÄ.Æ3ÇAÉFËKÌYÎ^ÐjÑxÓ}Õ⇨֖؆Ùfiæ£õ®ö³÷¸øÄûÎüÎÿû&    + 7 EJVdikq+x,}-ŵ0‰1‰4¶6»7É9Î;Ó<á>æ@òACEFH$I&W+g6h;i@jLkXndodp…s–u†vªx¯z´{Â}ÇÓ€áŵæ☓òŶ⇦”¤¥¦§*¨6«B¬B¯j±o²}´ŵ¶·”¹Œ»¦¼´¾¹ÀÅÁÓÃØÄÚÎßÜêÝïàôáôâ    å'    ç,    è:    ê?    ìD    íR    ïW    ñc    òq    õv    ÷ŵ    ø‘    ú”    û–    ‡    ¤    ©    ®    º    º    â    ç    õ    !ú    #ÿ    $
  34251. &
  34252. (
  34253. ),
  34254. +1
  34255. -=
  34256. .K
  34257. 0P
  34258. 1R
  34259. =W
  34260. K^
  34261. Lc
  34262. Mh
  34263. Nt
  34264. Q€
  34265. R€
  34266. U©
  34267. W®
  34268. X¼
  34269. ZÁ
  34270. \Æ
  34271. ]Ô
  34272. _Ù
  34273. aå
  34274. bó
  34275. dø
  34276. f g i j x ⇦, ⇨1 ⇩6 ™B ‰B •l ‘w ›ŵ ”⇦ „„ —œ Œ¡ œ¯ ‡´ flÀ  Î ¢Ó ¤ß ¥í §ò ¨ô ´ú Ã Ä Ç È É< ÊA ÍF ÏL ÐZ Ò_ Ôe Õs ×x Øx Ú‘ Ûfi Ý£ Þ¥ ê« ù² ú· û¼ ü ÿÈ È ñ ö     
  34277.  !!9GLNS+^,c/h0h3”5Œ6¨8­:²;À=Å>Å@ÝAëCðDòSøef ghk(m(nxo◰r‰t“u¢w§y­z»|À}ÀØ€æŵë◰í…óœú†ÿ‡ ¡¤8¦=§K©P«U¬c®h¯{±⇨²–´†µfiÁ£ÏªÐ¯Ñ´ÒÀÕÌÖÌÙõÛúÜÞàá ã%å1æ?èDêPë^ícîeùjqv    { ¯´ÂÇÌÚßß÷ 
  34278. ! +89<"="@JBOC]EbGgHuJzKzM‹N P¥Q§Ñ⇩t€UTIL8⇦TC86 Borland Turbo C++ 3.00’⇦é”U"UTIL.Cª⇦éÀ“U"UTIL.Hü⇦éRC:\TC\INCLUDE\CTYPE.H´⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\STRING.H`⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦éRC:\TC\INCLUDE\STDARG.Hr⇦éRC:\TC\INCLUDE\STDIO.H¶⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\CONIO.HÁ⇦éRC:\TC\INCLUDE\DIR.H^⇦éRC:\TC\INCLUDE\DOS.HW⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éÓU"SWI.HF⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦å…⇦å⇨⇦çp⇦çp⇦ î T⇦åp⇦å"j⇦    ãüZ⇦âerrnumerrmessÀó⇦ã
  34279. talk_error ⇦
  34280. ã?⇦æerrþÿdoneM⇦ç[1⇦ç[1⇦î")JOUWË⇦å[1⇦
  34281. ãS⇦
  34282. ãR⇦æleaf
  34283. dir
  34284. path
  34285. c⇦å`,⇦,ænextptrpath
  34286. dir
  34287. leaf
  34288. í⇦çÃÉ⇦çÃÉ⇦î[`tŷ⇩‘¯µ¿Ŵ⇦åÃÉ⇦ ã#H⇦
  34289. ã7⇦ æfunc
  34290. attrib
  34291. path
  34292. ⇦åϽ⇦    ãL⇦    ã     G⇦    ã!B⇦    ã"K⇦    ã#Pý⇦    ã%6⇦    ã&=⇦Mâ ff_reserved%    ff_attribff_ftime
  34293. ff_fdate
  34294. ff_fsizeff_name&À+⇦ã$ffblk+⇦gæcountdoneêÿextìÿfile òÿdir!,ÿdrive"üÿname#nÿffblk$¾ÿpath
  34295. attrib
  34296. func ó⇦çm⇦çm⇦îÃÏþHR_eg⇦åm⇦æleaf
  34297. dir
  34298. J⇦åp⇦ædir
  34299. leaf
  34300. J⇦ç×´⇦ç×´⇦împfl²Õs⇦å×´⇦ æfunc
  34301. attrib
  34302. path
  34303. ⇦åà«⇦    ã'H⇦    ã(G⇦    ã)F⇦    ã+(⇦ âr+À(⇦ã*talk_swi_regs(”⇦Sæcountleaf'Øüdir(Øýname)Øþregs*Øÿerrpath
  34304. attrib
  34305. func
  34306. ⇦ç‘ù⇦ç‘ù⇦Dî×àçì⇦fl¤ÀÈÏÖÝâäæíôû    ,7;M[rv⇦⇩6⇦å‘ù⇦æformat
  34307. active
  34308. +⇦å„ó⇦
  34309. ã,C⇦    ã->⇦8æargptr,øÿchars-úÿposactive
  34310. format
  34311. Œ⇦çñ—⇦çñ—⇦ î‘„Èí„⇦åñ—⇦æformat
  34312. Ì⇦å÷‹⇦æargptr,þÿformat
  34313. ⇦ç6R⇦ç6R⇦
  34314. îñ÷2[⇦å6R⇦æcancel
  34315. msg
  34316. err
  34317. ⇦å>J⇦#æcherr
  34318. msg
  34319. cancel '⇦ç³Õ⇦ç³Õ⇦$î6>BGJiuz◰⇦™„¨­¯Õ⇦å³Õ⇦ æmsg
  34320. ⇦å¹Ï⇦æchþÿmsg
  34321. =⇦çò„⇦çò„⇦î³¹çìî:⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(ò=—H§e—H ŒÿÿU… N_SCOPY@æ⇦ ã.#0⇦à.f…
  34322. _talk_freeQ⇦ ã/# ⇦à/e… _talk_mallocw⇦ ã0#⇦à0d… _talk_writeÆ⇦ ã1#⇦à1c…
  34323. _talk_readW⇦ ã2#⇦à2b…     _talk_swi¢⇦ ã3#⇦à3a… _fnsplit⇦ ã4#/⇦à4`… _fnmerge⇦ ã5#1⇦à5_…     _findnext ⇦ ã6#-⇦à6^…
  34324. _findfirst5⇦ ã7#,⇦à7]…
  34325. _getche“⇦ ã8#+⇦à8\…    _getchû⇦ ã9#*⇦à9[…_exitN⇦ ã:#,⇦à:Z…
  34326. _atexitu⇦ ã;#(⇦à;Y… _vprintfù⇦ ã<#'⇦à<X…     _vfprintf’⇦ ã=#&⇦à=W… _sprintfü⇦ ã>#$⇦à>V…
  34327. _printfq⇦ ã?##⇦à?U… _fprintf    ⇦ ã@#"⇦à@T…     __streams¢⇦
  34328. ãC%⇦Mâlevelflags
  34329. fdholdbsizebufferCcurpCistemp
  34330. tokenÀ⇦ ãBFILEõ⇦    ãABï⇦àAS… _strrchrú⇦ ãD#⇦àDP… _strpbrkú⇦ ãE#⇦àEO… _strncpyï⇦ ãF#⇦àFN…
  34331. _strcpy_⇦ ãG#⇦àGM… _tolowerö⇦ ãH#⇦àHL‘ _util_prompt³{⇦ ãI#⇦áI1‘ _util_retry6f⇦ ãJ#⇦áJ0‘ _util_errorñ¸⇦ ãK#⇦áK/‘ _util_status‘‡⇦ ãL#⇦áL.‘_util_arm_wildcard×⇦ ãM#⇦áM-‘_util_wildcardÃÃ⇦ ãN#⇦áN,‘_util_arm_split[¨⇦ ãO#⇦áO+⇦ ãP#ÿ⇦ ãQ#⇦ ãR#⇦    ãT⇦    ãU⇦    ãW⇦6âloadexeclengthattribtypenameWÀJ⇦    ãV.ñ⇦    í⇦âdirTleafUbufferVÀD⇦ãSarm_mem_struct.õ⇦    í€⇦ ãX#⇦ ãY#⇦ ãZ# ⇦ ã[#⇦ ã\#
  34332. ⇦ ã]#⇦ ã^#⇦ ã_#⇦æ!@util_arm_wildcard_prepare$qpzct1Pm@initialise$qvQ@tidy$qvRarm_mem arm_mem_dosS@randomize$qv\
  34333. @random$qi]abs_arm_mem_structS
  34334. talk_errortalk_swi_regs*wchar_tFILEBfpos_tva_list,size_t
  34335.     util_funcffblk$4 U⇧ì¡ tÿ6ÿ6è◰Ä]ÃU⇧ì◰ì◰>u,¸Pè◰ĸP¸Pè◰Ä⇨Fþ◰~þt¸ëÇ3À⇧å]ÃU⇧ìVW⇧v¸!Pÿvè◰Ä⇧øë⇧Ç@⇧ð¸!PVè◰Ä⇧ø ÿuê◰~t⇧Æ+FPÿvÿvè◰Ä⇧Æ+F⇧^ØÆ◰~t
  34336. Vÿvè◰Ä_^]ÃU⇧ìŴìÔVW⇧~3ÀP3ÀP™ŷ,ÿP™FüPÿvè◰Ä
  34337. ÿv™F¾Pÿvè◰Ä⇨Fê3öëa€~Ü.tN⇩FÓ—÷ÐŶFuCF™FìP™FòP3ÀP3ÀP™FÜPè◰Ä
  34338. ™FìP™FòP™ŷ,ÿP™FüP™ŷnÿPè◰Ä
  34339. ÿt
  34340. ™ŷnÿPÿ×◰Ä™F¾Pè◰Ä⇨Fê◰~êt−⇧Æ_^⇧å]ÃU⇧ìÿv¸Pè◰ĸ.P¸Pè◰ÄP3ÀP¸Pè◰ÄHZ;Ðu¸.P¸Pè◰Ä⇧ØÆÿv¸Pè◰Äÿ6ÿ6¸P¸Pè◰Ä]ÃU⇧ìŴì(VWè9þ Àt3Àéfi™ŷØüP™ŷØýPÿvè_þ◰Ä™ŷØüP™ŷØýPèaÿ◰Ä⇧ðÇFÚÇFØ
  34341. ¸-−⇧⇧ÈÚ⇨^Þ⇨Nܸ-−⇧⇧ÈÚ⇨^â⇨NàÇFæÇFäÇFêÇFèÇFîÇFì¸-−⇧⇧ÈÚ⇨^ò⇨Nð öu™FØP™FØP3Àº PRè◰Ä⇧ð3ÿéÎÿ6ÿ6¸P¸Pè◰Ä⇧ð öuw⇧Fä Fæto÷Ft◰>u ◰>u¸ë3Àë#◰>u◰>t◰>u ◰>u¸ë3À Àt*G¸P™ŷØýP¸$P™ŷØþPè◰Ä◰~t ™ŷØþPÿV◰Ä öu™ŷØüP™ŷØýPè%þ◰Ä⇧ðÇFæÇFä öu™FØP™FØP3Àº PRè◰Ä⇧ð öu◰~êÿté%ÿ◰~èÿtéÿ⇧Ç_^⇧å]ÃU⇧ì◰ì™FúP¸P¹è¸)Pè◰Ä™F⇨Føÿvøÿvè◰Ä◰~t%™Fú⇧Ø⇩—P¸{Pè◰Ä¡@»−÷û⇨⇧å]ÃU⇧ì◰ì¸#P3ÀPèΆXÇøÇëÇàÚVÇÖÇÍ½V«Vǧ¤VdžkV!VÇÇÆýÆöÆïÆèÆØÆÑŷµVƱƪƦŷ—VÆxÆtÆoÆlÆAÆ=Æ8Æ5Æ(Æ$ÆÆŶÐVÅÌÅÅÅÁŶºVŶŶ¨VŤŶ“VÅ‘ŶŷVÅŵŶxVÅtŶWV    Ŷ?VŶ#V☓òV
  34342. ☓âV☓ºV☓‡V☓VÄz☓kVÄdÄQ☓<VÄ4☓.VÄ*TÄ$☓VÄÄÄÄq ÷ÿ•ÿ◰Ä™F⇨Fþÿvþÿv¸ Pè◰ĸP¸ Pè◰ĸPè◰Ä⇧å]ÃU⇧ìVW⇧~ ÿt¸“ë¸#Pÿv¸ŴP3ÀPè8ÿ◰ÄèPè◰Ä⇧ðë èPè◰Ä⇧ð◰þat◰þrt     ÿtæ◰þcuá◰þau    ÿvè^ÿ◰ĸ#P3ÀPèðþ◰Ä◰þru¸ë3À_^]ÃU⇧ì◰ìÿv¸‡P3ÀPèÊþ◰Äè⇨Fþ¸Pè◰Äÿvþè◰Ä=yu¸ë3À⇧å]ç†V☓ÞV☓ÕVÄÑ☓ËV ľÄ—☓oV☓kV ☓aV☓]V ÄPÄIÄD☓.V☓$VÄ Ä☓VÄ/ –|/-\.:%s%s                                                                                %c
  34343. %s: Abort, Retry%s, Cancel%s (Y/N)?¤⇦èUTIL.C”U"ª“£:=>GM"P)S3TDWO[U\Wh[j`ncqtryoŷv⇩x‘y¢}¯~¿Ëϛç„úŒþ‡ ¡(¤D¨R–_¬e­gµm·p¸}ºfl¼²½¿¾ÕÉ×ÓàÖìÙÿÜÝÞß4à4áMâWãaäkåkæ☓éflí¤ð¼ô¼÷úý&7MWêr⇦⇩‘„¦¦°¶ Â#Â%È&ß(í0ñ5÷67
  34344. 89<(=2G6L>O[RiPuV⇦W„X£Y¯`³e¹hÉkÏnÙoîÁ⇩t€WIMP9⇦TC86 Borland Turbo C++ 3.00’⇦é
  34345. ”U"WIMP.C·⇦é©“U"WIMP.H⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\_DEFS.H¸⇦éRC:\TC\INCLUDE\_NULL.Hfl⇦é­“U"TALK.H!⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éRC:\TC\INCLUDE\STRING.H`⇦éRC:\TC\INCLUDE\STDIO.H¶⇦éRC:\TC\INCLUDE\DOS.HW⇦é´“U"HPC.Hm⇦éRC:\TC\INCLUDE\STDLIB.Hu⇦éÓU"SWI.HF⇦é­“U"TALK.H!⇦éÀ“U"UTIL.Hü⇦å…⇦åŷ⇦    ã(+⇦ ârÀ(⇦ãtalk_swi_regs(§⇦    ãüX⇦âerrnumerrmessÀñ⇦ã
  34346. talk_error
  34347. ã;⇦æregsÖÿerrþÿu⇦ç4X⇦ç4X⇦î$*0÷⇦å4X⇦å:R⇦6âax
  34348. bx
  34349. cx
  34350. dx
  34351. si
  34352. di
  34353. cflag
  34354. flags
  34355. À⇦ãWORDREGSÄ⇦0âalahblbhclchdldhÀê⇦ãBYTEREGSÓ⇦âxhÀ–⇦ ãREGS⇦ æregsðÿÃ⇦ç_-⇦ç_-⇦
  34356. î4:[¶⇦å_-⇦åb*⇦ç{⇦ç{⇦ î_bkyØ⇦å{⇦å⇦æerrdoneO⇦ç¯Ý⇦ç¯Ý⇦î{ŷ ¤ª¬]⇦å¯Ý⇦å³Ù⇦
  34357. æerr⇦çè¤⇦çè¤⇦¼Àå¸⇦åè¤⇦ætimeout
  34358. a⇦åï‡⇦+æendøÿe
  34359. src_handleüÿtimeout
  34360. b⇦ç¢é⇦ç¢é⇦&îèï
  34361. 9=EGLPYjnŷ⇩‰‡K⇦å¢é⇦
  34362. ã N⇦ æpath 
  34363.  
  34364. leaf 
  34365. cursor
  34366. ⇦å¦å⇦'æerrcursor
  34367. leaf 
  34368. path 
  34369.  
  34370. ‘⇦ç ⇦ç ⇦¯³Ã⇦å ⇦
  34371. ã!I⇦æhandle!
  34372. timeout
  34373. ±⇦åt⇦5æendøÿe
  34374. src_handleüÿtimeout
  34375. handle! ²⇦çã§⇦çã§⇦,î 1E`dpv~€Ŷ⇨‘–¨¬ÇËÏÝ/⇦åã§⇦æflags
  34376. handle
  34377. Ê⇦åç£⇦æerrhandle
  34378. flags
  34379. S⇦ç7R⇦ç7R⇦îãçðô4‰⇦å7R⇦æflags!
  34380. timeout
  34381. ⇦åBG⇦4æendøÿe
  34382. src_handleüÿtimeout
  34383. flags! ⇦çy⇦çy⇦,î7B]q…‘†¢ª¬±µ¼ÃÔØó÷û    ª⇦åy⇦æsuggest 
  34384. path 
  34385. b⇦åu⇦æerrpath 
  34386. suggest 
  34387. ë⇦çc%⇦çc%⇦î `©⇦åc%⇦ætimeout
  34388. a⇦åj⇦+æendøÿe
  34389. src_handleüÿtimeout
  34390. b⇦ç*]⇦ç*]⇦,îcjŶ−´¸ÄÊÒÔÙÝäëü#%z⇦é…⇦ê|„(_TEXTCODE_DATADATA_BSSBSSDGROUPÑ—(*—HŶŶ—H ŒÿÿU… _util_retry©⇦ ã"#A⇦à"r…    _int86M⇦ ã##@⇦à#q… _strncpyï⇦
  34391. ã%I⇦ ã$#%⇦à$p…
  34392. _strcpy_⇦ ã&#%⇦à&n… _talk_fasterj⇦ ã'#&⇦à'm…_talk_comms_rx◰⇦ ã(#%⇦à(l…_talk_comms_txŴ⇦ ã)#$⇦à)k…_talk_comms_end4⇦ ã*##⇦à*j…_talk_comms_start9⇦ ã+#"⇦à+i…     _talk_swi¢⇦ ã,#!⇦à,h…
  34393. _atexitu⇦ ã-#6⇦à-g‘_bufferw⇦    ã0üA⇦    ã2*⇦    ã3<⇦âcursorleaf2path3ÀB⇦    ã1.⇦    í~⇦âhandleÀI⇦    ã4."⇦    í}⇦âhandleflagsÀ%⇦    ã5.⇦    í|⇦âflagsÀª⇦    ã6.⇦    í{⇦    ã87⇦    ã96⇦âpath8suggest9À‘⇦    ã7.⇦    íz⇦Dâraw0start_tx1start_rx4poll_tx5poll_rx6    saveas_tx7Àü(⇦    ã/ü..⇦    í⇦âreasondata/ÀY⇦    ã..+⇦    í€⇦á.d‘_wimp_saveas_receivec−⇦ ã:#⇦á:@‘ _wimp_saveas?⇦ ã;#⇦á;?‘_wimp_poll_receive7„⇦ ã<#⇦á<>‘
  34394. _wimp_pollã=⇦ ã=#⇦á==‘_wimp_start_receive J⇦ ã>#⇦á><‘ _wimp_start¢⇦ ã?#⇦á?;‘_wimp_find_receiveèþ⇦ ã@#⇦á@:‘
  34395. _wimp_find¯⇨⇦ ãA# ⇦áA9⇦ ãB# ⇦ ãC##⇦ ãD#"⇦ ãE#⇦    ãF⇦ ãG#⇦ ãH#⇦ ãI#⇦ ãJ#⇦ ãK#⇦ ãL#⇦ ãM#⇦ ãN#⇦+æ@initialise$qvB{@tidy$qvC_@multitask$qvD4@read_monotonic_time$qvEwimp_wrong_messageF
  34396. errfrontend_handleclient_handle@randomize$qvK
  34397. @random$qiLabsNfpos_t
  34398. talk_errortalk_swi_regswchar_tsize_t
  34399. REGSBYTEREGSWORDREGSÀ U⇧ì◰ì*™FÖP™FÖP3ÀºBPRè◰Ä⇨Fþ◰~þt3Ò3Àë⇧VØ⇧FÖ⇧å]ÃU⇧ì◰ì3ÀPPè◰ÄÇFðº™FðP™FðP¸Pè◰Ä⇧å]ÃU⇧ì¡ tÿ6ÿ6è◰Ä]ÃU⇧ìV◰>u$¸_Pè◰ĸPè◰Ä⇧ð öt⇧ÆëÇ3À^]ÃU⇧ìVèÅÿ⇧ð öt⇧Æë%Ç
  34400. ǸP3ÀºPRÿ6ÿ6è◰Ä
  34401. ^]ÃU⇧ì◰ìV¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34402. ⇧ðè'ÿèðþFV⇨Vú⇨Føë¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34403. ⇧ð ötèÀþ;Vú|Ùu;FørÒ öu¡ 
  34404. t¸
  34405. P¸ Pè◰ľ öt¸P¸&P⇧ÆPè◰Ä Àu☓ öt⇧Æë⇧Fþ⇧Vü£⇨3À^⇧å]ÃU⇧ìVèÒþ⇧ð öt⇧ÆëUÇ
  34406. Ç⇧F⇧V£⇨ ¸Pÿv¸Pè◰ĸPÿv
  34407. ¸$Pè◰ĸPÿ6ÿ6ÿ6ÿ6è◰Ä
  34408. ^]ÃU⇧ì◰ìVW⇧~¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34409. ⇧ðèþèÉýFV⇨Vú⇨Føë¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34410. ⇧ð öu⇧Fþ⇧Vü;u;tèý;Vú|Çu;FørÀ öu◰>
  34411. u◰>t¸
  34412. P¸ Pè◰ľ öt¸P¸8P⇧ÆPè◰Ä Àtéjÿ öt⇧Æë¡⇧ ⇨E⇨3À_^⇧å]ÃU⇧ìVè’ý⇧ð öt⇧Æë@Ç
  34413. Ç⇧F⇧V£⇨ ⇧F
  34414. ⇧V£⇨¸Pÿ6ÿ6ÿ6ÿ6è◰Ä
  34415. ^]ÃU⇧ì◰ìVW⇧~¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34416. ⇧ðèÔüè‡üFV⇨Vú⇨Føë¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34417. ⇧ð öu⇧Fþ⇧Vü;u;tè[ü;Vú|Çu;FørÀ öu◰>
  34418. u◰>t¸
  34419. P¸ Pè◰ľ öt¸P¸MP⇧ÆPè◰Ä Àtéjÿ öt⇧Æë¡4†ççVÇÝÇÒÌVÇÈÇÄǾÇ·ÇfiÇ—ŶVÇŵÇ~ÇrVVÇSÇOÇC/VÇ,Ç(Ç$Ç ÇÇÇÇ ÇÆüÆöÆÔÆÐŷ»VƱƦŷ VƆÆ—Æ‹Æ⇧ÆrÆlŷYVÆVÆRÆFŷ*VÆ'Æ#ÆŷVÆÅüÅøÅôÅïŶéVÅåŶØVÅÔÅÊÅÆÅ»ŵÅ−Å”Ŷ}VÅsÅhŶbVÅ^ÅZÅUÅQŶ2VÅ/Å+ÅŶVÅÄüÄð☓àVÄÝÄÙÄÍÄÈÄÂĦ☓”V    Ä’☓⇧V ÄTÄŴ☓tVÄqÄmÄgÄc☓VV☓?V☓V
  34420. } 2ü⇧ ⇨E⇨3À_^⇧å]ÃU⇧ìVèeü⇧ð öt⇧Æë@Ç
  34421. Çÿv¸ Pè◰Äÿv¸ Pè◰ĸPÿ6ÿ6ÿ6ÿ6è◰Ä
  34422. ^]ÃU⇧ì◰ìV¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34423. ⇧ðè¬ûèuûFV⇨Vú⇨Føë¸P™FüP3ÀPÿ6ÿ6è◰Ä
  34424. ⇧ð öu⇧Fþ⇧Vü;u;tè3û;Vú|Çu;FørÀ öu◰>
  34425. u◰>t¸
  34426. P¸ Pè◰ľ öt¸P¸hP⇧ÆPè◰Ä Àtéjÿ öt⇧Æë3À^⇧å]ÃÁ†ŒŶVÅ    Äþ☓øVÄôÄðÄêÄãÄÊÄÄ☓±VÄ®ĪÄfi☓ŵVÄÄ{Äo☓_VÄ\ÄXÄTÄPÄK☓EVÄA☓8VÄ4Ä,Ä&ÄÄ" V ⇨Unexpected message receivedFailed to connectFailed to start editFailed to poll edit statusFailed to open SaveAs windowÃ⇦èWIMP.C
  34427. ”U"·“¿SXZ[0b4g:jDkIl[t_wbxyŵ{⇦⇧ŷ‰‘•†‹¤„ª–¬¡¯¦³§¸ªÀ­Ì®å·è¾ïÂ
  34428. ÃÈÆ9ÌLÎYÏgÒjÕŷ؉ٜڇå¢ë¦ì«ï³ð¿ñÌòÌóÝôÝ÷îø     14E``Ŷ–¥¨!Ç$Ï%Û&Ý0ã5ç6ì9ô:;>?4I7PBT]U`[qX…Y…_±aÃbÑeÔhókûlm    w|}€ Ŵ,ŵ9ŶFŷ`•c„jŒŶœ⇦¡−fi´fl´¥Ù§ë¨ù«ü®±#²%,⇩tñ=Ã7GVof◰¤'•\N—­´ºyÎ@initialise$qv­_armfile_create_dir_armfile_translate_dos_riscos_armfile_translate_riscos_dos
  34429. _cli_redir  _hpc_messageK_svc_swi[_talk_comms_reply(_talk_comms_rx(_talk_comms_start(_talk_date_to_dos(_talk_ext_to_filetype(_talk_file_open(_talk_filetype_to_ext(_talk_oscli_end(
  34430. _talk_read(    _talk_swi(_talk_temporary(_wimp_find_receive Œ´fMY9›`B¡⇩R◰y'¬o+#ÀCLI! HPC!KSVC![SWI!­UTIL!m    WIMP! _armfile_copy_riscos_dos_armfile_error_armfile_temporary_buffer
  34431. _cli_error  _cli_simple _swi_swi­_talk_comms_tx(_talk_file_close(_talk_file_write(
  34432. _talk_free(_util_arm_splitm     _util_errorm    
  34433. _wimp_find _wimp_poll_receive _wimp_saveas _wimp_saveas_receive dÊ—£}X0²&ѺulG>«,Ã’OÜ @finalise$qv­@hpc_is_software$qvKARMFILE!TALK!(_armfile_copy_dos_riscos_armfile_mtask _svc_address[_talk_comms_end(_talk_date_to_riscos( _talk_faster(_talk_file_read( _talk_malloc(_talk_oscli_poll(_talk_oscli_start( _talk_write(_util_arm_wildcardm     _util_promptm     _util_retrym     _util_statusm    _util_wildcardm    
  34434. _wimp_poll _wimp_start _wimp_start_receive Õ  ç  C%=19 € !(B%+12)=0 …Ö    ÿ "Filer_Run "+$(D%)×    Q%=32Ø  Íú ý Q%>=32È−"Wimp_CloseDown"ÿ WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickarmeditswiGÿÿÿoÀ`‡-HarmeditswiGÿÿÿoÀ`‡-HEhhNickïWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  34435.     File        : armeditswi.h
  34436.     Date        : 21-Feb-97
  34437.     Author      : © A.Thoukydides, 1996, 1997
  34438.     Description : Interface to the ARMEdit module.
  34439. */
  34440.  
  34441. #ifndef armeditswi_h
  34442. #define armeditswi_h
  34443.  
  34444. // Include oslib header files
  34445. #include "OS:os.h"
  34446.  
  34447. // SWI names and numbers
  34448. #define ARMEdit_ControlPC 0x4BC40
  34449. #define ARMEdit_TalkStart 0x4BC41
  34450. #define ARMEdit_TalkEnd 0x4BC42
  34451. #define ARMEdit_TalkTX 0x4BC43
  34452. #define ARMEdit_TalkRX 0x4BC44
  34453. #define ARMEdit_TalkAck 0x4BC45
  34454. #define ARMEdit_HPC 0x4BC46
  34455. #define ARMEdit_Polling 0x4BC47
  34456. #define ARMEdit_TalkReply 0x4BC48
  34457.  
  34458. // Operations to perform using ARMEdit_ControlPC
  34459. #define ARMEditControlPC_FreezeFullScreen 0x0
  34460. #define ARMEditControlPC_FreezeWindow 0x1
  34461. #define ARMEditControlPC_Reset 0x2
  34462. #define ARMEditControlPC_Quit 0x3
  34463.  
  34464. // Flags defined for ARMEdit_TalkStart
  34465. #define ARMEditTalkStart_FlagsARMEditMessages 0x1
  34466.  
  34467. // Message buffers
  34468. #define ARMEditTalk_BufferSize 1024
  34469. typedef char armedit_talk_buffer[ARMEditTalk_BufferSize];
  34470.  
  34471. #ifdef __cplusplus
  34472. extern "C" {
  34473. #endif
  34474.  
  34475. /*
  34476.     Parameters  : operation - The operation to perform.
  34477.     Returns     : os_error  - Pointer to a standard error block.
  34478.     Description : Control the PC front-end.
  34479.                   This calls XARMEdit_ControlPC.
  34480. */
  34481. os_error *xarmedit_control_pc(int operation);
  34482.  
  34483. /*
  34484.     Parameters  : operation - The operation to perform.
  34485.     Returns     : void
  34486.     Description : Control the PC front-end.
  34487.                   This calls ARMEdit_ControlPC.
  34488. */
  34489. void armedit_control_pc(int operation);
  34490.  
  34491. /*
  34492.     Parameters  : id        - Pre-allocated ID for this task.
  34493.                   flags     - The flags.
  34494.                   func      - Pointer to a function to be called when a
  34495.                               message is available, or 0 for none.
  34496.                   r12       - Value for r12 to contain when the function is
  34497.                               called.
  34498.                   rhandle   - Optional variable to receive the unique client
  34499.                               handle for this task.
  34500.                   rpoll     - Optional variable to receive the pointer to a
  34501.                               poll word for this task.
  34502.     Returns     : os_error  - Pointer to a standard error block.
  34503.     Description : Register a new client task.
  34504.                   This calls XARMEdit_TalkStart.
  34505. */
  34506. os_error *xarmedit_talk_start(int id, int flags, void *func, int r12,
  34507.                               int *rhandle, int **rpoll);
  34508.  
  34509. /*
  34510.     Parameters  : id        - Pre-allocated ID for this task.
  34511.                   flags     - The flags.
  34512.                   func      - Pointer to a function to be called when a
  34513.                               message is available, or 0 for none.
  34514.                   r12       - Value for r12 to contain when the function is
  34515.                               called.
  34516.                   rhandle   - Optional variable to receive the unique client
  34517.                               handle for this task.
  34518.                   rpoll     - Optional variable to receive the pointer to a
  34519.                               poll word for this task.
  34520.     Returns     : int       - The unique client handle for this task.
  34521.     Description : Register a new client task.
  34522.                   This calls ARMEdit_TalkStart.
  34523. */
  34524. int armedit_talk_start(int id, int flags, void *func, int r12, int *rhandle,
  34525.                        int **rpoll);
  34526.  
  34527. /*
  34528.     Parameters  : handle    - The previously assigned handle for this client
  34529.                               task.
  34530.     Returns     : os_error  - Pointer to a standard error block.
  34531.     Description : Deregister a client task.
  34532.                   This calls XARMEdit_TalkEnd.
  34533. */
  34534. os_error *xarmedit_talk_end(int handle);
  34535.  
  34536. /*
  34537.     Parameters  : handle    - The previously assigned handle for this client
  34538.                               task.
  34539.     Returns     : void
  34540.     Description : Deregister a client task.
  34541.                   This calls ARMEdit_TalkEnd.
  34542. */
  34543. void armedit_talk_end(int handle);
  34544.  
  34545. /*
  34546.     Parameters  : handle    - Client handle for this task.
  34547.                   dest      - Either the ID or client handle for the recipient
  34548.                               (if msg is a valid pointer).
  34549.                   msg       - Pointer to block containing the message to send,
  34550.                               or NULL to check if the buffer already contains a
  34551.                               message.
  34552.                   rmsg      - Optional variable to receive a pointer to the
  34553.                               message buffer, or NULL if no message is waiting
  34554.                               to be delivered.
  34555.     Returns     : os_error  - Pointer to a standard error block.
  34556.     Description : Send a message to another client task.
  34557.                   This calls XARMEdit_TalkTx.
  34558. */
  34559. os_error *xarmedit_talk_tx(int handle, int dest, void *msg, void **rmsg);
  34560.  
  34561. /*
  34562.     Parameters  : handle    - Client handle for this task.
  34563.                   dest      - Either the ID or client handle for the recipient
  34564.                               (if msg is a valid pointer).
  34565.                   msg       - Pointer to block containing the message to send,
  34566.                               or NULL to check if the buffer already contains a
  34567.                               message.
  34568.                   rmsg      - Optional variable to receive a pointer to the
  34569.                               message buffer, or NULL if no message is waiting
  34570.                               to be delivered.
  34571.     Returns     : void *    - Pointer to the message buffer, or NULL if no
  34572.                               message is waiting to be delivered.
  34573.     Description : Send a message to another client task.
  34574.                   This calls ARMEdit_TalkTx.
  34575. */
  34576. void *armedit_talk_tx(int handle, int dest, void *msg, void **rmsg);
  34577.  
  34578. /*
  34579.     Parameters  : handle    - Client handle for this task.
  34580.                   rmsg      - Optional variable to receive a pointer to the
  34581.                               block containing the waiting message, or NULL if
  34582.                               no messages are waiting.
  34583.                   rid       - Optional variable to receive the source ID.
  34584.                   rhandle   - Optional variable to receive the source handle.
  34585.     Returns     : os_error  - Pointer to a standard error block.
  34586.     Description : Check for any waiting messages for this client task.
  34587.                   This calls XARMEdit_TalkRx.
  34588. */
  34589. os_error *xarmedit_talk_rx(int handle, void **rmsg, int *rid, int *rhandle);
  34590.  
  34591. /*
  34592.     Parameters  : handle    - Client handle for this task.
  34593.                   rmsg      - Optional variable to receive a pointer to the
  34594.                               block containing the waiting message, or NULL if
  34595.                               no messages are waiting.
  34596.                   rid       - Optional variable to receive the source ID.
  34597.                   rhandle   - Optional variable to receive the source handle.
  34598.     Returns     : void *    - Pointer to the block containing the waiting
  34599.                               message, or NULL if no messages are waiting.
  34600.     Description : Check for any waiting messages for this client task.
  34601.                   This calls ARMEdit_TalkRx.
  34602. */
  34603. void *armedit_talk_rx(int handle, void **rmsg, int *rid, int *rhandle);
  34604.  
  34605. /*
  34606.     Parameters  : handle    - Client handle for this task.
  34607.     Returns     : os_error  - Pointer to a standard error block.
  34608.     Description : Claim the most recently read message.
  34609.                   This calls XARMEdit_TalkAck.
  34610. */
  34611. os_error *xarmedit_talk_ack(int handle);
  34612.  
  34613. /*
  34614.     Parameters  : handle    - Client handle for this task.
  34615.     Returns     : void
  34616.     Description : Claim the most recently read message.
  34617.                   This calls ARMEdit_TalkAck.
  34618. */
  34619. void armedit_talk_ack(int handle);
  34620.  
  34621. /*
  34622.     Parameters  : tx1_size  - Length of first input block.
  34623.                   tx1_buf   - Pointer to first input block.
  34624.                   tx2_size  - Length of second input block.
  34625.                   tx2_buf   - Pointer to second input block.
  34626.                   rx1_size  - Length of first output block.
  34627.                   rx1_buf   - Pointer to first output block.
  34628.                   rx2_size  - Length of second output block.
  34629.                   rx2_buf   - Pointer to second output block.
  34630.     Returns     : os_error  - Pointer to a standard error block.
  34631.     Description : Call an ARMEdit HPC service.
  34632.                   This calls XARMEdit_HPC.
  34633. */
  34634. os_error *xarmedit_hpc(int tx1_size, void *tx1_buf, int tx2_size,
  34635.                        void *tx2_buf, int rx1_size, void *rx1_buf,
  34636.                        int rx2_size, void *rx2_buf);
  34637.  
  34638. /*
  34639.     Parameters  : tx1_size  - Length of first input block.
  34640.                   tx1_buf   - Pointer to first input block.
  34641.                   tx2_size  - Length of second input block.
  34642.                   tx2_buf   - Pointer to second input block.
  34643.                   rx1_size  - Length of first output block.
  34644.                   rx1_buf   - Pointer to first output block.
  34645.                   rx2_size  - Length of second output block.
  34646.                   rx2_buf   - Pointer to second output block.
  34647.     Returns     : void
  34648.     Description : Call an ARMEdit HPC service.
  34649.                   This calls ARMEdit_HPC.
  34650. */
  34651. void armedit_hpc(int tx1_size, void *tx1_buf, int tx2_size, void *tx2_buf,
  34652.                  int rx1_size, void *rx1_buf, int rx2_size, void *rx2_buf);
  34653.  
  34654. /*
  34655.     Parameters  : fore      - Foreground speed, or -1 to read current setting.
  34656.                   back      - Background speed, or -1 to read current setting.
  34657.                   rfore     - Optional variable to receive the foreground
  34658.                               speed.
  34659.                   rback     - Optional variable to receive the background
  34660.                               speed.
  34661.     Returns     : os_error  - Pointer to a standard error block.
  34662.     Description : Control the multitasking speed of the PC card.
  34663.                   This calls XARMEdit_Polling.
  34664. */
  34665. os_error *xarmedit_polling(int fore, int back, int *rfore, int *rback);
  34666.  
  34667. /*
  34668.     Parameters  : fore      - Foreground speed, or -1 to read current setting.
  34669.                   back      - Background speed, or -1 to read current setting.
  34670.                   rfore     - Optional variable to receive the foreground
  34671.                               speed.
  34672.                   rback     - Optional variable to receive the background
  34673.                               speed.
  34674.     Returns     : void
  34675.     Description : Control the multitasking speed of the PC card.
  34676.                   This calls ARMEdit_Polling.
  34677. */
  34678. void armedit_polling(int fore, int back, int *rfore, int *rback);
  34679.  
  34680. /*
  34681.     Parameters  : handle    - Client handle for this task.
  34682.                   dest      - The client handle for the recipient.
  34683.                   msg       - Pointer to block containing the message to send,
  34684.                               or NULL to check if the buffer already contains a
  34685.                               message.
  34686.     Returns     : os_error  - Pointer to a standard error block.
  34687.     Description : Reply to a message from another client task.
  34688.                   This calls XARMEdit_TalkReply.
  34689. */
  34690. os_error *xarmedit_talk_reply(int handle, int dest, void *msg);
  34691.  
  34692. /*
  34693.     Parameters  : handle    - Client handle for this task.
  34694.                   dest      - The client handle for the recipient.
  34695.                   msg       - Pointer to block containing the message to send,
  34696.                               or NULL to check if the buffer already contains a
  34697.                               message.
  34698.     Returns     : void *    - Pointer to the message buffer, or NULL if no
  34699.                               message is waiting to be delivered.
  34700.     Description : Reply to a message from another client task.
  34701.                   This calls ARMEdit_TalkReply.
  34702. */
  34703. void *armedit_talk_reply(int handle, int dest, void *msg);
  34704.  
  34705. #ifdef __cplusplus
  34706. }
  34707. #endif
  34708.  
  34709. #endif
  34710.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickarmeditswiGýÿÿO6    `XIarmeditswiGýÿÿO6    `XIEooNickflÅÆËÃOBJ_HEAD|,OBJ_AREA¨OBJ_SYMT°0OBJ_STRTàDOBJ_IDFN$4Unused  Unused  €ÐâÅ7;"À á@-é@¼ï s€ýèÀ á@-é@¼ï€ýèÀ á@-éA¼ï0†å3ã◰0†å3ã◰ s€ýèÀ á@-éA¼ï0†å3ã◰0†å3ã◰€ýèÀ á@-éB¼ï s€ýèÀ á@-éB¼ï€ýèÀ á@-éC¼ï3ã ◰ s€ýèÀ á@-éC¼ï3ã ◰ á€ýèÀ á0@-é@ áP áD¼ï4ã☓5ãŶ3ã ◰ s0€ýèÀ á0@-é@ áP áD¼ï4ã☓5ãŶ3ã ◰0€ýèÀ á@-éE¼ï s€ýèÀ á@-éE¼ï€ýèÀ áð@-é@†åP†å`†å p†åF¼ï sð€ýèÀ áð@-é@†åP†å`†å p†åF¼ïð€ýèÀ á@-éG¼ï2ãŵ3ã◰ s€ýèÀ á@-éG¼ï2ãŵ3ã◰€ýèÀ á@-éH¼ï s€ýèÀ á@-éH¼ï€ýè;;+$;?P;Rx;d…;u†;ŷ¸;„Ô;§;·8;ÉL;Ú\;ç€;ó ;Ä;ä;(ø;;;Cxarmedit_control_pcarmedit_control_pcxarmedit_talk_startarmedit_talk_startxarmedit_talk_endarmedit_talk_endxarmedit_talk_txarmedit_talk_txxarmedit_talk_rxarmedit_talk_rxxarmedit_talk_ackarmedit_talk_ackxarmedit_hpcarmedit_hpcxarmedit_pollingarmedit_pollingxarmedit_talk_replyarmedit_talk_replyC$$codeARM AOF Macro Assembler 3.06 (Acorn Computers Ltd)rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     /*
  34711.     File        : talk.h
  34712.     Date        : 21-Feb-97
  34713.     Author      : © A.Thoukydides, 1995, 1996, 1997
  34714.     Description : Communications with the RISC OS ARMEdit module. This
  34715.                   provides an interface to the services provided by that
  34716.                   module without requiring any knowledge of the underlying
  34717.                   interface.
  34718. */
  34719.  
  34720. // Only include header file once
  34721. #ifndef TALK_H
  34722. #define TALK_H
  34723.  
  34724. // Include system header files
  34725. #include <stdlib.h>
  34726.  
  34727. // RISC OS scrap directory to use
  34728. #define TALK_SCRAP "<ARMEdit$ScrapDir>"
  34729.  
  34730. // OSCLI status codes
  34731. #define TALK_OSCLI_ACTIVE 0x00
  34732. #define TALK_OSCLI_FINISHED 0x01
  34733. #define TALK_OSCLI_WAITING 0x02
  34734.  
  34735. // ARM registers used on entry and exit from SWIs
  34736. typedef struct
  34737. {
  34738.     long r[10];                         // Only R0 to R9 matter for SWIs
  34739. } talk_swi_regs;
  34740.  
  34741. // A RISC OS style error block
  34742. typedef struct
  34743. {
  34744.     long errnum;                        // Error number
  34745.     char errmess[252];                  // Error message (zero terminated)
  34746. } talk_error;
  34747.  
  34748. // A RISC OS date and time
  34749. typedef char talk_date[5];
  34750.  
  34751. #ifdef __cplusplus
  34752. extern "C" {
  34753. #endif
  34754.  
  34755. /*
  34756.     Paramaters  : no            - The number of the SWI to call.
  34757.                   in            - Pointer to the values for the ARM registers
  34758.                                   on entry to the SWI.
  34759.                   out           - Pointer to the values that the ARM
  34760.                                   registers contained on exit from the SWI.
  34761.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34762.                                   (in PC memory), or NULL if there was no
  34763.                                   error.
  34764.     Description : Call the specified RISC OS SWI. The SWI is always called
  34765.                   with the X bit set.
  34766. */
  34767. const talk_error *talk_swi(long no, const talk_swi_regs *in,
  34768.                            talk_swi_regs *out);
  34769.  
  34770. /*
  34771.     Parameters  : buf           - Pointer to buffer to receive data.
  34772.                   len           - The number of bytes to read.
  34773.                   start         - The start ARM memory address.
  34774.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34775.                                   (in PC memory), or NULL if there was no
  34776.                                   error.
  34777.     Description : Read up to 16372 bytes of ARM memory.
  34778. */
  34779. const talk_error *talk_read(void *buf, size_t len, long start);
  34780.  
  34781. /*
  34782.     Parameters  : buf           - Pointer to buffer containing data.
  34783.                   len           - The number of bytes to write.
  34784.                   start         - The start ARM memory address.
  34785.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34786.                                   (in PC memory), or NULL if there was no
  34787.                                   error.
  34788.     Description : Write up to 16372 bytes of ARM memory.
  34789. */
  34790. const talk_error *talk_write(const void *buf, size_t len, long start);
  34791.  
  34792. /*
  34793.     Parameters  : len           - Amount of memory to allocate.
  34794.                   buf           - Variable to contain address of memory.
  34795.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34796.                                   (in PC memory), or NULL if there was no
  34797.                                   error.
  34798.     Description : Claim the specified amount of ARM memory.
  34799. */
  34800. const talk_error *talk_malloc(size_t len, long *buf);
  34801.  
  34802. /*
  34803.     Parameters  : buf           - Address of block of memory to free.
  34804.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34805.                                   (in PC memory), or NULL if there was no
  34806.                                   error.
  34807.     Description : Free a block of memory previously claimed using talk_alloc.
  34808. */
  34809. const talk_error *talk_free(long buf);
  34810.  
  34811. /*
  34812.     Parameters  : ext           - A file extension.
  34813.                   type          - Variable to receive the filetype.
  34814.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34815.                                   (in PC memory), or NULL if there was no
  34816.                                   error.
  34817.     Description : Convert a DOS file extension into a RISC OS filetype.
  34818. */
  34819. const talk_error *talk_ext_to_filetype(const char *ext, int *type);
  34820.  
  34821. /*
  34822.     Parameters  : type          - A RISC OS filetype.
  34823.                   ext           - Variable to receive file extension.
  34824.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34825.                                   (in PC memory), or NULL if there was no
  34826.                                   error.
  34827.     Description : Convert a RISC OS filetype into a DOS file extension.
  34828. */
  34829. const talk_error *talk_filetype_to_ext(int type, char *ext);
  34830.  
  34831.  
  34832. /*
  34833.     Parameters  : name          - The name of the file to open.
  34834.                   size          - The initial size of the file, or -1 to open
  34835.                                   an existing file.
  34836.                   del           - Should the file be deleted when closed.
  34837.                   handle        - Variable to receive the file handle.
  34838.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34839.                                   (in PC memory), or NULL if there was no
  34840.                                   error.
  34841.     Description : Open a RISC OS file.
  34842. */
  34843. const talk_error *talk_file_open(const char *name, long size, int del,
  34844.                                  long *handle);
  34845.  
  34846. /*
  34847.     Parameters  : handle        - Handle of the file to close.
  34848.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34849.                                   (in PC memory), or NULL if there was no
  34850.                                   error.
  34851.     Description : Close a RISC OS file.
  34852. */
  34853. const talk_error *talk_file_close(long handle);
  34854.  
  34855. /*
  34856.     Parameters  : handle        - Handle of the file to read from.
  34857.                   ptr           - Sequential file pointer position to read
  34858.                                   from, or -1 to use current position.
  34859.                   size          - Number of bytes to read.
  34860.                   buf           - Buffer to receive the data.
  34861.                   done          - Variable to receive number of bytes read.
  34862.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34863.                                   (in PC memory), or NULL if there was no
  34864.                                   error.
  34865.     Description : Read from a RISC OS file.
  34866. */
  34867. const talk_error *talk_file_read(long handle, long ptr, long size,
  34868.                                  void *buf, long *done);
  34869.  
  34870. /*
  34871.     Parameters  : handle        - Handle of the file to write to.
  34872.                   ptr           - Sequential file pointer position to write
  34873.                                   at, or -1 to use current position.
  34874.                   size          - Number of bytes to write.
  34875.                   buf           - Buffer containing the data.
  34876.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34877.                                   (in PC memory), or NULL if there was no
  34878.                                   error.
  34879.     Description : Write to a RISC OS file.
  34880. */
  34881. const talk_error *talk_file_write(long handle, long ptr, long size,
  34882.                                   const void *buf);
  34883.  
  34884. /*
  34885.     Parameters  : handle        - Variable to receive the unique handle for
  34886.                                   this task. This should be used with all
  34887.                                   future communications.
  34888.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34889.                                   (in PC memory), or NULL if there was no
  34890.                                   error.
  34891.     Description : Register a communications client.
  34892. */
  34893. const talk_error *talk_comms_start(long *handle);
  34894.  
  34895. /*
  34896.     Parameters  : handle        - The previously allocated handle for this
  34897.                                   client.
  34898.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34899.                                   (in PC memory), or NULL if there was no
  34900.                                   error.
  34901.     Description : Deregister a communications client.
  34902. */
  34903. const talk_error *talk_comms_end(long handle);
  34904.  
  34905. /*
  34906.     Parameters  : handle        - The previously allocated client handle for
  34907.                                   this task.
  34908.                   dest          - The destination task ID or handle.
  34909.                   buf           - The message to send.
  34910.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34911.                                   (in PC memory), or NULL if there was no
  34912.                                   error.
  34913.     Description : Send a message to one or more other clients.
  34914. */
  34915. const talk_error *talk_comms_tx(long handle, long dest, const void *buf);
  34916.  
  34917. /*
  34918.     Parameters  : handle        - The previously allocated client handle for
  34919.                                   this task.
  34920.                   src_id        - The ID of the sending task.
  34921.                   src_handle    - The handle of the sending task.
  34922.                   buf           - The buffer to receive the message in.
  34923.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34924.                                   (in PC memory), or NULL if there was no
  34925.                                   error.
  34926.     Description : Check for any waiting messages, and read the next one if
  34927.                   possible. Note that this (currently) returns an error if
  34928.                   there is no message to read.
  34929. */
  34930. const talk_error *talk_comms_rx(long handle, long *src_id, long *src_handle,
  34931.                                 void *buf);
  34932.  
  34933. /*
  34934.     Parameters  : in            - The RISC OS date and time to convert.
  34935.                   time          - The DOS style time.
  34936.                   date          - The DOS style date.
  34937.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34938.                                   (in PC memory), or NULL if there was no
  34939.                                   error.
  34940.     Description : Convert RISC OS format date and times to the equivalent DOS
  34941.                   values.
  34942. */
  34943. const talk_error *talk_date_to_dos(const talk_date in, unsigned *time,
  34944.                                    unsigned *date);
  34945.  
  34946. /*
  34947.     Parameters  : time          - The DOS style time.
  34948.                   date          - The DOS style date.
  34949.                   out           - The equivalent RISC OS style date and time.
  34950.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34951.                                   (in PC memory), or NULL if there was no
  34952.                                   error.
  34953.     Description : Convert DOS format date and times to the equivalent RISC OS
  34954.                   value.
  34955. */
  34956. const talk_error *talk_date_to_riscos(unsigned time, unsigned date,
  34957.                                       talk_date out);
  34958.  
  34959. /*
  34960.     Parameters  : cmd           - The command to execute.
  34961.                   handle        - The returned handle for this command.
  34962.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34963.                                   (in PC memory), or NULL if there was no
  34964.                                   error.
  34965.     Description : Start executing a RISC OS *command.
  34966. */
  34967. const talk_error *talk_oscli_start(const char *cmd, long *handle);
  34968.  
  34969. /*
  34970.     Parameters  : handle        - The command handle.
  34971.                   in_size       - Number of input bytes to send.
  34972.                   in            - Bytes to send.
  34973.                   status        - Returned status.
  34974.                   out_size      - Number of output bytes received.
  34975.                   out           - Buffer for received output (at least 256
  34976.                                   bytes).
  34977.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34978.                                   (in PC memory), or NULL if there was no
  34979.                                   error.
  34980.     Description : Continue executing a RISC OS *command.
  34981. */
  34982. const talk_error *talk_oscli_poll(long handle, long in_size, const char *in,
  34983.                                   long *status, long *out_size, char *out);
  34984.  
  34985. /*
  34986.     Parameters  : handle        - The command handle.
  34987.     Returns     : talk_error    - A pointer to a RISC OS style error block
  34988.                                   (in PC memory), or NULL if there was no
  34989.                                   error.
  34990.     Description : Stop executing a RISC OS *command.
  34991. */
  34992. const talk_error *talk_oscli_end(long handle);
  34993.  
  34994. /*
  34995.     Parameters  : handle        - The previously allocated client handle for
  34996.                                   this task.
  34997.                   dest          - The destination task handle.
  34998.                   buf           - The message to send.
  34999.     Returns     : talk_error    - A pointer to a RISC OS style error block
  35000.                                   (in PC memory), or NULL if there was no
  35001.                                   error.
  35002.     Description : Reply to a message from another client.
  35003. */
  35004. const talk_error *talk_comms_reply(long handle, long dest, const void *buf);
  35005.  
  35006. /*
  35007.     Parameters  : centiseconds  - Time in centiseconds before multitasking
  35008.                                   should be reenabled, or 0 to reenable
  35009.                                   normal operation.
  35010.     Returns     : talk_error    - A pointer to a RISC OS style error block
  35011.                                   (in PC memory), or NULL if there was no
  35012.                                   error.
  35013.     Description : Disable multitasking for a specified length of time.
  35014. */
  35015. const talk_error *talk_faster(long centiseconds);
  35016.  
  35017. /*
  35018.     Parameters  : buf           - Buffer to receive the filename.
  35019.                   len           - Size of the buffer.
  35020.     Returns     : talk_error    - A pointer to a RISC OS style error block
  35021.                                   (in PC memory), or NULL if there was no
  35022.                                   error.
  35023.     Description : Generate a unique RISC OS filename for a temporary file.
  35024. */
  35025. const talk_error *talk_temporary(char *buf, size_t len);
  35026.  
  35027. #ifdef __cplusplus
  35028. }
  35029. #endif
  35030.  
  35031. #endif
  35032.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     &NickARMEDITGÿÿÿê⇧`/ KBannerGÿÿÿ¼d…Oí$LCodeGÿÿÿ¹⇦`M1MContactsGÿÿÿõ·`J KDeviceGÿÿÿ­{`>NEnsureFÿÿÿ%jørNFrontEndGÿÿÿ x`õ4OGETFILEGÿÿÿ”u`sKHPCGÿÿÿ§r`’LPModuleGÿÿÿÃo`„BQOSCLIGÿÿÿál`ï LPUTFILEGÿÿÿ¿i`⇨
  35033. RTalkGÿÿÿwf`|RARMEDITGÿÿÿê⇧`/ KBannerGÿÿÿ¼d…Oí$LCodeGÿÿÿ¹⇦`M1MContactsGÿÿÿõ·`J KDeviceGÿÿÿ­{`>NEnsureFÿÿÿ%jørNFrontEndGÿÿÿ x`õ4OGETFILEGÿÿÿ”u`sKHPCGÿÿÿ§r`’LPModuleGÿÿÿÃo`„BQOSCLIGÿÿÿál`ï LPUTFILEGÿÿÿ¿i`⇨
  35034. RTalkGÿÿÿwf`|R8DocsDocs&NickGFile        : ARMEDIT
  35035. Date        : 21-Feb-97
  35036. Author      : © A.Thoukydides, 1996, 1997
  35037. Description : Description of the PC ARMEDIT command that is part of the ARMEdit
  35038.               suite.
  35039.  
  35040.  
  35041. INTRODUCTION
  35042.  
  35043. The "ARMEDIT" command allows DOS files to be edited using a RISC OS editor.
  35044. To use this command it is necessary to load the ARMEdit module before
  35045. starting the PC front-end, and to have both the !ARMEdit front-end and a
  35046. suitable RISC OS editor running.
  35047.  
  35048. The External Data Editing Protocol is used to control the edit. Both Zap
  35049. and StrongEd support this protocol (see comments below), but unfortunately
  35050. Edit does not.
  35051.  
  35052.  
  35053. USAGE
  35054.  
  35055. The syntax is:
  35056.  
  35057.     ARMEDIT [/?] <file> [<file> [...]]
  35058.     ARMEDIT [/?] /L <file> [<line> [<file> [<line> [...]]]]
  35059.  
  35060. where
  35061.  
  35062.     /?              - Displays some help text.
  35063.     /L              - Filenames are followed by line number to place cursor at.
  35064.     <file>          - Wildcarded name of files to edit.
  35065.     <line>          - Line number to position cursor at.
  35066.  
  35067. All files are treated as text files when being edited.
  35068.  
  35069.  
  35070. USE WITH ZAP
  35071.  
  35072. Zap uses several techniques for choosing the mode to edit a file in. These
  35073. include using the filetype, filename and the contents of the file. Due to the
  35074. operation of the External Data Editing Protocol, only the file leaf name will
  35075. be used. Hence, to enable selection of editing modes the following lines
  35076. should be placed at the start of the !Zap.Keys file:
  35077.  
  35078. &500    &FFF    \#\*/c            +C
  35079. &500    &FFF    \#\*/cc            +C
  35080. &500    &FFF    \#\*/c++        +C
  35081. &500    &FFF    \#\*/h            +C
  35082. &500    &FFF    \#\*/asm        +Assembler
  35083.  
  35084. Other mappings can be added in a similar fashion. Files that do not match any
  35085. of the patterns will be placed in Text mode.
  35086.  
  35087.  
  35088. USE WITH STRONGED
  35089.  
  35090. Some versions of StrongEd do not support The External Data Editing Protocol
  35091. correctly. If you experience problems with the ARMEDIT utility still polling
  35092. edits that have been ended, then try upgrading to the latest version of
  35093. StrongEd.
  35094.  
  35095.  
  35096. OTHER POINTS TO NOTE
  35097.  
  35098. If a suitable editor is not running, then the command will exit without
  35099. giving an error message - no attempt is made to automatically load a suitable
  35100. editor.
  35101.  
  35102. Filenames may contain standard DOS wildcards, i.e. "?" for single characters,
  35103. and "*" for multiple characters. Files are matched using the same rules as
  35104. used by other DOS commands.
  35105.  
  35106. The cursor position is selected by counting new-line characters (ASCII 10).
  35107. If the editor changes the line end character sequences then the cursor may be
  35108. positioned on the wrong line.
  35109.  
  35110.  
  35111. THINGS TO DO
  35112.  
  35113. The following are changes that may be made to the ARMEDIT command sometime in
  35114. the future.
  35115.  
  35116.     None at the moment!
  35117.  
  35118.  
  35119. VERSION HISTORY
  35120.  
  35121. 0.00 (10-Sep-96)    Original development version.
  35122.  
  35123. 0.01 (12-Sep-96)    Current status and operation is displayed.
  35124.                     Better error handling and recovery.
  35125.                     Multiple files can be simultaneously edited.
  35126.                     Initial cursor position may be specified.
  35127.  
  35128. 0.02 (14-Oct-96)    Rewrite after source code lost when PC partition corrupted.
  35129.  
  35130. 0.03 (05-Feb-97)    Temporary files are deleted before quitting.
  35131.  
  35132. 1.03 (21-Feb-97)    First official release version. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Contacts
  35133. Date        : 21-Feb-97
  35134. Author      : © A.Thoukydides, 1996, 1997
  35135. Description : Useful contact information relevant to ARMEdit.
  35136.  
  35137.  
  35138. INTRODUCTION
  35139.  
  35140. This file gives contact information relevant to ARMEdit. Please note that no
  35141. responsibility is taken for the accuracy of details listed here; particulars
  35142. may change without notice.
  35143.  
  35144.  
  35145. ARMEDIT UPGRADES
  35146.  
  35147. A WWW page giving information about the current version of ARMEdit, links to
  35148. copies available for download, and details of future developments, exists at:
  35149.  
  35150.     http://www.tcp.co.uk/~thouky/tcfa.html
  35151.  
  35152. Upgrades will normally be available from:
  35153.  
  35154.     ftp://tailor.linc.ox.ac.uk/pub/alex/
  35155.  
  35156.  
  35157. TOOLBOX MODULES
  35158.  
  35159. The !ARMEdit front-end requires copies of the Acorn Toolbox modules. These
  35160. are present in RISC OS 3.6 and above, but must be placed in the !System
  35161. directory on older machines. A copy may be downloaded from one of the
  35162. following locations:
  35163.  
  35164.     ftp://tailor.linc.ox.ac.uk/pub/alex/toolbox.arc
  35165.     ftp://ftp.aleph1.co.uk/aleph1/toolbox.arc
  35166.  
  35167.  
  35168. ARMEDIT MAILING LIST
  35169.  
  35170. An email mailing list has been created for discussion of all aspects of
  35171. ARMEdit, including:
  35172.  
  35173.     Problems with the software, e.g. bugs or interaction with other software.
  35174.     
  35175.     Ideas for improvements, or new applications of existing tools.
  35176.     
  35177.     Third party software being developed using the support included in ARMEdit.
  35178.  
  35179.     Announcements of new beta-test or release versions.
  35180.  
  35181. To join the list, remove yourself from the list, or change the address to
  35182. which you are sent mail, then please email Majordomo@armature.net.au with one
  35183. of the following commands in the message body:
  35184.  
  35185.     subscribe armedit [<address>]
  35186.     
  35187.         Subscribe yourself (or <address> if specified) to this list.
  35188.         
  35189.  
  35190.     unsubscribe armedit [<address>]
  35191.  
  35192.         Unsubscribe yourself (or <address> if specified) from this list.
  35193.  
  35194.  
  35195.     which [<address>]
  35196.  
  35197.         Find out which lists you (or <address> if specified) are on.
  35198.  
  35199.  
  35200.     info armedit
  35201.  
  35202.         Retrieve the general introductory information for this list.
  35203.  
  35204.  
  35205.     help
  35206.  
  35207.         Obtain a list of the other supported commands.
  35208.  
  35209.  
  35210. Items contained in []'s are optional; when providing the item, do not include
  35211. the []'s around it. Remember to put the commands in the body of the message,
  35212. not the subject.
  35213.  
  35214. Requests to subscribe to the list may take longer than requests to
  35215. unsubscribe. To avoid missing messages when changing email address, subscribe
  35216. using the new address and wait for the welcome message before unsubscribing
  35217. from the old address.
  35218.  
  35219.  
  35220. CONTACTING THE AUTHOR
  35221.  
  35222. I would be interested in hearing of any bugs or other unexpected features in
  35223. this suite of software, and will endeavour to correct any such problems in
  35224. future releases. Suggestions for improvements are also most welcome.
  35225. Implementation depends upon practicability and on how much spare time I have.
  35226.  
  35227. If you have any comments on this program, or would like to suggest ways in
  35228. which it could be improved, I can be contacted at one of the following
  35229. addresses:
  35230.     
  35231.     Thalna
  35232.     2 Dukes Drive
  35233.     Bearwood
  35234.     Bournemouth
  35235.     Dorset
  35236.     BH11 9SZ
  35237.     
  35238.     armedit@thouky.tcp.co.uk
  35239.  
  35240. If in any communication you make specific reference to the program code please:
  35241.  
  35242.     Quote the version number and date of the ARMEdit module, the component
  35243.     concerned, and the PC front-end software being used.
  35244.     
  35245.     Refer only to the software as released.
  35246.     
  35247.     Supply as many details as possible about the problem, including the
  35248.     hardware and software configuration of the machine being used.
  35249.  
  35250. Please send a stamped and self addressed envelope, or give details of how to
  35251. contact via e-mail, if you would like a reply.
  35252.  
  35253.  
  35254. PC CARD SOFTWARE UPGRADES
  35255.  
  35256. At the time of writing, the latest available release version of the software
  35257. for second processor cards is PCPro 2v03. This is a free upgrade for owners
  35258. of Aleph One cards, but is available for Acorn PC card owners to buy; contact
  35259. Aleph One for more details:
  35260.  
  35261.     Aleph One Ltd
  35262.     The Old Courthouse
  35263.     High Street
  35264.     Bottisham
  35265.     Cambridge
  35266.     CB5 9BA
  35267.     
  35268.     Tel: 01223 811679
  35269.     Fax: 01223 812713
  35270.  
  35271.     sales@aleph1.co.uk
  35272.     http://www.aleph1.co.uk/
  35273.  
  35274. Free upgrades for Aleph One PC cards can be found at the Aleph One FTP site,
  35275. including a beta-release version containing many of the features of PCPro:
  35276.  
  35277.     ftp://ftp.aleph1.co.uk/aleph1/
  35278.  
  35279. Equivalent upgrades for Acorn cards can be found at the Acorn FTP site:
  35280.  
  35281.     ftp://ftp.acorn.co.uk/s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : GETFILE
  35282. Date        : 21-Feb-97
  35283. Author      : © A.Thoukydides, 1995, 1996, 1997
  35284. Description : Description of the PC GETFILE command that is part of the ARMEdit
  35285.               suite.
  35286.  
  35287.  
  35288. INTRODUCTION
  35289.  
  35290. The "GETFILE" command is a replacement for the command of the same name that
  35291. was supplied with Acorn's software PC emulator. It allows RISC OS files to be
  35292. transferred to DOS. To use this command it is necessary to load the ARMEdit
  35293. module before starting the PC front-end.
  35294.  
  35295.  
  35296. USAGE
  35297.  
  35298. The syntax is:
  35299.  
  35300.     GETFILE [/?] [/M] [/P] [/S] <RISC OS file> [<DOS file>]
  35301.  
  35302. where
  35303.  
  35304.     /?              - Displays some help text.
  35305.     /M              - Enable multitasking during copying.
  35306.     /P              - Prompts before copying each file.
  35307.     /S              - Copy subdirectories.
  35308.     <RISC OS file>  - Wildcarded source RISC OS file specification to copy.
  35309.     <DOS file>      - The destination DOS path.
  35310.  
  35311. The source path may include standard RISC OS wildcards, i.e. "#" to match a
  35312. single character or "*" for multiple characters. Files are matched using the
  35313. same rules as used by RISC OS commands.
  35314.  
  35315. If no destination filename is specified then the source filename is used with
  35316. various character transformations performed.
  35317.  
  35318.  
  35319. THINGS TO DO
  35320.  
  35321. The following are changes that may be made to the GETFILE command sometime in
  35322. the future.
  35323.  
  35324.     None at the moment!
  35325.  
  35326.  
  35327. VERSION HISTORY
  35328.  
  35329. 0.00 (12-Nov-95)    Original development version.
  35330.  
  35331. 0.01 (14-Nov-95)    Added version number and copyright message.
  35332.  
  35333. 0.02 (17-Nov-95)    Uses correct HPC service identifier.
  35334.                     Changed to a .COM file to make it smaller.
  35335.                     Made error checking more comprehensive and added help text.
  35336.  
  35337. 0.04 (16-Dec-95)    Uses real HPC.
  35338.  
  35339. 0.05 (17-Dec-95)    Improved filename translation.
  35340.  
  35341. 1.00 (12-Jan-96)    First official release version.
  35342.  
  35343. 1.01 (11-Mar-96)    Version number updated to match the module.
  35344.  
  35345. 1.02 (06-Aug-96)    Date and time stamps are preserved on copied files.
  35346.                     Support for Acorn's software PC emulator included.
  35347.  
  35348. 1.03 (21-Feb-97)    Speeded up transfer when multitasking.
  35349.                     Included support for wildcards and recursion.derWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Banner
  35350. Date        : 20-Jan-97
  35351. Author      : © A.Thoukydides, 1995, 1997
  35352. Description : Description of the "Banner" application.
  35353.  
  35354.  
  35355. INTRODUCTION
  35356.  
  35357. The "Banner" application displays a banner window in the desktop, either for
  35358. a predetermined length of time or until it is clicked on with the mouse.
  35359. It is intended to be used while an application is loading, but it may also be
  35360. used for other purposes. The layout of the window is specified by a templates
  35361. file, which may include requests for text substitution from an optional
  35362. messages file. Anti-aliased fonts are fully supported, and sprites are loaded
  35363. into the application sprite area rather than the shared wimp pool.
  35364.  
  35365. This application is FreeWare; it may be freely used and copied. However, I
  35366. retain full copyright. See the section on "LEGAL MATTERS" for more details.
  35367.  
  35368.  
  35369. USAGE
  35370.  
  35371. The syntax is:
  35372.  
  35373.     Banner [<time>] [-Messages <messagesfile>] [-Sprites <spritefile>]
  35374.            [-Templates <templatesfile>]
  35375.  
  35376. where
  35377.  
  35378.     <time>          - The time in centi-seconds for which the window should
  35379.                       be left open. If no value is specified then the window
  35380.                       will remain open until the pointer is clicked on it.
  35381.                       A reasonable value is 250 (for 2½ seconds).
  35382.  
  35383.     <messagesfile>  - The pathname of the messages file to use. The default
  35384.                       filename is <Obey$Dir>.Resources.Messages.
  35385.  
  35386.     <spritefile>    - The pathname of the sprites file to use. The default
  35387.                       filename is <Obey$Dir>.Resources.Sprites.
  35388.  
  35389.     <templatesfile> - The pathname of the templates file to use. The default
  35390.                       filename is <Obey$Dir>.Resources.Templates.
  35391.  
  35392. All of the keywords may be abbreviated to their first letter. The files
  35393. are used as follows:
  35394.                   
  35395.     Messages    - A MessageTrans file containing text to replace indirected
  35396.                   text only icons with. The text following an "M" command in
  35397.                   an icon validation string, up to the next semi-colon or
  35398.                   terminator, is used as a token to pass to
  35399.                   MessageTrans_Lookup. If a match is found then the icon text
  35400.                   is replaced by the specified string, otherwise the icon
  35401.                   text is unchanged. This can be used, for example, to
  35402.                   display the program version number of licence details.
  35403.  
  35404.     Sprites     - A sprite file to be loaded into the application sprite area.
  35405.                   The program first checks whether a file more suitable for
  35406.                   current mode is present (e.g. Sprites23, Sprites22 etc)
  35407.                   using the same rules as for IconSprites. If a high-res
  35408.                   monochrome mode is being used then Sprites23 is tried,
  35409.                   otherwise the file SpritesXY is tried (where X and Y are
  35410.                   the number of OS units per pixel in the two directions).
  35411.  
  35412.     Templates   - A wimp template file which must contain a window
  35413.                   definition called "banner" to be displayed.
  35414.  
  35415. Only the Templates file is actually required; the other two are optional.
  35416.  
  35417. These files can be shared with the main application; in fact it is quite a
  35418. good idea to do so, e.g. a Version token in the messages file can be used for
  35419. both the ProgInfo window and the banner.
  35420.  
  35421. It is up to the user of this program to ensure that it is given a suitably
  35422. sized wimpslot. The memory required is given approximately by:
  35423.  
  35424.     Size of the Banner executable
  35425.   + Combined sizes of the three resource files
  35426.   + 6 kbytes of extra workspace
  35427.  
  35428. If you have alternative sprite file remember to use the size of the largest
  35429. file when deciding how much memory to allocate. If there is insufficient
  35430. memory to load the high-res sprites file then the standard resolution version
  35431. is tried instead.
  35432.  
  35433. Probably the best way of using this program in the start-up of an application
  35434. is to have two Obey files. The first one, "!Run", is started when the
  35435. application is run:
  35436.  
  35437.     | > <App$Dir>.!Run
  35438.     
  35439.     | Set a system variable to the application directory
  35440.     Set App$Dir <Obey$Dir>
  35441.  
  35442.     | Load the application sprites
  35443.     IconSprites <App$Dir>.!Sprites
  35444.  
  35445.     | Check that there is likely to be sufficient memory for both programs
  35446.     WimpSlot -min 576K -max 576K
  35447.  
  35448.     | Start the next part of the program loading once "Banner" has initialised
  35449.     Filer_Run <App$Dir>.!Run2
  35450.  
  35451.     | Ensure that there is sufficient memory for the "Banner" program
  35452.     WimpSlot -min 64K -max 64K
  35453.  
  35454.     | Run the banner program, leaving window open for 2.5 seconds
  35455.     Run <App$Dir>.Banner 250
  35456.  
  35457. Remember that "Banner", unless told otherwise, will look for its resources in
  35458. "<Obey$Dir>.Resources", which in this case will be the same as
  35459. "<App$Dir>.Resources". The second Obey file, "!Run2", is started by the first
  35460. one using a "Filer_Run" command causing it to start once the "Banner"
  35461. application has started polling the wimp:
  35462.  
  35463.     | > !Run2
  35464.     
  35465.     | Load any required resources, e.g. modules
  35466.     
  35467.     | Check that there is still sufficient memory to run
  35468.     WimpSlot -min 512K -max 512K
  35469.  
  35470.     | Finally start the application
  35471.     Run <App$Dir>.!RunImage %*0
  35472.  
  35473. This is not the only way in which "Banner" can be used, but it is one of the
  35474. better ways as it does not significantly increase the start-up time of the
  35475. application; the application and resources can continue loading while the
  35476. banner is being displayed.
  35477.  
  35478.  
  35479. LEGAL MATTERS
  35480.  
  35481. The "Banner" application and documentation is supplied "as is"; no warranty,
  35482. express or implied, of the merchantability of this software or its fitness
  35483. for any particular purpose is given. In no circumstances shall the author, or
  35484. any provider or distributor of this software, be liable for any damage, loss
  35485. of profits, or any indirect or consequential loss arising out of the use of
  35486. this software or inability to use this software.
  35487.  
  35488. This application is FreeWare. Permission is granted for anyone to distribute
  35489. it unchanged and in its entirety, providing that no profit is made in the
  35490. process. The "Banner" application may not be distributed if modified or
  35491. incomplete; neither may it be distributed without this documentation.
  35492.  
  35493. To use this application, or any part of it, as part of a system or other
  35494. application that is for sale (for however much and for whatever reasons) or
  35495. released as copyright material then the author's express permission in
  35496. writing must be obtained. The author maintains copyright on all the material
  35497. supplied and reserves the right to change these conditions at any time
  35498. without notice.
  35499.  
  35500.  
  35501. CONTACTING THE AUTHOR
  35502.  
  35503. I would be interested in hearing of any bugs or other unexpected features in
  35504. this application, and will endeavour to correct any such problems in future
  35505. releases. Suggestions for improvements are also most welcome. Implementation
  35506. depends upon practicability and on how much spare time I have.
  35507.  
  35508. If you have any comments on this program, or would like to suggest ways in
  35509. which it could be improved, I can be contacted at one of the following
  35510. addresses:
  35511.     
  35512.     Thalna
  35513.     2 Dukes Drive
  35514.     Bearwood
  35515.     Bournemouth
  35516.     Dorset
  35517.     BH11 9SZ
  35518.     
  35519.     alex@thouky.tcp.co.uk
  35520.  
  35521. If in any communication you make specific reference to the program code please:
  35522.  
  35523.     Quote the version number and date of the application (it is contained
  35524.     near the start of the executable binary).
  35525.     
  35526.     Refer only to the application as released.
  35527.     
  35528.     Supply as many details as possible about the problem, including the
  35529.     hardware and software configuration of the machine being used.
  35530.  
  35531. Please send a stamped and self addressed envelope, or give details of how to
  35532. contact via e-mail, if you would like a reply.
  35533.  
  35534. I hope you find this application of some use.
  35535.  
  35536.  
  35537. ACKNOWLEDGEMENTS
  35538.  
  35539. I would like to the thank the following people for their contributions to
  35540. the development of this application:
  35541.  
  35542.     Acorn Computers - The Risc PC, RISC OS and the ObjAsm assembler.
  35543.     Aidan Corey     - Good ideas for improvements.
  35544.     Dominic Symes   - The brilliant !Zap editor; get a copy immediately.
  35545.     Robin Watts     - !Larger, the greatest backdrop program ever.
  35546.     Mark Wooding    - !Glass, the best template editor.
  35547.  
  35548. and everyone at the Acorn User Group in Oxford.
  35549.  
  35550.  
  35551. THINGS TO DO
  35552.  
  35553. The following are changes that may be made to this application sometime in
  35554. the future:
  35555.  
  35556.     Only accept ";" as validation string separator if it is not preceded by a
  35557.     "\" character.
  35558.  
  35559.     Delete "M" commands from validation strings before passing the window to
  35560.     the wimp. This would protect against any later versions of the wimp
  35561.     trying to misuse "M" validation strings.
  35562.  
  35563.  
  35564. VERSION HISTORY
  35565.  
  35566. 0.00 (16-Apr-95)    Original development version.
  35567.  
  35568. 0.01 (21-Apr-95)    Command-line arguments added to configure display time and
  35569.                     filenames.
  35570.  
  35571. 0.02 (22-Apr-95)    Corrected handling of fonts on mode changes. Misaligned
  35572.                     word load removed. Wimp_ReadSysInfo used to get sprite
  35573.                     file suffix for current mode, rather than generating it
  35574.                     from mode variables. Linked as a binary rather than AIF.
  35575.                     Window recentred on mode change. Improved error handling.
  35576.                     Font table moved from binary image to application
  35577.                     workspace.
  35578.  
  35579. 0.03 (03-May-95)    Tidied up the code and improved the documentation.
  35580.  
  35581. 1.00 (09-May-95)    First official release version.
  35582.  
  35583. 1.01 (20-Jan-97)    Error checking improved when loading templates file.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : OSCLI
  35584. Date        : 21-Feb-97
  35585. Author      : © A.Thoukydides, 1995, 1996, 1997
  35586. Description : Description of the PC OSCLI command that is part of the ARMEdit
  35587.               suite.
  35588.  
  35589.  
  35590. INTRODUCTION
  35591.  
  35592. The "OSCLI" command allows RISC OS *commands to be executed from the DOS
  35593. command line. To use this command it is necessary to load the ARMEdit module
  35594. before starting the PC front-end.
  35595.  
  35596.  
  35597. USAGE
  35598.  
  35599. The syntax is:
  35600.  
  35601.     OSCLI [/?] [/S|/I] <Command>
  35602.  
  35603. where
  35604.  
  35605.     /?          - Displays some help text.
  35606.     /S          - Prevents redirection of output through DOS.
  35607.     /I          - Redirects both input and output streams through DOS.
  35608.     <Command>   - The command to execute.
  35609.  
  35610. Note that to prevent DOS from changing the command it is a good idea to place
  35611. it in quotation marks.
  35612.  
  35613. Due to the way in which this command operates, strange behaviour can
  35614. sometimes be produced. Some RISC OS commands can cause the computer to crash,
  35615. so be careful with it. In particular, the commands are executed within the
  35616. environment of the PC front-end, so applications must not be started.
  35617.  
  35618. Another point to note is that commands that require action to be taken by a
  35619. WIMP task, such as Filer_Run will not take effect until the PC enters
  35620. multitasking mode.
  35621.  
  35622.  
  35623. REDIRECTION
  35624.  
  35625. Many *commands peform either input or output. By default the OSCLI command
  35626. redirects the output of the command being executed to a RISC OS file before
  35627. passing it to the DOS standard output. This allows, for example, piping to the
  35628. MORE filter. To prevent this behaviour it is possible to specify the "/S"
  35629. switch.
  35630.  
  35631. Some commands require interactive input and output, such as *Build or *Count.
  35632. Specifying the "/I" switch allows use of these commands by attaching both the
  35633. input and output of the command to the standard DOS streams. This requires
  35634. the command to be frequently suspended to allow input and output to be
  35635. processed, so it can appear slightly slower. It may also have problems with
  35636. some commands that work without the "/I" switch.
  35637.  
  35638.  
  35639. THINGS TO DO
  35640.  
  35641. The following are changes that may be made to the OSCLI command sometime in
  35642. the future.
  35643.  
  35644.     Add a switch to run the command in a TaskWindow.
  35645.     
  35646.     Pre-process VDU sequenced before displaying output.
  35647.  
  35648.  
  35649. VERSION HISTORY
  35650.  
  35651. 0.00 (12-Nov-95)    Original development version.
  35652.  
  35653. 0.01 (14-Nov-95)    Added version number and copyright message.
  35654.                     Output is passed through the standard output of the DOS
  35655.                     command.
  35656.  
  35657. 0.02 (17-Nov-95)    Uses correct HPC service identifier.
  35658.                     Changed to a .COM file to make it smaller.
  35659.                     Made redirection of output optional and added help text.
  35660.  
  35661. 0.04 (16-Dec-95)    Uses real HPC.
  35662.  
  35663. 1.00 (12-Jan-96)    First official release version.
  35664.  
  35665. 1.01 (11-Mar-96)    Version number updated to match the module.
  35666.  
  35667. 1.02 (06-Aug-96)    Added support for Acorn's software PC emulator.
  35668.                     Included redirection of input stream through DOS.
  35669.  
  35670. 1.03 (21-Feb-97)    Unique temporary filenames used.
  35671.                     Operation under Window now more reliable. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Code
  35672. Date        : 21-Feb-97
  35673. Author      : © A.Thoukydides, 1995, 1996, 1997
  35674. Description : Description of the support for writing extra PC side utilities
  35675.               using the supplied files.
  35676.  
  35677.  
  35678. INTRODUCTION
  35679.  
  35680. The ARMEdit suite has been designed to allow other software to developers to
  35681. add extra utilities to those supplied; all of the necessary files are
  35682. included in the standard distribution.
  35683.  
  35684. The PC side files were prepared using Borland Turbo C++ version 3.0 for DOS,
  35685. but they use C linkage and should be compatible with other compilers. Veneers
  35686. to allow the ARMEdit SWIs to be called from C/C++ were assembled using Acorn
  35687. ObjAsm version 3.06, and should be used in conjunction with Jonathan
  35688. Coxhead's OSLib.
  35689.  
  35690.  
  35691. FILES INCLUDED
  35692.  
  35693. The following header files are included in this distribution for use on the
  35694. PC side:
  35695.  
  35696.     ARMFILE.H   High level routines for copying individual files between
  35697.                 DOS and RISC OS. These perform the core of the GETFILE and
  35698.                 PUTFILE utilities. They provide an easy way of transferring
  35699.                 large amounts of data between the two environments.
  35700.  
  35701.     CLI.H       Functions to call RISC OS *commands with different levels of
  35702.                 input and output redirection.
  35703.                 
  35704.     SWI.H       This provides a single function to call a RISC OS SWI by name
  35705.                 from the PC. This should not normally be used, because it is
  35706.                 very inefficient, but is useful when prototyping code.
  35707.     
  35708.     TALK.H      This is the main interface to the RISC OS services. It
  35709.                 provides routines for performing generally useful functions,
  35710.                 e.g. allocating and deallocating memory, 
  35711.  
  35712. All of the required object files to be linked with are included in a single
  35713. library file:
  35714.  
  35715.     ARMEDIT.LIB
  35716.  
  35717. The following header files are included for use under RISC OS:
  35718.  
  35719.     h.armeditswi    C interface functions to all of the SWIs provided by the
  35720.                     ARMEdit module. See Docs.Module for details of all the
  35721.                     SWIs.
  35722.  
  35723. A single object file is included containing the assembled veneers:
  35724.  
  35725.     o.armeditswi
  35726.  
  35727.  
  35728. FUNCTIONS PROVIDED
  35729.  
  35730. The following sections give brief descriptions of the functions provided in
  35731. each header file. For more details read the comments in the header files
  35732. themselves.
  35733.  
  35734. The provided services should allow almost any operation to be performed.
  35735. However, please get in touch if extra features would be useful - if they are
  35736. sufficiently general they may get added in a future release of the ARMEdit
  35737. module.
  35738.  
  35739.  
  35740. ARMFILE.H
  35741.  
  35742. armfile_copy_dos_riscos
  35743.  
  35744.     Copy a file from RISC OS to DOS.
  35745.     
  35746.  
  35747. armfile_copy_riscos_dos
  35748.  
  35749.     Copy a file from DOS to RISC OS.
  35750.     
  35751.  
  35752. armfile_translate_dos_riscos
  35753.  
  35754.     Convert a DOS filename into a RISC OS equivalent. This performs
  35755.     substitutions similar to those performed by DOSFS.
  35756.  
  35757.  
  35758. armfile_translate_riscos_dos
  35759.  
  35760.     Convert a RISC OS filename into a DOS equivalent. This performs the
  35761.     opposite operation to armfile_translate_dos_riscos.
  35762.  
  35763. armfile_temporary
  35764.  
  35765.     Generate the filename for a temporary RISC OS file, and ensure it is
  35766.     deleted before the program exits.
  35767.  
  35768. armfile_create_dir
  35769.  
  35770.     Create a RISC OS directory.
  35771.  
  35772.  
  35773. CLI.H
  35774.  
  35775. cli_simple
  35776.  
  35777.     A simple *command interface. If output redirection is required then it
  35778.     is performed via a file.
  35779.     
  35780.  
  35781. cli_redir
  35782.  
  35783.     A more comprehensive *command interface. Both input and ouput can be
  35784.     redirected to/from any DOS stream or file. Special action is taken if
  35785.     the streams correspond to the keyboard or screen.
  35786.     
  35787.  
  35788. SWI.H
  35789.  
  35790. swi_swi
  35791.  
  35792.     Call a specified RISC OS SWI by its name. As mentioned above this is a
  35793.     very inefficient operation to perform, so should normally only be used
  35794.     during development stages of new software.
  35795.  
  35796.  
  35797. TALK.H
  35798.  
  35799. talk_swi
  35800.  
  35801.     Call a RISC OS SWI by number. It should be remembered that the SWI can
  35802.     not read PC memory directly; the required data must be copied using the
  35803.     other functions provided in the talk module.
  35804.  
  35805.  
  35806. talk_read
  35807.  
  35808.     Read a block of RISC OS memory.
  35809.  
  35810.  
  35811. talk_write
  35812.  
  35813.     Write a block of RISC OS memory.
  35814.  
  35815.  
  35816. talk_malloc
  35817.  
  35818.     Claimed the specified amount of RISC OS memory. The memory should be
  35819.     released using talk_free. However, it will automatically be freed when
  35820.     the PC card is either reset or quit; ensuring that all claimed memory
  35821.     is eventually deallocated even if the PC software terminates abnormally.
  35822.  
  35823.  
  35824. talk_free
  35825.  
  35826.     Free a block of memory previously claimed using talk_malloc.
  35827.  
  35828.  
  35829. talk_ext_to_filetype
  35830.  
  35831.     Convert a DOS file extension into a RISC OS filetype. This uses the
  35832.     list of mappings set by the DOSMap command. See Docs.Module for more
  35833.     details.
  35834.  
  35835.  
  35836. talk_filetype_to_ext
  35837.  
  35838.     Convert a RISC OS filetype into a DOS file extension. This uses the
  35839.     list of mappings set by the DOSMap command. See Docs.Module for more
  35840.     details.
  35841.  
  35842.  
  35843. talk_file_open
  35844.  
  35845.     Open a RISC OS file. It is possible to specify that the file should
  35846.     automatically be deleted when it is closed; useful for temporary files.
  35847.     The file should be closed using talk_file_close. However, it will
  35848.     automatically be closed when the PC card is either reset or quit;
  35849.     ensuring that all files are eventually closed (and deleted if required)
  35850.     even if the PC software terminates abnormally.
  35851.  
  35852.  
  35853. talk_file_close
  35854.  
  35855.     Close a RISC OS file previously opened using talk_file_open.
  35856.  
  35857.  
  35858. talk_file_read
  35859.  
  35860.     Read a block of memory from a RISC OS file.
  35861.     
  35862.  
  35863. talk_file_write
  35864.  
  35865.     Write a block of memory to a RISC OS file.
  35866.  
  35867.  
  35868. talk_comms_start
  35869.  
  35870.     Register a communications client.
  35871.  
  35872.  
  35873. talk_comms_end
  35874.  
  35875.     Deregister a communications client.
  35876.     
  35877.  
  35878. talk_comms_tx
  35879.  
  35880.     Transmit a message to another client.
  35881.     
  35882.  
  35883. talk_comms_rx
  35884.  
  35885.     Receive a message from another client.
  35886.  
  35887.  
  35888. talk_date_to_dos
  35889.  
  35890.     Convert a date and time from RISC OS to DOS format.
  35891.     
  35892.  
  35893. talk_date_to_riscos
  35894.  
  35895.     Convert a date and time from DOS to RISC OS format.
  35896.     
  35897.  
  35898. talk_comms_reply
  35899.  
  35900.     Reply to a message from another client.
  35901.  
  35902. talk_faster
  35903.  
  35904.     Disable multitasking for faster operations.
  35905.  
  35906. talk_temporary
  35907.  
  35908.     Generate a unique filename for a temporary RISC OS file.
  35909.  
  35910.  
  35911. MESSAGE PASSING
  35912.  
  35913. The ARMEdit module provides a general method for PC software to communicate
  35914. with RISC OS applications or modules. The system is intentionally left
  35915. simple; many aspects are left to users of the protocol to implement as
  35916. required, e.g. detection and handling of problems, and the format and useage
  35917. of different messages.
  35918.  
  35919. The system allows multiple simultaneous clients, both under RISC OS and on
  35920. the PC. This makes it suitable for use in multi-tasking (or task
  35921. switching) environments such as Windows. Each client has a 4 byte ID which is
  35922. preallocated (by me, on request) and a 4 byte dynamically allocated (by the
  35923. ARMEdit module) handle. There are two special IDs: ID 0 is always used by PC
  35924. software, and ID 1 is used to broadcast messages to all clients (this is
  35925. explained in more detail below). Other IDs are allocated to different
  35926. services being provided. If a program provides a number of distinct services,
  35927. or if required for some other reason, it may have more than one ID. The range
  35928. of IDs 2 to 255 may be freely used for development purposes, but must not be
  35929. used by distributed software.
  35930.  
  35931. When messages are sent to ID 1 they are passed to all clients which accept
  35932. messages from the ARMEdit module (as specified when the clients register).
  35933. This is normally only used for a few specific messages (described in the
  35934. next section) which are useful to many clients. Other clients should not use
  35935. this facility except under special circumstances.
  35936.  
  35937. It is intended that each client provides a number of related services for a
  35938. particular ID, but it is up to the authors of clients to decide how the
  35939. message contents should be used. However, it is recommended that a service
  35940. selector field is placed at the start of all messages.
  35941.  
  35942. Each client has a message buffer (allocated by the ARMEdit module) used to
  35943. transmit messages. This buffer is of a fixed size (1kB) and can only contain
  35944. a single message. Attempting to send a message with one already in the buffer
  35945. overwrites the earlier message, regardless of how many clients it has been
  35946. delivered to.
  35947.  
  35948. To enable easy implementation of servers supporting multiple clients, it is
  35949. possible to place the message in th destination client's buffer. This should
  35950. normally only be used by the server to reply to a message, otherwise a
  35951. message could be overwritten.
  35952.  
  35953. Large blocks of data should be transferred via files. This reduces the
  35954. required memory usage and should speed up operations; to send a message from
  35955. the PC to a WIMP task requires the PC front-end to be paged in and then the
  35956. WIMP task to be subsequently paged in. However, transferring data to or from
  35957. a file can all be done while the PC front-end is paged in.
  35958.  
  35959. When a message is sent it is necessary to detect and handle non-delivery.
  35960. Unfortunately it is not easy to detect problems since the sender and receiver
  35961. cannot (generally) be active at the same time, and it is necessary for the PC
  35962. front-end to be multi-tasking in a window for communication to be possible
  35963. between PC and RISC OS tasks.
  35964.  
  35965. The suggested approach is that after the message is sent, the program waits
  35966. for a short time for a reply. If no reply is received then a message is
  35967. displayed to the user prompting for the PC to be placed in multi-tasking mode
  35968. and the relevant application to be started. The program should continue to
  35969. poll for a reply until either successful or aborted by the user.
  35970.  
  35971. This can be simplified in many situations to simply waiting for a reply or
  35972. for the user to abort the operation, especially after one successful
  35973. communication has occurred.
  35974.  
  35975. If the PC front-end is either reset or quit then all registered PC clients
  35976. are automatically deregistered, and any pending messages to or from them are
  35977. discarded.
  35978.  
  35979.  
  35980. STANDARD MESSAGES
  35981.  
  35982. The following messages are sent by the ARMEdit module to clients which
  35983. request them. All of the messages are sent from client ID 1. Any unrecognised
  35984. messages should be ignored.
  35985.  
  35986.     Reset
  35987.     
  35988.         Equivalent of power-on reset. This should normally be used to reset
  35989.         any state.
  35990.     
  35991.         Offset  Size    Description
  35992.         
  35993.         0       4       Reason code = 0.
  35994.     
  35995.     
  35996.     Shutdown
  35997.     
  35998.         The PC front-end is being quit (normal or error exit).
  35999.         
  36000.         Offset  Size    Description
  36001.         
  36002.         0       4       Reason code = 1.
  36003.  
  36004.  
  36005. LEGAL MATTERS
  36006.  
  36007. The "ARMEdit" header files, object files and documentation are supplied "as
  36008. is"; no warranty, express or implied, of the merchantability of this software
  36009. or its fitness for any particular purpose is given. In no circumstances shall
  36010. the author, or any provider or distributor of this software, be liable for
  36011. any damage, loss of profits, or any indirect or consequential loss arising
  36012. out of the use of this software or inability to use this software.
  36013.  
  36014. These files are FreeWare. Permission is granted for anyone to use them for
  36015. the sole purpose of developing software for use with the ARMEdit suite. Any
  36016. such software may be freely distributed, providing that use of the supplied
  36017. files is acknowledged in the documentation.
  36018.  
  36019. However, the ARMEdit module may only be distibuted in accordance with the
  36020. conditions contained in the ReadMe file enclosed in this distribution.
  36021.  
  36022.  
  36023. THINGS TO DO
  36024.  
  36025. The following are changes that may be made to the externally available
  36026. services sometime in the future.
  36027.  
  36028.     None at the moment!
  36029.  
  36030.  
  36031. VERSION HISTORY
  36032.  
  36033. 0.00 (12-Nov-95)    Original development version.
  36034.  
  36035. 0.04 (16-Dec-95)    First public development release.
  36036.  
  36037. 0.05 (17-Dec-95)    Improved filename translation.
  36038.  
  36039. 0.07 (28-Dec-95)    Added message passing protocol.
  36040.  
  36041. 1.00 (12-Jan-96)    First official release version.
  36042.  
  36043. 1.01 (11-Mar-96)    Version number updated to match the module.
  36044.  
  36045. 1.02 (06-Aug-96)    Linkage corrected for ARMFILE.H/.OBJ.
  36046.                     Added date and time conversion routines.
  36047.                     Placed the individual obect files in a library.
  36048.                     Support for Acorn's software PC emulator included.
  36049.                     Include *command interface.
  36050.                     Provided mechanism for checking delivery of messages.
  36051.  
  36052. 1.03 (21-Feb-97)    Extended message passing to support replies.
  36053.                     Included control over multitasking.
  36054.                     Added ability to generate temporary filenames.
  36055.                     Operation under Windows made more reliable.
  36056.                     Included veneers to the ARMEdit SWIs.
  36057.                     Added function to create a RISC OS directory.
  36058.                     Header files reformatted to use spaces instead of tabs.
  36059.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Device
  36060. Date        : 21-Feb-97
  36061. Author      : © A.Thoukydides, 1995, 1996, 1997
  36062. Description : Description of the ARMEDIT.SYS DOS device driver.
  36063.  
  36064.  
  36065. INTRODUCTION
  36066.  
  36067. The ARMEDIT.SYS device driver allows RISC OS filesystems to be accessed like
  36068. normal DOS drives. To use this driver it is necessary to load the ARMEdit
  36069. module before starting the PC front-end.
  36070.  
  36071.  
  36072. INSTALLING THE DRIVER
  36073.  
  36074. Add a line like the following to the CONFIG.SYS file:
  36075.  
  36076.     DEVICE=ARMEDIT.SYS [-limit <size>] <path1> [<path2> [...]]
  36077.  
  36078. where
  36079.  
  36080.     <size>      - The maximum size of file, specified in bytes, to include
  36081.                   in the device. The default of 10MB is used if no value is
  36082.                   specified. Use a value of 0 to allow all objects to be
  36083.                   included regardless of size.
  36084.  
  36085.     <path1> etc - The full RISC OS pathnames for the root of each emulated
  36086.                   device. Currently up to four paths may be specified.
  36087.  
  36088. The RISC OS pathnames may be prefixed by one or more of the following
  36089. characters:
  36090.  
  36091.     \           - Image files are treated as directories. This allows archives
  36092.                   to be accessed via a suitable RISC OS dearchiver, e.g. 
  36093.                   SparkFS or ArcFS.
  36094.  
  36095.     #           - Disables canonicalisation of the pathname. This allows
  36096.                   multiple discs to be used in removable drives.
  36097.  
  36098. If the driver is not in the root directory of the default drive then the full
  36099. pathname should be inserted after the "=" sign.
  36100.  
  36101. It may also be necessary to change the LASTDRIVE entry in the CONFIG.SYS
  36102. file to support more drives.
  36103.  
  36104.  
  36105. DIRECTORY LOGGING
  36106.  
  36107. The device driver builds up a DOS image of the RISC OS filesystem being
  36108. accessed. This has two side effects: Quite a lot of memory can be used, and
  36109. changes made to the filesystem from RISC OS will not be seen by the PC.
  36110.  
  36111. To overcome both these problems the command *ARMEdit_DevicesRelog should be
  36112. used to clear unrequired parts of the disc log. This command does not take
  36113. immediate effect - it waits until DOS informs the device driver that the
  36114. disc may be changed. Hence, there should be no files open from the PC on
  36115. the emulated device, and a simple operation should be performed (such as
  36116. typing "DIR").
  36117.  
  36118. Unexpected disc errors can be due one of a number of limitations being
  36119. reached, such as RAM or number of FAT entries. If this happens, and repeating
  36120. the operation does not complete the operation successfully, then try
  36121. *ARMEdit_DeviceRelog to clear the logged data.
  36122.  
  36123. If a Risc PC is being used, then the problem of a large amount of memory
  36124. being used for the logged directories can be overcome by using my virtual
  36125. memory manager Virtualise, available from Clares.
  36126.  
  36127.  
  36128. FILENAME TRANSLATION
  36129.  
  36130. To behave as a normal DOS device, all RISC OS filenames need to be translated
  36131. ino the 8.3 character filenames. This is performed in a number of steps.
  36132.  
  36133. Firstly, the three character file extension is chosen. If the original
  36134. filename had a DOS extension (starting with a "/" character) then this is
  36135. used. Otherwise, the RISC OS filetype is translated using the same DOS
  36136. mappings as used by the PUTFILE and GETFILE commands. These mappings can
  36137. be updated using *ARMEdit_DOSMap.
  36138.  
  36139. The individual characters of the filename are then translated in a similar
  36140. manner to DOSFS. Additionally, hard space characters (code 160) are converted
  36141. to "_" and other top bit set characters to "@".
  36142.  
  36143. Finally, any duplicate filenames are modified to allow access to all files
  36144. with unique names.
  36145.  
  36146.  
  36147. DRIVE LETTERS
  36148.  
  36149. Drive letters are assigned to all block input/output devices configured for
  36150. use. Examples of block devices are disc drives, CD-ROMs, scanners, and the
  36151. ARMEDIT.SYS device driver. Drive letter after the C: (boot) drive may change
  36152. when this device driver is installed.
  36153.  
  36154. Drive letter changes can affect the access to a network, CD-ROM drives, and
  36155. applications that reference existing drive letters.  When drive letters
  36156. change, the following items need to be checked:
  36157.  
  36158.     CONFIG.SYS and AUTOEXEC.BAT files need to reflect the new drive letters
  36159.     when loading device drivers.
  36160.     
  36161.     The PATH statement in the AUTOEXEC.BAT file may require changes to refer
  36162.     to the correct drives.
  36163.     
  36164.     Other batch files may reference the wrong drives.
  36165.     
  36166.     Windows .INI files and Windows groups should be updated with the new
  36167.     drive letter assignments, including the program icons.
  36168.     
  36169.     Rerun INSTALL or SETUP for application programs that do not allow the
  36170.     drive letter to be changed.
  36171.     
  36172.     Update any network login scripts as necessary.
  36173.     
  36174.     REMOUNT any compressed drives.
  36175.  
  36176.  
  36177. PRESERVING PREVIOUS DRIVE MAPPINGS
  36178.  
  36179. With PC-DOS (or versions of MS-DOS up to 5.0), the DOS ASSIGN command can be
  36180. used to overcome the problem of drives changing name. As an example, if
  36181. before using ARMEdit the CD-ROM drive was E: and a single ARMEdit device is
  36182. added which shifts the CD-ROM to drive F: then the command
  36183.  
  36184.     ASSIGN E=F F=E
  36185.  
  36186. will make the CD-ROM drive appear as drive E: and the ARMEdit device as drive
  36187. F:. Similarly, if two ARMEdit devices are added then
  36188.  
  36189.     ASSIGN E=G F=E G=F
  36190.  
  36191. will sort it out.
  36192.  
  36193. There does not appear to be a good solution to the problem with MS-DOS 6,
  36194. although the SUBST command can sometimes help.
  36195.  
  36196. With PC DOS 7 and Windows 95's MS-DOS mode, the DYNALOAD command can be used
  36197. to load the driver after the CD-ROM drive assigments have been performed by
  36198. MSCDEX. The syntax to use is:
  36199.  
  36200.     DYNALOAD ARMEDIT.SYS <path1> [<path2> [...]]
  36201.  
  36202. This may be either typed at the command line or included in the AUTOEXEC.BAT
  36203. file. Prefixing the line by LOADHIGH will load the driver as if it had been
  36204. loaded with DEVICEHIGH in the CONFIG.SYS file.
  36205.  
  36206.  
  36207. OTHER POINTS TO NOTE
  36208.  
  36209. The device driver does not currently support write operations. Any attempts
  36210. to modify the drive from the PC simply modify a copy in RAM. This is intended
  36211. mainly as a debugging aid, but may be extended to allow use as a RAM disc in
  36212. future.
  36213.  
  36214. Low level PC disc tools may not operate as expected on emulated devices. This
  36215. is due to the way in which the directory structure of the device is
  36216. dynamically constructed as it is accessed.
  36217.  
  36218. If heavy use has been made of emulated devices then some operations, such as
  36219. quitting the PC software, can take a surprisingly long time to complete. This
  36220. is normal, and is due to the operation of the memory management.
  36221.  
  36222. When used with Windows 95, the error:
  36223.  
  36224.     Windows was unable to identify the specified real mode driver which was
  36225.     loaded in your Config.sys file.
  36226.  
  36227.     If you no longer need this driver, remove it from your Config.sys file,
  36228.     Otherwise contact the manufacturer of this driver to see if a Windows
  36229.     (protected-mode) driver is available.  Windows will not perform optimally
  36230.     until you have done one of these things.
  36231.  
  36232. will be displayed. This is a consequence of the driver being written for DOS.
  36233. Ignore this error - the driver will operate correctly.
  36234.  
  36235.  
  36236. THINGS TO DO
  36237.  
  36238. The following are changes that may be made to the ARMEdit device driver
  36239. sometime in the future.
  36240.     
  36241.     Support write operations.
  36242.  
  36243.  
  36244. VERSION HISTORY
  36245.  
  36246. 0.00 (07-May-96)    Original development version.
  36247.  
  36248. 0.01 (27-May-96)    Support for Acorn's software PC emulator included.
  36249.  
  36250. 0.02 (13-Jun-96)    PC emulator support code corrected.
  36251.  
  36252. 1.02 (06-Aug-96)    First official release version.
  36253.  
  36254. 1.03 (21-Feb-97)    Maximum object size to include may be specified.
  36255.                     ARMEdit_DevicesRelog now accepts a "-now" switch.
  36256.                     Added option to disable canonicalisation of path names.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Ensure
  36257. Date        : 09-May-95
  36258. Author      : © A.Thoukydides, 1995
  36259. Description : Description of the "Ensure" utility.
  36260.  
  36261.  
  36262. INTRODUCTION
  36263.  
  36264. The "Ensure" utility is used to ensure that suitable versions of modules from
  36265. the !System.modules directory are loaded. There are two advantages over the
  36266. usual RMEnsure commands in a script file: only a single command is required
  36267. for each module, and the error messages are friendlier.
  36268.  
  36269. This utility is FreeWare; it may be freely used and copied. However, I
  36270. retain full copyright. See the section on "LEGAL MATTERS" for more details.
  36271.  
  36272.  
  36273. USAGE
  36274.  
  36275. The syntax is:
  36276.  
  36277.     Ensure <ModuleTitle> <Version> <Filename>
  36278.  
  36279. where
  36280.  
  36281.     <ModuleTitle>   - the name of the module, as given by *Modules
  36282.     
  36283.     <Version>       - the minimum version of the module required
  36284.     
  36285.     <Filename>      - the filename of the file within the !System.modules
  36286.                       directory, i.e. it is appended after "System:modules."
  36287.  
  36288. Note that no checking of arguments is currently performed.
  36289.  
  36290. Example of use:
  36291.  
  36292.     Run <App$Dir>.Ensure Iconbar 1.11 Toolbox.IconBar
  36293.  
  36294. This starts the Ensure utility from the application directory to ensure that
  36295. version 1.11 of the Iconbar module is loaded. If necessary the module is
  36296. loaded as "System:modules.Toolbox.Iconbar".
  36297.  
  36298.  
  36299. LEGAL MATTERS
  36300.  
  36301. The "Ensure" utility and documentation is supplied "as is"; no warranty,
  36302. express or implied, of the merchantability of this software or its fitness
  36303. for any particular purpose is given. In no circumstances shall the author, or
  36304. any provider or distributor of this software, be liable for any damage, loss
  36305. of profits, or any indirect or consequential loss arising out of the use of
  36306. this software or inability to use this software.
  36307.  
  36308. This utility is FreeWare. Permission is granted for anyone to distribute it
  36309. unchanged and in its entirety, providing that no profit is made in the
  36310. process. The "Ensure" utility may not be distributed if modified or
  36311. incomplete; neither may it be distributed without this documentation.
  36312.  
  36313. To use this utility, or any part of it, as part of a system or other
  36314. application that is for sale (for however much and for whatever reasons) or
  36315. released as copyright material then the author's express permission in
  36316. writing must be obtained. The author maintains copyright on all the material
  36317. supplied and reserves the right to change these conditions at any time
  36318. without notice.
  36319.  
  36320.  
  36321. CONTACTING THE AUTHOR
  36322.  
  36323. I would be interested in hearing of any bugs or other unexpected features in
  36324. this utility, and will endeavour to correct any such problems in future
  36325. releases. Suggestions for improvements are also most welcome. Implementation
  36326. depends upon practicability and on how much spare time I have.
  36327.  
  36328. If you have any comments on this program, or would like to suggest ways in
  36329. which it could be improved, I can be contacted at one of the following
  36330. addresses:
  36331.     
  36332.     Thalna
  36333.     2 Dukes Drive
  36334.     Bearwood
  36335.     Bournemouth
  36336.     Dorset
  36337.     BH11 9SZ
  36338.     
  36339.     thouky@tcp.co.uk
  36340.  
  36341. If in any communication you make specific reference to the program code please:
  36342.  
  36343.     Quote the version number and date of the utility (it is contained near
  36344.     the start of the executable binary).
  36345.     
  36346.     Refer only to the utility as released.
  36347.     
  36348.     Supply as many details as possible about the problem, including the
  36349.     hardware and software configuration of the machine being used.
  36350.  
  36351. Please send a stamped and self addressed envelope, or give details of how to
  36352. contact via e-mail, if you would like a reply.
  36353.  
  36354. I hope you find this application of some use.
  36355.  
  36356.  
  36357. ACKNOWLEDGEMENTS
  36358.  
  36359. I would like to the thank the following people for their contributions to
  36360. the development of this utility:
  36361.  
  36362.     Acorn Computers - The Risc PC, RISC OS and the ObjAsm assembler.
  36363.     Dominic Symes   - The brilliant !Zap editor; get a copy immediately.
  36364.     Robin Watts     - !Larger, the greatest backdrop program ever.
  36365.  
  36366. and everyone at the Acorn User Group in Oxford.
  36367.  
  36368.  
  36369. THINGS TO DO
  36370.  
  36371. The following are changes that may be made to this utility sometime in the
  36372. future:
  36373.     
  36374.     Checking of command-line arguments and display of syntax message.
  36375.     
  36376.     Use (optional) Messages file or system variables for error message text.
  36377.  
  36378.  
  36379. VERSION HISTORY
  36380.  
  36381. 0.00 (16-Apr-95)    Original development version.
  36382.  
  36383. 0.01 (03-May-95)    Tidied up the code and improved the documentation.
  36384.  
  36385. 1.00 (09-May-95)    First official release version.
  36386. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : FrontEnd
  36387. Date        : 21-Feb-97
  36388. Author      : © A.Thoukydides, 1996, 1997
  36389. Description : Description of the WIMP front-end "!ARMEdit" that is part of
  36390.               the ARMEdit suite.
  36391.  
  36392.  
  36393. INTRODUCTION
  36394.  
  36395. The "!ARMEdit" front-end adds functionality to the ARMEdit suite. It is
  36396. necessary for the operation of some, but not all, of the other components.
  36397. The front-end supports interactive help; use Acorn's !Help application to
  36398. obtain information about the item under the mouse pointer.
  36399.  
  36400. The utilities that use this front-end are:
  36401.  
  36402.     ARMEDIT.COM     The front-end is required to use the External Data
  36403.                     Editing Protocol.
  36404.  
  36405.     PUTFILE.COM     The front-end is used for the "Save as" method of
  36406.                     specifying a destination filename.
  36407.  
  36408.  
  36409. STARTING THE PROGRAM
  36410.  
  36411. Start the front-end by simply double-clicking SELECT on the "!ARMEdit" icon
  36412. in a directory viewer. After a short delay the application icon will appear
  36413. on the icon-bar.
  36414.  
  36415. The front-end may be loaded at any time, before or after the PC software has
  36416. been started.
  36417.  
  36418. If the banner window is found to be annoying, then it may be disabled by
  36419. commenting out the last line of the "!ARMEdit.!Run" file (by placing a "|"
  36420. character before the "Run" statement). Please do not distribute this software
  36421. with the banner disabled - always copy the original files.
  36422.  
  36423.  
  36424. THE ICON BAR
  36425.  
  36426. Clicking MENU on the icon which appears on the iconbar opens the main program
  36427. menu which offers the following options:
  36428.  
  36429.     Info            Moving over the sub-menu arrow displays a standard
  36430.                     program information window. The version number should be
  36431.                     the same as the version of the ARMEdit module being used.
  36432.                     Leaving the window open for 5 seconds will show some
  36433.                     other messages.
  36434.  
  36435.     PC card         Clicking SELECT starts the configured PC card front-end
  36436.                     software using the current PC card configuration. Moving
  36437.                     over the sub-menu arrow displays a list of named
  36438.                     configurations. Clicking SELECT on one of the
  36439.                     configurations will activate that configuration, and then
  36440.                     start the PC card software.
  36441.  
  36442.     Speed...        Clicking SELECT or moving over the sub-menu arrow displays
  36443.                     a dialogue box allowing the multitasking speed of the PC
  36444.                     card to be controlled.
  36445.  
  36446.     Relog devices   Clicking SELECT forces a relog of any ARMEDIT.SYS devices.
  36447.                     Moving over the sub-menu arrow and selecting the "Now"
  36448.                     option forces an immediate relog. These options are
  36449.                     equivalent to using the *ARMEdit_DevicesRelog command
  36450.                     without or with the "-now" switch.
  36451.  
  36452.     Configure...    Clicking SELECT opens up a dialogue box that allows
  36453.                     ARMEdit to be configured.
  36454.                     
  36455.     Quit            Quits the front-end program. The module is not affected.
  36456.  
  36457.  
  36458. SPEED CONTROL WINDOW
  36459.  
  36460. The PC card speed control window allows the multitasking speed of the PC card
  36461. to be controlled. This provides a convenient interface to the
  36462. *ARMEdit_Polling command. The speed may be set independently for when the PC
  36463. window has got the input focus (foreground) and when it has not got the focus
  36464. (background).
  36465.  
  36466. When the option buttons are not selected the default speed is used. Clicking
  36467. SELECT on an option button allows the speed to be adjusted. Larger values
  36468. increase the performance of the PC card at the expense of slowing down the
  36469. desktop.
  36470.  
  36471.  
  36472. CONFIGURATION WINDOW
  36473.  
  36474. The top area of the configuration window shows an icon for each area of
  36475. ARMEdit that may be configured. Clicking on an icon will open another window
  36476. allowing relevant options to be adjusted. The icons are:
  36477.  
  36478.     Front-end       Configuration options specific to the !ARMEdit front-end
  36479.                     application.
  36480.     
  36481.     Speed control   Control of the multitasking speed of the PC card.
  36482.     
  36483.     Paths           Default paths for the PC card front-end, configuration
  36484.                     utility and primary DOS partition. These are used for the
  36485.                     multiple named configurations.
  36486.     
  36487.     Configurations  Configuration of multiple named PC card configurations.
  36488.  
  36489.     Auto run        Specify obey files to run when the PC card is reset or
  36490.                     quit.
  36491.  
  36492. There are also two buttons at the bottom of the window:
  36493.  
  36494.     Save            Save and use the modified configuration. The changes will
  36495.                     also be used when !ARMEdit is started in the future.
  36496.     
  36497.     Cancel          Abandon any changes. If ADJUST is used then the
  36498.                     configuration window(s) are kept open, and the previously
  36499.                     saved configuration is restored.
  36500.  
  36501.  
  36502. CONFIGURATION WINDOW: FRONT-END
  36503.  
  36504. A single option is supported for configuring the !ARMEdit front-end:
  36505.  
  36506.     Quit with PC software
  36507.     
  36508.                     Selecting this option will result in the front-end
  36509.                     quitting at the same time as the PC software. This is
  36510.                     useful if the application is started automatically when
  36511.                     the PC software is run.
  36512.  
  36513.  
  36514. CONFIGURATION WINDOW: SPEED CONTROL
  36515.  
  36516. The default multitasking speed of the PC card can be set in this window.
  36517.  
  36518.     Foreground      This is the setting to use when the PC card has the input
  36519.                     focus.
  36520.     
  36521.     Background      This is the setting to use when the PC card has not got
  36522.                     the input focus.
  36523.  
  36524. Clicking on the READ CURRENT icon will set the icons from the currently
  36525. active speed. This can be useful if the main speed control option has been
  36526. used to set the required speed.
  36527.  
  36528.  
  36529. CONFIGURATION WINDOW: PATHS
  36530.  
  36531. This window allows the default application paths to be specified. The
  36532. writable fields may be typed into directly, or alternatively the relevant
  36533. icon may be dragged from a filer window and dropped in the appropriate place.
  36534. The required paths are:
  36535.  
  36536.     PC card front-end
  36537.     
  36538.                     This is the PC card front-end software, e.g. !PC, !PCx86
  36539.                     or !PC486.
  36540.     
  36541.     Configuration tool
  36542.     
  36543.                     This is the associated application used to edit the PC
  36544.                     card configuration, e.g. !PCconfig.
  36545.     
  36546.     Primary partition
  36547.     
  36548.                     This is the main PC partition. Direct SCSI DOS devices
  36549.                     are only supported if they can be accessed via DOSFS.
  36550.  
  36551.  
  36552. CONFIGURATION WINDOW: CONFIGURATIONS
  36553.  
  36554. The multiple PC card configurations offered by the main !ARMEdit menu can be
  36555. viewed or configured using this window. The top section of the window
  36556. contains a single option:
  36557.  
  36558.     Include DOS files
  36559.     
  36560.                     Selecting this option causes CONFIG/SYS and AUTOEXEC/BAT
  36561.                     to be automatically included with copies of the
  36562.                     "Current configuration".
  36563.  
  36564. The main area of the window allows the actual configurations to be edited.
  36565. At the top is a writable icon giving the name of the selected configuration.
  36566. The name of any configuration (other than the "Current configuration") may be
  36567. changed by simply typing a new name into the icon.
  36568.  
  36569. Clicking SELECT on the popup button to the right of the configuration name,
  36570. or MENU anywhere in the window, opens a menu giving a couple of options and
  36571. a list of the defined configurations. The options are:
  36572.  
  36573.     Copy            Create a copy of the selected configuration. The copy is
  36574.                     as exact duplicate of the existing configuration, except
  36575.                     when the "Current configuration" is selected. When the
  36576.                     current configuration is copied it is given the name
  36577.                     "New configuration" and the "Include DOS files" option
  36578.                     is used.
  36579.     
  36580.     Delete          Delete the selected configuration. The current
  36581.                     configuration cannot be deleted.
  36582.  
  36583. Clicking on one of the configuration names selects that configuration for
  36584. editing.
  36585.  
  36586. Below the configuration name some icons are shown. Clicking on an icon will
  36587. either perform an action or open another window allowing aspects of the
  36588. configuration to be edited. The icons are:
  36589.  
  36590.     Config utility  Clicking on this icon will start the PC card configuration
  36591.                     tool to edit the selected configuration. The application
  36592.                     to use may be changed in either the global or
  36593.                     configuration specific paths option.
  36594.     
  36595.     Text editor     Clicking on this icon loads the selected configuration
  36596.                     into a text editor. This uses the External Data Editing
  36597.                     Protocol, so !Edit is not supported. Use this to include
  36598.                     non-standard options in the configuration.
  36599.     
  36600.     Paths           Open a window allowing the paths specific to this
  36601.                     application to be changed.
  36602.     
  36603.     DOS files       Open a window listing the DOS files associated with the
  36604.                     selected configuration. This allows the list to be
  36605.                     changed, and for the copies of the files to be updated.
  36606.  
  36607. CONFIGURATION WINDOW: CONFIGURATIONS - PATHS
  36608.  
  36609. This window allows the application paths associated with a configuration to
  36610. be specified. This is similar to the default paths window; the main
  36611. difference being that the window is split into two sections with associated
  36612. radio buttons:
  36613.  
  36614.     Default         Selecting this option uses the default paths for this
  36615.                     configuration.
  36616.     
  36617.     Other           Selecting this option allows the paths to be changed for
  36618.                     this configuration.
  36619.  
  36620. Each configuration may have its own independent path settings.
  36621.  
  36622.  
  36623. CONFIGURATION WINDOW: CONFIGURATIONS - DOS FILES
  36624.  
  36625. The top half of this window lists the DOS files associated with the selected
  36626. configuration. If a file is referenced with respect to the primary partition
  36627. then the partition path is displayed in grey. Click on the name of a file to
  36628. select it.
  36629.  
  36630. The lower half of the window allows the details of a file to be viewed or
  36631. changed. The writable field may be typed into directly, or alternatively the
  36632. relevant icon may be dragged from a filer window and dropped on the arrow.
  36633. The "Relative to partition" option controls whether the primary partition
  36634. path should be prefixed to the filename.
  36635.  
  36636. There are two special buttons near the bottom of the window:
  36637.  
  36638.     Remove          Remove the selected file from the configuration.
  36639.     
  36640.     Update copies   Make new copies of the files associated with this
  36641.                     configuration. This should be used after adding any files
  36642.                     to store a copy with the configuration.
  36643.  
  36644.  
  36645. CONFIGURATION WINDOW: AUTO RUN
  36646.  
  36647. This window allows obey files to be specified that can be executed
  36648. automatically at the following times:
  36649.  
  36650.     PC booted       This file is run when the PC card is either booted or
  36651.                     reset. It could be used to ensure that other support
  36652.                     software, such as !PCEx is loaded.
  36653.     
  36654.     PC front-end quit
  36655.     
  36656.                     This file is run when the PC card front-end is quit.
  36657.                     The default file kills any PC related modules that are
  36658.                     not needed when the PC card is not being used.
  36659.  
  36660. The writable fields may be typed into directly, or alternatively the relevant
  36661. icon may be dragged from a filer window and dropped in the appropriate place.
  36662.  
  36663. Note that the obey files will only be executed when the desktop is active.
  36664. However, if the PC card is running in single-tasking mode, then one obey file
  36665. may be run when the desktop is reentered.
  36666.  
  36667.  
  36668. THINGS TO DO
  36669.  
  36670. The following are changes that may be made to the !ARMEdit front-end sometime
  36671. in the future.
  36672.     
  36673.     Load a configured text editor if external edit messages returned.
  36674.     
  36675.     Support file conversions between common DOS and RISC OS formats.
  36676.     
  36677.     Provide access to the Windows clipboard.
  36678.     
  36679.     Support execution of commands in a TaskWindow from the OSCLI command.
  36680.     
  36681.     Include an installer to copy files to PC partition and change CONFIG.SYS
  36682.     and AUTOEXEC.BAT files.
  36683.     
  36684.     Add option to automatically start the PC front-end when loaded.
  36685.  
  36686.  
  36687. VERSION HISTORY
  36688.  
  36689. 0.00 (10-Sep-96)    Original development version.
  36690.  
  36691. 0.01 (11-Sep-96)    Added ability to set cursor position of external edits.
  36692.                     "Save as" window added for PUTFILE command.
  36693.  
  36694. 0.02 (03-Oct-96)    Icons resized to contain complete text with system font.
  36695.                     Menu closed before exiting to avoid bug in Toolbox code.
  36696.                     Unused Toolbox modules no longer loaded.
  36697.                     Added support for multiple PC card configurations.
  36698.  
  36699. 0.03 (09-Oct-96)    Fixed SaveAs window handling for PUTFILE utility.
  36700.                     Moved configuration editor to a different executable.
  36701.  
  36702. 0.04 (17-Oct-96)    Child tasks started indirectly to avoid Toolbox problems.
  36703.  
  36704. 0.05 (19-Dec-96)    External edits of configuration files clear modified flags.
  36705.                     Rewritten and improved multiple configuration handling.
  36706.                     Some new sprites within configuration editor.
  36707.  
  36708. 0.06 (24-Dec-96)    PC front-end booted before starting configuration editor.
  36709.                     Modified paths used by configurations editor before save.
  36710.  
  36711. 0.07 (17-Jan-97)    Added menu options to force a relog of the device driver.
  36712.  
  36713. 0.08 (05-Feb-97)    Obey files can be automatically run when PC booted or quit.
  36714.  
  36715. 0.09 (10-Feb-97)    Corrected copyright message.
  36716.  
  36717. 1.03 (21-Feb-97)    First official release version.rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : HPC
  36718. Date        : 21-Feb-97
  36719. Author      : © A.Thoukydides, 1995, 1996, 1997
  36720. Description : High-level Procedure Call (HPC) services implemented by the
  36721.               ARMEdit module.
  36722.  
  36723.  
  36724. INTRODUCTION
  36725.  
  36726. The ARMEdit module provides a number of HPC services. To allow development to
  36727. start before HPC is included in the PC front-end software, and to support
  36728. earlier releases of the front-end software, a simplified interface via I/O
  36729. ports is also supported.
  36730.  
  36731. All of the services in this document use the HPC service identifier &105
  36732. which has been allocated by Aleph One.
  36733.  
  36734.  
  36735. I/O PORT ACCESS
  36736.  
  36737. The following I/O port assignments are currently used:
  36738.  
  36739.     &2E0    PORT_STATUS Word read
  36740.     &2E0    PORT_CMD    Word write
  36741.     &2E2    PORT_DATA   Byte or word read/write
  36742.  
  36743. The following sequence of operations should occur to perform an HPC call:
  36744.  
  36745.     Read PORT_STATUS. The possible return codes are:
  36746.     
  36747.         &454D   System is available and ready.
  36748.  
  36749.         &4D45   System is currently busy processing another HPC call, and
  36750.                 cannot currently be used for another call.
  36751.  
  36752.         Any other code indicates that the service is not available.
  36753.  
  36754.     Write &0000 to PORT_CMD to start transfer of data.
  36755.  
  36756.     Write the HPC packet data to PORT_DATA as either bytes or words.
  36757.  
  36758.     Write &0001 to PORT_CMD to perform the HPC call.
  36759.     
  36760.     Write &0002 to PORT_CMD to start reading the reply.
  36761.     
  36762.     Read the HPC reply packet from PORT_DATA as either bytes or words.
  36763.     
  36764.     Write &0003 to PORT_CMD to reset the HPC system.
  36765.  
  36766. The port based HPC packets have the same 16384 byte limit that proper HPC
  36767. packets have.
  36768.  
  36769. Note that only HPC services provided by the ARMEdit module can be called
  36770. using this I/O port system; other services can only be called via the normal
  36771. HPC system. However, the HPC identifier is still checked.
  36772.  
  36773.  
  36774. HPC CALLS
  36775.  
  36776. For details of making HPC calls directly (which is potentially much more
  36777. efficient) contact Aleph One, as the information is covered by a Non
  36778. Disclosure Agreement.
  36779.  
  36780.  
  36781. RETURN CODES
  36782.  
  36783. All of the HPC calls place a 4 byte return code at the start of the return
  36784. block. The generic values are
  36785.  
  36786.     &0000   The operation was successful.
  36787.  
  36788.     &0001   The operation failed. The exact meaning of this depends upon the
  36789.             reason code, but in general it indicates that the rest of the
  36790.             return block is invalid.
  36791.     
  36792.     &FFFF   Service or reason code is unknown.
  36793.  
  36794. See the individual reason codes for details of any other codes returned, and
  36795. any contents of the remainder of the return block.
  36796.  
  36797.  
  36798. HPC_ARMEDIT_SWI
  36799.  
  36800.     Calls a specified RISC OS SWI by number. The SWI is always called with
  36801.     the X (error returning) bit set.
  36802.     
  36803.     Data sent:
  36804.     
  36805.         Offset  Size    Description
  36806.         
  36807.         0       2       HPC service ID.
  36808.         2       2       Reason code = &0000.
  36809.         4       4       SWI number.
  36810.         8       40      Values for registers R0 to R9 on entry to the SWI.
  36811.     
  36812.     Data returned:
  36813.     
  36814.         Offset  Size    Description
  36815.         
  36816.         0       4       Return code.
  36817.         4       256     RISC OS style error block returned by SWI if the
  36818.                         return code is &0001.
  36819.         260     40      Values of registers R0 to R9 on exit from the SWI if
  36820.                         the return code is &0000.
  36821.  
  36822.  
  36823. HPC_ARMEDIT_READ
  36824.  
  36825.     Read ARM memory.
  36826.     
  36827.     Data sent:
  36828.     
  36829.         Offset  Size    Description
  36830.         
  36831.         0       2       HPC service ID.
  36832.         2       2       Reason code = &0001.
  36833.         4       4       Start address of memory to read.
  36834.         8       4       Number of bytes to read. (n <= 16380)
  36835.  
  36836.     Data returned:
  36837.     
  36838.         Offset  Size    Description
  36839.         
  36840.         0       4       Return code.
  36841.         4       n       The contents of the specified memory.
  36842.  
  36843.  
  36844. HPC_ARMEDIT_WRITE
  36845.  
  36846.     Write ARM memory.
  36847.     
  36848.     Data sent:
  36849.     
  36850.         Offset  Size    Description
  36851.         
  36852.         0       2       HPC service ID.
  36853.         2       2       Reason code = &0002.
  36854.         4       4       Start address of memory to read.
  36855.         8       4       Number of bytes to write. (n <= 16372)
  36856.         12      n       The data to write.
  36857.  
  36858.     Data returned:
  36859.     
  36860.         Offset  Size    Description
  36861.         
  36862.         0       4       Return code.
  36863.  
  36864.  
  36865. HPC_ARMEDIT_ALLOC
  36866.  
  36867.     Claim a block of ARM memory. This is automatically released when the PC
  36868.     is shutdown or reset, but it is better to free it when no longer required
  36869.     using HPC_ARMEDIT_FREE.
  36870.         
  36871.     Data sent:
  36872.     
  36873.         Offset  Size    Description
  36874.         
  36875.         0       2       HPC service ID.
  36876.         2       2       Reason code = &0003.
  36877.         4       4       Amount of memory to claim.
  36878.  
  36879.     Data returned:
  36880.     
  36881.         Offset  Size    Description
  36882.         
  36883.         0       4       Return code.
  36884.         4       4       Address of the block of memory allocated.
  36885.  
  36886.  
  36887. HPC_ARMEDIT_FREE
  36888.  
  36889.     Release a block of ARM memory previously claimed using HPC_ARMEDIT_ALLOC.
  36890.         
  36891.     Data sent:
  36892.     
  36893.         Offset  Size    Description
  36894.         
  36895.         0       2       HPC service ID.
  36896.         2       2       Reason code = &0004.
  36897.         4       4       The address of the block of memory.
  36898.  
  36899.     Data returned:
  36900.     
  36901.         Offset  Size    Description
  36902.         
  36903.         0       4       Return code.
  36904.  
  36905.  
  36906. HPC_ARMEDIT_EXTTYPE
  36907.  
  36908.     Convert a DOS extension into a RISC OS filetype.
  36909.         
  36910.     Data sent:
  36911.     
  36912.         Offset  Size    Description
  36913.         
  36914.         0       2       HPC service ID.
  36915.         2       2       Reason code = &0005.
  36916.         4       4       The extension in upper case padded with 0 bytes to
  36917.                         four characters.
  36918.  
  36919.     Data returned:
  36920.     
  36921.         Offset  Size    Description
  36922.         
  36923.         0       4       Return code.
  36924.         4       4       The RISC OS filetype.
  36925.  
  36926.  
  36927. HPC_ARMEDIT_TYPEEXT
  36928.  
  36929.     Convert a RISC OS filetype into a DOS extension.
  36930.         
  36931.     Data sent:
  36932.     
  36933.         Offset  Size    Description
  36934.         
  36935.         0       2       HPC service ID.
  36936.         2       2       Reason code = &0006.
  36937.         4       4       The RISC OS filetype.
  36938.  
  36939.     Data returned:
  36940.     
  36941.         Offset  Size    Description
  36942.         
  36943.         0       4       Return code.
  36944.         4       4       The extension in upper case padded with 0 bytes to
  36945.                         four characters.
  36946.  
  36947.  
  36948. HPC_ARMEDIT_FOPEN
  36949.  
  36950.     Open a RISC OS file. This is automatically closed when the PC is shutdown
  36951.     or reset, but it is better to close it when no longer required using
  36952.     HPC_ARMEDIT_CLOSE. A file opened using this call should not be closed
  36953.     using RISC OS routines directly.
  36954.         
  36955.     Data sent:
  36956.     
  36957.         Offset  Size    Description
  36958.         
  36959.         0       2       HPC service ID.
  36960.         2       2       Reason code = &0007.
  36961.         4       4       -1 to open existing file, or initial size of file to
  36962.                         create a new one.
  36963.         8       4       Non-zero to automatically delete the file when closed.
  36964.         12      n       Name of file to open.
  36965.  
  36966.     Data returned:
  36967.     
  36968.         Offset  Size    Description
  36969.         
  36970.         0       4       Return code.
  36971.         4       4       RISC OS file handle.
  36972.  
  36973.  
  36974. HPC_ARMEDIT_FCLOSE
  36975.  
  36976.     Close a RISC OS file previously opened using HPC_ARMEDIT_OPEN. The file
  36977.     is deleted if specified when the file was opened.
  36978.         
  36979.     Data sent:
  36980.     
  36981.         Offset  Size    Description
  36982.         
  36983.         0       2       HPC service ID.
  36984.         2       2       Reason code = &0008.
  36985.         4       4       RISC OS file handle.
  36986.  
  36987.     Data returned:
  36988.     
  36989.         Offset  Size    Description
  36990.         
  36991.         0       4       Return code.
  36992.  
  36993.  
  36994. HPC_ARMEDIT_FREAD
  36995.  
  36996.     Read from a RISC OS file.
  36997.         
  36998.     Data sent:
  36999.     
  37000.         Offset  Size    Description
  37001.         
  37002.         0       2       HPC service ID.
  37003.         2       2       Reason code = &0009.
  37004.         4       4       RISC OS file handle.
  37005.         8       4       Sequential file pointer for start of block, or -1 for
  37006.                         current position.
  37007.         12      4       Number of bytes to read.
  37008.  
  37009.     Data returned:
  37010.     
  37011.         Offset  Size    Description
  37012.         
  37013.         0       4       Return code.
  37014.         4       4       Number of bytes read.
  37015.         8       n       The data read from the file.
  37016.  
  37017.  
  37018. HPC_ARMEDIT_FWRITE
  37019.  
  37020.     Write to a RISC OS file.
  37021.         
  37022.     Data sent:
  37023.     
  37024.         Offset  Size    Description
  37025.         
  37026.         0       2       HPC service ID.
  37027.         2       2       Reason code = &000A.
  37028.         4       4       RISC OS file handle.
  37029.         8       4       Sequential file pointer for start of block, or -1 for
  37030.                         current position.
  37031.         12      4       Number of bytes to write.
  37032.         16      n       The data to write to the file.
  37033.  
  37034.     Data returned:
  37035.     
  37036.         Offset  Size    Description
  37037.         
  37038.         0       4       Return code.
  37039.  
  37040.  
  37041. HPC_ARMEDIT_TALK_START
  37042.  
  37043.     Register a new client task. Note that a client ID of 0 is assumed.
  37044.     It does not make sense being able to request notification of reset or
  37045.     shutdown.
  37046.     
  37047.     Data sent:
  37048.     
  37049.         Offset  Size    Description
  37050.         
  37051.         0       2       HPC service ID.
  37052.         2       2       Reason code = &000B.
  37053.  
  37054.     Data returned:
  37055.     
  37056.         Offset  Size    Description
  37057.         
  37058.         0       4       Return code.
  37059.         4       4       A unique client handle.
  37060.  
  37061.  
  37062. HPC_ARMEDIT_TALK_END
  37063.  
  37064.     Deregister a client task.
  37065.     
  37066.     Data sent:
  37067.     
  37068.         Offset  Size    Description
  37069.         
  37070.         0       2       HPC service ID.
  37071.         2       2       Reason code = &000C.
  37072.         4       4       The previously assigned handle for this client task.
  37073.     
  37074.     Data returned:
  37075.     
  37076.         Offset  Size    Description
  37077.         
  37078.         0       4       Return code.
  37079.         
  37080.  
  37081. HPC_ARMEDIT_TALK_TX
  37082.  
  37083.     Send a message to another client task.
  37084.     
  37085.     Data sent:
  37086.     
  37087.         Offset  Size    Description
  37088.         
  37089.         0       2       HPC service ID.
  37090.         2       2       Reason code = &000D.
  37091.         4       4       Client handle for this task.
  37092.         8       4       Either the ID or client handle for the recipient.
  37093.         12      1024    The message to send.
  37094.     
  37095.     Data returned:
  37096.     
  37097.         Offset  Size    Description
  37098.         
  37099.         0       4       Return code.
  37100.  
  37101.         
  37102. HPC_ARMEDIT_TALK_RX
  37103.  
  37104.     Check for any waiting messages for this client task. The return code is
  37105.     failure if there is no message waiting. There is no acknowledge call
  37106.     since all messages to PC software should be addressed to a particular
  37107.     handle.
  37108.     
  37109.     Data sent:
  37110.     
  37111.         Offset  Size    Description
  37112.         
  37113.         0       2       HPC service ID.
  37114.         2       2       Reason code = &000E.
  37115.         4       4       Client handle for this task.
  37116.     
  37117.     Data returned:
  37118.     
  37119.         Offset  Size    Description
  37120.         
  37121.         0       4       Return code.
  37122.         4       4       Source ID.
  37123.         8       4       Source client handle.
  37124.         12      1024    The waiting message.
  37125.  
  37126.  
  37127. HPC_ARMEDIT_DEVICE_INITIALISE
  37128.  
  37129.     Called during initialisation of device driver to obtain a start-up
  37130.     banner message and choose the number of devices.
  37131.     
  37132.     Data sent:
  37133.     
  37134.         Offset  Size    Description
  37135.         
  37136.         0       2       HPC service ID.
  37137.         2       2       Reason code = &000F.
  37138.         4       1       Drive number for first unit of this driver.
  37139.         5       256     Text after equals sign on CONFIG.SYS line that loaded
  37140.                         this driver.
  37141.  
  37142.     Data returned:
  37143.     
  37144.         Offset  Size    Description
  37145.         
  37146.         0       4       Return code.
  37147.         4       4       Number of devices supported.
  37148.         8       256     Text of message terminated by a "$" character.
  37149.  
  37150.  
  37151. HPC_ARMEDIT_DEVICE_BPB
  37152.  
  37153.     Construct a BIOS Parameter Block (BPB) for a device driver. This also
  37154.     informs ARMEdit that the disc contents could be changed.
  37155.     
  37156.     Data sent:
  37157.     
  37158.         Offset  Size    Description
  37159.         
  37160.         0       2       HPC service ID.
  37161.         2       2       Reason code = &0010.
  37162.         4       1       Unit code (drive number), or -1 for initialisation.
  37163.     
  37164.     Data returned:
  37165.     
  37166.         Offset  Size    Description
  37167.         
  37168.         0       4       Return code.
  37169.         4       13      The BIOS parameter block.
  37170.  
  37171.  
  37172. HPC_ARMEDIT_DEVICE_CHANGED
  37173.  
  37174.     Perform a media check for a device driver.
  37175.     
  37176.     Data sent:
  37177.     
  37178.         Offset  Size    Description
  37179.         
  37180.         0       2       HPC service ID.
  37181.         2       2       Reason code = &0011.
  37182.         4       1       Unit code (drive number).
  37183.     
  37184.     Data returned:
  37185.     
  37186.         Offset  Size    Description
  37187.         
  37188.         0       4       Return code.
  37189.         4       4       The media change code:
  37190.                             -1  Disc has been changed.
  37191.                             0   Don't know if disc has been changed.
  37192.                             1   Disc has not been changed.
  37193.  
  37194.  
  37195. HPC_ARMEDIT_DEVICE_READ
  37196.     
  37197.     Read an emulated disc sector for a device driver.
  37198.     
  37199.     Data sent:
  37200.     
  37201.         Offset  Size    Description
  37202.         
  37203.         0       2       HPC service ID.
  37204.         2       2       Reason code = &0012.
  37205.         4       1       Unit code (drive number).
  37206.         5       2       Sector number.
  37207.     
  37208.     Data returned:
  37209.     
  37210.         Offset  Size    Description
  37211.         
  37212.         0       4       Return code.
  37213.         4       n       The data read from the sector.
  37214.  
  37215.  
  37216. HPC_ARMEDIT_DEVICE_WRITE
  37217.     
  37218.     Write an emulated disc sector for a device driver.
  37219.     
  37220.     Data sent:
  37221.     
  37222.         Offset  Size    Description
  37223.         
  37224.         0       2       HPC service ID.
  37225.         2       2       Reason code = &0013.
  37226.         4       1       Unit code (drive number).
  37227.         5       2       Sector number.
  37228.         7       1       Dummy data to pad to word boundary.
  37229.         8       n       The data to write to the sector.
  37230.     
  37231.     Data returned:
  37232.     
  37233.         Offset  Size    Description
  37234.  
  37235.         0       4       Return code.
  37236.  
  37237.  
  37238. HPC_ARMEDIT_DATE_TO_DOS
  37239.  
  37240.     Convert a time and date from the standard RISC OS 5 bytes format to the
  37241.     4 byte DOS equivalent.
  37242.     
  37243.     Data sent:
  37244.     
  37245.         Offset  Size    Description
  37246.         
  37247.         0       2       HPC service ID.
  37248.         2       2       Reason code = &0014.
  37249.         4       5       Centiseconds since 00:00:00 on January 1 1900.
  37250.     
  37251.     Data returned:
  37252.     
  37253.         Offset  Size    Description
  37254.         
  37255.         0       4       Return code.
  37256.         4       4       2 byte time (hhhhhmmmmmmsssss).
  37257.         8       4       2 byte date (yyyyyyymmmmddddd).
  37258.     
  37259.  
  37260. HPC_ARMEDIT_DATE_TO_RISCOS
  37261.  
  37262.     Convert a time and date from the standard DOS 4 byte format to the 5 byte
  37263.     RISC OS equivalent.
  37264.     
  37265.     Data sent:
  37266.     
  37267.         Offset  Size    Description
  37268.         
  37269.         0       2       HPC service ID.
  37270.         2       2       Reason code = &0015.
  37271.         4       2       2 byte time (hhhhhmmmmmmsssss).
  37272.         6       2       2 byte date (yyyyyyymmmmddddd).
  37273.     
  37274.     Data returned:
  37275.     
  37276.         Offset  Size    Description
  37277.         
  37278.         0       4       Return code.
  37279.         4       5       Centiseconds since 00:00:00 on January 1 1900.
  37280.  
  37281.  
  37282. HPC_ARMEDIT_OSCLI_START
  37283.  
  37284.     Start executing a specified *command. The input and output from the
  37285.     command are redirected.
  37286.     
  37287.     Data sent:
  37288.     
  37289.         Offset  Size    Description
  37290.         
  37291.         0       2       HPC service ID.
  37292.         2       2       Reason code = &0016.
  37293.         4       256     The command to execute.
  37294.  
  37295.     Data returned:
  37296.     
  37297.         Offset  Size    Description
  37298.         
  37299.         0       4       Return code.
  37300.         4       4       Handle for this command.
  37301.  
  37302.  
  37303. HPC_ARMEDIT_OSCLI_POLL
  37304.  
  37305.     Continue execution of a *command. This should only include input data if
  37306.     requested by the previous HPC_ARMEDIT_OSCLI_POLL reply, otherwise
  37307.     characters may get lost.
  37308.     
  37309.     Data sent:
  37310.     
  37311.         Offset  Size    Description
  37312.         
  37313.         0       2       HPC service ID.
  37314.         2       2       Reason code = &0017.
  37315.         4       4       Command handle.
  37316.         8       4       Number of bytes to input.
  37317.         12      256     Up to 256 bytes of input.
  37318.  
  37319.     Data returned:
  37320.     
  37321.         Offset  Size    Description
  37322.         
  37323.         0       4       Return code.
  37324.         4       4       Status:
  37325.                             0   Active.
  37326.                             1   Command has finished.
  37327.                             2   Waiting for input.
  37328.         8       4       Number of bytes to output.
  37329.         12      256     Up to 256 bytes of output.
  37330.  
  37331.  
  37332. HPC_ARMEDIT_OSCLI_END
  37333.  
  37334.     Terminate execution of a *command.
  37335.     
  37336.     Data sent:
  37337.     
  37338.         Offset  Size    Description
  37339.         
  37340.         0       2       HPC service ID.
  37341.         2       2       Reason code = &0018.
  37342.         4       4       Command handle.
  37343.  
  37344.     Data returned:
  37345.     
  37346.         Offset  Size    Description
  37347.         
  37348.         0       4       Return code.
  37349.         4       256     RISC OS style error block returned by SWI if the
  37350.                         return code is &0001.
  37351.         
  37352.  
  37353. HPC_ARMEDIT_TALK_REPLY
  37354.  
  37355.     Reply to a message from another client task. This is like
  37356.     HPC_ARMEDIT_TALK_TX, except that the message is stored in the destination
  37357.     task's buffer.
  37358.     
  37359.     Data sent:
  37360.     
  37361.         Offset  Size    Description
  37362.         
  37363.         0       2       HPC service ID.
  37364.         2       2       Reason code = &0019.
  37365.         4       4       Client handle for this task.
  37366.         8       4       The client handle for the recipient.
  37367.         12      1024    The message to send.
  37368.     
  37369.     Data returned:
  37370.     
  37371.         Offset  Size    Description
  37372.         
  37373.         0       4       Return code.
  37374.  
  37375.  
  37376. HPC_ARMEDIT_FASTER
  37377.  
  37378.     Prevent multitasking to speed up operations. This should be called to
  37379.     reenable normal operation after the operation is completed. A sensible
  37380.     way to use this is with a value of 100 (for 1 second), called on a
  37381.     regular basis during the operation.
  37382.     
  37383.     Data sent:
  37384.     
  37385.         Offset  Size    Description
  37386.         
  37387.         0       2       HPC service ID.
  37388.         2       2       Reason code = &001A.
  37389.         4       4       Centiseconds to disable multitasking for, or 0 to
  37390.                         restore normal operation.
  37391.         
  37392.     Data returned:
  37393.     
  37394.         Offset  Size    Description
  37395.         
  37396.         0       4       Return code.
  37397.  
  37398.  
  37399. HPC_ARMEDIT_TEMPORARY
  37400.  
  37401.     Produce a unique filename for a temporary RISC OS file.
  37402.     
  37403.     Data sent:
  37404.     
  37405.         Offset  Size    Description
  37406.         
  37407.         0       2       HPC service ID.
  37408.         2       2       Reason code = &001B.
  37409.         
  37410.     Data returned:
  37411.     
  37412.         Offset  Size    Description
  37413.         
  37414.         0       4       Return code.
  37415.         4       256     Suggested canonicalised filename.
  37416.  
  37417.  
  37418. THINGS TO DO
  37419.  
  37420. The following are changes that may be made to the HPC services sometime in
  37421. the future.
  37422.  
  37423.     None at the moment!
  37424.  
  37425.  
  37426. VERSION HISTORY
  37427.  
  37428. 0.00 (12-Nov-95)    Original development version.
  37429.  
  37430. 0.01 (14-Nov-95)    No changes to HPC.
  37431.  
  37432. 0.02 (15-Nov-95)    No changes to HPC.
  37433.  
  37434. 0.03 (17-Nov-95)    Uses correct HPC service identifier.
  37435.  
  37436. 0.04 (21-Nov-95)    Slightly more experimental device driver support.
  37437.                     Real HPC system implemented.
  37438.  
  37439. 0.07 (28-Dec-95)    Added message passing protocol.
  37440.  
  37441. 1.00 (15-Dec-95)    First official release version.
  37442.  
  37443. 1.01 (11-Mar-96)    Version number updated to match the module.
  37444.  
  37445. 1.02 (27-May-96)    Implemented device driver calls.
  37446.                     Added commands to convert between date and time formats.
  37447.                     Included SWI for use by Acorn's software PC emulator.
  37448.  
  37449. 1.03 (21-Feb-97)    Added ability to reply to messages.
  37450.                     Included ability to speed up operations when multitasking.
  37451.                     Temporary RISC OS filenames can now be generated.onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Module
  37452. Date        : 21-Feb-97
  37453. Author      : © A.Thoukydides, 1995, 1996, 1997
  37454. Description : Description of the ARMEdit module.
  37455.  
  37456.  
  37457. INTRODUCTION
  37458.  
  37459. The ARMEdit module forms the core of the ARMEdit suite of software. It
  37460. provides the communications between software running on the PC card and
  37461. RISC OS.
  37462.  
  37463. The module should normally be loaded after the desktop has been started,
  37464. but before the PC front-end has been loaded. However, if Wimp$ScrapDir is
  37465. set to a suitable value then the module may be loaded before the desktop
  37466. has been entered. A good place for loading the ARMEdit module is in the
  37467. !Run file of the PC front-end.
  37468.  
  37469. The current version of this module will work with versions of the PC
  37470. front-end software 1.87 and above. However, significantly better performance
  37471. will be obtained if PCPro (!PC version 2.00 of higher) is used. The version
  37472. number is displayed in the Info window from the icon-bar icon. See the
  37473. Contacts documentation for details of obtaining upgrades.
  37474.  
  37475.  
  37476. SYSTEM VARIABLES
  37477.  
  37478. The ARMEdit module sets and uses the following system variables:
  37479.  
  37480.     ARMEdit$Path
  37481.     
  37482.         Path used to access Messages file. This is normally set to point to
  37483.         the file contained within the module and placed in ResourceFS.
  37484.         
  37485.     
  37486.     ARMEdit$ScrapDir
  37487.     
  37488.         Directory used for temporary files. This is normally set to
  37489.         <Wimp$Scrap>.ARMEdit, but may be changed if required. If there is
  37490.         sufficient memory in the computer then better performance would
  37491.         result from placing this in a RAM disc.
  37492.         
  37493.         The module sets and uses this variable (if not already defined)
  37494.         during initialisation. Hence it is necessary for <Wimp$Scrap> to be
  37495.         defined before the module is loaded.
  37496.     
  37497.  
  37498. *COMMANDS
  37499.  
  37500. The following *commands are provided by the ARMEdit module:
  37501.         
  37502.  
  37503.     *ARMEdit_Clients
  37504.     
  37505.         This command displays details of the clients that have registered
  37506.         with the ARMEdit module for communication purposes.
  37507.  
  37508.  
  37509.     *ARMEdit_Devices
  37510.     
  37511.         List the RISC OS path of all active emulated devices.
  37512.  
  37513.  
  37514.     *ARMEdit_DevicesRelog [-now]
  37515.     
  37516.         Force a relog of the RISC OS directory structure. This releases most
  37517.         of the memory claimed to support device driver operation and closes
  37518.         open files.
  37519.  
  37520.         Note that this may not take immediate effect - DOS must acknowledge
  37521.         a change of disc before any relog occurs. This normally occurs if
  37522.         no files are open on the device, and a simple operation (such as
  37523.         typing DIR) is performed on the drive. Note that each emulated device
  37524.         is treated seperately; some devices may be reset before others.
  37525.         
  37526.         The -now switch forces an immediate reset. This should only be used
  37527.         if essential, and must never be used in the middle of a disc access,
  37528.         otherwise DOS could be confused by an inconsistent disc image.
  37529.         
  37530.         It can be useful to call this from the DOS command line using the
  37531.         OSCLI command (supplied as part of the ARMEdit suite) - perhaps it
  37532.         should be placed in a DOS batch file for easier use.
  37533.  
  37534.  
  37535.     *ARMEdit_DOSMap
  37536.     
  37537.         This command updates the cached list of mappings between DOS
  37538.         extensions and RISC OS filetypes. These details are read initially
  37539.         from DOSFS, but may be re-read at any time using this command.
  37540.         
  37541.  
  37542.     *ARMEdit_Files
  37543.  
  37544.         This command displays details of the RISC OS files currently open for
  37545.         PC software. For each open file the file handle and filename is
  37546.         displayed. There is also a field that indicates whether the file will
  37547.         automatically be deleted when it is closed (either explicitly by the
  37548.         PC software, or when the PC is reset or quit).
  37549.         
  37550.  
  37551.     *ARMEdit_Memory
  37552.  
  37553.         This command displays details of the RISC OS memory currently being
  37554.         used by PC software. For each block of memory claimed the base
  37555.         address and size of the block is displayed.
  37556.         
  37557.         The memory is currently allocated from the RMA, but a header is
  37558.         attached to the start of each block. Hence the address displayed is
  37559.         not the start of a heap block. The information in the header is used
  37560.         to automatically release the memory when the PC is reset or quit if
  37561.         the PC software fails to do so.
  37562.  
  37563.  
  37564.     *ARMEdit_Polling [[-fore] <polls>] [[-back] <polls>]
  37565.  
  37566.         This command allows the multitasking speed of the PC card to be
  37567.         controlled. Larger values increase the performance of the PC card
  37568.         at the expense of slowing down the desktop. A value of 0 results
  37569.         in the normal behaviour.
  37570.         
  37571.         Use with no parameters to display the current settings. If only
  37572.         a single value is specified (without switches) then both settings
  37573.         are updated.
  37574.         
  37575.  
  37576.     *ARMEdit_Version
  37577.     
  37578.         This command displays the version numbers of the data structures used
  37579.         by the most recently used PC front-end. It also displays the range of
  37580.         versions catered for by this version of the module.
  37581.  
  37582.  
  37583. SWIs
  37584.  
  37585. The following SWIs are provided by the ARMEdit module. For more details
  37586. regarding the use of the communciations SWIs see the Code documentation.
  37587.  
  37588.  
  37589. SWI "ARMEdit_ControlPC" (&4BC40)
  37590.  
  37591.     Control the PC front-end.
  37592.     
  37593.     On entry:
  37594.     
  37595.         R0 = Operation to perform:
  37596.         
  37597.                 0   Suspend full screen mode
  37598.                 1   Freeze running in a window
  37599.                 2   Reset the PC
  37600.                 3   Quit the front-end
  37601.  
  37602.     On exit:
  37603.     
  37604.         All registers preserved.
  37605.     
  37606.     Interrupts:
  37607.     
  37608.         Interrupt status is undefined.
  37609.         Fast interrupts are enabled.
  37610.  
  37611.     Processor mode:
  37612.     
  37613.         Processor is in SVC mode.
  37614.  
  37615.     Re-entrancy:
  37616.     
  37617.         SWI is not re-entrant.
  37618.  
  37619.     Use:
  37620.     
  37621.         This call allows the PC front-end to be controlled. Note that if the
  37622.         PC front-end is not the current application then this will only take
  37623.         effect the next time the front-end is paged in.
  37624.         
  37625.         Note that suspending full screen mode only starts execution in a
  37626.         window if enabled by the current configuration.
  37627.  
  37628.  
  37629. SWI "ARMEdit_TalkStart" (&4BC41)
  37630.  
  37631.     Register a new client task.
  37632.     
  37633.     On entry:
  37634.     
  37635.         R0 = Pre-allocated ID for this task.
  37636.         R1 = Flags (see below).
  37637.         R2 = Pointer to a function to be called when a message is available,
  37638.              or 0 for none.
  37639.         R3 = Value for R12 to contain when function pointed to by R2 is
  37640.              called.
  37641.  
  37642.     On exit:
  37643.     
  37644.         R0 = A unique client handle.
  37645.         R1 = Pointer to a poll word for this task.
  37646.     
  37647.     Interrupts:
  37648.     
  37649.         Interrupt status is undefined.
  37650.         Fast interrupts are enabled.
  37651.  
  37652.     Processor mode:
  37653.     
  37654.         Processor is in SVC mode.
  37655.  
  37656.     Re-entrancy:
  37657.     
  37658.         SWI is not re-entrant.
  37659.  
  37660.     Use:
  37661.     
  37662.         An application that provides services to PC software should call this
  37663.         when it is starting. A message buffer is allocated and a unique
  37664.         handle for this task assigned. This handle should be stored and used
  37665.         in all other calls relating to this task.
  37666.         
  37667.         The currently defined flag bits are:
  37668.         
  37669.             Bit     Meaning if set
  37670.             
  37671.             0       Messages from the ARMEdit module are required.
  37672.         
  37673.         All other bits should be set to 0 to allow for future expansion.
  37674.         
  37675.         The poll word is initially set to zero. When there is potentially a
  37676.         message waiting for this task the poll word is set to a non-zero
  37677.         value. The poll word is cleared when either the message has been
  37678.         read, or no message is available for some other reason. Note that a
  37679.         non-zero poll word does not imply that a message will be available;
  37680.         another task might have read the message if it was not directed to
  37681.         a specific handle. The poll word must not be written to; it must only
  37682.         be modified by the ARMEdit module.
  37683.  
  37684.  
  37685. SWI "ARMEdit_TalkEnd" (&4BC42)
  37686.  
  37687.     Deregister a client task.
  37688.     
  37689.     On entry:
  37690.     
  37691.         R0 = The previously assigned handle for this client task.
  37692.  
  37693.     On exit:
  37694.     
  37695.         All registers preserved.
  37696.     
  37697.     Interrupts:
  37698.     
  37699.         Interrupt status is undefined.
  37700.         Fast interrupts are enabled.
  37701.  
  37702.     Processor mode:
  37703.     
  37704.         Processor is in SVC mode.
  37705.  
  37706.     Re-entrancy:
  37707.     
  37708.         SWI is not re-entrant.
  37709.  
  37710.     Use:
  37711.     
  37712.         All applications that call ARMEdit_TalkStart must call this before
  37713.         they terminate. This releases the message buffer and allows other
  37714.         tasks to detect whether particular services are available.
  37715.  
  37716.  
  37717. SWI "ARMEdit_TalkTX" (&4BC43)
  37718.  
  37719.     Send a message to another client task.
  37720.     
  37721.     On entry:
  37722.     
  37723.         R0 = Client handle for this task.
  37724.         R1 = Either the ID or client handle for the recipient (if R2 not 0).
  37725.         R2 = Pointer to block containing the message to send, or 0 to check if
  37726.              the buffer already contains a message.
  37727.  
  37728.     On exit:
  37729.     
  37730.         R2 = Pointer to message buffer, or 0 if no message is waiting to be
  37731.              delivered.
  37732.     
  37733.     Interrupts:
  37734.     
  37735.         Interrupt status is undefined.
  37736.         Fast interrupts are enabled.
  37737.  
  37738.     Processor mode:
  37739.     
  37740.         Processor is in SVC mode.
  37741.  
  37742.     Re-entrancy:
  37743.     
  37744.         SWI is not re-entrant.
  37745.  
  37746.     Use:
  37747.     
  37748.         Send a message to another task. The destination task can be specified
  37749.         using either it's ID or client handle. If the ID is specified then it
  37750.         will be offered to each matching task that polls it until it is
  37751.         acknowledged. A particular message is only offered to each task once.
  37752.         When sending messages to PC software (ID = 0) the handle should
  37753.         always be specified.
  37754.         
  37755.         Note that the message buffer for each task can only contain a single
  37756.         message to send; if there is already a message waiting to be
  37757.         delivered then it is overwritten. When multiple clients are used,
  37758.         this SWI should first be called with R2 = 0 to check if a message
  37759.         is still waiting. Broadcast messages are never cleared automatically.
  37760.  
  37761.  
  37762. SWI "ARMEdit_TalkRX" (&4BC44)
  37763.  
  37764.     Check for any waiting messages for this client task.
  37765.     
  37766.     On entry:
  37767.     
  37768.         R0 = Client handle for this task.
  37769.  
  37770.     On exit:
  37771.     
  37772.         R0 = Pointer to block containing waiting message, or 0 if no messages
  37773.              waiting.
  37774.         R1 = Source ID.
  37775.         R2 = Source client handle.
  37776.     
  37777.     Interrupts:
  37778.     
  37779.         Interrupt status is undefined.
  37780.         Fast interrupts are enabled.
  37781.  
  37782.     Processor mode:
  37783.     
  37784.         Processor is in SVC mode.
  37785.  
  37786.     Re-entrancy:
  37787.     
  37788.         SWI is not re-entrant.
  37789.  
  37790.     Use:
  37791.  
  37792.         Check for any waiting messages. If none are available R0 contains 0
  37793.         on exit, otherwise it contains a pointer to the first message. The
  37794.         message should be checked, and if it is claimed ARMEdit_TalkAck or
  37795.         ARMEdit_TalkReply should be called to prevent it being passed to
  37796.         other clients. Any information required from the message must be read
  37797.         or copied immediately, since the message could be overwritten by a
  37798.         new message.
  37799.         
  37800.         The specified source client handle should be used for any reply;
  37801.         unlike the ID it uniquely identifies a particular instantiation of a
  37802.         client.
  37803.         
  37804.         If this call is successful then it should be called again; it is
  37805.         possible for multiple messages to be pending for a single client.
  37806.  
  37807.  
  37808. SWI "ARMEdit_TalkAck" (&4BC45)
  37809.  
  37810.     Claim the most recently read message.
  37811.     
  37812.     On entry:
  37813.     
  37814.         R0 = Client handle for this task.
  37815.  
  37816.     On exit:
  37817.     
  37818.         All registers preserved.
  37819.     
  37820.     Interrupts:
  37821.     
  37822.         Interrupt status is undefined.
  37823.         Fast interrupts are enabled.
  37824.  
  37825.     Processor mode:
  37826.     
  37827.         Processor is in SVC mode.
  37828.  
  37829.     Re-entrancy:
  37830.     
  37831.         SWI is not re-entrant.
  37832.  
  37833.     Use:
  37834.     
  37835.         After reading a message with ARMEdit_TalkRX, this call should be
  37836.         used to claim the message, and to prevent it being offered to other
  37837.         clients. This should be used before calling any other SWIs from this
  37838.         module.
  37839.         
  37840.         If the message was sent by the ARMEdit module then calling this SWI
  37841.         has no effect; other clients still receive the message.
  37842.  
  37843.  
  37844. SWI "ARMEdit_HPC" (&4BC46)
  37845.  
  37846.     Call an ARMEdit HPC service.
  37847.     
  37848.     On entry:
  37849.     
  37850.         R0 = Length of first input block.
  37851.         R1 = Pointer to first input block.
  37852.         R2 = Length of second input block.
  37853.         R3 = Pointer to second input block.
  37854.         R4 = Length of first output block.
  37855.         R5 = Pointer to first output block.
  37856.         R6 = Length of second output block.
  37857.         R7 = Pointer to second output block.
  37858.  
  37859.     On exit:
  37860.     
  37861.         All registers preserved.
  37862.  
  37863.     Interrupts:
  37864.     
  37865.         Interrupt status is undefined.
  37866.         Fast interrupts are enabled.
  37867.  
  37868.     Processor mode:
  37869.     
  37870.         Processor is in SVC mode.
  37871.  
  37872.     Re-entrancy:
  37873.     
  37874.         SWI is not re-entrant.
  37875.  
  37876.     Use:
  37877.     
  37878.         This call may either be used to test HPC services, or to provide
  37879.         access to the routines from a system that does not support either of
  37880.         the communications systems used normally by the ARMEdit system.
  37881.         
  37882.         For convenience the input and output data may be split into two
  37883.         portions. Any length value may be zero to omit that portion. The
  37884.         input data must be at least two bytes long to contain a valid ID.
  37885.  
  37886.  
  37887. SWI "ARMEdit_Polling" (&4BC47)
  37888.  
  37889.     Control the multitasking speed of the PC card.
  37890.     
  37891.     On entry:
  37892.     
  37893.         R0 = Foreground speed, or -1 to read the current setting.
  37894.         R1 = Background speed, or -1 to read the current setting.
  37895.  
  37896.     On exit:
  37897.     
  37898.         R0 = The current foreground speed.
  37899.         R1 = The current background speed.
  37900.     
  37901.     Interrupts:
  37902.     
  37903.         Interrupt status is undefined.
  37904.         Fast interrupts are enabled.
  37905.  
  37906.     Processor mode:
  37907.     
  37908.         Processor is in SVC mode.
  37909.  
  37910.     Re-entrancy:
  37911.     
  37912.         SWI is not re-entrant.
  37913.  
  37914.     Use:
  37915.     
  37916.         This call has has a similar use to *ARMEdit_Polling.
  37917.  
  37918.         Larger values increase the performance of the PC card at the expense
  37919.         of slowing down the desktop. A value of 0 results in the normal
  37920.         behaviour.
  37921.  
  37922.  
  37923. SWI "ARMEdit_TalkReply" (&4BC48)
  37924.  
  37925.     Reply to a message from another client task.
  37926.     
  37927.     On entry:
  37928.     
  37929.         R0 = Client handle for this task.
  37930.         R1 = The client handle for the recipient.
  37931.         R2 = Pointer to block containing the message to send.
  37932.  
  37933.     On exit:
  37934.     
  37935.         All registers preserved.
  37936.     
  37937.     Interrupts:
  37938.     
  37939.         Interrupt status is undefined.
  37940.         Fast interrupts are enabled.
  37941.  
  37942.     Processor mode:
  37943.     
  37944.         Processor is in SVC mode.
  37945.  
  37946.     Re-entrancy:
  37947.     
  37948.         SWI is not re-entrant.
  37949.  
  37950.     Use:
  37951.     
  37952.         This is like ARMEdit_TalkTX, except that the message is stored in the
  37953.         destination task's message buffer. The destination task must be
  37954.         specified by it's client handle; it is not possible to send the
  37955.         message to an ID.
  37956.         
  37957.         The main use of this call is to support the easy creation of RISC OS
  37958.         tasks acting as a server for multiple PC tasks.
  37959.  
  37960.  
  37961. THINGS TO DO
  37962.  
  37963. The following are changes that may be made to the ARMEdit module sometime in
  37964. the future.
  37965.  
  37966.     None at the moment!
  37967.  
  37968.  
  37969. VERSION HISTORY
  37970.  
  37971. 0.00 (12-Nov-95)    Original development version.
  37972.  
  37973. 0.01 (14-Nov-95)    Fixed bugs in file handling. Removed stray debugging code.
  37974.                     Sets variable for scrap directory and ensure it exists.
  37975.  
  37976. 0.02 (15-Nov-95)    Included extra command to display PC front-end version.
  37977.                     Fixed workspace handling for *commands. (Oops!)
  37978.  
  37979. 0.03 (17-Nov-95)    Uses correct HPC service identifier.
  37980.                     Includes development versions of device driver support.
  37981.  
  37982. 0.04 (21-Nov-95)    Implemented the *commands and real HPC support.
  37983.  
  37984. 0.06 (22-Dec-95)    Added SWI to control the PC front-end.
  37985.  
  37986. 0.07 (28-Dec-95)    Added message passing protocol.
  37987.  
  37988. 1.00 (12-Jan-96)    First official release version.
  37989.  
  37990. 1.01 (11-Feb-96)    Does not crash when no DOSMap mappings defined.
  37991.                     Module can be loaded after new versions of the PC front-end.
  37992.  
  37993. 1.02 (06-Aug-96)    Some memory management moved to a dynamic area if available.
  37994.                     Device driver support added.
  37995.                     Routines to convert date and time stamps included.
  37996.                     Added SWI to call internal HPC services.
  37997.                     Corrected command help texts.
  37998.                     Added command to set multitasking speed of PC front-end.
  37999.                     Provided mechanism for checking delivery of messages.
  38000.  
  38001. 1.03 (21-Feb-97)    Added SWI to set multitasking speed of PC front-end.
  38002.                     Added SWI to reply to a message.
  38003.                     Broadcast messages from the ARMEdit module are now sent.
  38004.                     Speed control now works correctly with PC front-end 2v02.
  38005.                     Extended *ARMEdit_DevicesRelog to force immediate relog.Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : PUTFILE
  38006. Date        : 21-Feb-97
  38007. Author      : © A.Thoukydides, 1995, 1996, 1997
  38008. Description : Description of the PC PUTFILE command that is part of the ARMEdit
  38009.               suite.
  38010.  
  38011.  
  38012. INTRODUCTION
  38013.  
  38014. The "PUTFILE" command is a replacement for the command of the same name that
  38015. was supplied with Acorn's software PC emulator. It allows DOS files to be
  38016. transferred to RISC OS. To use this command it is necessary to load the
  38017. ARMEdit module before starting the PC front-end.
  38018.  
  38019.  
  38020. USAGE
  38021.  
  38022. The syntax is:
  38023.  
  38024.     PUTFILE [/?] [/M] [/P] [/S] [/W] <DOS path> [<RISC OS path>]
  38025.  
  38026. where
  38027.  
  38028.     /?              - Displays some help text.
  38029.     /M              - Enable multitasking during copying.
  38030.     /P              - Prompts before copying each file.
  38031.     /S              - Copy subdirectories.
  38032.     /W              - Disable use of the "Save as" window.
  38033.     <DOS path>      - Wildcarded source DOS file specification to copy.
  38034.     <RISC OS path>  - The destination RISC OS path.
  38035.  
  38036. The source path may include standard DOS wildcards, i.e. "?" to match a
  38037. single character or "*" for multiple characters. Files are matched using the
  38038. same rules as used by other DOS commands.
  38039.  
  38040. If no destination filename is specified then the source filename is used with
  38041. various character transformations performed. Without the "/W" switch a RISC
  38042. OS "Save as" window is used to select a suitable destination; this requires
  38043. !ARMEdit to be running.
  38044.  
  38045. The filetype is selected using the mappings set up using the DOSMap command.
  38046. This is initially cached when the ARMEdit module starts, but may be reread
  38047. at any time using the command ARMEdit_DOSMap.
  38048.  
  38049.  
  38050. THINGS TO DO
  38051.  
  38052. The following are changes that may be made to the PUTFILE command sometime in
  38053. the future.
  38054.  
  38055.     None at the moment!
  38056.  
  38057.  
  38058. VERSION HISTORY
  38059.  
  38060. 0.00 (12-Nov-95)    Original development version.
  38061.  
  38062. 0.01 (14-Nov-95)    Added version number and copyright message.
  38063.  
  38064. 0.02 (17-Nov-95)    Uses correct HPC service identifier.
  38065.                     Changed to a .COM file to make it smaller.
  38066.                     Made error checking more comprehensive and added help text.
  38067.                     Filetype of destination file is based on file extension.
  38068.  
  38069. 0.04 (16-Dec-95)    Uses real HPC.
  38070.  
  38071. 0.05 (17-Dec-95)    Improved filename translation.
  38072.  
  38073. 1.00 (12-Jan-96)    First official release version.
  38074.  
  38075. 1.01 (11-Mar-96)    Version number updated to match the module.
  38076.  
  38077. 1.02 (06-Aug-96)    Date and time stamps are preserved on copied files.
  38078.                     Added support for Acorn's software PC emulator.
  38079.  
  38080. 1.03 (21-Feb-97)    Speeded up transfer when multitasking.
  38081.                     Added option to use a RISC OS "Save as" window.
  38082.                     Included support for wildcards and recursion.ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     File        : Talk
  38083. Date        : 21-Feb-97
  38084. Author      : © A.Thoukydides, 1996, 1997
  38085. Description : ARMEdit messages supported by the !ARMEdit front-end.
  38086.  
  38087.  
  38088. INTRODUCTION
  38089.  
  38090. The !ARMEdit front-end supports several messages used by PC software. The
  38091. messages are arranged in pairs: code running on the PC card send a message,
  38092. and the front-end sends an acknowledgement (with the same reason code). No
  38093. messages are sent from the front-end unrequested.
  38094.  
  38095. All of the messages use the ID 256.
  38096.  
  38097.  
  38098. MSG_ARMEDIT_FIND
  38099.  
  38100.     Check whether the front-end is running.
  38101.     
  38102.     Data sent:
  38103.  
  38104.         Offset  Size    Description
  38105.     
  38106.         0       4       Reason code = &00000000.
  38107.     
  38108.     Data returned:
  38109.     
  38110.         Offset  Size    Description
  38111.         
  38112.         0       4       Reason code = &00000000.
  38113.  
  38114.     The PC software sends this message to ID 256 to find the handle of the
  38115.     front-end software. A timeout should be used to detect whether the
  38116.     message has been delivered.
  38117.     
  38118.     All future messages should use the message handle.
  38119.  
  38120.  
  38121. MSG_ARMEDIT_START
  38122.  
  38123.     Start an external edit.
  38124.     
  38125.     Data sent:
  38126.     
  38127.         Offset  Size    Description
  38128.         
  38129.         0       4       Reason code = &00000001.
  38130.         4       4       Byte offset of initial cursor position.
  38131.         8       20      Null terminated DOS leaf name of file to edit.
  38132.         28      256     Null terminated name of RISC OS file to edit.
  38133.     
  38134.     Data returned:
  38135.     
  38136.         Offset  Size    Description
  38137.         
  38138.         0       4       Reason code = &00000001.
  38139.         4       4       Handle for this edit.
  38140.  
  38141.     This message is used to start an external edit. The leaf name is used for
  38142.     display purposes - only the RISC OS name is used to access the file
  38143.     (which must exist when the message is sent).
  38144.     
  38145.     No status is returned by this message. Use MSG_ARMEDIT_POLL to check the
  38146.     state of the edit.
  38147.     
  38148.     A unique handle is returned for this file. This handle should be used
  38149.     when polling the status of the edit.
  38150.  
  38151.  
  38152. MSG_ARMEDIT_POLL
  38153.  
  38154.     Poll the status of the external edit.
  38155.     
  38156.     Data sent:
  38157.     
  38158.         Offset  Size    Description
  38159.         
  38160.         0       4       Reason code = &00000002.
  38161.         4       4       Handle of edit to poll.
  38162.         8       4       Flags:
  38163.                             bit 0   Set to retrieve data.
  38164.                             bit 1   Set to end external edit.
  38165.                             bit 2   Set to mark file as safely saved.
  38166.     
  38167.     Data returned:
  38168.     
  38169.         Offset  Size    Description
  38170.         
  38171.         0       4       Reason code = &00000002.
  38172.         4       4       Flags:
  38173.                             bit 0   Set if file modified since last poll.
  38174.                             bit 1   Set if external edit aborted.
  38175.  
  38176.     This message is used to check or update the status of an external edit.
  38177.     The input flags allow the file to be retrieved from the editor, or to
  38178.     abandon the edit. It is also possible to mark the edit as safely saved
  38179.     after it has been saved by the editor.
  38180.     
  38181.     If a request has been made to retrieve a file then the returned flags
  38182.     should be checked until the modified flag is set.
  38183.     
  38184.     If the returned flags indicate that the edit has been aborted then no
  38185.     more messages should be sent for this edit.
  38186.  
  38187.  
  38188. MSG_ARMEDIT_SAVEAS
  38189.  
  38190.     Display a Save As window for a specified file.
  38191.     
  38192.     Data sent:
  38193.     
  38194.         Offset  Size    Description
  38195.         
  38196.         0       4       Reason code = &00000003.
  38197.         4       256     Null terminated name of RISC OS file to save.
  38198.         260     256     Null terminated suggested name of file to save.
  38199.     
  38200.     Data returned:
  38201.     
  38202.         Offset  Size    Description
  38203.         
  38204.         0       4       Reason code = &00000003.
  38205.  
  38206.     Allow a file to be saved under a user specifiable name. This is intended
  38207.     for use by the PUTFILE command when no destination is specified. The
  38208.     file is deleted when it has either been saved, or when the user has
  38209.     cancelled the operation. No method for determining the success or
  38210.     failure of the operation is provided.
  38211.     
  38212.  
  38213. THINGS TO DO
  38214.  
  38215. The following are changes that may be made to the HPC services sometime in
  38216. the future.
  38217.  
  38218.     Support execution of commands in a TaskWindow from the OSCLI command.
  38219.  
  38220.  
  38221. VERSION HISTORY
  38222.  
  38223. 0.00 (10-Sep-96)    Original development version.
  38224.  
  38225. 0.01 (05-Feb-97)    Cursor position in external edits can be specified.
  38226.                     Added Save As window support.
  38227.  
  38228. 1.03 (21-Feb-97)    First official release version.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickARMEDIT/COGØÿÿ⇦À
  38229. `°tTARMEDIT/SYGäÿÿ⇦À
  38230. `RSGETFILE/COGØÿÿú    ` cUOSCLI/COMGØÿÿú    `p]VPUTFILE/COGØÿÿú    `ðnWARMEDIT/COGØÿÿ⇦À
  38231. `°tTARMEDIT/SYGäÿÿ⇦À
  38232. `RSGETFILE/COGØÿÿú    ` cUOSCLI/COMGØÿÿú    `p]VPUTFILE/COGØÿÿú    `ðnW8PCPCNick/ÿÿÿÿÆÑ""""þÿÉw䜜.⇨.…ËPSQRWVU†Ä>&⇩]2ÿ◰û~¸€ë ‘Ñãÿ–¤Ä>&⇨E‡]^_ZY[X˸ÃWÇ1Ç3I…5Ç7Ç=Ç?I…AÇCÇIÇK&⇩E¢Mèü=uÄ> M&⇦E_¸Ã_&ÆE¸€ÃWÇ1Ç3I…5Ç7Ç=Ç?I…AÇCÇE"…GÇIÇK&⇩E¢Mè™=uÄ>&ÇE"&…]_¸Ã_¸€ÃWSQR&⇧]&⇩M&⇧U&Ä}◰ût
  38233. è'=u ëñZY[_¸ÃÄ>&⇧E+Ã&⇨EZY[_¸ €ÃÇ1Ç3I…5Ç7Ç=Ç?I…A¡"£C⇨>E…GÇIÇK⇦M⇨Nèß=uKBRQ¡"ø⇧×Ŵç±Óê…À‰ÀYZ¸Ã¸ÃWSQR&⇧]&⇩M&⇧U&Ä}◰ût
  38234. è'=u ëñZY[_¸ÃÄ>&⇧E+Ã&⇨EZY[_¸€ÃÇ1Ç3I…5¡"£7⇨>9…;Ç=Ç?I…AÇCÇIÇK⇦M⇨Nè(=uKBRQ¡"ø⇧×Ŵç±Óê…À‰ÀYZ¸Ã¸ÃWSÇ/Ä>&⇧=ÿÿt¸ÍM=PHt èÜë‘è$ë ‘»/¸ÍM=uÄ>?⇧=~[_ÃSQRWV¡1£dÇfÄ3ÿÿra£h⇨j¡7£lÇnÄ9ÿÿrD£p⇨r¡=£tÇvÄ?ÿÿr'£x⇨z¡C£|Ç~ÄEÿÿr
  38235. £€⇨ŵ둸ë)‘¸F¼£`¸£bºas¸ef»`ÿÿrÝ¡¢©uÕ¸^_ZY[ÃQRWVºàí=EMt =MEt ¸ë[‘¸ëU‘ºà¸ï⇧1Å63ºâón⇧7Å69ºâónºà¸ï¸ï⇧=Ä>?ºâól⇧CÄ>Eºâólºà¸ï¸^_ZYÃWR´    ºÿÍ!Ä>Ç1Ç3I…5Ç7&⇧E£9&⇧E£;Ç=Ç?I…AÇCÇEÿ…GÇIÇK&⇩E¢Mèþ=téŴ´    ºÿÍ!Ä> M&⇦EÇ1Ç3I…5Ç7Ç=Ç?I…AÇCÇE"…GÇIÇKÆMÿè»ý=u Ä>&ÇE&…]¸É&⇨E&…MZ_¸Ã´    ºÝÍ!Ä>&ÆE&ÇE&…MZ_¸ €ÃARM Edit initialisation failed
  38236.  
  38237. $
  38238.  
  38239. ARM Edit Device Driver   1.03 (21-Feb-97) (c) A.Thoukydides, 1995, 1996, 1997
  38240. $nderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     …Ê.⇨e´0Í!⇧.⇧,‰Ú£⇨[…[⇨◰[⇨.fl[èZÄ>Ŵ[⇧Ç⇧عÿüò®ãaC&8uö€Í€÷Ù⇨Ŵ[¹Óã◰Ã◰ãø⇨Ŷ[…Ú+ê⇧>dtŴÿs¿⇨>dtŴÇ¢ur(>üsr"±ÓïG;ïr◰>dtt◰>üsu¿;ïw⇧ýëéµ⇧ßÚ⇨–[⇨œ[¡[+؉À´JWÍ!_Óçú‰Ò⇧çû3À.‰e¿Pu¹¢u+Ïüóª◰>ÎsvG€>⇨[r@w€>⇩[r7¸X»Í!r*´g⇧ÎsÍ!r ´H»Í!r@£fl[H‰À´IÍ!r
  38241. ¸X»Í!sé4´Í⇨™[⇨•[
  38242. Àt ¸@‰À»p&Æ3í.‰e¾>u¿Puè©ÿ6[ÿ6}[ÿ6{[èœPè¨..‰eVW¾Pu¿Puèŷ_^ÃÃ⇧ì´L⇩FÍ!¹º?[éÕ¸5Í!⇨k[…m[¸5Í!⇨o[…q[¸5Í!⇨s[…u[¸5Í!⇨w[…y[¸%…ʉںxÍ!ø%Åk[Í!¸%Åo[Í!¸%Ås[Í!¸%Åw[Í!ÃŴþ>ut2äë´ÿ⇧×⇧Þ;ßt#&€?ÿtŴþ>ut&:gë&8gw&⇩g⇧Ó◰ÃëÙ;×t⇧Ú&€?&Æÿt&ÿ_ë±&ÿWëªÃ´@»Í!ùºM[.‰eèêÿ¸Pè­-U⇧졦\ ¨\tÿ6¨\ÿ6¦\è\!◰ÄǨ\Ǧ\◰>¤\ÿtÿ6¤\èUD◰ÄǤ\ÿÿ]ÃU⇧ì◰ì(Vè·ÿëaÿ6¬\ÿ6ª\¡®\PèöT◰Ä@P¡®\Pè$◰Ä⇧ð öu.ÇFÚÇFØ¡¬\⇧ª\⇨FÞ⇨VÜ™FØP™FØP3ÀºPRèd◰Ä⇧ð⇧®\⇧£®\¡ª\ ¬\t◰>®\u•¡ª\ ¬\tÿ6¬\ÿ6ª\èN◰Ä3ÀPPè‹*◰Ä^⇧å]ÃU⇧ìV◰>°\u=¸¨Pèº+◰ĸª\P¸PèS◰Ä⇧ð öt⇧ÆP¸È\P¸¤[PèmS◰ĸëÇ°\3À^]ÃU⇧ìŴì¸?VW⇧~è¤ÿ Àt¸éË◰>¢[u3ÀºdPRè*◰Ä◰~u™ŷpÀ⇨FPWè"◰ĸ€PWè©J◰Ä£¤\◰>¤\ÿu¸é™FúP™FøPÿ6¤\èo+◰Ä™FòPÿvøÿvúè&◰Ä⇧ð ötW¸è\P¸¤[PèÉR◰Äè:þ¸éG¸¦\P3ÀPÿ6¤\è¼D◰ÄRPÿvèÀ◰Ä
  38243. ⇧ð öt ⇧ÆPÿv¸]P¸¤[PèR◰Äèøý¸éÇFþÇFüé¡◰>¢[u3ÀºdPRè@)◰ĸ€>P™ŷpÁPÿ6¤\è9O◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuW¸=]P¸¤[Pè(R◰Äè−ý¸é¦⇧Fü FþtG™ŷpÁPÿvþÿvü¸ÿÿºÿÿPRÿ6¨\ÿ6¦\è| ◰Ä⇧ð öt ⇧ÆPÿv¸Z]P¸¤[PèÙQ◰ÄèJý¸éW⇧Fü FþtéTÿè6ýÿ6¬\ÿ6ª\ÿvè{R◰Ä@Pÿvè­◰Ä⇧ð öt⇧ÆP¸z]P¸¤[Pè…Q◰ĸéëG€=t€=.uõ€=tG™FðPWè·◰Ä⇧ð öt⇧ÆPW¸¤]P¸¤[PèMQ◰ĸéÎÇŷJÀÇŷHÀ¡¬\⇧ª\⇨ŷNÀ⇨„LÀ⇧Fð−±èl*⇨„RÀ⇨ŷPÀ⇩Fö—−    ŷPÀ    „RÀ◰‰PÀ◰‰RÀð™ŷHÀP™ŷHÀP3ÀºPRèf◰Ä⇧ð öuBÇŷJÀÇŷHÀ¡¬\⇧ª\⇨ŷNÀ⇨„LÀ⇧Fô⇧Vò⇨ŷVÀ⇨„TÀ™ŷHÀP™ŷHÀP3ÀºPRè ◰Ä⇧ð öt⇧ÆPÿvð¸Ö]P¸¤[Pè⇩P◰ĸë 3ÀPPè^'◰Ä3À_^⇧å]ÃU⇧ìŴì¶?VW⇧~èºü Àt¸éX◰>¢[u3ÀºdPRè)'◰Ä◰~u™ŷrÀ⇨FPWè◰◰ĸ¦\P3ÀP¸ÿÿºÿÿPRWè7◰Ä
  38244. ⇧ð öt⇧ÆPW¸ö]P¸¤[PèP◰ĸéøÿ6¬\ÿ6ª\WèµP◰Ä@PWèé◰Ä⇧ð öt⇧ÆP¸z]P¸¤[PèÈO◰ĸéÀÇŷLÀÇŷJÀ¡¬\⇧ª\⇨ŷPÀ⇨„NÀ™ŷJÀP™ŷJÀP3ÀºPRè    ◰Ä⇧ð öt⇧ÆPW¸^P¸¤[PèuO◰ĸém◰¾dÀÿu◰¾bÀÿu°⇦Fö⇦Fõ⇦Fô⇦Fó⇦Fòë⇧ŷXÀ⇧„VÀ⇨Fô⇨Vò⇩ŷRÀ⇦Fö™FøP™FúP™FòPèŒ!◰Ä⇧ð ötW¸è\P¸¤[PèO◰Äè◰ú¸é¸€P¸◰Pÿvè’F◰Ä£¤\◰>¤\ÿuÿv¸H^P¸¤[PèÝN◰ÄèNú¸éÒÇFþÇFüéœ◰>¢[u3ÀºdPRè„%◰Ä™FüP™ŷrÁP3Àº€>PR¸ÿÿºÿÿPRÿ6¨\ÿ6¦\è1◰Ä⇧ð öt⇧ÆPW¸m^P¸¤[PèrN◰Äèãù¸ëh⇧Fü Fþt6ÿvü™ŷrÁPÿ6¤\è!Q◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuÿv¸•^P¸¤[Pè,N◰Ä⇧Fü FþtéZÿÿvúÿvøÿ6¤\è·&◰Äèŵù3ÀPPèç$◰Ä3À_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸²\PèPN◰Ä⇨Fþ◰~þt⇧^þŴë²\⇩½\⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸½\PèN◰Ä⇨Fþ◰~þt⇧^þŴë½\⇩²\⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~è®ù Àt¸ëUÿvWèÏ$◰Ä⇨Fþ◰~þt⇧FþP¸ª^P¸¤[Pè'M◰ĸë(¸PèZ6◰Ä⇧ð öt¡®\⇨W⇧ÆPè¨M◰Ä⇨6®\3À_^⇧å]ÃU⇧ì◰ì(VW⇧~è<ù Àt¸é•ÿ6¬\ÿ6ª\Wè–M◰Ä@PWèË◰Ä⇧ð öt⇧ÆP¸Õ^P¸¤[PèªL◰ĸëXÇFÚÇFØ¡¬\⇧ª\⇨FÞ⇨VÜÇFêÇFè™FØP™FØP3ÀºPRèè◰Ä⇧ð öt⇧ÆPW¸_P¸¤[PèTL◰ĸë3À_^⇧å]ÃU⇧ì◰ì¸P™FþP¸þP¸ÿPèvC◰Ä
  38245. ◰~þÿu¸ë3À⇧å]ÃU⇧ì◰ì ÇFð™FàP™FðP¸MPèØ2◰Ä=PHu¸ë3À⇧å]ÃU⇧ì◰ìBÇF¾⇧F⇨FÀ⇧F⇧V⇨FÄ⇨VÂ⇧F⇨FÆ⇧F ⇧V
  38246. ⇨FÊ⇨VÈ⇧F⇨FÌ⇧F⇧V⇨FÐ⇨VÎ⇧F⇨FÒ⇧F⇧V⇨FÖ⇨VÔÇFè™F¾⇨Fê…Vø™FøP™FØP™FèP¸MPèv2◰Ä⇧å]ÃU⇧ì◰ìVW⇧~¸àPèÉ$◰Ä⇨FþŴ~þEMu¸éÑŴ~þMEt¸éÄ3ÀP¸àPè~&◰Ä⇧F⇧V⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;÷rî⇧F ⇧V
  38247. ⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;vrí¸P¸àPè+&◰ĸP¸àPè&◰Ä⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí¸P¸àPèÉ%◰Ä3À_^⇧å]ÃU⇧ì◰ìB⇧FÇFÀ⇨F¾ÿvÿvè’◰Ä⇨VÄ⇨FÂ⇧FÇFÈ⇨FÆÿv ÿv
  38248. èt◰Ä⇨VÌ⇨FÊ⇧FÇFÐ⇨FÎÿvÿvèW◰Ä⇨VÔ⇨FÒ⇧FÇFØ⇨FÖÿvÿvè:◰Ä⇨VÜ⇨FÚ™F¾P™F¾P¸ºF¼PRèS◰Ä⇨Fþ◰~þu 3Àu3Àë¸⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFîŴ™FîP™FîP¸/PèŴ0◰Ä◰>*_tèTý£,_◰>,_uèuý£._Ç*_◰>,_t+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38249. Vÿvÿvèæþ◰Ä⇨Fþëi¸P¸àPè’$◰Ä◰>._t+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38250. Vÿvÿvè/ý◰Ä⇨Fþë)ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38251. Vÿvÿvèý◰Ä⇨FþÇFîŵ™FîP™FîP¸/Pè¯/◰Ä⇧Fþ_^⇧å]ÃU⇧ì◰ì⇧F⇧V⇨Fþ⇨Vü¸⇨ÂÄ^üÿÿs¸⇨Â⇨Fø⇨Vú⇧Vú⇧Fø⇧å]ÃU⇧ì◰ì VW⇧~⇧N
  38252. ÇFø…Vú⇧Fú%üÿ…Vþ⇨Fü⇧Fþ⇧Vü⇨Fö⇨VôÄ^ü⇧F⇧V&⇨G&⇨3öë2 ÿt⇧ÞÑãÑã⇧Q⇧ë3Ò3À⇧ÞÑãÑã‰FþPRS⇧^üXØX&⇨GX&⇨GF◰þ|ÉÄ^ôºas¸efÿÿsÇFø Ét23öë)⇧ÆÑàÑàÄ^üØ&⇧G&⇧W⇧ÞÑãÑãPRS⇧ÙXØXZ⇨W⇨F◰þ|Ò◰~øt3Àë
  38253. Ä^ü&⇧%@_^⇧å]ÃU⇧ì¡Db Fbtÿ6Fbÿ6Dbè0◰Ä]ÃU⇧ì◰ì◰>Hbu,¸@Pè§◰ĸDbP¸Pè@◰Ä⇨Fþ◰~þt¸ëÇHb3À⇧å]ÃU⇧ìVW⇧v¸QbPÿvèUH◰Ä⇧øë⇧Ç@⇧ð¸QbPVèAH◰Ä⇧ø ÿuê◰~t⇧Æ+FPÿvÿvè÷G◰Ä⇧Æ+F⇧^ØÆ◰~t
  38254. VÿvèfiG◰Ä_^]ÃU⇧ìŴìÔVW⇧~3ÀP3ÀP™ŷ,ÿP™FüPÿvèn9◰Ä
  38255. ÿv™F¾Pÿvèk8◰Ä⇨Fê3öëa€~Ü.tN⇩FÓ—÷ÐŶFuCF™FìP™FòP3ÀP3ÀP™FÜPè-9◰Ä
  38256. ™FìP™FòP™ŷ,ÿP™FüP™ŷnÿPè÷8◰Ä
  38257. ÿt
  38258. ™ŷnÿPÿ×◰Ä™F¾Pè98◰Ä⇨Fê◰~êt−⇧Æ_^⇧å]ÃU⇧ìÿv¸0_PèàF◰ĸ.P¸0_PèeG◰ÄP3ÀP¸0_PèWG◰ÄHZ;Ðu¸.P¸0_PèCG◰Ä⇧ØÆÿv¸0`PèfiF◰Äÿ6Fbÿ6Db¸P¸0_Pèç◰Ä]ÃU⇧ìŴì(VWè9þ Àt3Àéfi™ŷØüP™ŷØýPÿvè_þ◰Ä™ŷØüP™ŷØýPèaÿ◰Ä⇧ðÇFÚÇFØ
  38259. ¸0_-0_−⇧Fb⇧DbÈÚ⇨^Þ⇨Nܸ0a-0_−⇧Fb⇧DbÈÚ⇨^â⇨NàÇFæÇFäÇFêÇFèÇFîÇFì¸0`-0_−⇧Fb⇧DbÈÚ⇨^ò⇨Nð öu™FØP™FØP3Àº PRè’ ◰Ä⇧ð3ÿéÎÿ6Fbÿ6Db¸P¸0_Pè= ◰Ä⇧ð öuw⇧Fä Fæto÷Ft◰>Bau ◰>@au¸ë3Àë#◰>Bau◰>@at◰>Bau ◰>@au¸ë3À Àt*G¸DaP™ŷØýP¸TbP™ŷØþPè•D◰Ä◰~t ™ŷØþPÿV◰Ä öu™ŷØüP™ŷØýPè%þ◰Ä⇧ðÇFæÇFä öu™FØP™FØP3Àº PRè¾
  38260. ◰Ä⇧ð öu◰~êÿté%ÿ◰~èÿtéÿ⇧Ç_^⇧å]ÃU⇧ì◰ì™FúP¸LbP¹è<¸YbPè7=◰Ä™F⇨FøÿvøÿvèpE◰Ä◰~t%™Fú⇧JbØ⇩—P¸«bPè=◰Ä¡Jb@»−÷û⇨Jb⇧å]ÃU⇧ì◰ì¸SbP3ÀPè•ÿ◰Ä™F⇨Fþÿvþÿv¸®rPèE◰ĸ¯bP¸®rPèÙ7◰ĸPè“◰Ä⇧å]ÃU⇧ìVW⇧~ ÿt¸Äbë¸SbPÿv¸±bP3ÀPè8ÿ◰ÄèI)PèÃ◰Ä⇧ðë è;)Pèµ◰Ä⇧ð◰þat◰þrt     ÿtæ◰þcuá◰þau    ÿvè^ÿ◰ĸSbP3ÀPèðþ◰Ä◰þru¸ë3À_^]ÃU⇧ì◰ìÿv¸ÍbP3ÀPèÊþ◰Äèô(⇨Fþ¸¯bPè<◰ÄÿvþèF◰Ä=yu¸ë3À⇧å]ÃU⇧ì◰ì*™FÖP™FÖP3ÀºBPRè!    ◰Ä⇨Fþ◰~þt3Ò3Àë⇧VØ⇧FÖ⇧å]ÃU⇧ì◰ì3ÀPPèb◰ÄÇFðº™FðP™FðP¸PèD)◰Ä⇧å]ÃU⇧ì¡Øb Úbtÿ6Úbÿ6Øbè`◰Ä]ÃU⇧ìV◰>àgu$¸’PèX◰ĸØbPèŴ◰Ä⇧ð öt⇧ÆëÇàg3À^]ÃU⇧ìVèÅÿ⇧ð öt⇧Æë%ÇâbÇàb¸àbP3ÀºPRÿ6Úbÿ6Øbè®◰Ä
  38261. ^]ÃU⇧ì◰ìV¸àbP™FüP3ÀPÿ6Úbÿ6ØbèR◰Ä
  38262. ⇧ðè'ÿèðþFV⇨Vú⇨Føë¸àbP™FüP3ÀPÿ6Úbÿ6Øbè#◰Ä
  38263. ⇧ð ötèÀþ;Vú|Ùu;FørÒ öu¡àb âbt¸âgP¸äfPèB◰ľàf öt¸P¸þgP⇧ÆPèÅý◰Ä Àu☓ öt⇧Æë⇧Fþ⇧Vü£Þb⇨Üb3À^⇧å]ÃU⇧ìVèÒþ⇧ð öt⇧ÆëUÇâbÇàb⇧F⇧V£æb⇨äb¸Pÿv¸èbPèÊA◰ĸPÿv
  38264. ¸übPè¹A◰ĸàbPÿ6Þbÿ6Übÿ6Úbÿ6Øbè⇧◰Ä
  38265. ^]ÃU⇧ì◰ìVW⇧~¸àbP™FüP3ÀPÿ6Úbÿ6Øbè+◰Ä
  38266. ⇧ðèþèÉýFV⇨Vú⇨Føë¸àbP™FüP3ÀPÿ6Úbÿ6Øbèü◰Ä
  38267. ⇧ð öu⇧Fþ⇧Vü;Þbu;Übtèý;Vú|Çu;FørÀ öu◰>âbu◰>àbt¸âgP¸äfPèÆ@◰ľàf öt¸P¸hP⇧ÆPèü◰Ä Àtéjÿ öt⇧Æë¡æb⇧äb⇨E⇨3À_^⇧å]ÃU⇧ìVè’ý⇧ð öt⇧Æë@ÇâbÇàb⇧F⇧V£æb⇨äb⇧F
  38268. ⇧V£êb⇨èb¸àbPÿ6Þbÿ6Übÿ6Úbÿ6Øbè_◰Ä
  38269. ^]ÃU⇧ì◰ìVW⇧~¸àbP™FüP3ÀPÿ6Úbÿ6Øbèÿ◰Ä
  38270. ⇧ðèÔüè‡üFV⇨Vú⇨Føë¸àbP™FüP3ÀPÿ6Úbÿ6ØbèÐ◰Ä
  38271. ⇧ð öu⇧Fþ⇧Vü;Þbu;Übtè[ü;Vú|Çu;FørÀ öu◰>âbu◰>àbt¸âgP¸äfPèŒ?◰ľàf öt¸P¸%hP⇧ÆPè[û◰Ä Àtéjÿ öt⇧Æë¡æb⇧äb⇨E⇨3À_^⇧å]ÃU⇧ìVèeü⇧ð öt⇧Æë@ÇâbÇàbÿv¸äbPè2?◰Äÿv¸äcPè%?◰ĸàbPÿ6Þbÿ6Übÿ6Úbÿ6Øbè3◰Ä
  38272. ^]ÃU⇧ì◰ìV¸àbP™FüP3ÀPÿ6Úbÿ6Øbè×◰Ä
  38273. ⇧ðè¬ûèuûFV⇨Vú⇨Føë¸àbP™FüP3ÀPÿ6Úbÿ6Øbè¨◰Ä
  38274. ⇧ð öu⇧Fþ⇧Vü;Þbu;Übtè3û;Vú|Çu;FørÀ öu◰>âbu◰>àbt¸âgP¸äfPèr>◰ľàf öt¸P¸@hP⇧ÆPè3ú◰Ä Àtéjÿ öt⇧Æë3À^⇧å]ÃU⇧ì◰ìVW¸bhP¸Pèaù◰ĸ Pè»&◰Ä⇧ø ÿu
  38275. ¸yhPè¨ù◰Äÿv⇧ÇPè>◰ĸP⇧ÇPèçï◰Ä Àt¸¤[P¸£hPèwù◰Ä⇧ÇP⇧ÇPèÌé◰Ä Àt¸¤[P¸ËhPèSù◰ĸähP⇧ÇPè11◰Ä⇨Fþ◰>^h~¡^hë¸⇨Fü3öëFëF⇧^þ÷G uÿvþèÑ2◰Ä=
  38276. uç◰~þt⇧^þ÷G uÿNüuÏ◰~þt    ÿvþèf-◰ĸ\P⇧ÇPèÖ=◰Ä⇨Fú™FäP◰~út⇧Fú@ë⇧ÇPè◰î◰Ä⇧ÇP™FäP⇧Æ−RPèIû◰Ä⇨Fø◰~øu⇧ÇP3ÀºèPRè„û◰Ä⇨Fø◰~øt⇧FøP¸çhPèpø◰ÄÇŶ
  38277. ÇŶÇE¡`h⇨◰>`ht⇧`h⇨⇨>`h_^⇧å]ÃU⇧ì◰ì
  38278. VWÇFüÇFú◰~u¸
  38279. iP¸firPè)0◰Ä3Àé:ÇFþéŴ◰~üul⇧FþÑà⇧^Ø⇧€?/u[⇧FþÑà⇧^Ø⇧⇩G—Pè◰Ä=?t=lt븗iPè¾4◰Ä3ÀééÇFúë.⇧FþÑà⇧^Øÿ7¸—kP¸®rPè²/◰ĸéÂë ◰~üu⇧Fþ⇨FüÿFþ⇧Fþ;F}étÿ◰~üu
  38280. ¸²kPès÷◰ĸÊkP3ÀPè÷◰Äèù⇧ø ÿu3ÀºèPRè9ù◰Ä⇧ø ÿt⇧ÇP¸ákPè:÷◰Ä⇧Fü⇨FþëR◰~út⇧Fþ@;F}⇧^þÑã^ÿwè>◰Ä븣^h¸\P3ÀP⇧FþÑà⇧^Øÿ7èÃó◰Ä◰~út¸ë¸Fþ⇧Fþ;F|¦éß⇧6`héѸlP¸Pè_ö◰Äÿ´
  38281. ÿ´ÿ´ÿ´è‰ú◰Ä⇧ø ÿu™FöP3ÀºèPRèËú◰Ä⇧ø ÿt⇧ÇP¸lPè}ö◰ÄÇ☓
  38282. Ç☓⇧Fö%t;¸9lP3ÀPèøõ◰Ä⇧ÆP⇧ÆPè—é◰Ä Àt¸¤[P¸IlPè5ö◰Ä◰…◰…
  38283. ⇧Fö%t!◰|t    ⇧⇧\⇨ë⇧£`h◰<t⇧D⇧⇨G⇧4 öté(ÿ◰>`htéÿ¸xhP3ÀPè~õ◰Ä3À_^⇧å]ÃU⇧ìÿvèõ(◰Ä]ÃU⇧ì◰ì
  38284. VW⇧v⇧~
  38285. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü ÿt¸(ë3ÀPW¸P¸fmP öt¸(ë3ÀPV¸P™FøPèkï◰Ä⇨Fö◰~öu¸noP¸jlPèÃ9◰ĸflëO◰~öu¸−oP¸jlPèª9◰ĸflë6◰>hmu ◰>fmu¸jmë#◰>hmÿu◰>fmÿu¸ÁoP¸jlPèv9◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38286. ⇧V⇨Fö⇨VôÇFú⇨vøVÿv¸P™FüP3ÀP3ÀPP¸ P™FðPè­î◰Ä⇧ø◰ÿu¸noP¸jlPè9◰ĸflëX◰ÿu¸−oP¸jlPèï8◰ĸflë@◰~þu◰~üu¸åoP¸jlPèÐ8◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPè±8◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38287. ⇧V⇨Fö⇨VôÇFú⇨vø3ÀP3ÀPP¸P™FüPVÿv¸ P™FðPèèí◰Ä⇧ø◰ÿu¸noP¸jlPèB8◰ĸflëX◰ÿu¸−oP¸jlPè*8◰ĸflë@◰~þu◰~üu¸åoP¸jlPè 8◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPèì7◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFøÇFú⇧FÇFþ⇨Fü3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè*í◰Ä⇧ø⇧Fö⇧Vô⇨D⇨◰ÿu¸noP¸jlPèy7◰ĸflëX◰ÿu¸−oP¸jlPèa7◰ĸflë@◰~òu◰~ðu¸1pP¸jlPèB7◰ĸflë!◰~òÿu◰~ðÿu¸ÁoP¸jlPè#7◰ĸflë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèdì◰Ä⇧ð◰þu¸noP¸jlPè¾6◰ĸflëX◰þu¸−oP¸jlPè¦6◰ĸflë@◰~öu◰~ôu¸UpP¸jlPè6◰ĸflë!◰~öÿu◰~ôÿu¸ÁoP¸jlPèh6◰ĸflë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFøÇFúÇFþÇFü€<tG⇩—Pè"◰Ä−    Fü    Vþ€|t0⇩D—Pè
  38288. ◰Ä−±è®    Fü    Vþ€|t⇩D—Pèí◰Ä−◰Nü    Fþ3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPèYë◰Ä⇨Fî⇧Fô⇨◰~îu¸noP¸jlPè¬5◰ĸflëY◰~îu¸−oP¸jlPè›5◰ĸflë@◰~òu◰~ðu¸pP¸jlPèt5◰ĸflë!◰~òÿu◰~ðÿu¸ÁoP¸jlPèU5◰ĸflë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F−⇨Vþ⇨Fü¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè–ê◰Ä⇧ð◰þu¸noP¸jlPèñ4◰ĸflëX◰þu¸−oP¸jlPèÙ4◰ĸflë@◰~öu◰~ôu¸pP¸jlPèº4◰ĸflë!◰~öÿu◰~ôÿu¸ÁoP¸jlPèœ4◰ĸflë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38289. −⇨Vú⇨Fø¸Pÿv ¸P™FüPVèn4◰Ä@PV¸ P™FðPèÊé◰Ä⇧ø◰ÿu¸noP¸jlPè$4◰ĸflëX◰ÿu¸−oP¸jlPè 4◰ĸflë@◰~þu◰~üu¸rpP¸jlPèí3◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPèÎ3◰ĸflë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèé◰Ä⇧ð◰þu¸noP¸jlPèi3◰ĸflëX◰þu¸−oP¸jlPèQ3◰ĸflë@◰~öu◰~ôu¸‰pP¸jlPè23◰ĸflë!◰~öÿu◰~ôÿu¸ÁoP¸jlPè3◰ĸflë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFèÇFê    ⇧F⇧V⇨Fî⇨Vì⇧F
  38290. ⇧V⇨Fò⇨Vð⇧F⇧V ⇨Fö⇨Vôÿv ÿv¸P™FøP3ÀP3ÀPP¸P™FèPè9è◰Ä⇧ø⇧Fþ⇧Vü⇨D⇨◰ÿu¸noP¸jlPè⇦2◰ĸflëX◰ÿu¸−oP¸jlPèp2◰ĸflë@◰~úu◰~øu¸«pP¸jlPèQ2◰ĸflë!◰~úÿu◰~øÿu¸ÁoP¸jlPè22◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVÇFìÇFî
  38291. ⇧F⇧V⇨Fò⇨Vð⇧F
  38292. ⇧V⇨Fö⇨Vô⇧F⇧V ⇨Fú⇨Vø3ÀP3ÀPP¸P™FüPÿv ÿv¸P™FìPè[ç◰Ä⇧ð◰þu¸noP¸jlPèµ1◰ĸflëX◰þu¸−oP¸jlPè‡1◰ĸflë@◰~þu◰~üu¸ÌpP¸jlPè~1◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPè_1◰ĸflë3À^⇧å]ÃU⇧ì◰ì VW⇧vÇFüÇFþ 3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FüPè©æ◰Ä⇧ø⇧Fú⇧Vø⇨D⇨◰ÿu¸noP¸jlPèø0◰ĸflëX◰ÿu¸−oP¸jlPèà0◰ĸflë@◰~öu◰~ôu¸ìpP¸jlPèÁ0◰ĸflë!◰~öÿu◰~ôÿu¸ÁoP¸jlPè¢0◰ĸflë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú ⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèãå◰Ä⇧ð◰þu¸noP¸jlPè=0◰ĸflëX◰þu¸−oP¸jlPè%0◰ĸflë@◰~öu◰~ôu¸qP¸jlPè0◰ĸflë!◰~öÿu◰~ôÿu¸ÁoP¸jlPèç/◰ĸflë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38293. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPèå◰Ä⇧ð◰þu¸noP¸jlPèv/◰ĸflëX◰þu¸−oP¸jlPè^/◰ĸflë@◰~þu◰~üu¸JqP¸jlPè?/◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPè /◰ĸflë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~
  38294. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü¸Pÿv ¸ P™FêP3ÀP3ÀPP¸P™FøPèZä◰Ä⇨Fö⇧Fð⇧Vî⇨D⇨⇧Fô⇧Vò⇨E⇨◰~öu¸noP¸jlPè†.◰ĸflëY◰~öu¸−oP¸jlPè◰.◰ĸflë@◰~ìu◰~êu¸eqP¸jlPèd.◰ĸflë!◰~ìÿu◰~êÿu¸ÁoP¸jlPèE.◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFüÇFþ3ÀP3ÀPP¸P™FôP¸Pÿv¸P™FüPè⇩ã◰Ä⇨Fò⇧Fø⇨⇧Fú⇨◰~òu¸noP¸jlPèØ-◰ĸflëF◰~òu¸−oP¸jlPè¿-◰ĸflë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸ÁoP¸jlPè“-◰ĸflë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇨Fü⇧F⇨Fþ¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPèÔâ◰Ä⇧ð◰þu¸noP¸jlPè.-◰ĸflëE◰þu¸−oP¸jlPè-◰ĸflë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸ÁoP¸jlPèë,◰ĸflë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFüÇFþ¸Pÿv¸P™FøPVèÔ,◰Ä@PV¸P™FüPè0â◰Ä⇧ø◰ÿu¸noP¸jlPè⇩,◰ĸflëE◰ÿu¸−oP¸jlPèr,◰ĸflë-◰~úu◰~øt ◰~úÿu◰~øÿu¸ÁoP¸jlPèG,◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFòÇFô⇧F⇧V⇨Fø⇨Vö⇧F
  38295. ⇧V⇨Fü⇨Vú¸Pÿv¸ P™FæP◰~
  38296. |◰~v⇧Fë3ÀP◰~
  38297. |◰~v⇧F ë3ÀP¸ P™FòPèNá◰Ä⇨Fþ⇧Fì⇧Vê⇨D⇨⇧Fð⇧Vî⇨E⇨◰~þu¸noP¸jlPè‘+◰ĸflëF◰~þu¸−oP¸jlPèw+◰ĸflë-◰~èu◰~æt ◰~èÿu◰~æÿu¸ÁoP¸jlPèL+◰ĸflë3À_^⇧å]ÃU⇧ì◰ìVÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P¸jnP3ÀP3ÀPP¸P™FøPè™à◰Ä⇧ð◰þu¸noP¸jlPèç*◰ĸflëN◰þu¸−oP¸jlPèÏ*◰ĸflë6◰>lnu ◰>jnu¸nnë#◰>lnÿu◰>jnÿu¸ÁoP¸jlPèœ*◰ĸflë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38298. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPèÐß◰Ä⇧ð◰þu¸noP¸jlPè**◰ĸflëX◰þu¸−oP¸jlPè*◰ĸflë@◰~þu◰~üu¸JqP¸jlPèó)◰ĸflë!◰~þÿu◰~üÿu¸ÁoP¸jlPèÔ)◰ĸflë3À^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèß◰Ä⇧ð◰þu¸noP¸jlPèp)◰ĸflëE◰þu¸−oP¸jlPèX)◰ĸflë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸ÁoP¸jlPè-)◰ĸflë3À^⇧å]ÃU⇧ì◰ìVÇFüÇFþÿvÿv¸P™FøP3ÀP3ÀPP¸P™FüPè{Þ◰Ä⇧ð◰þu¸noP¸jlPèÕ(◰ĸflëE◰þu¸−oP¸jlPè½(◰ĸflë-◰~úu◰~øt ◰~úÿu◰~øÿu¸ÁoP¸jlPè‹(◰ĸflë3À^⇧å]ÃU⇧ì◰>☓q u¸ë⇧☓qÑã⇧F⇨Puÿ☓q3À]ÃU⇧ì´C2À⇧VÍ!r    ⇧^⇨3ÀëPèj]ÃU⇧ì´C°⇧V⇧NÍ!r3ÀëPèO]ÃU⇧ìVW⇧v⇧~¸W⇧^Í!sPè4ë⇨⇨3À_^]ÃU⇧ì¸W⇧^⇧N⇧VÍ!sPèë3À]ÃÃU⇧ìV⇧v öuëÿ☓q⇧☓qÑãÿ–Pu◰>☓quëè€Ñÿ⇦rèâÑè⇨Ñ◰~u öuÿ⇩rÿ…rÿvèrÑY^]ÂU⇧ì3ÀPPÿvè¦ÿ]ÃU⇧ì¸P3ÀPÿvè“ÿ]Ã3ÀP¸P3ÀPèŶÿøPP3ÀPèyÿÃ[S€ùs⇧ØÓàÓâöÙ€ÁÓë ÓË€é‹3ÀÓâËU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ìV⇧v ö|◰þX~¾W⇨6þs⇩☓t—⇧ðë÷Þ◰þ#éÇþsÿÿ⇨6⇧[¸ÿÿ^]ÂU⇧ìV⇧vVè¼ÿ⇧Æ^]ÂU⇧ì¸D⇧^Í!‹%€]ÃU⇧ì◰ì"VW⇧~
  38299. ⇧^◰û$wX€ûrS⇧F ⇧N É}€~t Æ-G÷Ù÷Ø◰Ù™vÞã’+Ò÷ó’÷ó⇦Fã    ëñ+Ò÷ó⇦F Àuõ™NÞ÷ÙÎüN⇩,
  38300. s:ëFªâï°ª⇧F
  38301. _^⇧å]Â U⇧ì3ÀPÿvÿv¸
  38302. P°P°aPèjÿ]ÂU⇧ì⇧^ÑãŴ§Ðsÿý´B⇩F
  38303. ⇧^⇧N⇧VÍ!rëPèäþ−]ÃU⇧ìV⇧v⇧V öu¾‘uÿv Òu¸Ztë⇧ÂPVènYYPè‘ÿ¸^tPVèS%YY⇧Æ^]ÂU⇧ì◰ìVW⇧v⇧~V3ÀP◰=ÿu¸ë¸⇧Pèfiÿ⇧ð™FþPVè)ýYY Àt×⇧Æ_^⇧å]ÂU⇧ìVWÅvÄ~üÑéó¥Éó¤_^]ÂU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî]ÃU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî2ä]ÃU⇧ì⇧^Ñã÷Ðst¸Pë´?⇧^⇧N⇧VÍ!rëPèìý]ÃU⇧ìV⇧v……L…T…\^]ú;Îss+⇧ÚÑãÇÐs⇧Ú±ÓãÆ‹rÿ⇧ÂÓà‰r⇧ÚÓã⇨†rB;ÎsrÕ ‹r—PèäýY ÀuŴ&‘rÿý¸P÷‘rt¸ë3ÀP3ÀP¸‰rPèÍ ◰Ä ¢r—Pè°ýY ÀuŴ& rÿý¸P÷ rt¸ë3ÀP3ÀP¸firPè− ◰ÄÃU⇧ì¸P3ÀPPÿvèþ◰Ä]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øöqt    ⇩´ ë⇩´]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øöqt    ⇩´àÿë⇩´]ÃU⇧ì´A⇧VÍ!r3ÀëPè¶ü]Ã⇩Æè⇩ÂÔŷàèŷà‘'@'ªÃU⇧ìŴì„VWÇFîÇFìPÇFêëFW¹ÿÿ2Àò®÷ÑI_Ã6⇦GþNìu/SQR™ŷjÿ+ø™ŷjÿPWÿvÿV
  38304. ÀuÇFêÇFìP~jÿZY[Ãü™¾jÿ⇨~ü⇧~ü⇧v¬
  38305. Àt<%t6⇦GþNìîè¬ÿëééÕ⇨vð¬<%tç⇨~ü3É⇨Nò⇨Nþ⇦NõÇFøÿÿÇFöÿÿë¬2ä⇧Ð⇧؀렀û`s⇩flmt◰ûvé⇦Ñã.ÿ§i9é~€ýwø◰NþëЀýwí◰NþëÅ€ýwâ€~õ+t⇦Võëµ◰fþßë◰Nþ µ맀ýwM÷Fþu)◰Nþµë›é3⇧~6⇧◰F€ýs Ày÷Ø◰Nþ⇨Føµéoÿ€ýu×⇨FöþÅébÿ€ýsʵÿFöéUÿ‹,0—€ýwµFø À|ÑÑà⇧ÐÑàÑàÂFøé3ÿ€ýuœFö ÀtµÑà⇧ÐÑàÑàÂFöéÿ◰NþéeÿŴNþ◰fþïéYÿ·ë
  38306. ·
  38307. ë
  38308. ·³éÚÆFõ⇦Vû3Ò⇦Vú⇧~6⇧ë·
  38309. ÆFú⇦Vû⇧~6⇧−GG⇨v÷Fþt6⇧GG⇨~™~» Àu Òu    ◰~öuéhþ◰NþRPW⇩Ç—P⇩FúPSèäú⇧Vö Ò}éòéý⇦Vû⇨v™~º⇧^6ÿ7CC⇨^÷Fþ t6⇧CC⇨^è‡ý°:ªZè“ý6ÆÆFú◰fþû™Nº+ùÏ⇧Vö;Ñ⇧Ñéfl⇨v⇦Vû⇧~6⇧◰F™~»2ä6⇨¹éÂ⇨v⇦Vû⇧~÷Fþ u6⇧=◰F ÿë 6Ä=◰F…À Çu¿ftèUý;Növ⇧NöéŶ⇨v⇦Vû⇧~⇧Nö É}¹WQ™^»SR¸#FþP⇧Fþ©t    ¸◰F
  38310. ë◰F¸Pè÷
  38311. ™~»÷Fþt⇧Vø Ò~è÷ü&€=-uI+Ñ~⇨Vò&€=-t ⇩Fõ
  38312. ÀtO&⇦◰~ò~
  38313. ⇧Nö É}ÿNòèÅü⇧÷⇧~ü⇧^ø¸#Fþ=u⇩fû€üou◰~òÇFòë€üxt€üXu◰Nþ@KK◰nò}ÇFòNò÷Fþu ë° è~üK;Ùö÷Fþ@t °0èmü⇩Fûègü⇧Vò Ò~'+Ê+Ú&⇩<-t< t<+u&¬èHüIKÊã°0è=üâùÊã+Ù&¬6⇦GþNìè0üâð Û~    ⇧Ë° èüâùéZü⇨v⇧~÷Fþ u 6⇧=◰Fë6Ä=◰F¸P*FìFî&⇨÷FþtGG&Çéü⇧vð⇧~ü°%èÎû¬
  38314. Àuø€~ìP}èÉû◰~êt¸ÿÿë⇧Fî_^⇧å]ÂÑ5»56Æ546A66ŷ6⇧6ï5´6‹6„6Œ67»7^7~7ý8999999á5ç5U⇧ì Øt´⇧VJ÷êP¡ÛtZÂ⇧VJÂÑà⇧Ýt]ÂU⇧ì◰ìVW Út´⇨Fþ⇧NãZÄ~
  38315. Åvü;÷s
  38316. ⇧ÁHÑàðøý◰~þuó¥ë;ºÚ…À…Û;ÃtúìÐÈrûìÐÈsû¥ûâñëúìÐÈrûìÐÈsû­û⇧ØìÐÈrûìÐÈsû⇧ëûâáü_^⇧å]Â
  38317. U⇧ìVW⇧~ÿvèvY⇧ð@PÿvWèÍ◰Ä⇧ÇÆ_^]ÃU⇧ì⇧F⇧ÔŴê;Âs£›[3Àë    Ç⇧[¸ÿÿ]ÃU⇧ì⇧F⇧V›[◰Ò⇧È ÒuŴÁr
  38318. ;Ìs›[ë    Ç⇧[¸ÿÿ]ÃU⇧ìÿvè¤ÿY]ÃU⇧ì⇧F−RPè·ÿYY]ÃU⇧ì◰ìVW⇧v⇧~ÆFûèN ´⇨FþèF ±Óè´⇨FüéØ⇧ÞF⇩⇦Fû´-⇧Ø◰ûw.Ñã.ÿ§ñ;´°è6ëv Ðt´;Fþ}lÿNþëg Ðt´⇨Fþë]ÿFüëX Ùt´ Àu.◰>ßtt'⇩&Ôt⇩Fû⇨Fø⇧Fþ@P⇧Fü@Pè;þRP™FøP¸PèRþë⇩Vþ⇩vü´·èÒ⇩Ôt⇩Fû´    ·¹èÁÿFþ Òt´;Fþ} Ðt´⇨Fþ¡ÎtFü Ót´;Fü}°P ÐtP ÑtP ÒtP ÓtP°PèöÿNü⇧ÇO Àtéÿ⇩Vþ⇩vü´·èi⇩Fû´_^⇧å]Â;;7;2;7;7;(;U⇧ì¸Ì:P3ÀPÿv™FPèØø]ÃU⇧ìV⇧vëÄ^ÿF&⇩⇧ÞF:t3Àë€<uç¸^]´³è⇩Ãð´ÃUQ¹@‰ÙY€üt    €ütVÍëj<u¸Í<t€&þ´¹Í¸ëÞ<@uÚ³´Í€ût=¸2Û͸³ Í¸Í<t&€´¹ÍëÍ<uPèÿ
  38319. ÀXt    €>☓t°@]ôèwÿPèY´·èkÿ€ä⇦&Õt⇦&ÔtÃU⇧ì⇩F¢Öt´èQÿ⇦&Øt:Ött- Öt´è?ÿ´è:ÿ¢Öt⇦&Øt€>Ötu¸@‰À&€>☓~ÆÖt@€>Ötv€>Öt@s €>Ött¸ë3À¢Ùt€>Öt@t°ë ¸@‰À& ☓þÀ¢×t€>Ött¸ðºêÿPR¸átPè“þ Àu è·þ Àu¸ë3À¢Út€>Ötu¸°ë¸¸£ÝtÇÛt°¢Ñt¢Ðt Øtÿ¢Òt ×tÿ¢Ót]úètëºít¹´@»Í!¹'ºòt´@Í!éiÅ€>ut
  38320. Æu uë¸Í!´ÃV€>utèÜÿ⇧ðë
  38321. èÕÿ⇧ðPèÄY⇧Æ^ÃU⇧ì€>ut¸ÿÿë Æu⇧F¢u]ÃU⇧ì◰ìVW⇧~⇧vWVÿvÿv
  38322. è     Àu3Àë-⇧F+Ç@⇨Fþëÿv WVè+ûRPÿvþè©⇧FþÑàF F;v
  38323. ~á¸_^⇧å]ÃU⇧ì◰ìVW⇧~ ⇧F+F@⇨Fþ⇧vëÿvVèëúRPWÿvþèg⇧FþÑàøF;v
  38324. ~â¸_^⇧å]ÃU⇧ì◰ì™FøPèÂôY™FøPÿvÿvÿvè◰Ä⇧å]ÃU⇧ì◰ìVW™Nò⇨Nü…VþÆFòUÆFóÍ⇧F⇦FôÇFõ]Ë<%r<&wÆFõ6ÇFö•⇨NøÇFú]Ë⇧v
  38325. ÿ4ÿt⇧v⇧⇧\⇧L⇧T⇧|
  38326. ⇧tÿ^ü††V‰^ì⇧v
  38327. ••D⇧v•D•D•D ◰d ⇨|
  38328. ⇨T⇨L⇨\⇨tPPèÿñX_^⇧å]ÃU⇧ì⇧V´D⇩F⇧^⇧N
  38329. Í!r ◰~u⇧ÂëëPèÓñ]À>ut¸ë´ Í!—ÃU⇧ì◰ìVW⇧v⇧~
  38330. ÿvVÿvWèz Àt#ÿv ÿv⇧F+F⇧V ÐR⇧Ç+Æ⇧VÐRèW Àu3ÀëS⇧Ö⇨~þÇFü;v}
  38331. ⇧×⇨vþÇFüÿÿ⇧úë)ÿv ⇧Ç+Æ⇧VÐRè`ùRPÿvWèWùRP⇧F+F@PèÐ~ü⇧FþFü;Çu͸_^⇧å]ÃVW⇧ô⇧\◰ër;utèBëè_^Ã9ut#⇧wöt⇨6uë ;6ut⇧ÞèT⇧G£uë⇧Þ3À£u£u£ uSè£ù[Ãÿ;ut⇧w⇧¨u⇨⇧?û⇨u⇧Þëè2⇧?û⇧¨tÃ⇧÷ð⇨\⇧ß⇧;ßt⇨> u⇧w⇨u⇨|ÃÇ uÃ⇧6 u öt⇧|⇨\⇨]⇨⇨wÃ⇨ u⇨_⇨_ÃVW⇧ô⇧D ÀtRr6%þÿ=s¸◰>ut⇧ u Ût⇧Ó9s⇧_;Úuõèfë!è⇩ëèë3Àë⇧ð◰Æ97séèkÿÿ⇧Ã_^ÃP3ÀPPèãø[[%t    3ÒRPèÕø[[XP3ÛSPèÊø[[=ÿÿt⇧Ø⇨u⇨uX@⇨◰Ã⇧ÃÃ[3ÀÃP3ÛSPè£ø[[=ÿÿt⇧Ø¡u⇨G⇨uX@⇨◰Ã⇧ÃÃX3ÀÃ)⇧ó7⇧þø@⇨⇨\⇨u◰Æ⇧ÆÃ⇧ìSPQPèÿ[⇧Ø Àtü⇧ø⇧vþ⇧ ◰ÆV◰éÑéó¥⇨Fþè$þ[⇧^þ◰ÄÃ⇧Â◰Â;Ñw5⇧Ñ;uu⇨ÿÃSPèø÷[[ë⇧ûø⇨]+Ð)⇧÷ò⇨|B⇨⇧Ë⇧ßè7þ⇧Ù◰ÃÃVWU⇧ì⇧^⇧F
  38332. Àt7 Ût-◰ë⇧I⇧Ð◰Â◰âþ◰úsº;Êr w◰ÃëèÿëèOÿ⇧ÃëPèeþëSè‘ý3À[]_^ÃU⇧ì™FP¸P3ÀPèß÷]Ãÿ&6uU⇧ì◰ì⇧FÑè⇧È Øt´P⇧Á3Ò[÷ó⇩Ø´⇩Øt¶÷ê⇩Ñ*Ð⇦Vÿ⇩ã⇩Fÿ⇧å]ÂU⇧ìVW⇧v⇧~⇧;t    ·´è
  38333. ù⇨þÂ:ØtrþƲ⇨_^]ÂU⇧ì◰ì VW⇧~èÈ⇨Fø⇨Fú⇧F ;Ýtu¸ë3À⇨Fö Àt ÿv ÿv
  38334. èfÿ⇨Fþ⇧F;Ýtu¸ë3À⇨Fô Àt_ÿvÿvèCÿ⇨FüëQ◰~ôt™FüP™FúPèeÿ·´è€ø⇧ðë
  38335. Ä^&⇧7◰F◰~öt™FþP™FúPè?ÿ⇧Æ⇩ܹ·´    èSøë
  38336. Ä^
  38337. &⇨7◰F
  38338. ⇧ÇO Àu¨⇧Vø·´è6ø_^⇧å]Â
  38339. U⇧ì⇧V Ùt´ Àu◰>ßttÿv ÿv
  38340. ÿvÿvRèyõëÿv ÿv
  38341. ÿvÿvRèÿ]Â
  38342. U⇧ìVW⇧^
  38343. ⇧v⇧~ Øt´⇧È ×t´⇧Ð;Ùwùw;ß;òw9Vw
  38344. ;v¸ë3À_^]ÂU⇧ìV⇧v⇧V⇩.Ôt± ë⇨ ◰ÆB;V~õ^]ÂU⇧ìŴì  Ùt´ Àté*◰>ßtué €~téþF þF
  38345. þFþF€~té⇦⇩F
  38346. ´P⇩F ´P⇩F´P⇩F´P⇩F
  38347. ´@P⇩F ´Pè¥ú◰Ä ™ŷ`ÿP⇩F´P⇩F ´P⇩F´P⇩F ´Pèóø◰Ä
  38348. ™ŷ`ÿP⇩F ´P⇩F´PèAÿ™ŷ`ÿP⇩F´P⇩F´P⇩F´P⇩F ´Pèù◰Ä
  38349. é›⇩F
  38350. ´@P⇩F ´P⇩F´HP⇩F´P⇩F
  38351. ´P⇩F ´Pèú◰Ä ™ŷ`ÿP⇩F
  38352. ´P⇩F ´P⇩F
  38353. ´P⇩F ´Pèjø◰Ä
  38354. ™ŷ`ÿP⇩F ´P⇩F´Pè¸þ™ŷ`ÿP⇩F
  38355. ´P⇩F´P⇩F
  38356. étÿ⇩>Ôt⇩f⇩F⇩n
  38357. ⇩N ⇩v⇩Vè7ö⇧å] •&u•(u•*u.…F⇨6,u⇨>.uü‰[¾€2ä&¬@…ÅÖ›⇧6Ŵ[FF¹€>⇨[r‰◰[⇧þ±2Àò®ãn€ñP⇧ÁÃ@%þÿ⇧ü+ør\⇧çQIó¤2Àª‰ÝòÙ⇧Ã⇧ÐCèwr@èwù< t<t<    uè2Àëä ÀtBª
  38358. ÀuCŷà2Àùã¬I,"t"<\u€<"u¬I öÃéx¼YÊ.‰F⇨"uCÛ⇧ô⇧ì+ëræ⇧å⇨.$uã⇨v◰Å6¬
  38359. Ààútð3À⇨F.‰F⇧6,u⇧>.uÿ6*uÿ6(u¡"u£{[¡$u£}[ÿ&&u´·èõ⇧ÂÃèóÿ´⇩Ðt¶+Â@Ãèäÿ±Óè´⇩Ñt¶+Â@ÃU⇧ìVWU⇧vü+À−¹
  38360. ·¿q⇩Föuø½€û+t€û-uE⇩F€û9w.€ë0r)÷áÃÖtëë⇧ú¹
  38361. ÷á–Ñ÷â‹–ÃÑ⇩F€û9w€ë0sáM|÷Ú÷Ø◰Ú]_^]ÃU⇧ìÿvèÿY]ÃU⇧ì⇧N´C⇩F⇧VÍ!r’ëPè–é]ÃU⇧ì⇧V;Îsr    ¸Pèŵéë⇧ÚÑãÇÐsRèY]ÃU⇧ì´>⇧^Í!r ÑãÇÐs3ÀëPèSé]ÃU⇧ì◰ì⇧F;Îsr¸Pë[⇧^Ñã÷Ðst¸ëL¸D⇧^Í!r>ö€u5¸B3É⇧ÑÍ!r.RP¸B3É⇧ÑÍ!⇨Fü⇨VþZYr¸BÍ!r;Vþr    w;Fürë·3ÀëPèÞè⇧å]ÃU⇧ìVW⇧~¾ÿÿ9}u_◰}t◰=}    WèVY ÀuK÷Etÿuè÷Y€}| ⇩E—PèÿY⇧ðÇEÇEÇÆEÿ◰} t3ÀPPÿu è“éPè§ëYÇE ⇧Æ_^]ÃU⇧ìVW⇧~ ÿuèëf9}t¸ÿÿë^◰=|)÷Eu
  38362. ⇧Ç9E
  38363. uFÇ⇧Ç9E
  38364. u8⇧E⇨E
  38365. ë0ë.⇧E@⇧ð)5P⇧E⇨E
  38366. P⇩E—Pè◰Ä;Æt÷Eu◰Mëfl3À_^]ÃU⇧ì´/Í!S´⇧VÍ!´N⇧N⇧VÍ!†Y›´ZÍ!Q‡r3ÀëSè·ç]ÃU⇧ì´/Í!S´⇧VÍ!´OÍ!†Y›´ZÍ!Q‡r3ÀëSè⇩ç]ÃU⇧ì◰ì¸B⇧^3É3ÒÍ!r$RP¸B3É3ÒÍ!⇨Fü⇨VþZYr¸BÍ!r⇧Vþ⇧FüëPèLç−⇧å]ÃU⇧ì◰ìVWÇFþ⇧>Îs¾‰rë÷DtVèÁþYÿFþ◰Æ⇧ÇO Àuç⇧Fþ_^⇧å]ÃU⇧ìÿv ÿv
  38367. ÿvÿvÿvè◰Ä
  38368. ]ÃU⇧ìÿv ÿv
  38369. ÿvÿvÿvè– ◰Ä
  38370. ]ÃU⇧ì◰ìVW⇧vÇFþ⇧ÞF⇩⇩Á<ruº¿ë €ùwuºë€ùauº    ÇFþ€¿ë3Àëi⇩ F€ù+t€<+u€ùtt€ùbu€ù+u⇩ ◰âü◰ÊÇFþ€¿€ùtuŴÊ@ë€ùbuŴÊ€ë¡øs%À Ð⇧©€t◰Ï@Ç⇩rÆZ⇧^⇨⇧^⇧Fþ⇨⇧Ç_^⇧å]ÂU⇧ì◰ìV⇧v
  38371. ÿv™FþP™FüPè4ÿ⇨D Àt €|}'ÿvü⇧Fþ FPÿvèö◰Ä⇦D
  38372. À}ÆDÿÇD3ÀëA⇩D—PèæY ÀtŴL¸P÷Dt¸ë3ÀP3ÀPVè     ◰Ä ÀtVèÊüYëÂÇD ⇧Æ^⇧å]ÂV¾‰r€||¡Îs±Óà‰r⇧Ö◰Æ;Âwç€||3Àë⇧Æ^ÃU⇧ìèÏÿ⇧Ð Àu3ÀëRÿvÿv3ÀPè$ÿ]ÃU⇧ì¸⇦RPÿvÿv™FPè−è]ÃU⇧ìVW⇧v◰<}
  38373. ⇧TB⇧úë ⇧−3Â+Â⇧Ð⇧ø÷D@u,⇧L
  38374. ◰<}ë    I⇧Ù€?
  38375. uG⇧ÂJ Àuðë⇧ÙA€?
  38376. uG⇧ÂJ Àuð⇧Ç_^]ÂU⇧ìVW⇧v⇧~
  38377. VèbüY Àt¸ÿÿëG◰ÿu◰<~ Vè|ÿ−)FVŴd_þÇ⇧D⇨D
  38378. Wÿvÿv⇩D—Pè€å◰Ä◰úÿu
  38379. =ÿÿu¸ÿÿë3À_^]ÃU⇧ì◰ìV⇧v⇩D—Pè(çY⇨Vþ⇨Fü◰úÿu=ÿÿt◰<}Vèÿ−FüVþë Vèÿ−)FüVþ⇧Vþ⇧Fü^⇧å]ÃVW¿¾‰rë⇧D%=uVè©ûY◰Æ⇧ÇO Àuæ_^ÃU⇧ìV⇧v÷DtèÈÿÿt⇧D⇨D
  38380. P⇩D—Pèo◰Ä⇨ À~◰dß3Àë◰<u⇧D%þ ⇨DëÇ◰L¸ÿÿ^]ÂU⇧ìV⇧vÿVèY^]ÃU⇧ìV⇧v öu¸ÿÿé–◰<~ÿ ⇧\
  38381. ÿD
  38382. ⇩é◰◰<|T÷DuM÷DtFŴL€◰|t VèSÿ ÀtÍëÀëÉ÷Dtèÿ¸P¸fiuP⇩D—PèÃ◰Ä Àu#⇩D—PèÑùY=t◰Lë⇨⇧D%þ ⇨Dézÿ€>fiuu÷D@t®◰dß fiu´^]ø‰rPèNÿYÃU⇧ìVW⇧v⇧F⇧V⇧~ Àt⇧Ø€?t    ⇩⇦FÆ:F Òt ⇧Ú€?tSVè`ëYY⇧ð€|ÿ\t
  38383. €|ÿ/tÆ\F◰~
  38384. t ÿv
  38385. Vè?ëYY⇧ð ÿt€=t€=.tÆ.FWVè$ëYY⇧ðÆ_^]ÃU⇧ìVW⇧~⇧v⇧NÑéüó¥s¤⇧F_^]ÃU⇧ìVWü⇧N ⇧~
  38386. ‰F⇧v‰^Ñéó¥s¤_^]ÃU⇧ì⇧N´<⇧VÍ!rëPèâ]ÂU⇧ì⇧^+É+Ò´@Í!]ÂU⇧ì◰ìVW⇧v⇧~÷ÆÀu¡øs%À ð3ÀPÿvè'øYY⇨Fþ÷Ætx#>ús⇧Ç©€u¸Pèºá◰~þÿu#◰>þst
  38387. ÿ6þsè¦áéí÷Ç€t3Àë¸⇨Fþë ÷Æt7¸PPëÜ÷Æðtÿv3ÀPèOÿ⇧ø À}éµWèú÷Yëÿvÿvþè6ÿ⇧ø À}lé†Vÿvè‡YY⇧ø À|Z3ÀPWèFïYY⇨Fü©€tŴΠ÷Æ€t%ÿ P¸PWè#ï◰Äë
  38388. ÷ÆtWèþþ÷Fþt÷Æt÷Æðt¸PPÿvè>÷◰Ä ÿ|/÷Æt¸ë3À⇧ÖŴâÿø ÐR÷Fþt3Àë¸Z Ð⇧ßÑã⇨–Ðs⇧Ç_^⇧å]ÃU⇧ì◰ì°⇧N÷Áu
  38389. °÷Áu°⇧V±ð"N
  38390. Á´=Í!r⇨Fþ⇧F%ÿ¸€⇧^þÑã⇨Ðs⇧FþëPègà⇧å]ÃU⇧ì¸⇦RP¸firPÿv™FPè²ã]ÃU⇧ìV⇧vÿ V⇩F—PèYY^]ÃU⇧ìVW⇧~⇩F¢ u◰=ÿ}:ÿ⇧]
  38391. ÿE
  38392. ⇦÷Euéõ€> u
  38393. t
  38394. €> utéäWè“÷Y Àuéظÿÿé×éÏ÷E‘u÷Eu◰MëãŴM◰}tE◰=t    Wè[÷Y ÀuÊ⇧E÷Ø⇨⇧]
  38395. ÿE
  38396.   u⇦÷Euéŷ€> u
  38397. t€> uuxWè(÷Y Àtoë”ëk⇩E—Ñà⇧Ø÷Ðst¸P3ÀPP⇩E—PèZà◰Ä€> u
  38398. u÷E@u¸P¸0uP⇩E—PèE◰Ä=u¸P¸ uP⇩E—Pè-◰Ä=t
  38399. ÷Eué?ÿ  u´_^]ÃU⇧ì¸firPÿvèÎþYY]ÃU⇧ì◰ìVW⇧~⇧F⇨Fþ÷Et)ëW⇧^ÿF⇩—Pè¢þYY=ÿÿu3ÀéU⇧FÿN ÀuÜéE÷E@uéß◰}ué—⇧E;FsO◰=t    Wè5öY ÀuÅ⇩E—Ñà⇧Ø÷Ðst¸P3ÀPP⇩E—Pèkß◰Äÿvÿv⇩E—Pèf◰Ä;FréàëéÛ⇧F|◰=u
  38400. ¸ÿÿ+E⇨ë WèÕõY Àtébÿÿvÿvÿu
  38401. è¾û◰Ä⇧F⇨⇧FE
  38402. éŒ⇩E—Ñà⇧Ø÷Ðst¸P3ÀPP⇩E—PèéÞ◰Äÿvÿv⇩E—Pèä◰Ä;Fsaéÿë\◰}t=ë/ÿ}⇧]
  38403. ÿE
  38404. ⇧vÿF⇩⇦´ëW⇧^ÿF⇩Pè\ýYY=ÿÿuéÎþ⇧FÿN ÀuÇëÿvÿv⇩E—Pèŵ◰Ä;Fsé©þ⇧Fþ_^⇧å]ÂU⇧ì◰ìVW⇧F;Îsr
  38405. ¸PèVÝé§⇧F@=r⇧^Ñã÷Ðst3Àé…ÿvÿvÿvèß◰Ä⇨Fþ@=r⇧^Ñã÷Ðs@u⇧Fþëb⇧Nþ⇧v⇧þ⇧Þü¬<t-<tªâôëâðS¸P™FýPÿvèÊÞ◰Ä[ü⇩Fýª;ûuë−ë S¸P÷ÙÀPQÿvè´Ý◰Ä⇧^ÑãŴ•Ðs[+û–_^⇧å]Ãé5ÿU⇧ìVW⇧v⇧~
  38406. 9tu ◰~Ŵÿÿv¸ÿÿé¤◰>4uuŴþfiruÇ4uë◰>2uu Ŵþ‰ruÇ2u◰<t¸P3ÀPPVèr÷◰Ä÷DtÿtèëY◰dóÇD⇧Æ⇨D⇨D
  38407. ◰~t> ÿv:Ç⇦rìZ◰~uWè¶ëY⇨F Àuéwÿ◰Lëénÿ⇧F⇨D
  38408. ⇨D⇨|◰~u◰L3À_^]ÃU⇧ìVW⇧v⇧~ öt$WèûY;FrÿvWVè◰Ä⇧^ÆëWVè»YY_^]ÂU⇧ì◰ìV⇧v€|ÿ.uNN⇧Þ⇩—⇨Fþ¹».V.⇧;Fþt◰Ãâóë.ÿg€|þu¸ë3À^⇧å]Â/:\ V VV VU⇧ì◰ìVVWÇFþ◰~t⇧^Æ◰~t⇧^Æ◰~
  38409. t⇧^
  38410. Æ◰~ t⇧^ Æ™vªëÿF⇧^€? tõSè-Y⇧ø=P~¿PÆFWÿvVè0◰Ä÷Æ3ÿN⇧Þ⇩—⇨Fü¹»„W.⇧;Füt◰Ãâóëâ.ÿg ÿu €|uVèÿ⇧ø ÿuÊ÷FþuÃ◰Nþÿv V¸Pè²þÆ믙F¬;Æu¨ ÿtF⇧Þ€?t◰NþÿvV¸APè⇧þÆNëG ÿu◰GF⇧Þ€?t◰Nþÿv
  38411. V¸PèiþÆN€<t"€<:téZÿ™F¬;ÆtéPÿë ÿtéGÿ◰Nþé@ÿ€<:u€~«t◰Nþÿv™F«P¸Pè!þ⇧Fþ_^⇧å]Ã*./:?\WbWÒV)WWbW)WU⇧ìÿv ÿv
  38412. ÿvÿvÿvèwþ◰Ä
  38413. ]ÃU⇧ìVW⇧~⇧vWÿvÿ4è?÷◰Ä<⇧Æ⇧Ç_^]ÂU⇧ì⇧^ƸÌWP™FPÿv™FPèÞÜ]ÃU⇧ì⇧^ƸÌWP™FPÿvÿvèÂÜ]ÃU⇧ìVWü⇧~⇧×2À¹ÿÿò®™uÿ⇧~¹ÿÿò®÷Ñ+ù÷÷Æt¤IÑéó¥s¤‹_^]ÃU⇧ìVü⇧v⇩^÷Æt    ¬:Ãt"Àt­:Ãt"Àt:ãt"äuï3ÀëF™Dþ^]ÃU⇧ìVWü⇧~⇧÷2À¹ÿÿò®÷Ñ⇧~ó¤⇧F_^]ÃU⇧ìW…؉À⇧~3Àü¹ÿÿò®’÷ÐH_]ÃU⇧ìVW…؉Àü⇧~⇧÷2À⇧^⇧Ëò®+Ù⇧~Ëó¤⇧Ëóª⇧F_^]ÃU⇧ìVW⇧~ë⇧vë ⇩:u⇧ÇëF€<uðG€=uå3À_^]ÃU⇧ìV⇧vVè☓ÿY@⇧Ð⇧ÎÊëI⇧Ù⇩:Fu⇧ÁëJ Òuí3À^]ÃU⇧ì¸⇦RPÿvÿvÿvè~Û]ÃU⇧ì¸⇦RP¸firPÿvÿvèhÛ]ÃU⇧ìŴì⇦VW⇧~⇧v;>Îsr
  38414. ¸Pèæ×éß⇧F@=s3ÀéÑ⇧ßÑã÷Ðst¸P3ÀPPWè³Ø◰Ä⇧ßÑã÷Ðs@uÿvVWè¨◰Äé†⇧ßÑãŴ§Ðsÿý⇨vú⇧F⇨FþëMÿNþ⇧^úÿFú⇩⇦Fý<
  38415. uÆF⇩Fý⇦F™ŷxÿ⇧Ö+ÐŴú€|'+ðVPWè[◰Ä⇧Ð;Æt◰úÿu¸ÿÿë=⇧F+Fþë1™¶xÿ◰~þu©™ŷxÿ+ð⇧Æ Àv!V™ŷxÿPWè ◰Ä⇧Ð;Æt◰úÿtÅ⇧FÂ+Æë⇧F_^⇧å]ÃU⇧ì⇧^Ñã÷Ðst¸Pë´@⇧^⇧N⇧VÍ!rP⇧^ÑãŴ•ÐsXëPèÆÖ]Ãé¿þVW3ÿ¾‰r;>Îss÷DtVèÏíY◰ÆG;>Îsrê_^ÃVW¿¾‰rë÷DtVè!îYO◰Æ ÿuì_^ÃBorland C++ - Copyright 1991 Borland Intl.Divide error
  38416. Abnormal program termination
  38417. ¢u¢uÿÿ?#&@%$^.\/#?+=;<>/.\Failed to allocate memory (%s)
  38418. Unable to convert date stamp for file '%s'Unable to open destination file '%s' (%s)Error reading from file '%s'Error writing to file '%s' (%s)Unable to write filename for RISC OS (%s)Unable to convert extension '%s' to filetype (%s)Unable to set filetype &%x (%s)Unable to open source file '%s' (%s)Unable to read date stamp for file '%s' (%s)Unable to open destination file '%s'Error reading from file '%s' (%s)Error writing to file '%s'Unable to generate temporary filename (%s)Unable to write directory name for RISC OS (%s)Unable to create directory '%s' (%s)|/-\.:%s%s                                                                                %c
  38419. %s: Abort, Retry%s, Cancel%s (Y/N)?Unexpected message receivedFailed to connectFailed to start editFailed to poll edit statusFailed to open SaveAs windowStarting external editUnable to allocate memory for edit recordUnable to choose filename for edit (%s)Unable to send file (%s)rbUnable to start external edit (%s)ARMEDIT 1.03 (21 February 1996) (c) A.Thoukydides, 1996, 1997
  38420. ARMEDIT [/?] file [file [...]]
  38421. ARMEDIT [/?] /L file [line [file [line [...]]]]
  38422. ARMEDIT 1.03 (21 February 1996) (c) A.Thoukydides, 1996, 1997
  38423.  
  38424. Edit a file using a RISC OS editor via the External Data Editing Protocol.
  38425.  
  38426. ARMEDIT [/?] file [file [...]]
  38427. ARMEDIT [/?] /L file [line [file [line [...]]]]
  38428.  
  38429.   /?             Display this help text.
  38430.   /L             Filenames are followed by line number to place cursor at.
  38431.   file           The name of the file to edit.
  38432.   line           Line number to position cursor at.
  38433.  
  38434. This command requires !ARMEdit and a suitable RISC OS editor to be running.
  38435. Unrecognised switch '%s'
  38436. No filenames specified
  38437. Connecting to !ARMEditUnable to connect to !ARMEdit (%s)
  38438. Polling edit statusUnable to poll edit status (%s)Retrieving fileUnable to retrieve file (%s)Communications with ARM are already in useCommunications with ARM are not workingThe required ARM service is unknownThe requested ARM memory does not existUnable to perform DOSMap conversionUnable to claim required ARM memoryUnable to release ARM memoryUnable to open RISC OS fileUnable to close RISC OS fileUnable to read from RISC OS fileUnable to write to RISC OS fileUnable to register as a communications clientUnable to deregister as a communications clientUnable to transmit messageThere is no message to receive         !!!!!                  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ µ0µ0µ0    ‰r
  38439. fir®rC¾rBÎr```  @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ#ÿÿTMP.$$$(null)    
  38440. 
  38441.   COMPAQprint scanf : floating point formats not linked
  38442. È=Í=Í=Í=²3Ñ<FWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     …Ê.⇨e´0Í!⇧.⇧,‰Ú£éO…çO⇨ãO⇨.ÿOèZÄ>áO⇧Ç⇧عÿüò®ãaC&8uö€Í€÷Ù⇨áO¹Óã◰Ã◰ãø⇨åO…Ú+ê⇧>äbŴÿs¿⇨>äbŴÇdr(>ŷbr"±ÓïG;ïr◰>äbt◰>ŷbu¿;ïw⇧ýëéµ⇧ßÚ⇨÷O⇨ûO¡çO+؉À´JWÍ!_Óçú‰Ò⇧çû3À.‰e¿Ðc¹d+Ïüóª◰>XbvG€>éOr@w€>êOr7¸X»Í!r*´g⇧XbÍ!r ´H»Í!r@£ÿOH‰À´IÍ!r
  38443. ¸X»Í!sé4´Í⇨íO⇨ïO
  38444. Àt ¸@‰À»p&Æ3í.‰e¾¾c¿Ðcè©ÿ6ßOÿ6ÝOÿ6ÛOè» Pè(.‰eVW¾Ðc¿Ðcèŷ_^ÃÃ⇧ì´L⇩FÍ!¹ºflOéÕ¸5Í!⇨ËO…ÍO¸5Í!⇨ÏO…ÑO¸5Í!⇨ÓO…ÕO¸5Í!⇨×O…ÙO¸%…ʉںxÍ!ø%ÅËOÍ!¸%ÅÏOÍ!¸%ÅÓOÍ!¸%Å×OÍ!ÃŴþ¾ct2äë´ÿ⇧×⇧Þ;ßt#&€?ÿtŴþ¾ct&:gë&8gw&⇩g⇧Ó◰ÃëÙ;×t⇧Ú&€?&Æÿt&ÿ_ë±&ÿWëªÃ´@»Í!ùº­O.‰eèêÿ¸Pè#'U⇧ì¡Q Qtÿ6Qÿ6Qèfl◰ÄÇQÇQ◰>Qÿtÿ6QèÓ<◰ÄÇQÿÿ]ÃU⇧ì◰ì(Vè·ÿëaÿ6 Qÿ6
  38445. Q¡QPèzI◰Ä@P¡QPèg    ◰Ä⇧ð öu.ÇFÚÇFØ¡ Q⇧
  38446. Q⇨FÞ⇨VÜ™FØP™FØP3ÀºPRè§◰Ä⇧ð⇧Q⇧£Q¡
  38447. Q  Qt◰>Qu•¡
  38448. Q  Qtÿ6 Qÿ6
  38449. Qè’
  38450. ◰Ä3ÀPPèÕ◰Ä^⇧å]ÃU⇧ìV◰>Qu=¸¨Pèh%◰ĸ
  38451. QP¸Pè„    ◰Ä⇧ð öt⇧ÆP¸(QP¸PPè*H◰ĸëÇQ3À^]ÃU⇧ìŴì¸?VW⇧~è¤ÿ Àt¸éË◰>Pu3ÀºdPRèV◰Ä◰~u™ŷpÀ⇨FPWè"◰ĸ€PWèf?◰Ä£Q◰>Qÿu¸é™FúP™FøPÿ6Qèå$◰Ä™FòPÿvøÿvúèE◰Ä⇧ð ötW¸HQP¸PPèŷG◰Äè:þ¸éG¸QP3ÀPÿ6QèN<◰ÄRPÿvè ◰Ä
  38452. ⇧ð öt ⇧ÆPÿv¸sQP¸PPèDG◰Äèøý¸éÇFþÇFüé¡◰>Pu3ÀºdPRè◰◰ĸ€>P™ŷpÁPÿ6QèöC◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuW¸‡QP¸PPèåF◰Äè−ý¸é¦⇧Fü FþtG™ŷpÁPÿvþÿvü¸ÿÿºÿÿPRÿ6Qÿ6Qè¿◰Ä⇧ð öt ⇧ÆPÿv¸ºQP¸PPè„F◰ÄèJý¸éW⇧Fü FþtéTÿè6ýÿ6 Qÿ6
  38453. QÿvèÿF◰Ä@Pÿvèð◰Ä⇧ð öt⇧ÆP¸ÚQP¸PPèIF◰ĸéëG€=t€=.uõ€=tG™FðPWèú◰Ä⇧ð öt⇧ÆPW¸RP¸PPè
  38454. F◰ĸéÎÇŷJÀÇŷHÀ¡ Q⇧
  38455. Q⇨ŷNÀ⇨„LÀ⇧Fð−±èâ#⇨„RÀ⇨ŷPÀ⇩Fö—−    ŷPÀ    „RÀ◰‰PÀ◰‰RÀð™ŷHÀP™ŷHÀP3ÀºPRè©◰Ä⇧ð öuBÇŷJÀÇŷHÀ¡ Q⇧
  38456. Q⇨ŷNÀ⇨„LÀ⇧Fô⇧Vò⇨ŷVÀ⇨„TÀ™ŷHÀP™ŷHÀP3ÀºPRèc◰Ä⇧ð öt⇧ÆPÿvð¸6RP¸PPèGE◰ĸë 3ÀPPè¡◰Ä3À_^⇧å]ÃU⇧ìŴì¶?VW⇧~èºü Àt¸éX◰>Pu3ÀºdPRèl◰Ä◰~u™ŷrÀ⇨FPWè◰◰ĸQP3ÀP¸ÿÿºÿÿPRWèz    ◰Ä
  38457. ⇧ð öt⇧ÆPW¸VRP¸PPè½D◰ĸéøÿ6 Qÿ6
  38458. QWè9E◰Ä@PWè,◰Ä⇧ð öt⇧ÆP¸ÚQP¸PPèŶD◰ĸéÀÇŷLÀÇŷJÀ¡ Q⇧
  38459. Q⇨ŷPÀ⇨„NÀ™ŷJÀP™ŷJÀP3ÀºPRèL◰Ä⇧ð öt⇧ÆPW¸{RP¸PPè2D◰ĸém◰¾dÀÿu◰¾bÀÿu°⇦Fö⇦Fõ⇦Fô⇦Fó⇦Fòë⇧ŷXÀ⇧„VÀ⇨Fô⇨Vò⇩ŷRÀ⇦Fö™FøP™FúP™FòPèÝ◰Ä⇧ð ötW¸HQP¸PPèÏC◰Äè◰ú¸é¸€P¸◰PÿvèN;◰Ä£Q◰>Qÿuÿv¸¨RP¸PPèŒC◰ÄèNú¸éÒÇFþÇFüéœ◰>Pu3ÀºdPRèÙ◰Ä™FüP™ŷrÁP3Àº€>PR¸ÿÿºÿÿPRÿ6Qÿ6Qèt    ◰Ä⇧ð öt⇧ÆPW¸ÍRP¸PPè/C◰Äèãù¸ëh⇧Fü Fþt6ÿvü™ŷrÁPÿ6Qè¥E◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuÿv¸ïRP¸PPèéB◰Ä⇧Fü FþtéZÿÿvúÿvøÿ6Qè- ◰Äèŵù3ÀPPè*◰Ä3À_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸QPèÔB◰Ä⇨Fþ◰~þt⇧^þŴëQ⇩Q⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸QPè⇨B◰Ä⇨Fþ◰~þt⇧^þŴëQ⇩Q⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~è®ù Àt¸ëUÿvWè◰Ä⇨Fþ◰~þt⇧FþP¸
  38460. SP¸PPèäA◰ĸë(¸PèT/◰Ä⇧ð öt¡Q⇨W⇧ÆPè,B◰Ä⇨6Q3À_^⇧å]ÃU⇧ì◰ì(VW⇧~è<ù Àt¸é•ÿ6 Qÿ6
  38461. QWèB◰Ä@PWè◰Ä⇧ð öt⇧ÆP¸5SP¸PPègA◰ĸëXÇFÚÇFØ¡ Q⇧
  38462. Q⇨FÞ⇨VÜÇFêÇFè™FØP™FØP3ÀºPRè+◰Ä⇧ð öt⇧ÆPW¸eSP¸PPèA◰ĸë3À_^⇧å]ÃU⇧ì◰ì
  38463. VW⇧v⇧~
  38464. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü ÿt¸(ë3ÀPW¸P¸⇩TP öt¸(ë3ÀPV¸P™FøPèÔ◰Ä⇨Fö◰~öu¸‹VP¸‰SPèA◰ĸ⇩SëO◰~öu¸½VP¸‰SPèë@◰ĸ⇩Së6◰>…Tu ◰>⇩Tu¸‰Të#◰>…Tÿu◰>⇩Tÿu¸åVP¸‰SPè·@◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38465. ⇧V⇨Fö⇨VôÇFú⇨vøVÿv¸P™FüP3ÀP3ÀPP¸ P™FðPè◰Ä⇧ø◰ÿu¸‹VP¸‰SPèH@◰ĸ⇩SëX◰ÿu¸½VP¸‰SPè0@◰ĸ⇩Së@◰~þu◰~üu¸    WP¸‰SPè@◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPèò?◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38466. ⇧V⇨Fö⇨VôÇFú⇨vø3ÀP3ÀPP¸P™FüPVÿv¸ P™FðPèQ◰Ä⇧ø◰ÿu¸‹VP¸‰SPè◰?◰ĸ⇩SëX◰ÿu¸½VP¸‰SPèk?◰ĸ⇩Së@◰~þu◰~üu¸    WP¸‰SPèL?◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPè-?◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFøÇFú⇧FÇFþ⇨Fü3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè›◰Ä⇧ø⇧Fö⇧Vô⇨D⇨◰ÿu¸‹VP¸‰SPèº>◰ĸ⇩SëX◰ÿu¸½VP¸‰SPè¢>◰ĸ⇩Së@◰~òu◰~ðu¸UWP¸‰SPè◰>◰ĸ⇩Së!◰~òÿu◰~ðÿu¸åVP¸‰SPèd>◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèÍ◰Ä⇧ð◰þu¸‹VP¸‰SPèÿ=◰ĸ⇩SëX◰þu¸½VP¸‰SPèç=◰ĸ⇩Së@◰~öu◰~ôu¸yWP¸‰SPèÈ=◰ĸ⇩Së!◰~öÿu◰~ôÿu¸åVP¸‰SPè©=◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFøÇFúÇFþÇFü€<tG⇩—Pèï◰Ä−    Fü    Vþ€|t0⇩D—Pè×◰Ä−±èá    Fü    Vþ€|t⇩D—Pèº◰Ä−◰Nü    Fþ3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPèÂ◰Ä⇨Fî⇧Fô⇨◰~îu¸‹VP¸‰SPèí<◰ĸ⇩SëY◰~îu¸½VP¸‰SPèÔ<◰ĸ⇩Së@◰~òu◰~ðu¸1WP¸‰SPèµ<◰ĸ⇩Së!◰~òÿu◰~ðÿu¸åVP¸‰SPè„<◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F−⇨Vþ⇨Fü¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸‹VP¸‰SPè2<◰ĸ⇩SëX◰þu¸½VP¸‰SPè<◰ĸ⇩Së@◰~öu◰~ôu¸1WP¸‰SPèû;◰ĸ⇩Së!◰~öÿu◰~ôÿu¸åVP¸‰SPèÜ;◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38467. −⇨Vú⇨Fø¸Pÿv ¸P™FüPVè¯;◰Ä@PV¸ P™FðPè3◰Ä⇧ø◰ÿu¸‹VP¸‰SPèe;◰ĸ⇩SëX◰ÿu¸½VP¸‰SPèM;◰ĸ⇩Së@◰~þu◰~üu¸„WP¸‰SPè.;◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPè;◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèx◰Ä⇧ð◰þu¸‹VP¸‰SPèª:◰ĸ⇩SëX◰þu¸½VP¸‰SPè‹:◰ĸ⇩Së@◰~öu◰~ôu¸²WP¸‰SPès:◰ĸ⇩Së!◰~öÿu◰~ôÿu¸åVP¸‰SPèT:◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFèÇFê    ⇧F⇧V⇨Fî⇨Vì⇧F
  38468. ⇧V⇨Fò⇨Vð⇧F⇧V ⇨Fö⇨Vôÿv ÿv¸P™FøP3ÀP3ÀPP¸P™FèPè¢ ◰Ä⇧ø⇧Fþ⇧Vü⇨D⇨◰ÿu¸‹VP¸‰SPèÉ9◰ĸ⇩SëX◰ÿu¸½VP¸‰SPè±9◰ĸ⇩Së@◰~úu◰~øu¸ÏWP¸‰SPè‹9◰ĸ⇩Së!◰~úÿu◰~øÿu¸åVP¸‰SPès9◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVÇFìÇFî
  38469. ⇧F⇧V⇨Fò⇨Vð⇧F
  38470. ⇧V⇨Fö⇨Vô⇧F⇧V ⇨Fú⇨Vø3ÀP3ÀPP¸P™FüPÿv ÿv¸P™FìPèÄ ◰Ä⇧ð◰þu¸‹VP¸‰SPèö8◰ĸ⇩SëX◰þu¸½VP¸‰SPèÞ8◰ĸ⇩Së@◰~þu◰~üu¸ðWP¸‰SPè¿8◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPè 8◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ì VW⇧vÇFüÇFþ 3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FüPè ◰Ä⇧ø⇧Fú⇧Vø⇨D⇨◰ÿu¸‹VP¸‰SPè98◰ĸ⇩SëX◰ÿu¸½VP¸‰SPè!8◰ĸ⇩Së@◰~öu◰~ôu¸XP¸‰SPè8◰ĸ⇩Së!◰~öÿu◰~ôÿu¸åVP¸‰SPèã7◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú ⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèL
  38471. ◰Ä⇧ð◰þu¸‹VP¸‰SPè~7◰ĸ⇩SëX◰þu¸½VP¸‰SPèf7◰ĸ⇩Së@◰~öu◰~ôu¸>XP¸‰SPèG7◰ĸ⇩Së!◰~öÿu◰~ôÿu¸åVP¸‰SPè(7◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38472. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPèŶ    ◰Ä⇧ð◰þu¸‹VP¸‰SPè·6◰ĸ⇩SëX◰þu¸½VP¸‰SPèfl6◰ĸ⇩Së@◰~þu◰~üu¸nXP¸‰SPè€6◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPèa6◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~
  38473. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü¸Pÿv ¸ P™FêP3ÀP3ÀPP¸P™FøPèÃ◰Ä⇨Fö⇧Fð⇧Vî⇨D⇨⇧Fô⇧Vò⇨E⇨◰~öu¸‹VP¸‰SPèÝ5◰ĸ⇩SëY◰~öu¸½VP¸‰SPèÄ5◰ĸ⇩Së@◰~ìu◰~êu¸⇨XP¸‰SPè¥5◰ĸ⇩Së!◰~ìÿu◰~êÿu¸åVP¸‰SPèŷ5◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFüÇFþ3ÀP3ÀPP¸P™FôP¸Pÿv¸P™FüPèó◰Ä⇨Fò⇧Fø⇨⇧Fú⇨◰~òu¸‹VP¸‰SPè5◰ĸ⇩SëF◰~òu¸½VP¸‰SPè5◰ĸ⇩Së-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸åVP¸‰SPèÕ4◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇨Fü⇧F⇨Fþ¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè=◰Ä⇧ð◰þu¸‹VP¸‰SPèo4◰ĸ⇩SëE◰þu¸½VP¸‰SPèW4◰ĸ⇩Së-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸åVP¸‰SPè,4◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFüÇFþ¸Pÿv¸P™FøPVè4◰Ä@PV¸P™FüPè−◰Ä⇧ø◰ÿu¸‹VP¸‰SPèË3◰ĸ⇩SëE◰ÿu¸½VP¸‰SPè³3◰ĸ⇩Së-◰~úu◰~øt ◰~úÿu◰~øÿu¸åVP¸‰SPè⇦3◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFòÇFô⇧F⇧V⇨Fø⇨Vö⇧F
  38474. ⇧V⇨Fü⇨Vú¸Pÿv¸ P™FæP◰~
  38475. |◰~v⇧Fë3ÀP◰~
  38476. |◰~v⇧F ë3ÀP¸ P™FòPè·◰Ä⇨Fþ⇧Fì⇧Vê⇨D⇨⇧Fð⇧Vî⇨E⇨◰~þu¸‹VP¸‰SPèÑ2◰ĸ⇩SëF◰~þu¸½VP¸‰SPè¸2◰ĸ⇩Së-◰~èu◰~æt ◰~èÿu◰~æÿu¸åVP¸‰SPè™2◰ĸ⇩Së3À_^⇧å]ÃU⇧ì◰ìVÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P¸‰UP3ÀP3ÀPP¸P™FøPèö◰Ä⇧ð◰þu¸‹VP¸‰SPè(2◰ĸ⇩SëN◰þu¸½VP¸‰SPè2◰ĸ⇩Së6◰>‘Uu ◰>‰Uu¸‹Uë#◰>‘Uÿu◰>‰Uÿu¸åVP¸‰SPèÜ1◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38477. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPè9◰Ä⇧ð◰þu¸‹VP¸‰SPèk1◰ĸ⇩SëX◰þu¸½VP¸‰SPèS1◰ĸ⇩Së@◰~þu◰~üu¸nXP¸‰SPè41◰ĸ⇩Së!◰~þÿu◰~üÿu¸åVP¸‰SPè1◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸‹VP¸‰SPè±0◰ĸ⇩SëE◰þu¸½VP¸‰SPè−0◰ĸ⇩Së-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸åVP¸‰SPèn0◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ìVÇFüÇFþÿvÿv¸P™FøP3ÀP3ÀPP¸P™FüPèä◰Ä⇧ð◰þu¸‹VP¸‰SPè0◰ĸ⇩SëE◰þu¸½VP¸‰SPèþ/◰ĸ⇩Së-◰~úu◰~øt ◰~úÿu◰~øÿu¸åVP¸‰SPèÓ/◰ĸ⇩Së3À^⇧å]ÃU⇧ì◰ì¸P™FþP¸þP¸ÿPè&◰Ä
  38478. ◰~þÿu¸ë3À⇧å]ÃU⇧ì◰ì ÇFð™FàP™FðP¸MPè&◰Ä=PHu¸ë3À⇧å]ÃU⇧ì◰ìBÇF¾⇧F⇨FÀ⇧F⇧V⇨FÄ⇨VÂ⇧F⇨FÆ⇧F ⇧V
  38479. ⇨FÊ⇨VÈ⇧F⇨FÌ⇧F⇧V⇨FÐ⇨VÎ⇧F⇨FÒ⇧F⇧V⇨FÖ⇨VÔÇFè™F¾⇨Fê…Vø™FøP™FØP™FèP¸MPèÄ◰Ä⇧å]ÃU⇧ì◰ìVW⇧~¸àPè› ◰Ä⇨FþŴ~þEMu¸éÑŴ~þMEt¸éÄ3ÀP¸àPèâ◰Ä⇧F⇧V⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;÷rî⇧F ⇧V
  38480. ⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;vrí¸P¸àPè•◰ĸP¸àPèŴ◰Ä⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí¸P¸àPè-◰Ä3À_^⇧å]ÃU⇧ì◰ìB⇧FÇFÀ⇨F¾ÿvÿvè’◰Ä⇨VÄ⇨FÂ⇧FÇFÈ⇨FÆÿv ÿv
  38481. èt◰Ä⇨VÌ⇨FÊ⇧FÇFÐ⇨FÎÿvÿvèW◰Ä⇨VÔ⇨FÒ⇧FÇFØ⇨FÖÿvÿvè:◰Ä⇨VÜ⇨FÚ™F¾P™F¾P¸ºF¼PRèS◰Ä⇨Fþ◰~þu 3Àu3Àë¸⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFîŴ™FîP™FîP¸/PèÏ◰Ä◰>¨XtèTý£ªX◰>ªXuèuý£¬XǨX◰>ªXt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38482. Vÿvÿvèæþ◰Ä⇨Fþëi¸P¸àPèõ ◰Ä◰>¬Xt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38483. Vÿvÿvè/ý◰Ä⇨Fþë)ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38484. Vÿvÿvèý◰Ä⇨FþÇFîŵ™FîP™FîP¸/Pèý◰Ä⇧Fþ_^⇧å]ÃU⇧ì◰ì⇧F⇧V⇨Fþ⇨Vü¸⇨ÂÄ^üÿÿs¸⇨Â⇨Fø⇨Vú⇧Vú⇧Fø⇧å]ÃU⇧ì◰ì VW⇧~⇧N
  38485. ÇFø…Vú⇧Fú%üÿ…Vþ⇨Fü⇧Fþ⇧Vü⇨Fö⇨VôÄ^ü⇧F⇧V&⇨G&⇨3öë2 ÿt⇧ÞÑãÑã⇧Q⇧ë3Ò3À⇧ÞÑãÑã‰FþPRS⇧^üXØX&⇨GX&⇨GF◰þ|ÉÄ^ôºas¸efÿÿsÇFø Ét23öë)⇧ÆÑàÑàÄ^üØ&⇧G&⇧W⇧ÞÑãÑãPRS⇧ÙXØXZ⇨W⇨F◰þ|Ò◰~øt3Àë
  38486. Ä^ü&⇧%@_^⇧å]ÃU⇧ì◰ìRVW⇧~⇧v◰>°YtK◰>²Yu◰>´Yuÿ6°YVè+◰ÄëK™F®P¸°XPè+◰Ä⇧×ÐRèè◰Ä™F®Pÿ6°Y¸¶YPVèj*◰Äëë™F®⇨Fþ™F®PWèêç◰ÄÿvþVèº*◰Ä_^⇧å]ÃU⇧ì◰ìPV⇧v◰>®Xt Vè◰Ä Àt(™F°PVè[ÿ◰Ä™F°PVèæä◰Ä Àt¸PP¸¼YPè◰Ä^⇧å]ÃU⇧ìŴìPV⇧v™ŷ°þPVè"ÿ◰Ä™ŷ°þPèG    ◰ÄV¸ÀYP™ŷÿPèÊ)◰ĸm"P3ÀP™ŷÿPè³◰ĸ¶"P¸P™ŷÿPè ◰Ä^⇧å]ÃU⇧ì◰ìVW3ÿÇFþ◰~u¸ÅYP¸(aPè ◰Ä3Àé›3öé” ÿté⇧ÆÑà⇧^Ø⇧€?/uw⇧ÆÑà⇧^Ø⇧⇩G—Pè
  38487. ◰Ä=pt, =?t=mtë-=st!ë&¸;ZPèT"◰Ä3Àé8ÇPë6Ç®Xë.ÇFþë'⇧ÆÑà⇧^Øÿ7¸\P¸8aPè|◰ĸéë ÿu⇧þF;v}écÿ ÿu¸\P¸8aPèS◰ĸéÙ⇧F+Ç=~¸4\P¸8aPè5◰ĸé»3ÀP3ÀP⇧ÇÑà⇧^Øÿ7è☓◰Ä£²Y◰~þtÀP¸P⇧ÇÑà⇧^Øÿ7èc◰Ä£´Y◰>²Yu◰>´Yu
  38488. ¸R\Pèb◰Ä⇧F+Ç=~⇧ßÑã^⇧G£°Y3ÀP¸°XP⇧ÇÑà⇧^Øÿ7è‡◰ĸm"P3ÀP⇧ÇÑà⇧^Øÿ7è◰Ä◰~þt¸¶"P¸P⇧ÇÑà⇧^Øÿ7èâ◰Ä3À_^⇧å]ÃU⇧ì¡z_ |_tÿ6|_ÿ6z_èàé◰Ä]ÃU⇧ì◰ì◰>~_u,¸Ó$PèÂ◰ĸz_P¸Pèðè◰Ä⇨Fþ◰~þt¸ëÇ~_3À⇧å]ÃU⇧ìVW⇧v¸_PÿvèF(◰Ä⇧øë⇧Ç@⇧ð¸_PVè2(◰Ä⇧ø ÿuê◰~t⇧Æ+FPÿvÿvèè'◰Ä⇧Æ+F⇧^ØÆ◰~t
  38489. Vÿvè•'◰Ä_^]ÃU⇧ìŴìÔVW⇧~3ÀP3ÀP™ŷ,ÿP™FüPÿvèm◰Ä
  38490. ÿv™F¾Pÿvèj◰Ä⇨Fê3öëa€~Ü.tN⇩FÓ—÷ÐŶFuCF™FìP™FòP3ÀP3ÀP™FÜPè,◰Ä
  38491. ™FìP™FòP™ŷ,ÿP™FüP™ŷnÿPèö◰Ä
  38492. ÿt
  38493. ™ŷnÿPÿ×◰Ä™F¾Pè8◰Ä⇨Fê◰~êt−⇧Æ_^⇧å]ÃU⇧ìÿv¸f\PèÑ&◰ĸ.P¸f\PèV'◰ÄP3ÀP¸f\PèH'◰ÄHZ;Ðu¸.P¸f\Pè4'◰Ä⇧ØÆÿv¸f]Pè•&◰Äÿ6|_ÿ6z_¸P¸f\Pè–æ◰Ä]ÃU⇧ìŴì(VWè9þ Àt3Àéfi™ŷØüP™ŷØýPÿvè_þ◰Ä™ŷØüP™ŷØýPèaÿ◰Ä⇧ðÇFÚÇFØ
  38494. ¸f\-f\−⇧|_⇧z_ÈÚ⇨^Þ⇨Nܸf^-f\−⇧|_⇧z_ÈÚ⇨^â⇨NàÇFæÇFäÇFêÇFèÇFîÇFì¸f]-f\−⇧|_⇧z_ÈÚ⇨^ò⇨Nð öu™FØP™FØP3Àº PRèAä◰Ä⇧ð3ÿéÎÿ6|_ÿ6z_¸P¸f\Pèíä◰Ä⇧ð öuw⇧Fä Fæto÷Ft◰>x^u ◰>v^u¸ë3Àë#◰>x^u◰>v^t◰>x^u ◰>v^u¸ë3À Àt*G¸z^P™ŷØýP¸⇩_P™ŷØþPè¹$◰Ä◰~t ™ŷØþPÿV◰Ä öu™ŷØüP™ŷØýPè%þ◰Ä⇧ðÇFæÇFä öu™FØP™FØP3Àº PRènã◰Ä⇧ð öu◰~êÿté%ÿ◰~èÿtéÿ⇧Ç_^⇧å]ÃU⇧ì◰ì™FúP¸ŵ_P¹è¹¸•_Pèa◰Ä™F⇨Føÿvøÿvèa%◰Ä◰~t%™Fú⇧€_Ø⇩—P¸á_Pè2◰Ä¡€_@»−÷û⇨€_⇧å]ÃU⇧ì◰ì¸⇨_P3ÀPè•ÿ◰Ä™F⇨Fþÿvþÿv¸8aPèô$◰ĸå_P¸8aPèF◰ĸPèw◰Ä⇧å]ÃU⇧ìVW⇧~ ÿt¸ú_ë¸⇨_Pÿv¸ç_P3ÀPè8ÿ◰Äè°Pè@◰Ä⇧ðë è¢Pè2◰Ä⇧ð◰þat◰þrt     ÿtæ◰þcuá◰þau    ÿvè^ÿ◰ĸ⇨_P3ÀPèðþ◰Ä◰þru¸ë3À_^]ÃU⇧ì◰ìÿv¸`P3ÀPèÊþ◰Äè[⇨Fþ¸å_Pè8◰ÄÿvþèÃ◰Ä=yu¸ë3À⇧å]ÃU⇧ì◰>` u¸ë⇧`Ñã⇧F⇨Ðcÿ`3À]ÃU⇧ìVW⇧v⇧~¸W⇧^Í!sPè4ë⇨⇨3À_^]ÃU⇧ì¸W⇧^⇧N⇧VÍ!sPèë3À]ÃÃU⇧ìV⇧v öuëÿ`⇧`Ñãÿ–Ðc◰>`uëè
  38495. ØÿaèlØèØ◰~u öuÿaÿaÿvèü×Y^]ÂU⇧ì3ÀPPÿvè¦ÿ]ÃU⇧ì¸P3ÀPÿvè“ÿ]Ã3ÀP¸P3ÀPèŶÿøPP3ÀPèyÿÃ[S€ùs⇧ØÓàÓâöÙ€ÁÓë ÓË€é‹3ÀÓâËU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ìV⇧v ö|◰þX~¾W⇨6⇦b⇩☓⇩b—⇧ðë÷Þ◰þ#éÇ⇦bÿÿ⇨6ëO¸ÿÿ^]ÂU⇧ìV⇧vVè¼ÿ⇧Æ^]ÂU⇧ì¸D⇧^Í!‹%€]ÃU⇧ì◰ì"VW⇧~
  38496. ⇧^◰û$wX€ûrS⇧F ⇧N É}€~t Æ-G÷Ù÷Ø◰Ù™vÞã’+Ò÷ó’÷ó⇦Fã    ëñ+Ò÷ó⇦F Àuõ™NÞ÷ÙÎüN⇩,
  38497. s:ëFªâï°ª⇧F
  38498. _^⇧å]Â U⇧ì3ÀPÿvÿv¸
  38499. P°P°aPèjÿ]ÂU⇧ì⇧^ÑãŴ§Zbÿý´B⇩F
  38500. ⇧^⇧N⇧VÍ!rëPèäþ−]ÃU⇧ì´9⇧VÍ!r3ÀëPèÍþ]ÃU⇧ìVWÅvÄ~üÑéó¥Éó¤_^]ÂU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî]ÃU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî2ä]ÃU⇧ì⇧^Ñã÷Zbt¸Pë´?⇧^⇧N⇧VÍ!rëPèRþ]ÃU⇧ìV⇧v……L…T…\^]ú;Xbs+⇧ÚÑãÇZb⇧Ú±ÓãÆaÿ⇧ÂÓàa⇧ÚÓã⇨&aB;XbrÕ a—PèJþY ÀuŴ&aÿý¸P÷at¸ë3ÀP3ÀP¸aPèz◰Ä ,a—PèþY ÀuŴ&*aÿý¸P÷*at¸ë3ÀP3ÀP¸(aPèF◰ÄÃU⇧ì¸P3ÀPPÿvè◰þ◰Ä]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øö`t    ⇩´ ë⇩´]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øö`t    ⇩´àÿë⇩´]Ã⇩Æè⇩ÂÔŷàèŷà‘'@'ªÃU⇧ìŴì„VWÇFîÇFìPÇFêëFW¹ÿÿ2Àò®÷ÑI_Ã6⇦GþNìu/SQR™ŷjÿ+ø™ŷjÿPWÿvÿV
  38501. ÀuÇFêÇFìP~jÿZY[Ãü™¾jÿ⇨~ü⇧~ü⇧v¬
  38502. Àt<%t6⇦GþNìîè¬ÿëééÕ⇨vð¬<%tç⇨~ü3É⇨Nò⇨Nþ⇦NõÇFøÿÿÇFöÿÿë¬2ä⇧Ð⇧؀렀û`s⇩flíb◰ûvé⇦Ñã.ÿ§c2é~€ýwø◰NþëЀýwí◰NþëÅ€ýwâ€~õ+t⇦Võëµ◰fþßë◰Nþ µ맀ýwM÷Fþu)◰Nþµë›é3⇧~6⇧◰F€ýs Ày÷Ø◰Nþ⇨Føµéoÿ€ýu×⇨FöþÅébÿ€ýsʵÿFöéUÿ‹,0—€ýwµFø À|ÑÑà⇧ÐÑàÑàÂFøé3ÿ€ýuœFö ÀtµÑà⇧ÐÑàÑàÂFöéÿ◰NþéeÿŴNþ◰fþïéYÿ·ë
  38503. ·
  38504. ë
  38505. ·³éÚÆFõ⇦Vû3Ò⇦Vú⇧~6⇧ë·
  38506. ÆFú⇦Vû⇧~6⇧−GG⇨v÷Fþt6⇧GG⇨~™~» Àu Òu    ◰~öuéhþ◰NþRPW⇩Ç—P⇩FúPSè`û⇧Vö Ò}éòéý⇦Vû⇨v™~º⇧^6ÿ7CC⇨^÷Fþ t6⇧CC⇨^è‡ý°:ªZè“ý6ÆÆFú◰fþû™Nº+ùÏ⇧Vö;Ñ⇧Ñéfl⇨v⇦Vû⇧~6⇧◰F™~»2ä6⇨¹éÂ⇨v⇦Vû⇧~÷Fþ u6⇧=◰F ÿë 6Ä=◰F…À Çu¿æbèUý;Növ⇧NöéŶ⇨v⇦Vû⇧~⇧Nö É}¹WQ™^»SR¸#FþP⇧Fþ©t    ¸◰F
  38507. ë◰F¸Pè÷
  38508. ™~»÷Fþt⇧Vø Ò~è÷ü&€=-uI+Ñ~⇨Vò&€=-t ⇩Fõ
  38509. ÀtO&⇦◰~ò~
  38510. ⇧Nö É}ÿNòèÅü⇧÷⇧~ü⇧^ø¸#Fþ=u⇩fû€üou◰~òÇFòë€üxt€üXu◰Nþ@KK◰nò}ÇFòNò÷Fþu ë° è~üK;Ùö÷Fþ@t °0èmü⇩Fûègü⇧Vò Ò~'+Ê+Ú&⇩<-t< t<+u&¬èHüIKÊã°0è=üâùÊã+Ù&¬6⇦GþNìè0üâð Û~    ⇧Ë° èüâùéZü⇨v⇧~÷Fþ u 6⇧=◰Fë6Ä=◰F¸P*FìFî&⇨÷FþtGG&Çéü⇧vð⇧~ü°%èÎû¬
  38511. Àuø€~ìP}èÉû◰~êt¸ÿÿë⇧Fî_^⇧å]ÂË.µ./À../;/y/€/Ŷ/é.®/…/‘/“/0µ0X0x0÷1323232Û.á.U⇧ì Xc´⇧VJ÷êP¡[cZÂ⇧VJÂÑà⇧]c]ÂU⇧ì◰ìVW Zc´⇨Fþ⇧NãZÄ~
  38512. Åvü;÷s
  38513. ⇧ÁHÑàðøý◰~þuó¥ë;ºÚ…À…Û;ÃtúìÐÈrûìÐÈsû¥ûâñëúìÐÈrûìÐÈsû­û⇧ØìÐÈrûìÐÈsû⇧ëûâáü_^⇧å]Â
  38514. U⇧ìVW⇧~ÿvèY⇧ð@PÿvWè‘◰Ä⇧ÇÆ_^]ÃU⇧ì⇧F⇧ÔŴê;Âs£óO3Àë    ÇëO¸ÿÿ]ÃU⇧ì⇧F⇧VóO◰Ò⇧È ÒuŴÁr
  38515. ;ÌsóOë    ÇëO¸ÿÿ]ÃU⇧ìÿvè¤ÿY]ÃU⇧ì⇧F−RPè·ÿYY]ÃU⇧ì◰ìVW⇧v⇧~ÆFûèN ´⇨FþèF ±Óè´⇨FüéØ⇧ÞF⇩⇦Fû´-⇧Ø◰ûw.Ñã.ÿ§ë4´°è6ëv Pc´;Fþ}lÿNþëg Pc´⇨Fþë]ÿFüëX Yc´ Àu.◰>_ct'⇩&Tc⇩Fû⇨Fø⇧Fþ@P⇧Fü@Pè;þRP™FøP¸PèRþë⇩Vþ⇩vü´·èÒ⇩Tc⇩Fû´    ·¹èÁÿFþ Rc´;Fþ} Pc´⇨Fþ¡NcFü Sc´;Fü}°P PcP QcP RcP ScP°PèöÿNü⇧ÇO Àtéÿ⇩Vþ⇩vü´·èi⇩Fû´_^⇧å]Â
  38516. 4414,41414"4U⇧ì¸Æ3P3ÀPÿv™FPèØø]ÃU⇧ìV⇧vëÄ^ÿF&⇩⇧ÞF:t3Àë€<uç¸^]´³è⇩Ãð´ÃUQ¹@‰ÙY€üt    €ütVÍëj<u¸Í<t€&þ´¹Í¸ëÞ<@uÚ³´Í€ût=¸2Û͸³ Í¸Í<t&€´¹ÍëÍ<uPèÿ
  38517. ÀXt    €>☓t°@]ôèwÿPèY´·èkÿ€ä⇦&Uc⇦&TcÃU⇧ì⇩F¢Vc´èQÿ⇦&Xc:Vct- Vc´è?ÿ´è:ÿ¢Vc⇦&Xc€>Vcu¸@‰À&€>☓~ÆVc@€>Vcv€>Vc@s €>Vct¸ë3À¢Yc€>Vc@t°ë ¸@‰À& ☓þÀ¢Wc€>Vct¸ðºêÿPR¸acPè“þ Àu è·þ Àu¸ë3À¢Zc€>Vcu¸°ë¸¸£]cÇ[c°¢Qc¢Pc Xcÿ¢Rc Wcÿ¢Sc]úhcëºmc¹´@»Í!¹'ºrc´@Í!éoÌ€>Œct
  38518. ÆŒc œcë¸Í!´ÃV€>ŒctèÜÿ⇧ðë
  38519. èÕÿ⇧ðPèÄY⇧Æ^ÃU⇧ì€>Œct¸ÿÿë ÆŒc⇧F¢œc]ÃU⇧ì◰ìVW⇧~⇧vWVÿvÿv
  38520. è     Àu3Àë-⇧F+Ç@⇨Fþëÿv WVè+ûRPÿvþè©⇧FþÑàF F;v
  38521. ~á¸_^⇧å]ÃU⇧ì◰ìVW⇧~ ⇧F+F@⇨Fþ⇧vëÿvVèëúRPWÿvþèg⇧FþÑàøF;v
  38522. ~â¸_^⇧å]ÃU⇧ì◰ì™FøPèØôY™FøPÿvÿvÿvè◰Ä⇧å]ÃU⇧ì◰ìVW™Nò⇨Nü…VþÆFòUÆFóÍ⇧F⇦FôÇFõ]Ë<%r<&wÆFõ6ÇFö•⇨NøÇFú]Ë⇧v
  38523. ÿ4ÿt⇧v⇧⇧\⇧L⇧T⇧|
  38524. ⇧tÿ^ü††V‰^ì⇧v
  38525. ••D⇧v•D•D•D ◰d ⇨|
  38526. ⇨T⇨L⇨\⇨tPPè{òX_^⇧å]ÃU⇧ì⇧V´D⇩F⇧^⇧N
  38527. Í!r ◰~u⇧ÂëëPèOò]À>Œct¸ë´ Í!—ÃU⇧ì◰ìVW⇧v⇧~
  38528. ÿvVÿvWèz Àt#ÿv ÿv⇧F+F⇧V ÐR⇧Ç+Æ⇧VÐRèW Àu3ÀëS⇧Ö⇨~þÇFü;v}
  38529. ⇧×⇨vþÇFüÿÿ⇧úë)ÿv ⇧Ç+Æ⇧VÐRè`ùRPÿvWèWùRP⇧F+F@PèÐ~ü⇧FþFü;Çu͸_^⇧å]ÃVW⇧ô⇧\◰ër;fictèBëè_^Ã9†ct#⇧wöt⇨6ficë ;6†ct⇧ÞèT⇧G£ficë⇧Þ3À£†c£fic£ cSè£ù[Ãÿ;†ct⇧w⇧¨u⇨⇧?û⇨u⇧Þëè2⇧?û⇧¨tÃ⇧÷ð⇨\⇧ß⇧;ßt⇨> c⇧w⇨u⇨|ÃÇ cÃ⇧6 c öt⇧|⇨\⇨]⇨⇨wÃ⇨ c⇨_⇨_ÃVW⇧ô⇧D ÀtRr6%þÿ=s¸◰>†ct⇧ c Ût⇧Ó9s⇧_;Úuõèfë!è⇩ëèë3Àë⇧ð◰Æ97séèkÿÿ⇧Ã_^ÃP3ÀPPèãø[[%t    3ÒRPèÕø[[XP3ÛSPèÊø[[=ÿÿt⇧Ø⇨†c⇨ficX@⇨◰Ã⇧ÃÃ[3ÀÃP3ÛSPè£ø[[=ÿÿt⇧Ø¡fic⇨G⇨ficX@⇨◰Ã⇧ÃÃX3ÀÃ)⇧ó7⇧þø@⇨⇨\⇨u◰Æ⇧ÆÃ⇧ìSPQPèÿ[⇧Ø Àtü⇧ø⇧vþ⇧ ◰ÆV◰éÑéó¥⇨Fþè$þ[⇧^þ◰ÄÃ⇧Â◰Â;Ñw5⇧Ñ;ficu⇨ÿÃSPèø÷[[ë⇧ûø⇨]+Ð)⇧÷ò⇨|B⇨⇧Ë⇧ßè7þ⇧Ù◰ÃÃVWU⇧ì⇧^⇧F
  38530. Àt7 Ût-◰ë⇧I⇧Ð◰Â◰âþ◰úsº;Êr w◰ÃëèÿëèOÿ⇧ÃëPèeþëSè‘ý3À[]_^ÃU⇧ì™FP¸P3ÀPèß÷]Ãÿ&¶cU⇧ì◰ì⇧FÑè⇧È Xc´P⇧Á3Ò[÷ó⇩Ø´⇩Xc¶÷ê⇩Ñ*Ð⇦Vÿ⇩ã⇩Fÿ⇧å]ÂU⇧ìVW⇧v⇧~⇧;t    ·´è
  38531. ù⇨þÂ:XcrþƲ⇨_^]ÂU⇧ì◰ì VW⇧~èÈ⇨Fø⇨Fú⇧F ;]cu¸ë3À⇨Fö Àt ÿv ÿv
  38532. èfÿ⇨Fþ⇧F;]cu¸ë3À⇨Fô Àt_ÿvÿvèCÿ⇨FüëQ◰~ôt™FüP™FúPèeÿ·´è€ø⇧ðë
  38533. Ä^&⇧7◰F◰~öt™FþP™FúPè?ÿ⇧Æ⇩ܹ·´    èSøë
  38534. Ä^
  38535. &⇨7◰F
  38536. ⇧ÇO Àu¨⇧Vø·´è6ø_^⇧å]Â
  38537. U⇧ì⇧V Yc´ Àu◰>_ctÿv ÿv
  38538. ÿvÿvRèyõëÿv ÿv
  38539. ÿvÿvRèÿ]Â
  38540. U⇧ìVW⇧^
  38541. ⇧v⇧~ Xc´⇧È Wc´⇧Ð;Ùwùw;ß;òw9Vw
  38542. ;v¸ë3À_^]ÂU⇧ìV⇧v⇧V⇩.Tc± ë⇨ ◰ÆB;V~õ^]ÂU⇧ìŴì  Yc´ Àté*◰>_cué €~téþF þF
  38543. þFþF€~té⇦⇩F
  38544. ´P⇩F ´P⇩F´P⇩F´P⇩F
  38545. ´@P⇩F ´Pè¥ú◰Ä ™ŷ`ÿP⇩F´P⇩F ´P⇩F´P⇩F ´Pèóø◰Ä
  38546. ™ŷ`ÿP⇩F ´P⇩F´PèAÿ™ŷ`ÿP⇩F´P⇩F´P⇩F´P⇩F ´Pèù◰Ä
  38547. é›⇩F
  38548. ´@P⇩F ´P⇩F´HP⇩F´P⇩F
  38549. ´P⇩F ´Pèú◰Ä ™ŷ`ÿP⇩F
  38550. ´P⇩F ´P⇩F
  38551. ´P⇩F ´Pèjø◰Ä
  38552. ™ŷ`ÿP⇩F ´P⇩F´Pè¸þ™ŷ`ÿP⇩F
  38553. ´P⇩F´P⇩F
  38554. étÿ⇩>Tc⇩f⇩F⇩n
  38555. ⇩N ⇩v⇩Vè7ö⇧å] •¦c•¨c•ªc.…?⇨6¬c⇨>®cü‰çO¾€2ä&¬@…ÅÖ›⇧6áOFF¹€>éOr‰ãO⇧þ±2Àò®ãn€ñP⇧ÁÃ@%þÿ⇧ü+ør\⇧çQIó¤2Àª‰ÝòÙ⇧Ã⇧ÐCèwr@èwù< t<t<    uè2Àëä ÀtBª
  38556. ÀuCŷà2Àùã¬I,"t"<\u€<"u¬I öÃé~ÃYÊ.‰?⇨¢cCÛ⇧ô⇧ì+ëræ⇧å⇨.¤cã⇨v◰Å6¬
  38557. Ààútð3À⇨F.‰?⇧6¬c⇧>®cÿ6ªcÿ6¨c¡¢c£ÛO¡¤c£ÝOÿ&¦c´·èõ⇧ÂÃèóÿ´⇩Pc¶+Â@Ãèäÿ±Óè´⇩Qc¶+Â@ÃU⇧ì⇧N´C⇩F⇧VÍ!r’ëPè•ê]ÃU⇧ì⇧V;Xbr    ¸Pèzêë⇧ÚÑãÇZbRèY]ÃU⇧ì´>⇧^Í!r ÑãÇZb3ÀëPèKê]ÃU⇧ìVW⇧~ ÿuèëf9}t¸ÿÿë^◰=|)÷Eu
  38558. ⇧Ç9E
  38559. uFÇ⇧Ç9E
  38560. u8⇧E⇨E
  38561. ë0ë.⇧E@⇧ð)5P⇧E⇨E
  38562. P⇩E—Pèò ◰Ä;Æt÷Eu◰Mëfl3À_^]ÃU⇧ì´/Í!S´⇧VÍ!´N⇧N⇧VÍ!†Y›´ZÍ!Q‡r3ÀëSèœé]ÃU⇧ì´/Í!S´⇧VÍ!´OÍ!†Y›´ZÍ!Q‡r3ÀëSèné]ÃU⇧ì◰ì¸B⇧^3É3ÒÍ!r$RP¸B3É3ÒÍ!⇨Fü⇨VþZYr¸BÍ!r⇧Vþ⇧FüëPè0é−⇧å]ÃU⇧ì◰ìVWÇFþ⇧>Xb¾aë÷DtVèÁþYÿFþ◰Æ⇧ÇO Àuç⇧Fþ_^⇧å]ÃU⇧ìÿv ÿv
  38563. ÿvÿvÿvèA◰Ä
  38564. ]ÃU⇧ìÿv ÿv
  38565. ÿvÿvÿvèÂ◰Ä
  38566. ]ÃU⇧ì¸EGPÿvÿv™FPè›ë]ÃU⇧ìVW⇧v◰<}
  38567. ⇧TB⇧úë ⇧−3Â+Â⇧Ð⇧ø÷D@u,⇧L
  38568. ◰<}ë    I⇧Ù€?
  38569. uG⇧ÂJ Àuðë⇧ÙA€?
  38570. uG⇧ÂJ Àuð⇧Ç_^]ÂU⇧ìVW⇧v⇧~
  38571. VèôýY Àt¸ÿÿëG◰ÿu◰<~ Vè|ÿ−)FVŴd_þÇ⇧D⇨D
  38572. Wÿvÿv⇩D—Pèöè◰Ä◰úÿu
  38573. =ÿÿu¸ÿÿë3À_^]ÃU⇧ì◰ìV⇧v⇩D—Pè8êY⇨Vþ⇨Fü◰úÿu=ÿÿt◰<}Vèÿ−FüVþë Vèÿ−)FüVþ⇧Vþ⇧Fü^⇧å]ÃU⇧ìVW⇧v⇧F⇧V⇧~ Àt⇧Ø€?t    ⇩⇦FÆ:F Òt ⇧Ú€?tSVè‡ïYY⇧ð€|ÿ\t
  38574. €|ÿ/tÆ\F◰~
  38575. t ÿv
  38576. Vè|ïYY⇧ð ÿt€=t€=.tÆ.FWVèaïYY⇧ðÆ_^]ÃU⇧ìVW⇧~⇧v⇧NÑéüó¥s¤⇧F_^]ÃU⇧ìVWü⇧N ⇧~
  38577. ‰F⇧v‰^Ñéó¥s¤_^]ÃU⇧ì⇧N´<⇧VÍ!rëPèËæ]ÂU⇧ì⇧^+É+Ò´@Í!]ÂU⇧ì◰ìVW⇧v⇧~÷ÆÀu¡ŵb%À ð3ÀPÿvèèûYY⇨Fþ÷Ætx#>☓b⇧Ç©€u¸Pèsæ◰~þÿu#◰>⇦bt
  38578. ÿ6⇦bè_æéí÷Ç€t3Àë¸⇨Fþë ÷Æt7¸PPëÜ÷Æðtÿv3ÀPèOÿ⇧ø À}éµWè»ûYëÿvÿvþè6ÿ⇧ø À}lé†Vÿvè‡YY⇧ø À|Z3ÀPWè◰óYY⇨Fü©€tŴΠ÷Æ€t%ÿ P¸PWè`ó◰Äë
  38579. ÷ÆtWèþþ÷Fþt÷Æt÷Æðt¸PPÿvèÿú◰Ä ÿ|/÷Æt¸ë3À⇧ÖŴâÿø ÐR÷Fþt3Àë¸Z Ð⇧ßÑã⇨–Zb⇧Ç_^⇧å]ÃU⇧ì◰ì°⇧N÷Áu
  38580. °÷Áu°⇧V±ð"N
  38581. Á´=Í!r⇨Fþ⇧F%ÿ¸€⇧^þÑã⇨Zb⇧FþëPè å⇧å]ÃU⇧ì¸EGP¸(aPÿv™FPèïç]ÃU⇧ìV⇧vÿ V⇩F—PèYY^]ÃU⇧ìVW⇧~⇩F¢d◰=ÿ}:ÿ⇧]
  38582. ÿE
  38583. ⇦÷Euéõ€>d
  38584. t
  38585. €>dtéäWèiúY Àuéظÿÿé×éÏ÷E‘u÷Eu◰MëãŴM◰}tE◰=t    Wè0úY ÀuÊ⇧E÷Ø⇨⇧]
  38586. ÿE
  38587.  d⇦÷Euéŷ€>d
  38588. t€>duxWèýùY Àtoë”ëk⇩E—Ñà⇧Ø÷Zbt¸P3ÀPP⇩E—Pèå◰Ä€>d
  38589. u÷E@u¸P¸°cP⇩E—Pè ◰Ä=u¸P¸dP⇩E—Pèô◰Ä=t
  38590. ÷Eué?ÿ d´_^]ÃU⇧ì¸(aPÿvèÎþYY]ÃU⇧ì◰ìVW⇧~⇧F⇨Fþ÷Et)ëW⇧^ÿF⇩—Pè¢þYY=ÿÿu3ÀéU⇧FÿN ÀuÜéE÷E@uéß◰}ué—⇧E;FsO◰=t    Wè
  38591. ùY ÀuÅ⇩E—Ñà⇧Ø÷Zbt¸P3ÀPP⇩E—Pè$ä◰Äÿvÿv⇩E—Pè-◰Ä;FréàëéÛ⇧F|◰=u
  38592. ¸ÿÿ+E⇨ë WèªøY Àtébÿÿvÿvÿu
  38593. è¾û◰Ä⇧F⇨⇧FE
  38594. éŒ⇩E—Ñà⇧Ø÷Zbt¸P3ÀPP⇩E—Pè¢ã◰Äÿvÿv⇩E—Pè«◰Ä;Fsaéÿë\◰}t=ë/ÿ}⇧]
  38595. ÿE
  38596. ⇧vÿF⇩⇦´ëW⇧^ÿF⇩Pè\ýYY=ÿÿuéÎþ⇧FÿN ÀuÇëÿvÿv⇩E—PèI◰Ä;Fsé©þ⇧Fþ_^⇧å]ÂU⇧ì◰ìVW⇧F;Xbr
  38597. ¸Pèâé§⇧F@=r⇧^Ñã÷Zbt3Àé…ÿvÿvÿvèhã◰Ä⇨Fþ@=r⇧^Ñã÷Zb@u⇧Fþëb⇧Nþ⇧v⇧þ⇧Þü¬<t-<tªâôëâðS¸P™FýPÿvèã◰Ä[ü⇩Fýª;ûuë−ë S¸P÷ÙÀPQÿvèmâ◰Ä⇧^ÑãŴ•Zb[+û–_^⇧å]Ãé5ÿU⇧ìVW⇧v⇧~
  38598. 9tu ◰~Ŵÿÿv¸ÿÿé¤◰>´cuŴþ(auÇ´cë◰>²cu ŴþauDzc◰<t¸P3ÀPPVèµø◰Ä÷DtÿtèSïY◰dóÇD⇧Æ⇨D⇨D
  38599. ◰~t> ÿv:ÇaJO◰~uWèóïY⇨F Àuéwÿ◰Lëénÿ⇧F⇨D
  38600. ⇨D⇨|◰~u◰L3À_^]ÃU⇧ìVW⇧v⇧~ öt$WèÂY;FrÿvWVèÎ◰Ä⇧^ÆëWVèŵYY_^]ÂU⇧ì◰ìV⇧v€|ÿ.uNN⇧Þ⇩—⇨Fþ¹»ëJ.⇧;Fþt◰Ãâóë.ÿg€|þu¸ë3À^⇧å]Â/:\ÝJÝJ×JÝJU⇧ì◰ìVVWÇFþ◰~t⇧^Æ◰~t⇧^Æ◰~
  38601. t⇧^
  38602. Æ◰~ t⇧^ Æ™vªëÿF⇧^€? tõSèôY⇧ø=P~¿PÆFWÿvVè÷◰Ä÷Æ3ÿN⇧Þ⇩—⇨Fü¹»SL.⇧;Füt◰Ãâóëâ.ÿg ÿu €|uVèÿ⇧ø ÿuÊ÷FþuÃ◰Nþÿv V¸Pè²þÆ믙F¬;Æu¨ ÿtF⇧Þ€?t◰NþÿvV¸APè⇧þÆNëG ÿu◰GF⇧Þ€?t◰Nþÿv
  38603. V¸PèiþÆN€<t"€<:téZÿ™F¬;ÆtéPÿë ÿtéGÿ◰Nþé@ÿ€<:u€~«t◰Nþÿv™F«P¸Pè!þ⇧Fþ_^⇧å]Ã*./:?\ÅKL•KæK¾KLæKU⇧ìÿv ÿv
  38604. ÿvÿvÿvèwþ◰Ä
  38605. ]ÃU⇧ìVW⇧~⇧vWÿvÿ4è?÷◰Ä<⇧Æ⇧Ç_^]ÂU⇧ì⇧^Ƹ⇨LP™FPÿv™FPèá]ÃU⇧ì⇧^Ƹ⇨LP™FPÿvÿvèÿà]ÃU⇧ìVü⇧v⇩^÷Æt    ¬:Ãt"Àt­:Ãt"Àt:ãt"äuï3ÀëF™Dþ^]ÃU⇧ìVWü⇧~⇧÷2À¹ÿÿò®÷Ñ⇧~ó¤⇧F_^]ÃU⇧ìW…؉À⇧~3Àü¹ÿÿò®’÷ÐH_]ÃU⇧ìVW…؉Àü⇧~⇧÷2À⇧^⇧Ëò®+Ù⇧~Ëó¤⇧Ëóª⇧F_^]ÃU⇧ìVW⇧~ë⇧vë ⇩:u⇧ÇëF€<uðG€=uå3À_^]ÃU⇧ìV⇧vVè☓ÿY@⇧Ð⇧ÎÊëI⇧Ù⇩:Fu⇧ÁëJ Òuí3À^]ÃU⇧ì¸EGPÿvÿvÿvèôß]ÃU⇧ì¸EGP¸(aPÿvÿvèÞß]ÃU⇧ìŴì⇦VW⇧~⇧v;>Xbr
  38606. ¸PèØÜéß⇧F@=s3ÀéÑ⇧ßÑã÷Zbt¸P3ÀPPWè¥Ý◰Ä⇧ßÑã÷Zb@uÿvVWè¨◰Äé†⇧ßÑãŴ§Zbÿý⇨vú⇧F⇨FþëMÿNþ⇧^úÿFú⇩⇦Fý<
  38607. uÆF⇩Fý⇦F™ŷxÿ⇧Ö+ÐŴú€|'+ðVPWè[◰Ä⇧Ð;Æt◰úÿu¸ÿÿë=⇧F+Fþë1™¶xÿ◰~þu©™ŷxÿ+ð⇧Æ Àv!V™ŷxÿPWè ◰Ä⇧Ð;Æt◰úÿtÅ⇧FÂ+Æë⇧F_^⇧å]ÃU⇧ì⇧^Ñã÷Zbt¸Pë´@⇧^⇧N⇧VÍ!rP⇧^ÑãŴ•ZbXëPè¸Û]Ãé¿þVW¿¾aë÷DtVèUñYO◰Æ ÿuì_^ÃBorland C++ - Copyright 1991 Borland Intl.Divide error
  38608. Abnormal program termination
  38609. ddÿÿ?#&@%$^.\/#?+=;<>/.\Failed to allocate memory (%s)
  38610. Unable to convert date stamp for file '%s'Unable to open destination file '%s' (%s)Error reading from file '%s'Error writing to file '%s' (%s)Unable to write filename for RISC OS (%s)Unable to convert extension '%s' to filetype (%s)Unable to set filetype &%x (%s)Unable to open source file '%s' (%s)Unable to read date stamp for file '%s' (%s)Unable to open destination file '%s'Error reading from file '%s' (%s)Error writing to file '%s'Unable to generate temporary filename (%s)Unable to write directory name for RISC OS (%s)Unable to create directory '%s' (%s)Communications with ARM are already in useCommunications with ARM are not workingThe required ARM service is unknownThe requested ARM memory does not existUnable to perform DOSMap conversionUnable to claim required ARM memoryUnable to release ARM memoryUnable to open RISC OS fileUnable to close RISC OS fileUnable to read from RISC OS fileUnable to write to RISC OS fileUnable to register as a communications clientUnable to deregister as a communications clientUnable to transmit messageThere is no message to receive%s\%s%s
  38611. %s.*GETFILE 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38612. GETFILE [/?] [/M] [/P] [/S] source [destination]
  38613. GETFILE 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38614.  
  38615. Copy files from RISC OS to DOS.
  38616.  
  38617. GETFILE [/?] [/M] [/P] [/S] source [destination]
  38618.  
  38619.   /?             Display this help text.
  38620.   /M             Enable multitasking while copying.
  38621.   /P             Prompts before copying each file.
  38622.   /S             Copy subdirectories.
  38623.   source         The wildcarded path of the RISC OS files to copy.
  38624.   destination    The path of the DOS files to write.
  38625. Unrecognised switch '%s'
  38626. No filenames specified
  38627. Too many filenames specified
  38628. No matching files
  38629. |/-\.:%s%s                                                                                %c
  38630. %s: Abort, Retry%s, Cancel%s (Y/N)?         !!!!!                  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +*+*+*    a
  38631. (a8aCHaBXa```  @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ#ÿÿ(null)    
  38632. 
  38633.   COMPAQprint scanf : floating point formats not linked
  38634. Â6Ç6Ç6Ç6Â,Ë5?WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     …Ê.⇨e´0Í!⇧.⇧,‰Ú£©L…§L⇨£L⇨.¿LèZÄ>¡L⇧Ç⇧عÿüò®ãaC&8uö€Í€÷Ù⇨¡L¹Óã◰Ã◰ãø⇨¥L…Ú+ê⇧>4]Ŵÿs¿⇨>4]ŴÇd^r(>Ö\r"±ÓïG;ïr◰>4]t◰>Ö\u¿;ïw⇧ýëéµ⇧ßÚ⇨·L⇨»L¡§L+؉À´JWÍ!_Óçú‰Ò⇧çû3À.‰e¿ ^¹d^+Ïüóª◰>¨\vG€>©Lr@w€>ªLr7¸X»Í!r*´g⇧¨\Í!r ´H»Í!r@£¿LH‰À´IÍ!r
  38635. ¸X»Í!sé4´Í⇨­L⇨¯L
  38636. Àt ¸@‰À»p&Æ3í.‰e¾^¿ ^è©ÿ6flLÿ6‡Lÿ6œLèPPè»&.‰eVW¾ ^¿ ^èŷ_^ÃÃ⇧ì´L⇩FÍ!¹º_LéÕ¸5Í!⇨⇧L…™L¸5Í!⇨•L…’L¸5Í!⇨›L…”L¸5Í!⇨–L…−L¸%…ʉںxÍ!ø%Å⇧LÍ!¸%Å•LÍ!¸%Å›LÍ!¸%Å–LÍ!ÃŴþ^t2äë´ÿ⇧×⇧Þ;ßt#&€?ÿtŴþ^t&:gë&8gw&⇩g⇧Ó◰ÃëÙ;×t⇧Ú&€?&Æÿt&ÿ_ë±&ÿWëªÃ´@»Í!ùºmL.‰eèêÿ¸PèÀ%U⇧ì¡ÆM ÈMtÿ6ÈMÿ6ÆMèb◰ÄÇÈMÇÆM¡ÂM ÄMtÿ6ÄMÿ6ÂMèê◰ÄÇÄMÇÂM¡ÊM ÌMtÿ6ÌMÿ6ÊMèfi◰ÄÇÌMÇÊM]ÃU⇧ì◰>ÎMuÇÎM¸iPèt$◰Ä]ÃU⇧ìŴì,VW⇧~èÕÿÿv™ŷüýPèF◰Ä ÿtY¸P™ŷüþPè##◰Ä Àt¸ØVP¸ÐMP¸ÂLPè®E◰ĸéfl¸ýMP™ŷüýPèÒE◰Ä™ŷüþP™ŷüýPèÂE◰ĸNP™ŷüýPè³E◰ĸÂMP™ŷüýPè5F◰Ä@PèC ◰Ä⇧ð öt⇧ÆP¸NP¸ÂLPèIE◰ĸé:ÿ6ÄMÿ6ÂM™ŷüýPèúE◰Ä@P™ŷüýPè> ◰Ä⇧ð öt⇧ÆP¸&NP¸ÂLPè    E◰ĸéú¡ÄM⇧ÂM⇨ŷÖý⇨„Ôý3ÀP™ŷÔýP3ÀºPRèl    ◰Ä⇧ð öt⇧ÆP¸ÂLPèqE◰Ä¸éº ÿu鮸ÆMP¸P¸ÿÿºÿÿPR™ŷüþPèÑ◰Ä
  38637. ⇧ð öt⇧ÆP¸INP¸ÂLPèD◰ĸëyÇFþÇFüë`™FüP™ŷüýP3ÀºPR¸ÿÿºÿÿPRÿ6ÈMÿ6ÆMè◰Ä⇧ð öt⇧ÆP¸INP¸ÂLPè6D◰ĸë(⇧Fü FþtWÿvü¸P™ŷüýPèÒ;◰Ä⇧Fü Fþu—è™ý3À_^⇧å]ÃU⇧ìŴì
  38638. VW⇧vÇFþÇFü öu¾h[◰~uÇFx[¸ÊMPÿvè®◰Ä⇧ø ÿué*⇧ÇP¸oNP¸ÂLPè±C◰ĸéPé◰~þté—◰~üté•÷DtNÇFúÇFøë*è×.⇨Fö◰~öuèË.⇨Föë⇧^ø™ŷöþØ⇩Fö⇦◰Fø◰Vú◰~úV|Ŵ~øsMèm0 ÀuÀëD÷D t ÇFúÿÿÇFøÿÿë1ÿ |
  38639. ⇧\
  38640. ÿD
  38641. ⇩ëVèfl;◰Ä⇦ŷöþÇFúÇFøë ë
  38642. ÇFúÇFø™ŷöþP™FøP™FüP™ŷöþPÿvúÿvøÿ6ÌMÿ6ÊMè\◰Ä⇧ø ÿt⇧ÇP¸‰NP¸ÂLPè½B◰ĸë]⇧Fø Fútÿvÿvø¸P™ŷöþPèW:◰Ä◰~þtéêþ◰~ütéáþÿ6ÌMÿ6ÊMèû◰Ä⇧ø ÿt⇧ÇP¸ÂLPèC◰ĸëèßû3À_^⇧å]ÃU⇧ì◰ì⇧F⇧V⇨Fþ⇨Vü¸⇨ÂÄ^üÿÿs¸⇨Â⇨Fø⇨Vú⇧Vú⇧Fø⇧å]ÃU⇧ì◰ì VW⇧~⇧N
  38643. ÇFø…Vú⇧Fú%üÿ…Vþ⇨Fü⇧Fþ⇧Vü⇨Fö⇨VôÄ^ü⇧F⇧V&⇨G&⇨3öë2 ÿt⇧ÞÑãÑã⇧Q⇧ë3Ò3À⇧ÞÑãÑã‰FþPRS⇧^üXØX&⇨GX&⇨GF◰þ|ÉÄ^ôºas¸efÿÿsÇFø Ét23öë)⇧ÆÑàÑàÄ^üØ&⇧G&⇧W⇧ÞÑãÑãPRS⇧ÙXØXZ⇨W⇨F◰þ|Ò◰~øt3Àë
  38644. Ä^ü&⇧%@_^⇧å]ÃU⇧ìŴìVW⇧~ÇFþÇFü◰~u¸®NP¸x[Pè°7◰Ä3ÀéRÆŷüþ¾é–⇩ŷüþ— Àuf⇧ÞÑã⇧€?/u[⇧ÞÑã⇧⇩G—Pèô"◰Ä=?t =it=stë¸ OPè<◰Ä3ÀéÇFþëJÇFüëC⇧ÞÑãÿ1¸VPP¸⇦[Pè97◰ĸéÚë'€¾üþt¸pPP™ŷüþPèº@◰Ä⇧ÞÑãÿ1™ŷüþPè©@◰ÄF;v}éaÿ⇩ŷüþ— Àu¸rPP¸⇦[Pèê6◰ĸé⇧◰~üt◰~þu¸⇦PP¸⇦[PèÊ6◰ĸël◰~üt0¸x[P¸h[P™ŷüþPèü◰Ä ÀtM¸ÂLP¸©PP¸⇦[Pè„6◰ĸë8ë4◰~þt¸x[ë3ÀP™ŷüþPèëù◰Ä Àt¸ÂLP¸©PP¸⇦[Pè`6◰ĸë3À_^⇧å]ÃU⇧ì◰ì¸P™FþP¸þP¸ÿPè9◰Ä
  38645. ◰~þÿu¸ë3À⇧å]ÃU⇧ì◰ì ÇFð™FàP™FðP¸MPè¯+◰Ä=PHu¸ë3À⇧å]ÃU⇧ì◰ìBÇF¾⇧F⇨FÀ⇧F⇧V⇨FÄ⇨VÂ⇧F⇨FÆ⇧F ⇧V
  38646. ⇨FÊ⇨VÈ⇧F⇨FÌ⇧F⇧V⇨FÐ⇨VÎ⇧F⇨FÒ⇧F⇧V⇨FÖ⇨VÔÇFè™F¾⇨Fê…Vø™FøP™FØP™FèP¸MPèM+◰Ä⇧å]ÃU⇧ì◰ìVW⇧~¸àPè\◰Ä⇨FþŴ~þEMu¸éÑŴ~þMEt¸éÄ3ÀP¸àPè‘◰Ä⇧F⇧V⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;÷rî⇧F ⇧V
  38647. ⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;vrí¸P¸àPè=◰ĸP¸àPè/◰Ä⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí¸P¸àPèÛ◰Ä3À_^⇧å]ÃU⇧ì◰ìB⇧FÇFÀ⇨F¾ÿvÿvèxû◰Ä⇨VÄ⇨FÂ⇧FÇFÈ⇨FÆÿv ÿv
  38648. è[û◰Ä⇨VÌ⇨FÊ⇧FÇFÐ⇨FÎÿvÿvè>û◰Ä⇨VÔ⇨FÒ⇧FÇFØ⇨FÖÿvÿvè!û◰Ä⇨VÜ⇨FÚ™F¾P™F¾P¸ºF¼PRè:û◰Ä⇨Fþ◰~þu 3Àu3Àë¸⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFîŴ™FîP™FîP¸/PèX)◰Ä◰>®PtèTý£°P◰>°Puèuý£²PÇ®P◰>°Pt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38649. Vÿvÿvèæþ◰Ä⇨Fþëi¸P¸àPè£◰Ä◰>²Pt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38650. Vÿvÿvè/ý◰Ä⇨Fþë)ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38651. Vÿvÿvèý◰Ä⇨FþÇFîŵ™FîP™FîP¸/Pèŷ(◰Ä⇧Fþ_^⇧å]ÃU⇧ìÿ6¶Pÿ6´PèÔ◰Ä]ÃU⇧ì¡´P ¶Pt¸ë#¸´PP¸Pèê◰Ä Àt3À븫Pèv◰ĸ]ÃU⇧ì◰ì(VW⇧~è¼ÿ Àu¸¸Pë`ÿ6¶Pÿ6´PWè–<◰Ä@PWèß◰Ä⇧ð öt⇧Æë>¡¶P⇧´P⇨FÞ⇨VÜ™FØP™FØP3Àº9PRè%◰Ä⇧ð öt⇧ÆëÿvÿvÿvÚÿvØè    ◰Ä_^⇧å]ÃU⇧ì◰ì
  38652. VW⇧v⇧~
  38653. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü ÿt¸(ë3ÀPW¸P¸¸RP öt¸(ë3ÀPV¸P™FøPèåý◰Ä⇨Fö◰~öu¸ÀTP¸¼QPè¯;◰ĸ¸QëO◰~öu¸ëTP¸¼QPè„;◰ĸ¸Që6◰>ºRu ◰>¸Ru¸¼Rë#◰>ºRÿu◰>¸Rÿu¸UP¸¼QPèb;◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38654. ⇧V⇨Fö⇨VôÇFú⇨vøVÿv¸P™FüP3ÀP3ÀPP¸ P™FðPè'ý◰Ä⇧ø◰ÿu¸ÀTP¸¼QPèó:◰ĸ¸QëX◰ÿu¸ëTP¸¼QPèÛ:◰ĸ¸Që@◰~þu◰~üu¸7UP¸¼QPè¼:◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPè‡:◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38655. ⇧V⇨Fö⇨VôÇFú⇨vø3ÀP3ÀPP¸P™FüPVÿv¸ P™FðPèbü◰Ä⇧ø◰ÿu¸ÀTP¸¼QPè.:◰ĸ¸QëX◰ÿu¸ëTP¸¼QPè:◰ĸ¸Që@◰~þu◰~üu¸7UP¸¼QPè÷9◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPèØ9◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFøÇFú⇧FÇFþ⇨Fü3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè¤û◰Ä⇧ø⇧Fö⇧Vô⇨D⇨◰ÿu¸ÀTP¸¼QPèe9◰ĸ¸QëX◰ÿu¸ëTP¸¼QPèM9◰ĸ¸Që@◰~òu◰~ðu¸◰UP¸¼QPè.9◰ĸ¸Që!◰~òÿu◰~ðÿu¸UP¸¼QPè9◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèÞú◰Ä⇧ð◰þu¸ÀTP¸¼QPèª8◰ĸ¸QëX◰þu¸ëTP¸¼QPè‹8◰ĸ¸Që@◰~öu◰~ôu¸§UP¸¼QPès8◰ĸ¸Që!◰~öÿu◰~ôÿu¸UP¸¼QPèT8◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFøÇFúÇFþÇFü€<tG⇩—Pè®◰Ä−    Fü    Vþ€|t0⇩D—Pè„◰Ä−±è»    Fü    Vþ€|t⇩D—Pèy◰Ä−◰Nü    Fþ3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPèÓù◰Ä⇨Fî⇧Fô⇨◰~îu¸ÀTP¸¼QPè—7◰ĸ¸QëY◰~îu¸ëTP¸¼QPè7◰ĸ¸Që@◰~òu◰~ðu¸_UP¸¼QPè`7◰ĸ¸Që!◰~òÿu◰~ðÿu¸UP¸¼QPèA7◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F−⇨Vþ⇨Fü¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPèù◰Ä⇧ð◰þu¸ÀTP¸¼QPèÝ6◰ĸ¸QëX◰þu¸ëTP¸¼QPèÅ6◰ĸ¸Që@◰~öu◰~ôu¸_UP¸¼QPè¦6◰ĸ¸Që!◰~öÿu◰~ôÿu¸UP¸¼QPè6◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38656. −⇨Vú⇨Fø¸Pÿv ¸P™FüPVèZ6◰Ä@PV¸ P™FðPèDø◰Ä⇧ø◰ÿu¸ÀTP¸¼QPè6◰ĸ¸QëX◰ÿu¸ëTP¸¼QPèø5◰ĸ¸Që@◰~þu◰~üu¸ÄUP¸¼QPèÙ5◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPèº5◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè⇨÷◰Ä⇧ð◰þu¸ÀTP¸¼QPèU5◰ĸ¸QëX◰þu¸ëTP¸¼QPè=5◰ĸ¸Që@◰~öu◰~ôu¸àUP¸¼QPè5◰ĸ¸Që!◰~öÿu◰~ôÿu¸UP¸¼QPèÿ4◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFèÇFê    ⇧F⇧V⇨Fî⇨Vì⇧F
  38657. ⇧V⇨Fò⇨Vð⇧F⇧V ⇨Fö⇨Vôÿv ÿv¸P™FøP3ÀP3ÀPP¸P™FèPè³ö◰Ä⇧ø⇧Fþ⇧Vü⇨D⇨◰ÿu¸ÀTP¸¼QPèt4◰ĸ¸QëX◰ÿu¸ëTP¸¼QPè\4◰ĸ¸Që@◰~úu◰~øu¸ýUP¸¼QPè=4◰ĸ¸Që!◰~úÿu◰~øÿu¸UP¸¼QPè4◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVÇFìÇFî
  38658. ⇧F⇧V⇨Fò⇨Vð⇧F
  38659. ⇧V⇨Fö⇨Vô⇧F⇧V ⇨Fú⇨Vø3ÀP3ÀPP¸P™FüPÿv ÿv¸P™FìPèÕõ◰Ä⇧ð◰þu¸ÀTP¸¼QPè¡3◰ĸ¸QëX◰þu¸ëTP¸¼QPè⇨3◰ĸ¸Që@◰~þu◰~üu¸VP¸¼QPèj3◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPèK3◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ì VW⇧vÇFüÇFþ 3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FüPè#õ◰Ä⇧ø⇧Fú⇧Vø⇨D⇨◰ÿu¸ÀTP¸¼QPèä2◰ĸ¸QëX◰ÿu¸ëTP¸¼QPèÌ2◰ĸ¸Që@◰~öu◰~ôu¸>VP¸¼QPè­2◰ĸ¸Që!◰~öÿu◰~ôÿu¸UP¸¼QPè‰2◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú ⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè]ô◰Ä⇧ð◰þu¸ÀTP¸¼QPè)2◰ĸ¸QëX◰þu¸ëTP¸¼QPè2◰ĸ¸Që@◰~öu◰~ôu¸lVP¸¼QPèò1◰ĸ¸Që!◰~öÿu◰~ôÿu¸UP¸¼QPèÓ1◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38660. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPè„ó◰Ä⇧ð◰þu¸ÀTP¸¼QPèb1◰ĸ¸QëX◰þu¸ëTP¸¼QPèJ1◰ĸ¸Që@◰~þu◰~üu¸†VP¸¼QPè+1◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPè 1◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~
  38661. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü¸Pÿv ¸ P™FêP3ÀP3ÀPP¸P™FøPèÔò◰Ä⇨Fö⇧Fð⇧Vî⇨D⇨⇧Fô⇧Vò⇨E⇨◰~öu¸ÀTP¸¼QPè⇦0◰ĸ¸QëY◰~öu¸ëTP¸¼QPèo0◰ĸ¸Që@◰~ìu◰~êu¸·VP¸¼QPèP0◰ĸ¸Që!◰~ìÿu◰~êÿu¸UP¸¼QPè10◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFüÇFþ3ÀP3ÀPP¸P™FôP¸Pÿv¸P™FüPèò◰Ä⇨Fò⇧Fø⇨⇧Fú⇨◰~òu¸ÀTP¸¼QPèÄ/◰ĸ¸QëF◰~òu¸ëTP¸¼QPè«/◰ĸ¸Që-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸UP¸¼QPè€/◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇨Fü⇧F⇨Fþ¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPèNñ◰Ä⇧ð◰þu¸ÀTP¸¼QPè/◰ĸ¸QëE◰þu¸ëTP¸¼QPè/◰ĸ¸Që-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸UP¸¼QPè×.◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFüÇFþ¸Pÿv¸P™FøPVèÀ.◰Ä@PV¸P™FüPèªð◰Ä⇧ø◰ÿu¸ÀTP¸¼QPèv.◰ĸ¸QëE◰ÿu¸ëTP¸¼QPè^.◰ĸ¸Që-◰~úu◰~øt ◰~úÿu◰~øÿu¸UP¸¼QPè3.◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFòÇFô⇧F⇧V⇨Fø⇨Vö⇧F
  38662. ⇧V⇨Fü⇨Vú¸Pÿv¸ P™FæP◰~
  38663. |◰~v⇧Fë3ÀP◰~
  38664. |◰~v⇧F ë3ÀP¸ P™FòPèÈï◰Ä⇨Fþ⇧Fì⇧Vê⇨D⇨⇧Fð⇧Vî⇨E⇨◰~þu¸ÀTP¸¼QPè|-◰ĸ¸QëF◰~þu¸ëTP¸¼QPèc-◰ĸ¸Që-◰~èu◰~æt ◰~èÿu◰~æÿu¸UP¸¼QPè8-◰ĸ¸Që3À_^⇧å]ÃU⇧ì◰ìVÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P¸¼SP3ÀP3ÀPP¸P™FøPèï◰Ä⇧ð◰þu¸ÀTP¸¼QPèÓ,◰ĸ¸QëN◰þu¸ëTP¸¼QPè»,◰ĸ¸Që6◰>¾Su ◰>¼Su¸ÀSë#◰>¾Sÿu◰>¼Sÿu¸UP¸¼QPè,◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38665. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPèJî◰Ä⇧ð◰þu¸ÀTP¸¼QPè,◰ĸ¸QëX◰þu¸ëTP¸¼QPèþ+◰ĸ¸Që@◰~þu◰~üu¸†VP¸¼QPèß+◰ĸ¸Që!◰~þÿu◰~üÿu¸UP¸¼QPèÀ+◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè‘í◰Ä⇧ð◰þu¸ÀTP¸¼QPè\+◰ĸ¸QëE◰þu¸ëTP¸¼QPèD+◰ĸ¸Që-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸UP¸¼QPè+◰ĸ¸Që3À^⇧å]ÃU⇧ì◰ìVÇFüÇFþÿvÿv¸P™FøP3ÀP3ÀPP¸P™FüPèõì◰Ä⇧ð◰þu¸ÀTP¸¼QPèÁ*◰ĸ¸QëE◰þu¸ëTP¸¼QPè©*◰ĸ¸Që-◰~úu◰~øt ◰~úÿu◰~øÿu¸UP¸¼QPè~*◰ĸ¸Që3À^⇧å]ÃU⇧ì¡ÚW ÜWtÿ6ÜWÿ6ÚWè®ô◰ÄÇÜWÇÚW◰>ØWÿtÿ6ØWè|◰ÄÇØWÿÿ]ÃU⇧ì◰ì(Vè·ÿëaÿ6àWÿ6ÞW¡âWPè4*◰Ä@P¡âWPèvï◰Ä⇧ð öu.ÇFÚÇFØ¡àW⇧ÞW⇨FÞ⇨VÜ™FØP™FØP3ÀºPRè¶í◰Ä⇧ð⇧âW⇧£âW¡ÞW àWt◰>âWu•¡ÞW àWtÿ6àWÿ6ÞWè ð◰Ä3ÀPPèäý◰Ä^⇧å]ÃU⇧ìV◰>äWu=¸\ PèQ◰ĸÞWP¸Pè¥ï◰Ä⇧ð öt⇧ÆP¸üWP¸ØVPè«(◰ĸëÇäW3À^]ÃU⇧ìŴì¸?VW⇧~è¤ÿ Àt¸éË◰>ÖVu3ÀºdPRèeý◰Ä◰~u™ŷpÀ⇨FPWè"◰ĸ€PWè"◰Ä£ØW◰>ØWÿu¸é™FúP™FøPÿ6ØWèÎ◰Ä™FòPÿvøÿvúèTù◰Ä⇧ð ötW¸XP¸ØVPè(◰Äè:þ¸éG¸ÚWP3ÀPÿ6ØWè◰ÄRPÿvèò◰Ä
  38666. ⇧ð öt ⇧ÆPÿv¸GXP¸ØVPèÅ'◰Äèøý¸éÇFþÇFüé¡◰>ÖVu3ÀºdPRè‹ü◰ĸ€>P™ŷpÁPÿ6ØWè”&◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuW¸qXP¸ØVPèf'◰Äè−ý¸é¦⇧Fü FþtG™ŷpÁPÿvþÿvü¸ÿÿºÿÿPRÿ6ÜWÿ6ÚWèÎó◰Ä⇧ð öt ⇧ÆPÿv¸‰XP¸ØVPè'◰ÄèJý¸éW⇧Fü FþtéTÿè6ýÿ6àWÿ6ÞWÿvè¹'◰Ä@Pÿvèÿì◰Ä⇧ð öt⇧ÆP¸®XP¸ØVPèÊ&◰ĸéëG€=t€=.uõ€=tG™FðPWè    ï◰Ä⇧ð öt⇧ÆPW¸ØXP¸ØVPè⇧&◰ĸéÎÇŷJÀÇŷHÀ¡àW⇧ÞW⇨ŷNÀ⇨„LÀ⇧Fð−±èË⇨„RÀ⇨ŷPÀ⇩Fö—−    ŷPÀ    „RÀ◰‰PÀ◰‰RÀð™ŷHÀP™ŷHÀP3ÀºPRè¸ê◰Ä⇧ð öuBÇŷJÀÇŷHÀ¡àW⇧ÞW⇨ŷNÀ⇨„LÀ⇧Fô⇧Vò⇨ŷVÀ⇨„TÀ™ŷHÀP™ŷHÀP3ÀºPRèrê◰Ä⇧ð öt⇧ÆPÿvð¸
  38667. YP¸ØVPèÈ%◰ĸë 3ÀPPè°ú◰Ä3À_^⇧å]ÃU⇧ìŴì¶?VW⇧~èºü Àt¸éX◰>ÖVu3ÀºdPRè{ú◰Ä◰~u™ŷrÀ⇨FPWè◰◰ĸÚWP3ÀP¸ÿÿºÿÿPRWè⇨ï◰Ä
  38668. ⇧ð öt⇧ÆPW¸*YP¸ØVPè>%◰ĸéøÿ6àWÿ6ÞWWèó%◰Ä@PWè;ë◰Ä⇧ð öt⇧ÆP¸®XP¸ØVPè%◰ĸéÀÇŷLÀÇŷJÀ¡àW⇧ÞW⇨ŷPÀ⇨„NÀ™ŷJÀP™ŷJÀP3ÀºPRè[é◰Ä⇧ð öt⇧ÆPW¸OYP¸ØVPè³$◰ĸém◰¾dÀÿu◰¾bÀÿu°⇦Fö⇦Fõ⇦Fô⇦Fó⇦Fòë⇧ŷXÀ⇧„VÀ⇨Fô⇨Vò⇩ŷRÀ⇦Fö™FøP™FúP™FòPèìô◰Ä⇧ð ötW¸XP¸ØVPèP$◰Äè◰ú¸é¸€P¸◰Pÿvèí◰Ä£ØW◰>ØWÿuÿv¸|YP¸ØVPè$◰ÄèNú¸éÒÇFþÇFüéœ◰>ÖVu3ÀºdPRèèø◰Ä™FüP™ŷrÁP3Àº€>PR¸ÿÿºÿÿPRÿ6ÜWÿ6ÚWè◰ï◰Ä⇧ð öt⇧ÆPW¸¡YP¸ØVPè°#◰Äèãù¸ëh⇧Fü Fþt6ÿvü™ŷrÁPÿ6ØWè°%◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuÿv¸ÃYP¸ØVPèj#◰Ä⇧Fü FþtéZÿÿvúÿvøÿ6ØWè◰Äèŵù3ÀPPè9ø◰Ä3À_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸æWPè‰#◰Ä⇨Fþ◰~þt⇧^þŴëæW⇩ñW⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸ñWPèC#◰Ä⇨Fþ◰~þt⇧^þŴëñW⇩æW⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~è®ù Àt¸ëUÿvWè!ø◰Ä⇨Fþ◰~þt⇧FþP¸ÞYP¸ØVPèe"◰ĸë(¸Pèý◰Ä⇧ð öt¡âW⇨W⇧ÆPèæ"◰Ä⇨6âW3À_^⇧å]ÃU⇧ì◰ì(VW⇧~è<ù Àt¸é•ÿ6àWÿ6ÞWWèÕ"◰Ä@PWèè◰Ä⇧ð öt⇧ÆP¸    ZP¸ØVPèè!◰ĸëXÇFÚÇFØ¡àW⇧ÞW⇨FÞ⇨VÜÇFêÇFè™FØP™FØP3ÀºPRè:æ◰Ä⇧ð öt⇧ÆPW¸9ZP¸ØVPè‹!◰ĸë3À_^⇧å]ÃU⇧ì◰>^Z u¸ë⇧^ZÑã⇧F⇨ ^ÿ^Z3À]ÃU⇧ìVW⇧v⇧~¸W⇧^Í!sPè4ë⇨⇨3À_^]ÃU⇧ì¸W⇧^⇧N⇧VÍ!sPèë3À]ÃÃU⇧ìV⇧v öuëÿ^Z⇧^ZÑãÿ– ^◰>^ZuëèmÙÿb[èÏÙèvÙ◰~u öuÿd[ÿf[ÿvè_ÙY^]ÂU⇧ì3ÀPPÿvè¦ÿ]ÃU⇧ì¸P3ÀPÿvè“ÿ]Ã3ÀP¸P3ÀPèŶÿøPP3ÀPèyÿÃ[S€ùs⇧ØÓàÓâöÙ€ÁÓë ÓË€é‹3ÀÓâËU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ìV⇧v ö|◰þX~¾W⇨6Ø\⇩☓Ú\—⇧ðë÷Þ◰þ#éÇØ\ÿÿ⇨6«L¸ÿÿ^]ÂU⇧ìV⇧vVè¼ÿ⇧Æ^]ÂU⇧ì¸D⇧^Í!‹%€]ÃU⇧ì◰ì"VW⇧~
  38669. ⇧^◰û$wX€ûrS⇧F ⇧N É}€~t Æ-G÷Ù÷Ø◰Ù™vÞã’+Ò÷ó’÷ó⇦Fã    ëñ+Ò÷ó⇦F Àuõ™NÞ÷ÙÎüN⇩,
  38670. s:ëFªâï°ª⇧F
  38671. _^⇧å]Â U⇧ì3ÀPÿvÿv¸
  38672. P°P°aPèjÿ]ÂU⇧ì⇧^ÑãŴ§ª\ÿý´B⇩F
  38673. ⇧^⇧N⇧VÍ!rëPèäþ−]ÃV„‹ŶÀt÷ãã’÷æÁ„÷ãÖ^ÃU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî]ÃU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî2ä]ÃU⇧ì⇧^Ñã÷ª\t¸Pë´?⇧^⇧N⇧VÍ!rëPèmþ]ÃU⇧ìV⇧v……L…T…\^]ú;¨\s+⇧ÚÑãÇª\⇧Ú±ÓãÆl[ÿ⇧ÂÓàh[⇧ÚÓã⇨v[B;¨\rÕ l[—PèeþY ÀuŴ&j[ÿý¸P÷j[t¸ë3ÀP3ÀP¸h[PèK◰Ä |[—Pè1þY ÀuŴ&z[ÿý¸P÷z[t¸ë3ÀP3ÀP¸x[Pè◰ÄÃU⇧ì¸P3ÀPPÿvèfiþ◰Ä]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧ØöaZt    ⇩´ ë⇩´]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧ØöaZt    ⇩´àÿë⇩´]Ã⇩Æè⇩ÂÔŷàèŷà‘'@'ªÃU⇧ìŴì„VWÇFîÇFìPÇFêëFW¹ÿÿ2Àò®÷ÑI_Ã6⇦GþNìu/SQR™ŷjÿ+ø™ŷjÿPWÿvÿV
  38674. ÀuÇFêÇFìP~jÿZY[Ãü™¾jÿ⇨~ü⇧~ü⇧v¬
  38675. Àt<%t6⇦GþNìîè¬ÿëééÕ⇨vð¬<%tç⇨~ü3É⇨Nò⇨Nþ⇦NõÇFøÿÿÇFöÿÿë¬2ä⇧Ð⇧؀렀û`s⇩fl=]◰ûvé⇦Ñã.ÿ§å0é~€ýwø◰NþëЀýwí◰NþëÅ€ýwâ€~õ+t⇦Võëµ◰fþßë◰Nþ µ맀ýwM÷Fþu)◰Nþµë›é3⇧~6⇧◰F€ýs Ày÷Ø◰Nþ⇨Føµéoÿ€ýu×⇨FöþÅébÿ€ýsʵÿFöéUÿ‹,0—€ýwµFø À|ÑÑà⇧ÐÑàÑàÂFøé3ÿ€ýuœFö ÀtµÑà⇧ÐÑàÑàÂFöéÿ◰NþéeÿŴNþ◰fþïéYÿ·ë
  38676. ·
  38677. ë
  38678. ·³éÚÆFõ⇦Vû3Ò⇦Vú⇧~6⇧ë·
  38679. ÆFú⇦Vû⇧~6⇧−GG⇨v÷Fþt6⇧GG⇨~™~» Àu Òu    ◰~öuéhþ◰NþRPW⇩Ç—P⇩FúPSè{û⇧Vö Ò}éòéý⇦Vû⇨v™~º⇧^6ÿ7CC⇨^÷Fþ t6⇧CC⇨^è‡ý°:ªZè“ý6ÆÆFú◰fþû™Nº+ùÏ⇧Vö;Ñ⇧Ñéfl⇨v⇦Vû⇧~6⇧◰F™~»2ä6⇨¹éÂ⇨v⇦Vû⇧~÷Fþ u6⇧=◰F ÿë 6Ä=◰F…À Çu¿6]èUý;Növ⇧NöéŶ⇨v⇦Vû⇧~⇧Nö É}¹WQ™^»SR¸#FþP⇧Fþ©t    ¸◰F
  38680. ë◰F¸PèÒ
  38681. ™~»÷Fþt⇧Vø Ò~è÷ü&€=-uI+Ñ~⇨Vò&€=-t ⇩Fõ
  38682. ÀtO&⇦◰~ò~
  38683. ⇧Nö É}ÿNòèÅü⇧÷⇧~ü⇧^ø¸#Fþ=u⇩fû€üou◰~òÇFòë€üxt€üXu◰Nþ@KK◰nò}ÇFòNò÷Fþu ë° è~üK;Ùö÷Fþ@t °0èmü⇩Fûègü⇧Vò Ò~'+Ê+Ú&⇩<-t< t<+u&¬èHüIKÊã°0è=üâùÊã+Ù&¬6⇦GþNìè0üâð Û~    ⇧Ë° èüâùéZü⇨v⇧~÷Fþ u 6⇧=◰Fë6Ä=◰F¸P*FìFî&⇨÷FþtGG&Çéü⇧vð⇧~ü°%èÎû¬
  38684. Àuø€~ìP}èÉû◰~êt¸ÿÿë⇧Fî_^⇧å]ÂM-7-ŵ-B-°-½-û-..k-0....⇩.7/Ú.ú.y0µ0µ0µ0]-c-U⇧ì ¨]´⇧VJ÷êP¡«]ZÂ⇧VJÂÑà⇧­]]ÂU⇧ì◰ìVW ª]´⇨Fþ⇧NãZÄ~
  38685. Åvü;÷s
  38686. ⇧ÁHÑàðøý◰~þuó¥ë;ºÚ…À…Û;ÃtúìÐÈrûìÐÈsû¥ûâñëúìÐÈrûìÐÈsû­û⇧ØìÐÈrûìÐÈsû⇧ëûâáü_^⇧å]Â
  38687. U⇧ì⇧F⇧ÔŴê;Âs£³L3Àë    Ç«L¸ÿÿ]ÃU⇧ì⇧F⇧V³L◰Ò⇧È ÒuŴÁr
  38688. ;Ìs³Lë    Ç«L¸ÿÿ]ÃU⇧ìÿvè¤ÿY]ÃU⇧ì⇧F−RPè·ÿYY]ÃU⇧ì◰ìVW⇧v⇧~ÆFûèN ´⇨FþèF ±Óè´⇨FüéØ⇧ÞF⇩⇦Fû´-⇧Ø◰ûw.Ñã.ÿ§H3´°è6ëv  ]´;Fþ}lÿNþëg  ]´⇨Fþë]ÿFüëX ©]´ Àu.◰>¯]t'⇩&¤]⇩Fû⇨Fø⇧Fþ@P⇧Fü@Pè`þRP™FøP¸Pèwþë⇩Vþ⇩vü´·èÒ⇩¤]⇩Fû´    ·¹èÁÿFþ ¢]´;Fþ}  ]´⇨Fþ¡fi]Fü £]´;Fü}°P  ]P ¡]P ¢]P £]P°PèöÿNü⇧ÇO Àtéÿ⇩Vþ⇩vü´·èi⇩Fû´_^⇧å]Âg2p2‰2⇨2‰2‰22U⇧ì¸#2P3ÀPÿv™FPèýø]ÃU⇧ìV⇧vëÄ^ÿF&⇩⇧ÞF:t3Àë€<uç¸^]´³è⇩Ãð´ÃUQ¹@‰ÙY€üt    €ütVÍëj<u¸Í<t€&þ´¹Í¸ëÞ<@uÚ³´Í€ût=¸2Û͸³ Í¸Í<t&€´¹ÍëÍ<uPèÿ
  38689. ÀXt    €>☓t°@]ôèwÿPèY´·èkÿ€ä⇦&¥]⇦&¤]ÃU⇧ì⇩F¢¦]´èQÿ⇦&¨]:¦]t- ¦]´è?ÿ´è:ÿ¢¦]⇦&¨]€>¦]u¸@‰À&€>☓~Ʀ]@€>¦]v€>¦]@s €>¦]t¸ë3À¢©]€>¦]@t°ë ¸@‰À& ☓þÀ¢§]€>¦]t¸ðºêÿPR¸±]Pè“þ Àu è·þ Àu¸ë3À¢ª]€>¦]u¸°ë¸¸£­]Ç«]°¢¡]¢ ] ¨]ÿ¢¢] §]ÿ¢£]]ú¸]뺽]¹´@»Í!¹'ºÂ]´@Í!é΀>ê]t
  38690. Æê] ë]ë¸Í!´ÃV€>ê]tèÜÿ⇧ðë
  38691. èÕÿ⇧ðPèÄY⇧Æ^ÃU⇧ì€>ê]t¸ÿÿë Æê]⇧F¢ë]]ÃU⇧ì◰ìVW⇧~⇧vWVÿvÿv
  38692. è     Àu3Àë-⇧F+Ç@⇨Fþëÿv WVèPûRPÿvþè©⇧FþÑàF F;v
  38693. ~á¸_^⇧å]ÃU⇧ì◰ìVW⇧~ ⇧F+F@⇨Fþ⇧vëÿvVèûRPWÿvþèg⇧FþÑàøF;v
  38694. ~â¸_^⇧å]ÃU⇧ì◰ì™FøPèýôY™FøPÿvÿvÿvè◰Ä⇧å]ÃU⇧ì◰ìVW™Nò⇨Nü…VþÆFòUÆFóÍ⇧F⇦FôÇFõ]Ë<%r<&wÆFõ6ÇFö•⇨NøÇFú]Ë⇧v
  38695. ÿ4ÿt⇧v⇧⇧\⇧L⇧T⇧|
  38696. ⇧tÿ^ü††V‰^ì⇧v
  38697. ••D⇧v•D•D•D ◰d ⇨|
  38698. ⇨T⇨L⇨\⇨tPPè»òX_^⇧å]ÃU⇧ì⇧V´D⇩F⇧^⇧N
  38699. Í!r ◰~u⇧ÂëëPè•ò]À>ê]t¸ë´ Í!—ÃU⇧ì◰ìVW⇧v⇧~
  38700. ÿvVÿvWèz Àt#ÿv ÿv⇧F+F⇧V ÐR⇧Ç+Æ⇧VÐRèW Àu3ÀëS⇧Ö⇨~þÇFü;v}
  38701. ⇧×⇨vþÇFüÿÿ⇧úë)ÿv ⇧Ç+Æ⇧VÐRèŶùRPÿvWè|ùRP⇧F+F@PèÐ~ü⇧FþFü;Çu͸_^⇧å]ÃVW⇧ô⇧\◰ër;î]tèBëè_^Ã9ì]t#⇧wöt⇨6î]ë ;6ì]t⇧ÞèT⇧G£î]ë⇧Þ3À£ì]£î]£ð]Sè£ù[Ãÿ;ì]t⇧w⇧¨u⇨⇧?û⇨u⇧Þëè2⇧?û⇧¨tÃ⇧÷ð⇨\⇧ß⇧;ßt⇨>ð]⇧w⇨u⇨|ÃÇð]Ã⇧6ð] öt⇧|⇨\⇨]⇨⇨wÃ⇨ð]⇨_⇨_ÃVW⇧ô⇧D ÀtRr6%þÿ=s¸◰>ì]t⇧ð] Ût⇧Ó9s⇧_;Úuõèfë!è⇩ëèë3Àë⇧ð◰Æ97séèkÿÿ⇧Ã_^ÃP3ÀPPèãø[[%t    3ÒRPèÕø[[XP3ÛSPèÊø[[=ÿÿt⇧Ø⇨ì]⇨î]X@⇨◰Ã⇧ÃÃ[3ÀÃP3ÛSPè£ø[[=ÿÿt⇧Ø¡î]⇨G⇨î]X@⇨◰Ã⇧ÃÃX3ÀÃ)⇧ó7⇧þø@⇨⇨\⇨u◰Æ⇧ÆÃ⇧ìSPQPèÿ[⇧Ø Àtü⇧ø⇧vþ⇧ ◰ÆV◰éÑéó¥⇨Fþè$þ[⇧^þ◰ÄÃ⇧Â◰Â;Ñw5⇧Ñ;î]u⇨ÿÃSPèø÷[[ë⇧ûø⇨]+Ð)⇧÷ò⇨|B⇨⇧Ë⇧ßè7þ⇧Ù◰ÃÃVWU⇧ì⇧^⇧F
  38702. Àt7 Ût-◰ë⇧I⇧Ð◰Â◰âþ◰úsº;Êr w◰ÃëèÿëèOÿ⇧ÃëPèeþëSè‘ý3À[]_^ÃU⇧ì™FP¸P3ÀPèß÷]Ãÿ&^U⇧ì◰ì⇧FÑè⇧È ¨]´P⇧Á3Ò[÷ó⇩Ø´⇩¨]¶÷ê⇩Ñ*Ð⇦Vÿ⇩ã⇩Fÿ⇧å]ÂU⇧ìVW⇧v⇧~⇧;t    ·´è
  38703. ù⇨þÂ:¨]rþƲ⇨_^]ÂU⇧ì◰ì VW⇧~èÈ⇨Fø⇨Fú⇧F ;­]u¸ë3À⇨Fö Àt ÿv ÿv
  38704. èfÿ⇨Fþ⇧F;­]u¸ë3À⇨Fô Àt_ÿvÿvèCÿ⇨FüëQ◰~ôt™FüP™FúPèeÿ·´è€ø⇧ðë
  38705. Ä^&⇧7◰F◰~öt™FþP™FúPè?ÿ⇧Æ⇩ܹ·´    èSøë
  38706. Ä^
  38707. &⇨7◰F
  38708. ⇧ÇO Àu¨⇧Vø·´è6ø_^⇧å]Â
  38709. U⇧ì⇧V ©]´ Àu◰>¯]tÿv ÿv
  38710. ÿvÿvRèfiõëÿv ÿv
  38711. ÿvÿvRèÿ]Â
  38712. U⇧ìVW⇧^
  38713. ⇧v⇧~ ¨]´⇧È §]´⇧Ð;Ùwùw;ß;òw9Vw
  38714. ;v¸ë3À_^]ÂU⇧ìV⇧v⇧V⇩.¤]± ë⇨ ◰ÆB;V~õ^]ÂU⇧ìŴì  ©]´ Àté*◰>¯]ué €~téþF þF
  38715. þFþF€~té⇦⇩F
  38716. ´P⇩F ´P⇩F´P⇩F´P⇩F
  38717. ´@P⇩F ´Pè¥ú◰Ä ™ŷ`ÿP⇩F´P⇩F ´P⇩F´P⇩F ´Pèóø◰Ä
  38718. ™ŷ`ÿP⇩F ´P⇩F´PèAÿ™ŷ`ÿP⇩F´P⇩F´P⇩F´P⇩F ´Pèù◰Ä
  38719. é›⇩F
  38720. ´@P⇩F ´P⇩F´HP⇩F´P⇩F
  38721. ´P⇩F ´Pèú◰Ä ™ŷ`ÿP⇩F
  38722. ´P⇩F ´P⇩F
  38723. ´P⇩F ´Pèjø◰Ä
  38724. ™ŷ`ÿP⇩F ´P⇩F´Pè¸þ™ŷ`ÿP⇩F
  38725. ´P⇩F´P⇩F
  38726. étÿ⇩>¤]⇩f⇩F⇩n
  38727. ⇩N ⇩v⇩Vè7ö⇧å] •ö]•ø]•ú].…s=⇨6ü]⇨>þ]ü‰§L¾€2ä&¬@…ÅÖ›⇧6¡LFF¹€>©Lr‰£L⇧þ±2Àò®ãn€ñP⇧ÁÃ@%þÿ⇧ü+ør\⇧çQIó¤2Àª‰ÝòÙ⇧Ã⇧ÐCèwr@èwù< t<t<    uè2Àëä ÀtBª
  38728. ÀuCŷà2Àùã¬I,"t"<\u€<"u¬I öÃé!ÅYÊ.‰s=⇨ò]CÛ⇧ô⇧ì+ëræ⇧å⇨.ô]ã⇨v◰Å6¬
  38729. Ààútð3À⇨F.‰s=⇧6ü]⇧>þ]ÿ6ú]ÿ6ø]¡ò]£œL¡ô]£‡Lÿ&ö]´·èõ⇧ÂÃèóÿ´⇩ ]¶+Â@Ãèäÿ±Óè´⇩¡]¶+Â@ÃU⇧ì⇧N´C⇩F⇧VÍ!r’ëPèÏê]ÃU⇧ì⇧V;¨\r    ¸Pèºêë⇧ÚÑãÇª\RèY]ÃU⇧ì´>⇧^Í!r ÑãÇª\3ÀëPè⇧ê]ÃU⇧ì◰ì⇧F;¨\r¸Pë[⇧^Ñã÷ª\t¸ëL¸D⇧^Í!r>ö€u5¸B3É⇧ÑÍ!r.RP¸B3É⇧ÑÍ!⇨Fü⇨VþZYr¸BÍ!r;Vþr    w;Fürë·3ÀëPèê⇧å]ÃU⇧ìVW⇧~ ÿuè¯ëf9}t¸ÿÿë^◰=|)÷Eu
  38730. ⇧Ç9E
  38731. uFÇ⇧Ç9E
  38732. u8⇧E⇨E
  38733. ë0ë.⇧E@⇧ð)5P⇧E⇨E
  38734. P⇩E—PèÝ
  38735. ◰Ä;Æt÷Eu◰Mëfl3À_^]ÃU⇧ì◰ì¸B⇧^3É3ÒÍ!r$RP¸B3É3ÒÍ!⇨Fü⇨VþZYr¸BÍ!r⇧Vþ⇧FüëPèYé−⇧å]ÃU⇧ì◰ìVWÇFþ⇧>¨\¾h[ë÷DtVè!ÿYÿFþ◰Æ⇧ÇO Àuç⇧Fþ_^⇧å]ÃU⇧츗FPÿvÿv™FPèÕë]ÃU⇧ìVW⇧v◰<}
  38736. ⇧TB⇧úë ⇧−3Â+Â⇧Ð⇧ø÷D@u,⇧L
  38737. ◰<}ë    I⇧Ù€?
  38738. uG⇧ÂJ Àuðë⇧ÙA€?
  38739. uG⇧ÂJ Àuð⇧Ç_^]ÂU⇧ìVW⇧v⇧~
  38740. Vè⇦þY Àt¸ÿÿëG◰ÿu◰<~ Vè|ÿ−)FVŴd_þÇ⇧D⇨D
  38741. Wÿvÿv⇩D—PèSé◰Ä◰úÿu
  38742. =ÿÿu¸ÿÿë3À_^]ÃU⇧ì◰ìV⇧v⇩D—PèzêY⇨Vþ⇨Fü◰úÿu=ÿÿt◰<}Vèÿ−FüVþë Vèÿ−)FüVþ⇧Vþ⇧Fü^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ öu⇧Çë0⇧Þ3É⇧Ç3Òèøè⇨Vþ⇨Fü◰úwr Àsÿvÿvüÿv
  38743. èº3Ò÷öë3À_^⇧å]ÃVW¿¾h[ë⇧D%=uVè◰ýY◰Æ⇧ÇO Àuæ_^ÃU⇧ìV⇧v÷DtèÈÿÿt⇧D⇨D
  38744. P⇩D—Pèó◰Ä⇨ À~◰dß3Àë◰<u⇧D%þ ⇨DëÇ◰L¸ÿÿ^]ÂU⇧ìV⇧vÿVèY^]ÃU⇧ìV⇧v öu¸ÿÿé–◰<~ÿ ⇧\
  38745. ÿD
  38746. ⇩é◰◰<|T÷DuM÷DtFŴL€◰|t VèSÿ ÀtÍëÀëÉ÷Dtèÿ¸P¸`^P⇩D—PèG◰Ä Àu#⇩D—Pè üY=t◰Lë⇨⇧D%þ ⇨Dézÿ€>`^u÷D@t®◰dß `^´^]øh[PèNÿYÃU⇧ìVW⇧~⇧v⇧NÑéüó¥s¤⇧F_^]ÃU⇧ìVWü⇧N ⇧~
  38747. ‰F⇧v‰^Ñéó¥s¤_^]ÃU⇧ì⇧N´<⇧VÍ!rëPèæ]ÂU⇧ì⇧^+É+Ò´@Í!]ÂU⇧ì◰ìVW⇧v⇧~÷ÆÀu¡Ò\%À ð3ÀPÿvèòúYY⇨Fþ÷Ætx#>Ô\⇧Ç©€u¸Pè½å◰~þÿu#◰>Ø\t
  38748. ÿ6Ø\è©åéí÷Ç€t3Àë¸⇨Fþë ÷Æt7¸PPëÜ÷Æðtÿv3ÀPèOÿ⇧ø À}éµWèÅúYëÿvÿvþè6ÿ⇧ø À}lé†Vÿvè‡YY⇧ø À|Z3ÀPWè™òYY⇨Fü©€tŴΠ÷Æ€t%ÿ P¸PWèjò◰Äë
  38749. ÷ÆtWèþþ÷Fþt÷Æt÷Æðt¸PPÿvè    ú◰Ä ÿ|/÷Æt¸ë3À⇧ÖŴâÿø ÐR÷Fþt3Àë¸Z Ð⇧ßÑã⇨–ª\⇧Ç_^⇧å]ÃU⇧ì◰ì°⇧N÷Áu
  38750. °÷Áu°⇧V±ð"N
  38751. Á´=Í!r⇨Fþ⇧F%ÿ¸€⇧^þÑã⇨ª\⇧FþëPèjä⇧å]ÃU⇧츗FP¸x[Pÿv™FPèç]ÃU⇧ìV⇧vÿ V⇩F—PèYY^]ÃU⇧ìVW⇧~⇩F¢b^◰=ÿ}:ÿ⇧]
  38752. ÿE
  38753. ⇦÷Euéõ€>b^
  38754. t
  38755. €>b^téäWèêùY Àuéظÿÿé×éÏ÷E‘u÷Eu◰MëãŴM◰}tE◰=t    Wè±ùY ÀuÊ⇧E÷Ø⇨⇧]
  38756. ÿE
  38757.  b^⇦÷Euéŷ€>b^
  38758. t€>b^uxWè~ùY Àtoë”ëk⇩E—Ñà⇧Ø÷ª\t¸P3ÀPP⇩E—Pè]ä◰Ä€>b^
  38759. u÷E@u¸P¸^P⇩E—Pèx◰Ä=u¸P¸b^P⇩E—Pè`◰Ä=t
  38760. ÷Eué?ÿ b^´_^]ÃU⇧ì¸x[PÿvèÎþYY]ÃU⇧ì◰ìVW⇧~⇧F⇨Fþ÷Et)ëW⇧^ÿF⇩—Pè¢þYY=ÿÿu3ÀéU⇧FÿN ÀuÜéE÷E@uéß◰}ué—⇧E;FsO◰=t    Wè⇧øY ÀuÅ⇩E—Ñà⇧Ø÷ª\t¸P3ÀPP⇩E—Pènã◰Äÿvÿv⇩E—Pè−◰Ä;FréàëéÛ⇧F|◰=u
  38761. ¸ÿÿ+E⇨ë Wè+øY Àtébÿÿvÿvÿu
  38762. è¾û◰Ä⇧F⇨⇧FE
  38763. éŒ⇩E—Ñà⇧Ø÷ª\t¸P3ÀPP⇩E—Pèìâ◰Äÿvÿv⇩E—Pè◰Ä;Fsaéÿë\◰}t=ë/ÿ}⇧]
  38764. ÿE
  38765. ⇧vÿF⇩⇦´ëW⇧^ÿF⇩Pè\ýYY=ÿÿuéÎþ⇧FÿN ÀuÇëÿvÿv⇩E—Pèµ◰Ä;Fsé©þ⇧Fþ_^⇧å]ÂU⇧ì◰ìVW⇧F;¨\r
  38766. ¸PèYáé§⇧F@=r⇧^Ñã÷ª\t3Àé…ÿvÿvÿvè–â◰Ä⇨Fþ@=r⇧^Ñã÷ª\@u⇧Fþëb⇧Nþ⇧v⇧þ⇧Þü¬<t-<tªâôëâðS¸P™FýPÿvèLâ◰Ä[ü⇩Fýª;ûuë−ë S¸P÷ÙÀPQÿvè·á◰Ä⇧^ÑãŴ•ª\[+û–_^⇧å]Ãé5ÿU⇧ìVW⇧v⇧~
  38767. 9tu ◰~Ŵÿÿv¸ÿÿé¤◰>^uŴþx[uÇ^ë◰>^u Ŵþh[uÇ^◰<t¸P3ÀPPVè¢÷◰Ä÷Dtÿtè]îY◰dóÇD⇧Æ⇨D⇨D
  38768. ◰~t> ÿv:Çb[    L◰~uWèýîY⇨F Àuéwÿ◰Lëénÿ⇧F⇨D
  38769. ⇨D⇨|◰~u◰L3À_^]ÃU⇧ìVW⇧~⇧vWÿvÿ4è]ù◰Ä<⇧Æ⇧Ç_^]ÂU⇧ì⇧^Ƹ¾IP™FPÿv™FPèhâ]ÃU⇧ì⇧^Ƹ¾IP™FPÿvÿvèLâ]ÃU⇧ìVWü⇧~⇧×2À¹ÿÿò®™uÿ⇧~¹ÿÿò®÷Ñ+ù÷÷Æt¤IÑéó¥s¤‹_^]ÃU⇧ìVü⇧v⇩^÷Æt    ¬:Ãt"Àt­:Ãt"Àt:ãt"äuï3ÀëF™Dþ^]ÃU⇧ìVWü⇧~⇧÷2À¹ÿÿò®÷Ñ⇧~ó¤⇧F_^]ÃU⇧ìW…؉À⇧~3Àü¹ÿÿò®’÷ÐH_]ÃU⇧ìŴì⇦VW⇧~⇧v;>¨\r
  38770. ¸Pè¶Þéß⇧F@=s3ÀéÑ⇧ßÑã÷ª\t¸P3ÀPPWè◰ß◰Ä⇧ßÑã÷ª\@uÿvVWè¨◰Äé†⇧ßÑãŴ§ª\ÿý⇨vú⇧F⇨FþëMÿNþ⇧^úÿFú⇩⇦Fý<
  38771. uÆF⇩Fý⇦F™ŷxÿ⇧Ö+ÐŴú€|'+ðVPWè[◰Ä⇧Ð;Æt◰úÿu¸ÿÿë=⇧F+Fþë1™¶xÿ◰~þu©™ŷxÿ+ð⇧Æ Àv!V™ŷxÿPWè ◰Ä⇧Ð;Æt◰úÿtÅ⇧FÂ+Æë⇧F_^⇧å]ÃU⇧ì⇧^Ñã÷ª\t¸Pë´@⇧^⇧N⇧VÍ!rP⇧^ÑãŴ•ª\XëPè„Ý]Ãé¿þVW¿¾h[ë÷DtVèjóYO◰Æ ÿuì_^ÃBorland C++ - Copyright 1991 Borland Intl.Divide error
  38772. Abnormal program termination
  38773. d^d^Unable to generate a temporary filename (%s) { >  }Unable to claim ARM memory (%s)Unable to write to ARM memory (%s)Unable to read output of command (%s)Unable to execute command (%s)Unable to continue command (%s)OSCLI 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38774. OSCLI [/?] [/S|/I] command
  38775. OSCLI 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38776.  
  38777. Execute RISC OS *commands.
  38778.  
  38779. OSCLI [/?] [/S|/I] command
  38780.  
  38781.   /?         Display this help text.
  38782.   /S         Simple mode (output is not redirected through DOS).
  38783.   /I         Interactive mode (both input and output redirected).
  38784.   command    The *command to execute.
  38785. Unrecognised switch '%s'
  38786.  No command specified
  38787. Invalid combination of switches
  38788. %s
  38789. †ÿÿÿUnable to initialise SWI handlerCommunications with ARM are already in useCommunications with ARM are not workingThe required ARM service is unknownThe requested ARM memory does not existUnable to perform DOSMap conversionUnable to claim required ARM memoryUnable to release ARM memoryUnable to open RISC OS fileUnable to close RISC OS fileUnable to read from RISC OS fileUnable to write to RISC OS fileUnable to register as a communications clientUnable to deregister as a communications clientUnable to transmit messageThere is no message to receiveÿÿ?#&@%$^.\/#?+=;<>/.\Failed to allocate memory (%s)
  38790. Unable to convert date stamp for file '%s'Unable to open destination file '%s' (%s)Error reading from file '%s'Error writing to file '%s' (%s)Unable to write filename for RISC OS (%s)Unable to convert extension '%s' to filetype (%s)Unable to set filetype &%x (%s)Unable to open source file '%s' (%s)Unable to read date stamp for file '%s' (%s)Unable to open destination file '%s'Error reading from file '%s' (%s)Error writing to file '%s'Unable to generate temporary filename (%s)Unable to write directory name for RISC OS (%s)Unable to create directory '%s' (%s)         !!!!!                  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ È(È(È(    h[
  38791. x[⇦[C—[B¨[```  @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ#ÿÿ(null)    
  38792. 
  38793.   COMPAQprint scanf : floating point formats not linked
  38794. 5$5$5$5D+(4u=WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     …Ê.⇨e´0Í!⇧.⇧,‰Ú£    V…V⇨V⇨.VèZÄ>V⇧Ç⇧عÿüò®ãaC&8uö€Í€÷Ù⇨V¹Óã◰Ã◰ãø⇨V…Ú+ê⇧>ÂnŴÿs¿⇨>ÂnŴÇðor(>dnr"±ÓïG;ïr◰>Ânt◰>dnu¿;ïw⇧ýëéµ⇧ßÚ⇨V⇨V¡V+؉À´JWÍ!_Óçú‰Ò⇧çû3À.‰e¿®o¹ðo+Ïüóª◰>6nvG€>    Vr@w€>
  38795. Vr7¸X»Í!r*´g⇧6nÍ!r ´H»Í!r@£VH‰À´IÍ!r
  38796. ¸X»Í!sé4´Í⇨V⇨V
  38797. Àt ¸@‰À»p&Æ3í.‰e¾†o¿®oè©ÿ6ÿUÿ6ýUÿ6ûUèp+PèT..‰eVW¾®o¿®oèŷ_^ÃÃ⇧ì´L⇩FÍ!¹º¿UéÕ¸5Í!⇨ëU…íU¸5Í!⇨ïU…ñU¸5Í!⇨óU…õU¸5Í!⇨÷U…ùU¸%…ʉںxÍ!ø%ÅëUÍ!¸%ÅïUÍ!¸%ÅóUÍ!¸%Å÷UÍ!ÃŴþ†ot2äë´ÿ⇧×⇧Þ;ßt#&€?ÿtŴþ†ot&:gë&8gw&⇩g⇧Ó◰ÃëÙ;×t⇧Ú&€?&Æÿt&ÿ_ë±&ÿWëªÃ´@»Í!ùºÍU.‰eèêÿ¸PèY-U⇧ì◰ì*™FÖP™FÖP3ÀºBPRè^◰Ä⇨Fþ◰~þt3Ò3Àë⇧VØ⇧FÖ⇧å]ÃU⇧ì◰ì3ÀPPèfl#◰ÄÇFðº™FðP™FðP¸Pè':◰Ä⇧å]ÃU⇧ì¡"V $Vtÿ6$Vÿ6"Vè‡◰Ä]ÃU⇧ìV◰>*[u$¸ÈPè,◰ĸ"VPè¾◰Ä⇧ð öt⇧ÆëÇ*[3À^]ÃU⇧ìVèÅÿ⇧ð öt⇧Æë%Ç,VÇ*V¸*VP3ÀºPRÿ6$Vÿ6"Vèë◰Ä
  38798. ^]ÃU⇧ì◰ìV¸*VP™FüP3ÀPÿ6$Vÿ6"Vè•◰Ä
  38799. ⇧ðè'ÿèðþFV⇨Vú⇨Føë¸*VP™FüP3ÀPÿ6$Vÿ6"Vè`◰Ä
  38800. ⇧ð ötèÀþ;Vú|Ùu;FørÒ öu¡*V ,Vt¸,[P¸.ZPèqN◰ľ*Z öt¸P¸H[P⇧ÆPèá◰Ä Àu☓ öt⇧Æë⇧Fþ⇧Vü£(V⇨&V3À^⇧å]ÃU⇧ìVèÒþ⇧ð öt⇧ÆëUÇ,VÇ*V⇧F⇧V£0V⇨.V¸Pÿv¸2VPè7N◰ĸPÿv
  38801. ¸FVPè&N◰ĸ*VPÿ6(Vÿ6&Vÿ6$Vÿ6"VèÈ◰Ä
  38802. ^]ÃU⇧ì◰ìVW⇧~¸*VP™FüP3ÀPÿ6$Vÿ6"Vèh◰Ä
  38803. ⇧ðèþèÉýFV⇨Vú⇨Føë¸*VP™FüP3ÀPÿ6$Vÿ6"Vè9◰Ä
  38804. ⇧ð öu⇧Fþ⇧Vü;(Vu;&Vtèý;Vú|Çu;FørÀ öu◰>,Vu◰>*Vt¸,[P¸.ZPè3M◰ľ*Z öt¸P¸Z[P⇧ÆPè£◰Ä Àtéjÿ öt⇧Æë¡0V⇧.V⇨E⇨3À_^⇧å]ÃU⇧ìVè’ý⇧ð öt⇧Æë@Ç,VÇ*V⇧F⇧V£0V⇨.V⇧F
  38805. ⇧V£4V⇨2V¸*VPÿ6(Vÿ6&Vÿ6$Vÿ6"Vè†◰Ä
  38806. ^]ÃU⇧ì◰ìVW⇧~¸*VP™FüP3ÀPÿ6$Vÿ6"Vè<◰Ä
  38807. ⇧ðèÔüè‡üFV⇨Vú⇨Føë¸*VP™FüP3ÀPÿ6$Vÿ6"Vè◰Ä
  38808. ⇧ð öu⇧Fþ⇧Vü;(Vu;&Vtè[ü;Vú|Çu;FørÀ öu◰>,Vu◰>*Vt¸,[P¸.ZPèL◰ľ*Z öt¸P¸o[P⇧ÆPèw◰Ä Àtéjÿ öt⇧Æë¡0V⇧.V⇨E⇨3À_^⇧å]ÃU⇧ìVèeü⇧ð öt⇧Æë@Ç,VÇ*Vÿv¸.VPèflK◰Äÿv¸.WPè‹K◰ĸ*VPÿ6(Vÿ6&Vÿ6$Vÿ6"Vèp◰Ä
  38809. ^]ÃU⇧ì◰ìV¸*VP™FüP3ÀPÿ6$Vÿ6"Vè◰Ä
  38810. ⇧ðè¬ûèuûFV⇨Vú⇨Føë¸*VP™FüP3ÀPÿ6$Vÿ6"Vèå◰Ä
  38811. ⇧ð öu⇧Fþ⇧Vü;(Vu;&Vtè3û;Vú|Çu;FørÀ öu◰>,Vu◰>*Vt¸,[P¸.ZPèßJ◰ľ*Z öt¸P¸⇩[P⇧ÆPèO◰Ä Àtéjÿ öt⇧Æë3À^⇧å]ÃU⇧졼^ ¾^tÿ6¾^ÿ6¼^èQ◰Ä]ÃU⇧ì◰ì◰>À^u,¸›Pè8'◰ĸ¼^P¸Pèa◰Ä⇨Fþ◰~þt¸ëÇÀ^3À⇧å]ÃU⇧ìVW⇧v¸É^Pÿvè¦J◰Ä⇧øë⇧Ç@⇧ð¸É^PVè‹J◰Ä⇧ø ÿuê◰~t⇧Æ+FPÿvÿvèHJ◰Ä⇧Æ+F⇧^ØÆ◰~t
  38812. VÿvèïI◰Ä_^]ÃU⇧ìŴìÔVW⇧~3ÀP3ÀP™ŷ,ÿP™FüPÿvèÍ>◰Ä
  38813. ÿv™F¾PÿvèÊ=◰Ä⇨Fê3öëa€~Ü.tN⇩FÓ—÷ÐŶFuCF™FìP™FòP3ÀP3ÀP™FÜPè…>◰Ä
  38814. ™FìP™FòP™ŷ,ÿP™FüP™ŷnÿPèV>◰Ä
  38815. ÿt
  38816. ™ŷnÿPÿ×◰Ä™F¾Pè—=◰Ä⇨Fê◰~êt−⇧Æ_^⇧å]ÃU⇧ìÿv¸¨[Pè1I◰ĸ.P¸¨[Pè¶I◰ÄP3ÀP¸¨[Pè¨I◰ÄHZ;Ðu¸.P¸¨[Pè“I◰Ä⇧ØÆÿv¸¨\PèïH◰Äÿ6¾^ÿ6¼^¸P¸¨[Pè◰Ä]ÃU⇧ìŴì(VWè9þ Àt3Àéfi™ŷØüP™ŷØýPÿvè_þ◰Ä™ŷØüP™ŷØýPèaÿ◰Ä⇧ðÇFÚÇFØ
  38817. ¸¨[-¨[−⇧¾^⇧¼^ÈÚ⇨^Þ⇨Nܸ¨]-¨[−⇧¾^⇧¼^ÈÚ⇨^â⇨NàÇFæÇFäÇFêÇFèÇFîÇF츨\-¨[−⇧¾^⇧¼^ÈÚ⇨^ò⇨Nð öu™FØP™FØP3Àº PRè² ◰Ä⇧ð3ÿéÎÿ6¾^ÿ6¼^¸P¸¨[Pè^ ◰Ä⇧ð öuw⇧Fä Fæto÷Ft◰>º]u ◰>¸]u¸ë3Àë#◰>º]u◰>¸]t◰>º]u ◰>¸]u¸ë3À Àt*G¸¼]P™ŷØýP¸Ì^P™ŷØþPèG◰Ä◰~t ™ŷØþPÿV◰Ä öu™ŷØüP™ŷØýPè%þ◰Ä⇧ðÇFæÇFä öu™FØP™FØP3Àº PRèß
  38818. ◰Ä⇧ð öu◰~êÿté%ÿ◰~èÿtéÿ⇧Ç_^⇧å]ÃU⇧ì◰ì™FúP¸Ä^P¹è&¸Ñ^PèÁ?◰Ä™F⇨FøÿvøÿvèÁG◰Ä◰~t%™Fú⇧Â^Ø⇩—P¸#_Pè‹?◰Ä¡Â^@»−÷û⇨Â^⇧å]ÃU⇧ì◰ì¸Ë^P3ÀPè•ÿ◰Ä™F⇨Fþÿvþÿv¸mPèTG◰ĸ'_P¸mPè¦;◰ĸPèí#◰Ä⇧å]ÃU⇧ìVW⇧~ ÿt¸<_ë¸Ë^Pÿv¸)_P3ÀPè8ÿ◰Äè0Pè &◰Ä⇧ðë è0Pè‹&◰Ä⇧ð◰þat◰þrt     ÿtæ◰þcuá◰þau    ÿvè^ÿ◰ĸË^P3ÀPèðþ◰Ä◰þru¸ë3À_^]ÃU⇧ì◰ìÿv¸E_P3ÀPèÊþ◰Äè»/⇨Fþ¸'_Pè—>◰Äÿvþè#&◰Ä=yu¸ë3À⇧å]ÃU⇧ì¡T` V`tÿ6V`ÿ6T`è´◰ÄÇV`ÇT`◰>R`ÿtÿ6R`è×8◰ÄÇR`ÿÿ]ÃU⇧ì◰ì(Vè·ÿëaÿ6Z`ÿ6X`¡\`Pè~E◰Ä@P¡\`Pè|
  38819. ◰Ä⇧ð öu.ÇFÚÇFØ¡Z`⇧X`⇨FÞ⇨VÜ™FØP™FØP3ÀºPRè¼◰Ä⇧ð⇧\`⇧£\`¡X` Z`t◰>\`u•¡X` Z`tÿ6Z`ÿ6X`è¦ ◰Ä3ÀPPèê◰Ä^⇧å]ÃU⇧ìV◰>^`u=¸ÄPèŵ!◰ĸX`P¸Pè«
  38820. ◰Ä⇧ð öt⇧ÆP¸v`P¸R_Pè.D◰ĸëÇ^`3À^]ÃU⇧ìŴì¸?VW⇧~è¤ÿ Àt¸éË◰>P_u3ÀºdPRèk◰Ä◰~u™ŷpÀ⇨FPWè"◰ĸ€PWèj;◰Ä£R`◰>R`ÿu¸é™FúP™FøPÿ6R`èÿ ◰Ä™FòPÿvøÿvúèZ◰Ä⇧ð ötW¸„`P¸R_Pè⇩C◰Äè:þ¸éG¸T`P3ÀPÿ6R`èR8◰ÄRPÿvè◰Ä
  38821. ⇧ð öt ⇧ÆPÿv¸Á`P¸R_PèHC◰Äèøý¸éÇFþÇFüé¡◰>P_u3ÀºdPRè—◰ĸ€>P™ŷpÁPÿ6R`èú?◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuW¸ë`P¸R_PèéB◰Äè−ý¸é¦⇧Fü FþtG™ŷpÁPÿvþÿvü¸ÿÿºÿÿPRÿ6V`ÿ6T`èÔ◰Ä⇧ð öt ⇧ÆPÿv¸aP¸R_PèŒB◰ÄèJý¸éW⇧Fü FþtéTÿè6ýÿ6Z`ÿ6X`ÿvèC◰Ä@Pÿvè◰Ä⇧ð öt⇧ÆP¸(aP¸R_PèMB◰ĸéëG€=t€=.uõ€=tG™FðPWè
  38822. ◰Ä⇧ð öt⇧ÆPW¸RaP¸R_PèB◰ĸéÎÇŷJÀÇŷHÀ¡Z`⇧X`⇨ŷNÀ⇨„LÀ⇧Fð−±èü⇨„RÀ⇨ŷPÀ⇩Fö—−    ŷPÀ    „RÀ◰‰PÀ◰‰RÀð™ŷHÀP™ŷHÀP3ÀºPRè¾◰Ä⇧ð öuBÇŷJÀÇŷHÀ¡Z`⇧X`⇨ŷNÀ⇨„LÀ⇧Fô⇧Vò⇨ŷVÀ⇨„TÀ™ŷHÀP™ŷHÀP3ÀºPRèx◰Ä⇧ð öt⇧ÆPÿvð¸☓aP¸R_PèKA◰ĸë 3ÀPPè¶◰Ä3À_^⇧å]ÃU⇧ìŴì¶?VW⇧~èºü Àt¸éX◰>P_u3ÀºdPRèŴ◰Ä◰~u™ŷrÀ⇨FPWè◰◰ĸT`P3ÀP¸ÿÿºÿÿPRWè•
  38823. ◰Ä
  38824. ⇧ð öt⇧ÆPW¸¤aP¸R_PèÁ@◰ĸéøÿ6Z`ÿ6X`Wè=A◰Ä@PWèA◰Ä⇧ð öt⇧ÆP¸(aP¸R_Pè⇨@◰ĸéÀÇŷLÀÇŷJÀ¡Z`⇧X`⇨ŷPÀ⇨„NÀ™ŷJÀP™ŷJÀP3ÀºPRèa◰Ä⇧ð öt⇧ÆPW¸ÉaP¸R_Pè6@◰ĸém◰¾dÀÿu◰¾bÀÿu°⇦Fö⇦Fõ⇦Fô⇦Fó⇦Fòë⇧ŷXÀ⇧„VÀ⇨Fô⇨Vò⇩ŷRÀ⇦Fö™FøP™FúP™FòPèò◰Ä⇧ð ötW¸„`P¸R_PèÓ?◰Äè◰ú¸é¸€P¸◰PÿvèR7◰Ä£R`◰>R`ÿuÿv¸öaP¸R_Pèfi?◰ÄèNú¸éÒÇFþÇFüéœ◰>P_u3ÀºdPRèî◰Ä™FüP™ŷrÁP3Àº€>PR¸ÿÿºÿÿPRÿ6V`ÿ6T`è⇨
  38825. ◰Ä⇧ð öt⇧ÆPW¸bP¸R_Pè3?◰Äèãù¸ëh⇧Fü Fþt6ÿvü™ŷrÁPÿ6R`è©A◰Ä−⇨Vþ⇨Fü◰~þÿu◰~üÿuÿv¸=bP¸R_Pèí>◰Ä⇧Fü FþtéZÿÿvúÿvøÿ6R`èG◰Äèŵù3ÀPPè?◰Ä3À_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸``PèØ>◰Ä⇨Fþ◰~þt⇧^þŴë``⇩k`⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~⇧vë-⇩—P¸k`Pè™>◰Ä⇨Fþ◰~þt⇧^þŴëk`⇩``⇦Fë⇩⇦FG€=uÎÆ_^⇧å]ÃU⇧ì◰ìVW⇧~è®ù Àt¸ëUÿvWè'◰Ä⇨Fþ◰~þt⇧FþP¸XbP¸R_Pèè=◰ĸë(¸PèX+◰Ä⇧ð öt¡\`⇨W⇧ÆPè0>◰Ä⇨6\`3À_^⇧å]ÃU⇧ì◰ì(VW⇧~è<ù Àt¸é•ÿ6Z`ÿ6X`Wè>◰Ä@PWè#◰Ä⇧ð öt⇧ÆP¸◰bP¸R_Pèk=◰ĸëXÇFÚÇFØ¡Z`⇧X`⇨FÞ⇨VÜÇFêÇFè™FØP™FØP3ÀºPRè@◰Ä⇧ð öt⇧ÆPW¸³bP¸R_Pè=◰ĸë3À_^⇧å]ÃU⇧ì◰ì⇧F⇧V⇨Fþ⇨Vü¸⇨ÂÄ^üÿÿs¸⇨Â⇨Fø⇨Vú⇧Vú⇧Fø⇧å]ÃU⇧ì◰ì VW⇧~⇧N
  38826. ÇFø…Vú⇧Fú%üÿ…Vþ⇨Fü⇧Fþ⇧Vü⇨Fö⇨VôÄ^ü⇧F⇧V&⇨G&⇨3öë2 ÿt⇧ÞÑãÑã⇧Q⇧ë3Ò3À⇧ÞÑãÑã‰FþPRS⇧^üXØX&⇨GX&⇨GF◰þ|ÉÄ^ôºas¸efÿÿsÇFø Ét23öë)⇧ÆÑàÑàÄ^üØ&⇧G&⇧W⇧ÞÑãÑãPRS⇧ÙXØXZ⇨W⇨F◰þ|Ò◰~øt3Àë
  38827. Ä^ü&⇧%@_^⇧å]ÃU⇧ì◰ì
  38828. VW⇧v⇧~
  38829. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü ÿt¸(ë3ÀPW¸P¸ØcP öt¸(ë3ÀPV¸P™FøPèÔ◰Ä⇨Fö◰~öu¸àeP¸ÜbPèó;◰ĸØbëO◰~öu¸ fP¸ÜbPèÚ;◰ĸØbë6◰>Úcu ◰>Øcu¸Ücë#◰>Úcÿu◰>Øcÿu¸3fP¸ÜbPè¦;◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38830. ⇧V⇨Fö⇨VôÇFú⇨vøVÿv¸P™FüP3ÀP3ÀPP¸ P™FðPè◰Ä⇧ø◰ÿu¸àeP¸ÜbPè7;◰ĸØbëX◰ÿu¸ fP¸ÜbPè;◰ĸØbë@◰~þu◰~üu¸WfP¸ÜbPè;◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPèá:◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F
  38831. ⇧V⇨Fö⇨VôÇFú⇨vø3ÀP3ÀPP¸P™FüPVÿv¸ P™FðPèQ◰Ä⇧ø◰ÿu¸àeP¸ÜbPèr:◰ĸØbëX◰ÿu¸ fP¸ÜbPèZ:◰ĸØbë@◰~þu◰~üu¸WfP¸ÜbPè;:◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPè:◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVW⇧vÇFøÇFú⇧FÇFþ⇨Fü3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPè›◰Ä⇧ø⇧Fö⇧Vô⇨D⇨◰ÿu¸àeP¸ÜbPè©9◰ĸØbëX◰ÿu¸ fP¸ÜbPè’9◰ĸØbë@◰~òu◰~ðu¸£fP¸ÜbPèr9◰ĸØbë!◰~òÿu◰~ðÿu¸3fP¸ÜbPèS9◰ĸØbë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèÍ◰Ä⇧ð◰þu¸àeP¸ÜbPèî8◰ĸØbëX◰þu¸ fP¸ÜbPèÖ8◰ĸØbë@◰~öu◰~ôu¸ÇfP¸ÜbPè·8◰ĸØbë!◰~öÿu◰~ôÿu¸3fP¸ÜbPè—8◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFøÇFúÇFþÇFü€<tG⇩—PèÞ◰Ä−    Fü    Vþ€|t0⇩D—PèÆ◰Ä−±èæ    Fü    Vþ€|t⇩D—Pè©◰Ä−◰Nü    Fþ3ÀP3ÀPP¸P™FðP3ÀP3ÀPP¸P™FøPèÂ◰Ä⇨Fî⇧Fô⇨◰~îu¸àeP¸ÜbPèÜ7◰ĸØbëY◰~îu¸ fP¸ÜbPèÃ7◰ĸØbë@◰~òu◰~ðu¸fP¸ÜbPè¤7◰ĸØbë!◰~òÿu◰~ðÿu¸3fP¸ÜbPèŶ7◰ĸØbë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F−⇨Vþ⇨Fü¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸àeP¸ÜbPè!7◰ĸØbëX◰þu¸ fP¸ÜbPè    7◰ĸØbë@◰~öu◰~ôu¸fP¸ÜbPèê6◰ĸØbë!◰~öÿu◰~ôÿu¸3fP¸ÜbPèË6◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38832. −⇨Vú⇨Fø¸Pÿv ¸P™FüPVèfi6◰Ä@PV¸ P™FðPè3◰Ä⇧ø◰ÿu¸àeP¸ÜbPèT6◰ĸØbëX◰ÿu¸ fP¸ÜbPè<6◰ĸØbë@◰~þu◰~üu¸äfP¸ÜbPè6◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPèþ5◰ĸØbë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèx◰Ä⇧ð◰þu¸àeP¸ÜbPè−5◰ĸØbëX◰þu¸ fP¸ÜbPèŴ5◰ĸØbë@◰~öu◰~ôu¸gP¸ÜbPèb5◰ĸØbë!◰~öÿu◰~ôÿu¸3fP¸ÜbPèC5◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFèÇFê    ⇧F⇧V⇨Fî⇨Vì⇧F
  38833. ⇧V⇨Fò⇨Vð⇧F⇧V ⇨Fö⇨Vôÿv ÿv¸P™FøP3ÀP3ÀPP¸P™FèPè¢ ◰Ä⇧ø⇧Fþ⇧Vü⇨D⇨◰ÿu¸àeP¸ÜbPè¸4◰ĸØbëX◰ÿu¸ fP¸ÜbPè 4◰ĸØbë@◰~úu◰~øu¸gP¸ÜbPèŴ4◰ĸØbë!◰~úÿu◰~øÿu¸3fP¸ÜbPèb4◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVÇFìÇFî
  38834. ⇧F⇧V⇨Fò⇨Vð⇧F
  38835. ⇧V⇨Fö⇨Vô⇧F⇧V ⇨Fú⇨Vø3ÀP3ÀPP¸P™FüPÿv ÿv¸P™FìPèÄ ◰Ä⇧ð◰þu¸àeP¸ÜbPèå3◰ĸØbëX◰þu¸ fP¸ÜbPèÍ3◰ĸØbë@◰~þu◰~üu¸>gP¸ÜbPè®3◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPè•3◰ĸØbë3À^⇧å]ÃU⇧ì◰ì VW⇧vÇFüÇFþ 3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FüPè ◰Ä⇧ø⇧Fú⇧Vø⇨D⇨◰ÿu¸àeP¸ÜbPè(3◰ĸØbëX◰ÿu¸ fP¸ÜbPè3◰ĸØbë@◰~öu◰~ôu¸^gP¸ÜbPèñ2◰ĸØbë!◰~öÿu◰~ôÿu¸3fP¸ÜbPèÒ2◰ĸØbë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú ⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPèL
  38836. ◰Ä⇧ð◰þu¸àeP¸ÜbPèm2◰ĸØbëX◰þu¸ fP¸ÜbPèU2◰ĸØbë@◰~öu◰~ôu¸…gP¸ÜbPè62◰ĸØbë!◰~öÿu◰~ôÿu¸3fP¸ÜbPè2◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38837. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPèŶ    ◰Ä⇧ð◰þu¸àeP¸ÜbPè¦1◰ĸØbëX◰þu¸ fP¸ÜbPè‰1◰ĸØbë@◰~þu◰~üu¸¼gP¸ÜbPèo1◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPèP1◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVW⇧v⇧~
  38838. ÇFøÇFú⇧F⇧V⇨Fþ⇨Vü¸Pÿv ¸ P™FêP3ÀP3ÀPP¸P™FøPèÃ◰Ä⇨Fö⇧Fð⇧Vî⇨D⇨⇧Fô⇧Vò⇨E⇨◰~öu¸àeP¸ÜbPèÌ0◰ĸØbëY◰~öu¸ fP¸ÜbPè³0◰ĸØbë@◰~ìu◰~êu¸×gP¸ÜbPè“0◰ĸØbë!◰~ìÿu◰~êÿu¸3fP¸ÜbPèu0◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFüÇFþ3ÀP3ÀPP¸P™FôP¸Pÿv¸P™FüPèó◰Ä⇨Fò⇧Fø⇨⇧Fú⇨◰~òu¸àeP¸ÜbPè0◰ĸØbëF◰~òu¸ fP¸ÜbPèï/◰ĸØbë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸3fP¸ÜbPèÄ/◰ĸØbë3À_^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇨Fü⇧F⇨Fþ¸Pÿv¸P™FôP3ÀP3ÀPP¸P™FøPè=◰Ä⇧ð◰þu¸àeP¸ÜbPè^/◰ĸØbëE◰þu¸ fP¸ÜbPèF/◰ĸØbë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸3fP¸ÜbPè/◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVW⇧vÇFüÇFþ¸Pÿv¸P™FøPVè/◰Ä@PV¸P™FüPè−◰Ä⇧ø◰ÿu¸àeP¸ÜbPèº.◰ĸØbëE◰ÿu¸ fP¸ÜbPè¢.◰ĸØbë-◰~úu◰~øt ◰~úÿu◰~øÿu¸3fP¸ÜbPèw.◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFòÇFô⇧F⇧V⇨Fø⇨Vö⇧F
  38839. ⇧V⇨Fü⇨Vú¸Pÿv¸ P™FæP◰~
  38840. |◰~v⇧Fë3ÀP◰~
  38841. |◰~v⇧F ë3ÀP¸ P™FòPè·◰Ä⇨Fþ⇧Fì⇧Vê⇨D⇨⇧Fð⇧Vî⇨E⇨◰~þu¸àeP¸ÜbPèÀ-◰ĸØbëF◰~þu¸ fP¸ÜbPè§-◰ĸØbë-◰~èu◰~æt ◰~èÿu◰~æÿu¸3fP¸ÜbPè|-◰ĸØbë3À_^⇧å]ÃU⇧ì◰ìVÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P¸ÜdP3ÀP3ÀPP¸P™FøPèö◰Ä⇧ð◰þu¸àeP¸ÜbPè-◰ĸØbëN◰þu¸ fP¸ÜbPèÿ,◰ĸØbë6◰>Þdu ◰>Üdu¸àdë#◰>Þdÿu◰>Üdÿu¸3fP¸ÜbPèË,◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVÇFðÇFò⇧F⇧V⇨Fö⇨Vô⇧F
  38842. ⇧V⇨Fú⇨Vø3ÀP3ÀPP¸P™FüP¸Pÿv ¸ P™FðPè9◰Ä⇧ð◰þu¸àeP¸ÜbPèZ,◰ĸØbëX◰þu¸ fP¸ÜbPèB,◰ĸØbë@◰~þu◰~üu¸¼gP¸ÜbPè#,◰ĸØbë!◰~þÿu◰~üÿu¸3fP¸ÜbPè,◰ĸØbë3À^⇧å]ÃU⇧ì◰ì VÇFøÇFú⇧F⇧V⇨Fþ⇨Vü3ÀP3ÀPP¸P™FôP3ÀP3ÀPP¸P™FøPè◰Ä⇧ð◰þu¸àeP¸ÜbPè +◰ĸØbëE◰þu¸ fP¸ÜbPè⇦+◰ĸØbë-◰~öu◰~ôt ◰~öÿu◰~ôÿu¸3fP¸ÜbPè]+◰ĸØbë3À^⇧å]ÃU⇧ì◰ìVÇFüÇFþÿvÿv¸P™FøP3ÀP3ÀPP¸P™FüPèä◰Ä⇧ð◰þu¸àeP¸ÜbPè+◰ĸØbëE◰þu¸ fP¸ÜbPèí*◰ĸØbë-◰~úu◰~øt ◰~úÿu◰~øÿu¸3fP¸ÜbPèÂ*◰ĸØbë3À^⇧å]ÃU⇧ì◰ì¸P™FþP¸þP¸ÿPèv!◰Ä
  38843. ◰~þÿu¸ë3À⇧å]ÃU⇧ì◰ì ÇFð™FàP™FðP¸MPè◰Ä=PHu¸ë3À⇧å]ÃU⇧ì◰ìBÇF¾⇧F⇨FÀ⇧F⇧V⇨FÄ⇨VÂ⇧F⇨FÆ⇧F ⇧V
  38844. ⇨FÊ⇨VÈ⇧F⇨FÌ⇧F⇧V⇨FÐ⇨VÎ⇧F⇨FÒ⇧F⇧V⇨FÖ⇨VÔÇFè™F¾⇨Fê…Vø™FøP™FØP™FèP¸MPè³◰Ä⇧å]ÃU⇧ì◰ìVW⇧~¸àPè—◰Ä⇨FþŴ~þEMu¸éÑŴ~þMEt¸éÄ3ÀP¸àPèÑ◰Ä⇧F⇧V⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;÷rî⇧F ⇧V
  38845. ⇨Fü⇨Vú3öëÄ^úÿFú&⇩ºâîF;vrí¸P¸àPè~◰ĸP¸àPèp◰Ä⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí⇧F⇧V⇨Fü⇨Vú3öëºâìÄ^ú&⇦ÿFúF;vrí¸P¸àPè◰Ä3À_^⇧å]ÃU⇧ì◰ìB⇧FÇFÀ⇨F¾ÿvÿvèSë◰Ä⇨VÄ⇨FÂ⇧FÇFÈ⇨FÆÿv ÿv
  38846. è6ë◰Ä⇨VÌ⇨FÊ⇧FÇFÐ⇨FÎÿvÿvèë◰Ä⇨VÔ⇨FÒ⇧FÇFØ⇨FÖÿvÿvèüê◰Ä⇨VÜ⇨FÚ™F¾P™F¾P¸ºF¼PRèë◰Ä⇨Fþ◰~þu 3Àu3Àë¸⇧å]ÃU⇧ì◰ìVW⇧v⇧~ÇFîŴ™FîP™FîP¸/Pè¾◰Ä◰>ögtèTý£øg◰>øguèuý£úgÇög◰>øgt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38847. Vÿvÿvèæþ◰Ä⇨Fþëi¸P¸àPèä◰Ä◰>úgt+ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38848. Vÿvÿvè/ý◰Ä⇨Fþë)ÿvÿvÿvÿvÿvÿvWÿv ÿv
  38849. Vÿvÿvèý◰Ä⇨FþÇFîŵ™FîP™FîP¸/Pèì◰Ä⇧Fþ_^⇧å]ÃU⇧ìŴìVW⇧~◰>PhtN◰>Rhu◰>Thuÿ6PhWè'◰Äë^™ŷÿP¸hPè'◰Ä⇧VÐRèÇç◰Ä™ŷÿPÿ6Ph¸VhPWèm&◰Äë-ë+™ŷÿ⇧ð™ŷÿPÿvèœç◰Ä€|:u◰Æ€<.uFVWè­&◰Ä_^⇧å]ÃU⇧ìŴìVW⇧~◰>þgtWè”à◰Ä Àué¦◰>ügt)¸P™ŷÿPè"û◰Ä⇧ð öt ⇧ÆP¸\hPè ß◰Äëë ™ŷÿPWèÿ◰Ä™ŷÿPWè´á◰Ä Àt¸R_P¸⇦hPèrß◰Ä◰>ügtE™ŷþPWèðæ◰Ä™ŷþP™ŷÿPèCÚ◰Ä⇧ð öu3ÀºôPRè☓Ú◰Ä⇧ð öt⇧ÆP¸…hPè&ß◰Ä_^⇧å]ÃU⇧ìŴìPV⇧v◰>ügu™ŷ°þPVèŷþ◰Ä™ŷ°þPè‘ç◰ÄV¸©hP™F°Pè3%◰ĸŒ,P3ÀP™F°Pè©Û◰ĸg-P¸P™F°Pè–Û◰Ä^⇧å]ÃU⇧ì◰ìJVW3ÿÇFþ◰~u¸°hP¸mPèw◰Ä3Àé3öé¥ ÿté–⇧ÆÑà⇧^Ø⇧€?/té☓⇧ÆÑà⇧^Ø⇧⇩G—Pèt◰Ä=pt1 =?t=mtë:=st&=wt(ë.¸+iPè·◰Ä3Àé£ÇP_ë>Çþgë6ÇFþë/Çügë'⇧ÆÑà⇧^Øÿ7¸dkP¸mPè×◰ĸéeë ÿu⇧þF;v}éSÿ ÿu¸~kP¸mPè®◰ĸé<⇧F+Ç=~¸„kP¸mPè‘◰ĸé3ÀP3ÀP⇧ÇÑà⇧^Øÿ7èkÚ◰Ä£Rh◰~þtÀP¸P⇧ÇÑà⇧^Øÿ7èJÚ◰Ä£Th◰>Rhu◰>Thu
  38850. ¸´kPè]Ý◰Ä⇧F+Ç=~Çüg⇧ßÑã^⇧G£Ph◰>ügt7èÇÔ⇨Fü◰~üu3ÀºèPRèíÔ◰Ä⇨Fü◰~ütL⇧FüP¸ÇkPèÝ◰Äë9ë73ÀP3ÀP™F¶P™FøP⇧ÇÑà⇧^Øÿ7è£◰Ä
  38851. 3ÀP3ÀP™F¶P™FøP¸hPèq◰Ä
  38852. ¸Œ,P3ÀP⇧ÇÑà⇧^Øÿ7èŶÙ◰Ä◰~þt¸g-P¸P⇧ÇÑà⇧^Øÿ7èfÙ◰Ä3À_^⇧å]ÃU⇧ì◰>ìk u¸ë⇧ìkÑã⇧F⇨®oÿìk3À]ÃU⇧ìVW⇧v⇧~¸W⇧^Í!sPè4ë⇨⇨3À_^]ÃU⇧ì¸W⇧^⇧N⇧VÍ!sPèë3À]ÃÃU⇧ìV⇧v öuëÿìk⇧ìkÑãÿ–®o◰>ìkuëèÔÑÿðlè6ÒèÝÑ◰~u öuÿòlÿôlÿvèÆÑY^]ÂU⇧ì3ÀPPÿvè¦ÿ]ÃU⇧ì¸P3ÀPÿvè“ÿ]Ã3ÀP¸P3ÀPèŶÿøPP3ÀPèyÿÃ[S€ùs⇧ØÓàÓâöÙ€ÁÓë ÓË€é‹3ÀÓâËU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ì⇧Ví]ÃU⇧ì⇧Vì2ä]ÃU⇧ìV⇧v ö|◰þX~¾W⇨6fn⇩☓hn—⇧ðë÷Þ◰þ#éÇfnÿÿ⇨6 V¸ÿÿ^]ÂU⇧ìV⇧vVè¼ÿ⇧Æ^]ÂU⇧ì¸D⇧^Í!‹%€]ÃU⇧ì◰ì"VW⇧~
  38853. ⇧^◰û$wX€ûrS⇧F ⇧N É}€~t Æ-G÷Ù÷Ø◰Ù™vÞã’+Ò÷ó’÷ó⇦Fã    ëñ+Ò÷ó⇦F Àuõ™NÞ÷ÙÎüN⇩,
  38854. s:ëFªâï°ª⇧F
  38855. _^⇧å]Â U⇧ì3ÀPÿvÿv¸
  38856. P°P°aPèjÿ]ÂU⇧ì⇧^ÑãŴ§8nÿý´B⇩F
  38857. ⇧^⇧N⇧VÍ!rëPèäþ−]ÃU⇧ìVWÅvÄ~üÑéó¥Éó¤_^]ÂU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî]ÃU⇧ì⇧V⇧Fï]ÃU⇧ì⇧V⇩Fî2ä]ÃU⇧ì⇧^Ñã÷8nt¸Pë´?⇧^⇧N⇧VÍ!rëPèhþ]ÃU⇧ìV⇧v……L…T…\^]ú;6ns+⇧ÚÑãÇ8n⇧Ú±ÓãÆúlÿ⇧ÂÓàöl⇧ÚÓã⇨mB;6nrÕ úl—Pè`þY ÀuŴ&ølÿý¸P÷ølt¸ë3ÀP3ÀP¸ölPèz◰Ä 
  38858. m—Pè,þY ÀuŴ&mÿý¸P÷mt¸ë3ÀP3ÀP¸mPèF◰ÄÃU⇧ì¸P3ÀPPÿvè−þ◰Ä]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øöïkt    ⇩´ ë⇩´]ÃU⇧ì⇧V◰úÿu¸ÿÿë⇩´⇧Øöïkt    ⇩´àÿë⇩´]Ã⇩Æè⇩ÂÔŷàèŷà‘'@'ªÃU⇧ìŴì„VWÇFîÇFìPÇFêëFW¹ÿÿ2Àò®÷ÑI_Ã6⇦GþNìu/SQR™ŷjÿ+ø™ŷjÿPWÿvÿV
  38859. ÀuÇFêÇFìP~jÿZY[Ãü™¾jÿ⇨~ü⇧~ü⇧v¬
  38860. Àt<%t6⇦GþNìîè¬ÿëééÕ⇨vð¬<%tç⇨~ü3É⇨Nò⇨Nþ⇦NõÇFøÿÿÇFöÿÿë¬2ä⇧Ð⇧؀렀û`s⇩flËn◰ûvé⇦Ñã.ÿ§◰8é~€ýwø◰NþëЀýwí◰NþëÅ€ýwâ€~õ+t⇦Võëµ◰fþßë◰Nþ µ맀ýwM÷Fþu)◰Nþµë›é3⇧~6⇧◰F€ýs Ày÷Ø◰Nþ⇨Føµéoÿ€ýu×⇨FöþÅébÿ€ýsʵÿFöéUÿ‹,0—€ýwµFø À|ÑÑà⇧ÐÑàÑàÂFøé3ÿ€ýuœFö ÀtµÑà⇧ÐÑàÑàÂFöéÿ◰NþéeÿŴNþ◰fþïéYÿ·ë
  38861. ·
  38862. ë
  38863. ·³éÚÆFõ⇦Vû3Ò⇦Vú⇧~6⇧ë·
  38864. ÆFú⇦Vû⇧~6⇧−GG⇨v÷Fþt6⇧GG⇨~™~» Àu Òu    ◰~öuéhþ◰NþRPW⇩Ç—P⇩FúPSèvû⇧Vö Ò}éòéý⇦Vû⇨v™~º⇧^6ÿ7CC⇨^÷Fþ t6⇧CC⇨^è‡ý°:ªZè“ý6ÆÆFú◰fþû™Nº+ùÏ⇧Vö;Ñ⇧Ñéfl⇨v⇦Vû⇧~6⇧◰F™~»2ä6⇨¹éÂ⇨v⇦Vû⇧~÷Fþ u6⇧=◰F ÿë 6Ä=◰F…À Çu¿ÄnèUý;Növ⇧NöéŶ⇨v⇦Vû⇧~⇧Nö É}¹WQ™^»SR¸#FþP⇧Fþ©t    ¸◰F
  38865. ë◰F¸Pè÷
  38866. ™~»÷Fþt⇧Vø Ò~è÷ü&€=-uI+Ñ~⇨Vò&€=-t ⇩Fõ
  38867. ÀtO&⇦◰~ò~
  38868. ⇧Nö É}ÿNòèÅü⇧÷⇧~ü⇧^ø¸#Fþ=u⇩fû€üou◰~òÇFòë€üxt€üXu◰Nþ@KK◰nò}ÇFòNò÷Fþu ë° è~üK;Ùö÷Fþ@t °0èmü⇩Fûègü⇧Vò Ò~'+Ê+Ú&⇩<-t< t<+u&¬èHüIKÊã°0è=üâùÊã+Ù&¬6⇦GþNìè0üâð Û~    ⇧Ë° èüâùéZü⇨v⇧~÷Fþ u 6⇧=◰Fë6Ä=◰F¸P*FìFî&⇨÷FþtGG&Çéü⇧vð⇧~ü°%èÎû¬
  38869. Àuø€~ìP}èÉû◰~êt¸ÿÿë⇧Fî_^⇧å]Âë4Õ4 5à4N5[5−5 5¥5    5Î5¬5°5´5(6Õ6x6—68S8S8S8û45U⇧ì 6o´⇧VJ÷êP¡9oZÂ⇧VJÂÑà⇧;o]ÂU⇧ì◰ìVW 8o´⇨Fþ⇧NãZÄ~
  38870. Åvü;÷s
  38871. ⇧ÁHÑàðøý◰~þuó¥ë;ºÚ…À…Û;ÃtúìÐÈrûìÐÈsû¥ûâñëúìÐÈrûìÐÈsû­û⇧ØìÐÈrûìÐÈsû⇧ëûâáü_^⇧å]Â
  38872. U⇧ìVW⇧~ÿvèY⇧ð@PÿvWè‘◰Ä⇧ÇÆ_^]ÃU⇧ì⇧F⇧ÔŴê;Âs£V3Àë    Ç V¸ÿÿ]ÃU⇧ì⇧F⇧VV◰Ò⇧È ÒuŴÁr
  38873. ;ÌsVë    Ç V¸ÿÿ]ÃU⇧ìÿvè¤ÿY]ÃU⇧ì⇧F−RPè·ÿYY]ÃU⇧ì◰ìVW⇧v⇧~ÆFûèN ´⇨FþèF ±Óè´⇨FüéØ⇧ÞF⇩⇦Fû´-⇧Ø◰ûw.Ñã.ÿ§ ;´°è6ëv .o´;Fþ}lÿNþëg .o´⇨Fþë]ÿFüëX 7o´ Àu.◰>=ot'⇩&2o⇩Fû⇨Fø⇧Fþ@P⇧Fü@Pè;þRP™FøP¸PèRþë⇩Vþ⇩vü´·èÒ⇩2o⇩Fû´    ·¹èÁÿFþ 0o´;Fþ} .o´⇨Fþ¡,oFü 1o´;Fü}°P .oP /oP 0oP 1oP°PèöÿNü⇧ÇO Àtéÿ⇩Vþ⇩vü´·èi⇩Fû´_^⇧å]Â*:3:Q:L:Q:Q:B:U⇧ì¸æ9P3ÀPÿv™FPèØø]ÃU⇧ìV⇧vëÄ^ÿF&⇩⇧ÞF:t3Àë€<uç¸^]´³è⇩Ãð´ÃUQ¹@‰ÙY€üt    €ütVÍëj<u¸Í<t€&þ´¹Í¸ëÞ<@uÚ³´Í€ût=¸2Û͸³ Í¸Í<t&€´¹ÍëÍ<uPèÿ
  38874. ÀXt    €>☓t°@]ôèwÿPèY´·èkÿ€ä⇦&3o⇦&2oÃU⇧ì⇩F¢4o´èQÿ⇦&6o:4ot- 4o´è?ÿ´è:ÿ¢4o⇦&6o€>4ou¸@‰À&€>☓~Æ4o@€>4ov€>4o@s €>4ot¸ë3À¢7o€>4o@t°ë ¸@‰À& ☓þÀ¢5o€>4ot¸ðºêÿPR¸?oPè“þ Àu è·þ Àu¸ë3À¢8o€>4ou¸°ë¸¸£;oÇ9o°¢/o¢.o 6oÿ¢0o 5oÿ¢1o]úFoëºKo¹´@»Í!¹'ºPo´@Í!éOÆ€>xot
  38875. Æxo yoë¸Í!´ÃV€>xotèÜÿ⇧ðë
  38876. èÕÿ⇧ðPèÄY⇧Æ^ÃU⇧ì€>xot¸ÿÿë Æxo⇧F¢yo]ÃU⇧ì◰ìVW⇧~⇧vWVÿvÿv
  38877. è     Àu3Àë-⇧F+Ç@⇨Fþëÿv WVè+ûRPÿvþè©⇧FþÑàF F;v
  38878. ~á¸_^⇧å]ÃU⇧ì◰ìVW⇧~ ⇧F+F@⇨Fþ⇧vëÿvVèëúRPWÿvþèg⇧FþÑàøF;v
  38879. ~â¸_^⇧å]ÃU⇧ì◰ì™FøPèØôY™FøPÿvÿvÿvè◰Ä⇧å]ÃU⇧ì◰ìVW™Nò⇨Nü…VþÆFòUÆFóÍ⇧F⇦FôÇFõ]Ë<%r<&wÆFõ6ÇFö•⇨NøÇFú]Ë⇧v
  38880. ÿ4ÿt⇧v⇧⇧\⇧L⇧T⇧|
  38881. ⇧tÿ^ü††V‰^ì⇧v
  38882. ••D⇧v•D•D•D ◰d ⇨|
  38883. ⇨T⇨L⇨\⇨tPPè’òX_^⇧å]ÃU⇧ì⇧V´D⇩F⇧^⇧N
  38884. Í!r ◰~u⇧ÂëëPèeò]À>xot¸ë´ Í!—ÃU⇧ì◰ìVW⇧v⇧~
  38885. ÿvVÿvWèz Àt#ÿv ÿv⇧F+F⇧V ÐR⇧Ç+Æ⇧VÐRèW Àu3ÀëS⇧Ö⇨~þÇFü;v}
  38886. ⇧×⇨vþÇFüÿÿ⇧úë)ÿv ⇧Ç+Æ⇧VÐRè`ùRPÿvWèWùRP⇧F+F@PèÐ~ü⇧FþFü;Çu͸_^⇧å]ÃVW⇧ô⇧\◰ër;|otèBëè_^Ã9zot#⇧wöt⇨6|oë ;6zot⇧ÞèT⇧G£|oë⇧Þ3À£zo£|o£~oSè£ù[Ãÿ;zot⇧w⇧¨u⇨⇧?û⇨u⇧Þëè2⇧?û⇧¨tÃ⇧÷ð⇨\⇧ß⇧;ßt⇨>~o⇧w⇨u⇨|ÃÇ~oÃ⇧6~o öt⇧|⇨\⇨]⇨⇨wÃ⇨~o⇨_⇨_ÃVW⇧ô⇧D ÀtRr6%þÿ=s¸◰>zot⇧~o Ût⇧Ó9s⇧_;Úuõèfë!è⇩ëèë3Àë⇧ð◰Æ97séèkÿÿ⇧Ã_^ÃP3ÀPPèãø[[%t    3ÒRPèÕø[[XP3ÛSPèÊø[[=ÿÿt⇧Ø⇨zo⇨|oX@⇨◰Ã⇧ÃÃ[3ÀÃP3ÛSPè£ø[[=ÿÿt⇧Ø¡|o⇨G⇨|oX@⇨◰Ã⇧ÃÃX3ÀÃ)⇧ó7⇧þø@⇨⇨\⇨u◰Æ⇧ÆÃ⇧ìSPQPèÿ[⇧Ø Àtü⇧ø⇧vþ⇧ ◰ÆV◰éÑéó¥⇨Fþè$þ[⇧^þ◰ÄÃ⇧Â◰Â;Ñw5⇧Ñ;|ou⇨ÿÃSPèø÷[[ë⇧ûø⇨]+Ð)⇧÷ò⇨|B⇨⇧Ë⇧ßè7þ⇧Ù◰ÃÃVWU⇧ì⇧^⇧F
  38887. Àt7 Ût-◰ë⇧I⇧Ð◰Â◰âþ◰úsº;Êr w◰ÃëèÿëèOÿ⇧ÃëPèeþëSè‘ý3À[]_^ÃU⇧ì™FP¸P3ÀPèß÷]Ãÿ&“oU⇧ì◰ì⇧FÑè⇧È 6o´P⇧Á3Ò[÷ó⇩Ø´⇩6o¶÷ê⇩Ñ*Ð⇦Vÿ⇩ã⇩Fÿ⇧å]ÂU⇧ìVW⇧v⇧~⇧;t    ·´è
  38888. ù⇨þÂ:6orþƲ⇨_^]ÂU⇧ì◰ì VW⇧~èÈ⇨Fø⇨Fú⇧F ;;ou¸ë3À⇨Fö Àt ÿv ÿv
  38889. èfÿ⇨Fþ⇧F;;ou¸ë3À⇨Fô Àt_ÿvÿvèCÿ⇨FüëQ◰~ôt™FüP™FúPèeÿ·´è€ø⇧ðë
  38890. Ä^&⇧7◰F◰~öt™FþP™FúPè?ÿ⇧Æ⇩ܹ·´    èSøë
  38891. Ä^
  38892. &⇨7◰F
  38893. ⇧ÇO Àu¨⇧Vø·´è6ø_^⇧å]Â
  38894. U⇧ì⇧V 7o´ Àu◰>=otÿv ÿv
  38895. ÿvÿvRèyõëÿv ÿv
  38896. ÿvÿvRèÿ]Â
  38897. U⇧ìVW⇧^
  38898. ⇧v⇧~ 6o´⇧È 5o´⇧Ð;Ùwùw;ß;òw9Vw
  38899. ;v¸ë3À_^]ÂU⇧ìV⇧v⇧V⇩.2o± ë⇨ ◰ÆB;V~õ^]ÂU⇧ìŴì  7o´ Àté*◰>=oué €~téþF þF
  38900. þFþF€~té⇦⇩F
  38901. ´P⇩F ´P⇩F´P⇩F´P⇩F
  38902. ´@P⇩F ´Pè¥ú◰Ä ™ŷ`ÿP⇩F´P⇩F ´P⇩F´P⇩F ´Pèóø◰Ä
  38903. ™ŷ`ÿP⇩F ´P⇩F´PèAÿ™ŷ`ÿP⇩F´P⇩F´P⇩F´P⇩F ´Pèù◰Ä
  38904. é›⇩F
  38905. ´@P⇩F ´P⇩F´HP⇩F´P⇩F
  38906. ´P⇩F ´Pèú◰Ä ™ŷ`ÿP⇩F
  38907. ´P⇩F ´P⇩F
  38908. ´P⇩F ´Pèjø◰Ä
  38909. ™ŷ`ÿP⇩F ´P⇩F´Pè¸þ™ŷ`ÿP⇩F
  38910. ´P⇩F´P⇩F
  38911. étÿ⇩>2o⇩f⇩F⇩n
  38912. ⇩N ⇩v⇩Vè7ö⇧å] •☓o•ŷo•⇦o.…6E⇨6⇩o⇨>…oü‰V¾€2ä&¬@…ÅÖ›⇧6VFF¹€>    Vr‰V⇧þ±2Àò®ãn€ñP⇧ÁÃ@%þÿ⇧ü+ør\⇧çQIó¤2Àª‰ÝòÙ⇧Ã⇧ÐCèwr@èwù< t<t<    uè2Àëä ÀtBª
  38913. ÀuCŷà2Àùã¬I,"t"<\u€<"u¬I öÃé^½YÊ.‰6E⇨€oCÛ⇧ô⇧ì+ëræ⇧å⇨.ŵoã⇨v◰Å6¬
  38914. Ààútð3À⇨F.‰6E⇧6⇩o⇧>…oÿ6⇦oÿ6ŷo¡€o£ûU¡ŵo£ýUÿ&☓o´·èõ⇧ÂÃèóÿ´⇩.o¶+Â@Ãèäÿ±Óè´⇩/o¶+Â@ÃU⇧ì⇧N´C⇩F⇧VÍ!r’ëPè¥ê]ÃU⇧ì⇧V;6nr    ¸Pè‘êë⇧ÚÑãÇ8nRèY]ÃU⇧ì´>⇧^Í!r ÑãÇ8n3ÀëPèaê]ÃU⇧ìVW⇧~ ÿuèëf9}t¸ÿÿë^◰=|)÷Eu
  38915. ⇧Ç9E
  38916. uFÇ⇧Ç9E
  38917. u8⇧E⇨E
  38918. ë0ë.⇧E@⇧ð)5P⇧E⇨E
  38919. P⇩E—Pèò ◰Ä;Æt÷Eu◰Mëfl3À_^]ÃU⇧ì´/Í!S´⇧VÍ!´N⇧N⇧VÍ!†Y›´ZÍ!Q‡r3ÀëSè±é]ÃU⇧ì´/Í!S´⇧VÍ!´OÍ!†Y›´ZÍ!Q‡r3ÀëSè☓é]ÃU⇧ì◰ì¸B⇧^3É3ÒÍ!r$RP¸B3É3ÒÍ!⇨Fü⇨VþZYr¸BÍ!r⇧Vþ⇧FüëPèFé−⇧å]ÃU⇧ì◰ìVWÇFþ⇧>6n¾ölë÷DtVèÁþYÿFþ◰Æ⇧ÇO Àuç⇧Fþ_^⇧å]ÃU⇧ìÿv ÿv
  38920. ÿvÿvÿvèA◰Ä
  38921. ]ÃU⇧ìÿv ÿv
  38922. ÿvÿvÿvèÂ◰Ä
  38923. ]ÃU⇧ì¸eMPÿvÿv™FPè›ë]ÃU⇧ìVW⇧v◰<}
  38924. ⇧TB⇧úë ⇧−3Â+Â⇧Ð⇧ø÷D@u,⇧L
  38925. ◰<}ë    I⇧Ù€?
  38926. uG⇧ÂJ Àuðë⇧ÙA€?
  38927. uG⇧ÂJ Àuð⇧Ç_^]ÂU⇧ìVW⇧v⇧~
  38928. VèôýY Àt¸ÿÿëG◰ÿu◰<~ Vè|ÿ−)FVŴd_þÇ⇧D⇨D
  38929. Wÿvÿv⇩D—Pè é◰Ä◰úÿu
  38930. =ÿÿu¸ÿÿë3À_^]ÃU⇧ì◰ìV⇧v⇩D—Pè8êY⇨Vþ⇨Fü◰úÿu=ÿÿt◰<}Vèÿ−FüVþë Vèÿ−)FüVþ⇧Vþ⇧Fü^⇧å]ÃU⇧ìVW⇧v⇧F⇧V⇧~ Àt⇧Ø€?t    ⇩⇦FÆ:F Òt ⇧Ú€?tSVè‡ïYY⇧ð€|ÿ\t
  38931. €|ÿ/tÆ\F◰~
  38932. t ÿv
  38933. Vè|ïYY⇧ð ÿt€=t€=.tÆ.FWVèaïYY⇧ðÆ_^]ÃU⇧ìVW⇧~⇧v⇧NÑéüó¥s¤⇧F_^]ÃU⇧ìVWü⇧N ⇧~
  38934. ‰F⇧v‰^Ñéó¥s¤_^]ÃU⇧ì⇧N´<⇧VÍ!rëPèáæ]ÂU⇧ì⇧^+É+Ò´@Í!]ÂU⇧ì◰ìVW⇧v⇧~÷ÆÀu¡`n%À ð3ÀPÿvèèûYY⇨Fþ÷Ætx#>bn⇧Ç©€u¸Pè⇨æ◰~þÿu#◰>fnt
  38935. ÿ6fnèuæéí÷Ç€t3Àë¸⇨Fþë ÷Æt7¸PPëÜ÷Æðtÿv3ÀPèOÿ⇧ø À}éµWè»ûYëÿvÿvþè6ÿ⇧ø À}lé†Vÿvè‡YY⇧ø À|Z3ÀPWè◰óYY⇨Fü©€tŴΠ÷Æ€t%ÿ P¸PWè`ó◰Äë
  38936. ÷ÆtWèþþ÷Fþt÷Æt÷Æðt¸PPÿvèÿú◰Ä ÿ|/÷Æt¸ë3À⇧ÖŴâÿø ÐR÷Fþt3Àë¸Z Ð⇧ßÑã⇨–8n⇧Ç_^⇧å]ÃU⇧ì◰ì°⇧N÷Áu
  38937. °÷Áu°⇧V±ð"N
  38938. Á´=Í!r⇨Fþ⇧F%ÿ¸€⇧^þÑã⇨8n⇧FþëPè6å⇧å]ÃU⇧ì¸eMP¸mPÿv™FPèïç]ÃU⇧ìV⇧vÿ V⇩F—PèYY^]ÃU⇧ìVW⇧~⇩F¢îo◰=ÿ}:ÿ⇧]
  38939. ÿE
  38940. ⇦÷Euéõ€>îo
  38941. t
  38942. €>îotéäWèiúY Àuéظÿÿé×éÏ÷E‘u÷Eu◰MëãŴM◰}tE◰=t    Wè0úY ÀuÊ⇧E÷Ø⇨⇧]
  38943. ÿE
  38944.  îo⇦÷Euéŷ€>îo
  38945. t€>îouxWèýùY Àtoë”ëk⇩E—Ñà⇧Ø÷8nt¸P3ÀPP⇩E—Pè)å◰Ä€>îo
  38946. u÷E@u¸P¸‰oP⇩E—Pè ◰Ä=u¸P¸îoP⇩E—Pèô◰Ä=t
  38947. ÷Eué?ÿ îo´_^]ÃU⇧ì¸mPÿvèÎþYY]ÃU⇧ì◰ìVW⇧~⇧F⇨Fþ÷Et)ëW⇧^ÿF⇩—Pè¢þYY=ÿÿu3ÀéU⇧FÿN ÀuÜéE÷E@uéß◰}ué—⇧E;FsO◰=t    Wè
  38948. ùY ÀuÅ⇩E—Ñà⇧Ø÷8nt¸P3ÀPP⇩E—Pè:ä◰Äÿvÿv⇩E—Pè-◰Ä;FréàëéÛ⇧F|◰=u
  38949. ¸ÿÿ+E⇨ë WèªøY Àtébÿÿvÿvÿu
  38950. è¾û◰Ä⇧F⇨⇧FE
  38951. éŒ⇩E—Ñà⇧Ø÷8nt¸P3ÀPP⇩E—Pè¸ã◰Äÿvÿv⇩E—Pè«◰Ä;Fsaéÿë\◰}t=ë/ÿ}⇧]
  38952. ÿE
  38953. ⇧vÿF⇩⇦´ëW⇧^ÿF⇩Pè\ýYY=ÿÿuéÎþ⇧FÿN ÀuÇëÿvÿv⇩E—PèI◰Ä;Fsé©þ⇧Fþ_^⇧å]ÂU⇧ì◰ìVW⇧F;6nr
  38954. ¸Pè%âé§⇧F@=r⇧^Ñã÷8nt3Àé…ÿvÿvÿvèhã◰Ä⇨Fþ@=r⇧^Ñã÷8n@u⇧Fþëb⇧Nþ⇧v⇧þ⇧Þü¬<t-<tªâôëâðS¸P™FýPÿvèã◰Ä[ü⇩Fýª;ûuë−ë S¸P÷ÙÀPQÿvè◰â◰Ä⇧^ÑãŴ•8n[+û–_^⇧å]Ãé5ÿU⇧ìVW⇧v⇧~
  38955. 9tu ◰~Ŵÿÿv¸ÿÿé¤◰>‹ouŴþmuÇ‹oë◰>‘ou ŴþöluÇ‘o◰<t¸P3ÀPPVèµø◰Ä÷DtÿtèSïY◰dóÇD⇧Æ⇨D⇨D
  38956. ◰~t> ÿv:ÇðljU◰~uWèóïY⇨F Àuéwÿ◰Lëénÿ⇧F⇨D
  38957. ⇨D⇨|◰~u◰L3À_^]ÃU⇧ìVW⇧v⇧~ öt$WèÂY;FrÿvWVèÎ◰Ä⇧^ÆëWVèŵYY_^]ÂU⇧ì◰ìV⇧v€|ÿ.uNN⇧Þ⇩—⇨Fþ¹» Q.⇧;Fþt◰Ãâóë.ÿg€|þu¸ë3À^⇧å]Â/:\ýPýP÷PýPU⇧ì◰ìVVWÇFþ◰~t⇧^Æ◰~t⇧^Æ◰~
  38958. t⇧^
  38959. Æ◰~ t⇧^ Æ™vªëÿF⇧^€? tõSèôY⇧ø=P~¿PÆFWÿvVè÷◰Ä÷Æ3ÿN⇧Þ⇩—⇨Fü¹»sR.⇧;Füt◰Ãâóëâ.ÿg ÿu €|uVèÿ⇧ø ÿuÊ÷FþuÃ◰Nþÿv V¸Pè²þÆ믙F¬;Æu¨ ÿtF⇧Þ€?t◰NþÿvV¸APè⇧þÆNëG ÿu◰GF⇧Þ€?t◰Nþÿv
  38960. V¸PèiþÆN€<t"€<:téZÿ™F¬;ÆtéPÿë ÿtéGÿ◰Nþé@ÿ€<:u€~«t◰Nþÿv™F«P¸Pè!þ⇧Fþ_^⇧å]Ã*./:?\åQ?R¯QRÞQ?RRU⇧ìÿv ÿv
  38961. ÿvÿvÿvèwþ◰Ä
  38962. ]ÃU⇧ìVW⇧~⇧vWÿvÿ4è?÷◰Ä<⇧Æ⇧Ç_^]ÂU⇧ì⇧^Ƹ©RP™FPÿv™FPèá]ÃU⇧ì⇧^Ƹ©RP™FPÿvÿvèÿà]ÃU⇧ìVü⇧v⇩^÷Æt    ¬:Ãt"Àt­:Ãt"Àt:ãt"äuï3ÀëF™Dþ^]ÃU⇧ìVWü⇧~⇧÷2À¹ÿÿò®÷Ñ⇧~ó¤⇧F_^]ÃU⇧ìW…؉À⇧~3Àü¹ÿÿò®’÷ÐH_]ÃU⇧ìVW…؉Àü⇧~⇧÷2À⇧^⇧Ëò®+Ù⇧~Ëó¤⇧Ëóª⇧F_^]ÃU⇧ìVW⇧~ë⇧vë ⇩:u⇧ÇëF€<uðG€=uå3À_^]ÃU⇧ìV⇧vVè☓ÿY@⇧Ð⇧ÎÊëI⇧Ù⇩:Fu⇧ÁëJ Òuí3À^]ÃU⇧ì¸eMPÿvÿvÿvèôß]ÃU⇧ì¸eMP¸mPÿvÿvèÞß]ÃU⇧ìŴì⇦VW⇧~⇧v;>6nr
  38963. ¸PèîÜéß⇧F@=s3ÀéÑ⇧ßÑã÷8nt¸P3ÀPPWè»Ý◰Ä⇧ßÑã÷8n@uÿvVWè¨◰Äé†⇧ßÑãŴ§8nÿý⇨vú⇧F⇨FþëMÿNþ⇧^úÿFú⇩⇦Fý<
  38964. uÆF⇩Fý⇦F™ŷxÿ⇧Ö+ÐŴú€|'+ðVPWè[◰Ä⇧Ð;Æt◰úÿu¸ÿÿë=⇧F+Fþë1™¶xÿ◰~þu©™ŷxÿ+ð⇧Æ Àv!V™ŷxÿPWè ◰Ä⇧Ð;Æt◰úÿtÅ⇧FÂ+Æë⇧F_^⇧å]ÃU⇧ì⇧^Ñã÷8nt¸Pë´@⇧^⇧N⇧VÍ!rP⇧^ÑãŴ•8nXëPèÎÛ]Ãé¿þVW¿¾ölë÷DtVèUñYO◰Æ ÿuì_^ÃBorland C++ - Copyright 1991 Borland Intl.Divide error
  38965. Abnormal program termination
  38966. ðoðoUnexpected message receivedFailed to connectFailed to start editFailed to poll edit statusFailed to open SaveAs window|/-\.:%s%s                                                                                %c
  38967. %s: Abort, Retry%s, Cancel%s (Y/N)?ÿÿ?#&@%$^.\/#?+=;<>/.\Failed to allocate memory (%s)
  38968. Unable to convert date stamp for file '%s'Unable to open destination file '%s' (%s)Error reading from file '%s'Error writing to file '%s' (%s)Unable to write filename for RISC OS (%s)Unable to convert extension '%s' to filetype (%s)Unable to set filetype &%x (%s)Unable to open source file '%s' (%s)Unable to read date stamp for file '%s' (%s)Unable to open destination file '%s'Error reading from file '%s' (%s)Error writing to file '%s'Unable to generate temporary filename (%s)Unable to write directory name for RISC OS (%s)Unable to create directory '%s' (%s)Communications with ARM are already in useCommunications with ARM are not workingThe required ARM service is unknownThe requested ARM memory does not existUnable to perform DOSMap conversionUnable to claim required ARM memoryUnable to release ARM memoryUnable to open RISC OS fileUnable to close RISC OS fileUnable to read from RISC OS fileUnable to write to RISC OS fileUnable to register as a communications clientUnable to deregister as a communications clientUnable to transmit messageThere is no message to receive%s.%sUnable to choose a temporary filename (%s)
  38969. %s
  38970. Unable to start SaveAs (%s)
  38971. %s\*.*PUTFILE 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38972. PUTFILE [/?] [/M] [/P] [/S] [/W] source [destination]
  38973. PUTFILE 1.03 (21 February 1997) (c) A.Thoukydides, 1995, 1996, 1997
  38974.  
  38975. Copy files from DOS to RISC OS.
  38976.  
  38977. PUTFILE [/?] [/M] [/P] [/S] [/W] source [destination]
  38978.  
  38979.   /?             Display this help text.
  38980.   /M             Enable multitasking while copying.
  38981.   /P             Prompts before copying each file.
  38982.   /S             Copy subdirectories.
  38983.   /W             Disable use of the "Save as" window.
  38984.   source         The wildcarded path of the DOS files to copy.
  38985.   destination    The path of the RISC OS files to write.
  38986.  
  38987. The "Save as" window requires !ARMEdit to be running.
  38988. Unrecognised switch '%s'
  38989. No filenames specified
  38990. Too many filenames specified
  38991. No matching files
  38992. Unable to connect to !ARMEdit (%s)
  38993.          !!!!!                  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ a0a0a0    öl
  38994. mmC&mB6m```  @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ#ÿÿ(null)    
  38995. 
  38996.   COMPAQprint scanf : floating point formats not linked
  38997. â<ç<ç<ç<â2ë;8EWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickHunterGýÿÿ—zØàYRobertsGýÿÿ‰ØàeHunterGýÿÿ—zØàYRobertsGýÿÿ‰ØàeAssemblerAssemblerNickvWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!ASMGýÿÿœzØàZDemoGýÿÿEØà_DocsGýÿÿø™ØàcReadMeFÿÿÿìâР   Y!ASMGýÿÿœzØàZDemoGýÿÿEØà_DocsGýÿÿø™ØàcReadMeFÿÿÿìâР   YXHunterHunterNick…!ASM
  38998. ----
  38999.  
  39000. Compatable with all ARM-powered Acorn machines as of 23 June... I hope.
  39001.  
  39002. This is a SHAREWARE assembler: you may try this version, but if you find it
  39003. useful and wish to go on using it, you must register. The registered
  39004. version is well worth while anyway, as it contains several useful
  39005. extensions, a reference guide, documenting all the supported instructions
  39006. and preprocessor operations. Registration costs £10 and details can be
  39007. found in the 'Docs' directory.
  39008.  
  39009. !ASM is fully RISC PC compatable, and requires RISC OS 3.1 or greater to
  39010. operate properly (actually, there is no reason why it shouldn't work on
  39011. RISC OS 2, but I don't have access to a suitably equipped computer to test
  39012. it on).
  39013.  
  39014. From the same stable
  39015. --------------------
  39016.  
  39017. Also written by me is:
  39018.  
  39019. Hiper help - excellent (well, I may be biased...) hypertext help system.
  39020.              Styled around windoze help, it sports a freeform layout
  39021.              language, support for 'HotSpot' files, and an 'ergonomic'
  39022.              interface.
  39023.  
  39024. !QTM - A tracker player with a 'metallic' 3D front end. Configurable
  39025.        toolbars, play histories, several different monitors, the usual
  39026.        information windows, a playlist window and the ability to convert
  39027.        tunes from archi-tracker format to protracker (the format used by
  39028.        QTM)
  39029.  
  39030. Libstore 2 - a powerful library system which comes complete with a very
  39031.              easy-to-use WIMP library collection.
  39032.  
  39033. !Bin - A desktop dustbin with a low memory requirement and a twist. Aside
  39034.        from the sound effects, it can be dragged right off the iconbar and
  39035.        on to the backdrop.
  39036.  
  39037. !Setup - A completely configurable program setup utility. Designed to allow
  39038.          you to quickly create self-installing software.
  39039.          
  39040. All my programs are available from Arcade BBS.
  39041.  
  39042. Why program in ARM assembler?
  39043. -----------------------------
  39044.  
  39045. Apart from being the only way to program anything impressive, ARM assembler
  39046. is a much nicer way to program than any other form of assembler, and as the
  39047. instructions are so simple, it is relatively easy to understand what is going
  39048. on, once you know what the various codes represent.
  39049.  
  39050. If you don't know how to program in ARM assembler already, then learn! Hours of
  39051. fun crashing your machine in assorted frustrating ways. Discover why programmers
  39052. always bypass their boot files, and finally, experience the elation of finally
  39053. getting the damn thing to print 'Hello world'.
  39054.  
  39055. Then do it again, only this time with a texture mapped, 3D, rotating, 50fps
  39056. logo...
  39057. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      Nick!GoFëÿÿ‘×ßÒ.Z!HelpFÿÿÿÑÖÄÞê Z!RunFëÿÿ5óÒ‡Z!RunImageFûÿÿ;ìâ÷([!SpritesFùÿÿlßmÙàZ!Sprites22Fùÿÿ…HnÙÜZASMFøÿÿ\BÆÞ¸Î\MenuUtilsDúÿÿØ¿tÀ]OptionsGýÿÿÏzØà^TemplatesFìÿÿäñÆÞQ    Z!GoFëÿÿ‘×ßÒ.Z!HelpFÿÿÿÑÖÄÞê Z!RunFëÿÿ5óÒ‡Z!RunImageFûÿÿ;ìâ÷([!SpritesFùÿÿlßmÙàZ!Sprites22Fùÿÿ…HnÙÜZASMFøÿÿ\BÆÞ¸Î\MenuUtilsDúÿÿØ¿tÀ]OptionsGýÿÿÏzØà^TemplatesFìÿÿäñÆÞQ    ZY!ASM!ASM NickaWimpSlot -min 64k -max 128k
  39058. <ASM$Dir>.ASM %*0
  39059.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ASM v1.00
  39060. ---------
  39061.  
  39062. Welcome to the SHAREWARE version of !ASM. This version is limited in
  39063. several ways - the most notable being that you may only define 10 macros,
  39064. the maximum total length of source code is 4000 lines and there is no
  39065. support for the floating point instructions.
  39066.  
  39067. The registered version has no such restrictions, plus a comprehensive
  39068. reference manual, a Zap editing mode designed specifically for !ASM and
  39069. will be slightly more up to date than any shareware distribution.
  39070.  
  39071. License & disclaimer
  39072. --------------------
  39073.  
  39074. By running !ASM or any companion program, you indicate that you agree to be
  39075. bound by these conditions. If you cannot agree, you must delete the
  39076. software from your system.
  39077.  
  39078. The software (!ASM and all associated files, including this one) is 
  39079. SHAREWARE. This means that if you intend to use it for an extended period,
  39080. or to produce work for public release, you should register it. Registration
  39081. costs £10, and can be achieved by sending a cheque or postal order to:
  39082.  
  39083. Andrew Hunter,
  39084. 18 Warren Close,
  39085. Elmswell,
  39086. Bury St. Edmunds,
  39087. Suffolk,
  39088. IP30 9DS
  39089.  
  39090. For your money, you will get the latest version, and will be informed of
  39091. any major updates when they become available (to which you can upgrade
  39092. by sending your orignal disc and and SAE). The registered version has
  39093. numerous extensions and is well worth while.
  39094.  
  39095. YOU MAY NOT DISTRIBUTE ANY WORK ASSEMBLED ON THE SHAREWARE VERSION OF !ASM.
  39096. THIS INCLUDES PUBLIC DOMAIN DISTRIBUTION AS WELL AS COMMERCIAL
  39097. DISTRIBUTION. You may, however, freely distribute work created on the
  39098. registered version of !ASM by any means you please.
  39099.  
  39100. The author (of !ASM) cannot accept responsibility for the mis-function of
  39101. any software created using it. This is obviously the concern of the author
  39102. of that software.
  39103.  
  39104. !ASM is Copyright © Andrew Hunter, 1996. However, you may distribute this
  39105. ShareWare version so long as you ensure that all files remain intact and
  39106. unaltered. If you suspect that your version has been tampered with, you
  39107. can obtain a genuine copy by sending a blank disc with SAE to the address
  39108. above. Any distributed version MUST have this file.
  39109.  
  39110. You may not disassemble, reverse engineer or alter any of the programs
  39111. contained within the !ASM directory at any time.
  39112.  
  39113. This ShareWare version may not be sold as part of any commercial package,
  39114. although PD libraries MAY distribute it so long as they comply with these
  39115. conditions, and do not charge above a reasonable price for their 
  39116. distribution (say, 3 pounds sterling).
  39117.  
  39118. The registered version MUST NOT be distributed. You are permitted to make
  39119. backup copies for your personal use, but it MAY NOT be installed on more
  39120. than one machine at any one time.
  39121.  
  39122. The author (Andrew Hunter) CANNOT accept responsibility for any damage 
  39123. caused by your use/inability to use the software. You use the software
  39124. entirely at your own risk. (That said, I doubt it could cause much damage).
  39125.  
  39126. Extra conditions may be imposed upon your use in the start-up banner that
  39127. the assembler produces.
  39128.  
  39129. Contacting me
  39130. -------------
  39131.  
  39132. I can be found at:
  39133.  
  39134. Snail-Mail
  39135.   18 Warren Close
  39136.   Elmswell
  39137.   Bury St Edmunds
  39138.   Suffolk
  39139.   IP30 9DS
  39140.  
  39141. E-Mail
  39142.   On Arcade as 'Ahunter'
  39143.   Internet-style at 'ahunter@spuddy.mew.co.uk'
  39144.  
  39145. Finally, I've included the source code for a VU-Bar program
  39146. I'm working on, so you can see !ASM in action...
  39147.  
  39148. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Set ASM$Dir <Obey$Dir>
  39149.  
  39150. RMEnsure MenuUtils 0.12 RMLOAD <Obey$Dir>.MenuUtils
  39151.  
  39152. IconSprites <Obey$Dir>.!Sprites
  39153. WimpSlot -min 64k -max 64k
  39154. <Obey$Dir>.!RunImage
  39155.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!asm,€ Â!Â!Â!Â!ÀÁ` QQQ233333333333D!3CUUUUUUUUUUUv33BU33%3S25RUUv#CU2$4SRSQUUv3BUS55USSUSUUv#!3CE#C#2$BTUUUv3CUUUUUUUUUUUvÀ!33E#"24244CUUv33CUUUUUUUUUUUv#ÁBUUUUUUUUUUUv!33UUUUUUUUUUUv#3CUUUUUUUUUUUv3avvvfgvvvvvvFÀQ`P` !!!ððððÿÿÿððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððÿÿÿððððÿÿÿfile_725¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿwwwwwwwwwwwwwwwwwwwwwwww $$$$$$$4ww!BUTEUTUUuwwB544DCCUuww,BEETTTUUuwwBED4DDUUuww3E3DDDDUuwwCUUUUUUUuww!2UUUUUUUuwwBffffffffwwwwwwwwwwwwwwwwwwwwwwwwWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     à|!asm!,Ô!!!!1111QQQQaaaa133333333333CDDDDDDDDDDDv2eCUUUUUUUUUUUvV#CUUUUUUUUUUUvCU%R%"URURUUv2eCUR%%UR"%RUUvV#CU""%"URRRUUvCUR%%URRURUUv2eCUR%%URRURUUvV#CUUUUUUUUUUUvCUUUUUUUUUUUv2eC52 0SUUUvV#CUUUUUUUUUUUvCUUUUUUUUUUUv2eC5 # ##2UUvV#CUUUUUUUUUUUvCUUUUUUUUUUUv2eCUUUUUUUUUUUvV#CUUUUUUUUUUUvCUUUUUUUUUUUv2eCUUUUUUUUUUUvV#CUUUUUUUUUUUvCUUUUUUUUUUUv2eCUUUUUUUUUUUvV#CfffffffffffvqwwwwwwwwwwwaaaaQQQQ1111!!!!ððððÿÿÿððððÿÿÿððððÿÿÿððððÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððÿÿÿððððÿÿÿððððÿÿÿððððÿÿÿTfile_725!¬¬ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwÀww1CDCDCDCTww2CUUUUUUUu$wwAUC4TTDUuww2C544D2CUu$wwA544DSDUuww2C5ETDTDUu$wwAUUUUUUUuww1452"3BUUu$wwAUUUUUUUuww245"2#4CUu$wwAUUUUUUUuww14UUUUUUUu$wwAUUUUUUUuww2CUUUUUUUu$wwAUUUUUUUuww2CUVUVeUeu$wwLwvwvgwgGwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ¤4StartØiOutputA<Progress}ÃInfo@ÒSave?ShareWareÚ àÿÿÿÿ $þÿÿF='Assemblere
  39156.  ‘þÿÿ(Øÿÿÿ—−8¸ÿÿÿ°ìÿÿÿ9†ÿÿÿÿ Ðpÿÿÿ´ÿÿÿ5ó¢£ÿ,|ÿÿÿШÿÿÿFilename:88ÿÿÿdÿÿÿ±¦°8ÿÿÿh4ÿÿÿ±¾É8Øþÿÿhÿÿÿ±×ê8¨þÿÿhÔþÿÿ±ø\8þÿÿ(|þÿÿ=A
  39157. 88ÿÿÿdÿÿÿ±&R4InputR7ThrowbackSoptoff,optonAIF FormatSoptoff,optonUse default headerSoptoff,optonAuto SaveSoptoff,optonAssemble!R6,2Smile!Soptoff,optontÈfhÿÿÿÿÿ hüÿÿÔ='XÿÿÿÿAssembler outputp²\ÿÿÿÿ ¼þÿÿB=Progress>e¼ÿÿÿ,ðÿÿÿ=ø €ÿÿÿ,´ÿÿÿ= Dÿÿÿ,xÿÿÿ= ÿÿÿ,<ÿÿÿ=#-Ìþÿÿ,ÿÿÿ=09Read fileR2PreprocessR2MacroProcessR2AssemblerR2FinaliseR2—X
  39158. @ÿÿÿÿ☓ÿÿÿr='Xÿÿÿÿ Äÿÿÿ¨ðÿÿÿName:t ‘ÿÿÿ¨¼ÿÿÿPurpose: \ÿÿÿ¨⇦ÿÿÿAuthor: (ÿÿÿ¨TÿÿÿVersion:¨Àÿÿÿdôÿÿÿ=ky¨…ÿÿÿdÀÿÿÿ=|’ ¨Xÿÿÿd…ÿÿÿ=“ª ¨$ÿÿÿdXÿÿÿ=­À About this programARM AssemblerR2Assemble ARM code...R2© Andrew Hunter, 1996R21.00 (23-May-1996)R2☓æ—†ÿÿÿÿŷJÿÿÿ='Save As...e` ÿÿÿ´ôÿÿÿ?a¸¹TÿÿÿÀ—ÿÿÿ5óÆÇÀTÿÿÿ —ÿÿÿ=1ÊÍR2;sfile_xxxR7OKR6,2öhN°ÿÿÿÿ€ ¸þÿÿX=ShareWaree¸þÿÿX1XYÌÿÿÿPøÿÿÿ1\ÿÿÿÿ ÿÿÿPÌÿÿÿ1wÿÿÿÿ$tÿÿÿP ÿÿÿ1œÿÿÿÿ%HÿÿÿPtÿÿÿ1Àÿÿÿÿ$ÿÿÿPHÿÿÿ1ãÿÿÿÿ$ðþÿÿPÿÿÿ1ÿÿÿÿ$ÄþÿÿPðþÿÿ1%ÿÿÿÿ$R1This program is SHAREWARE!You are using the cut-down version.To register, send £10 to the author.This version has reduced features,missing documents, and, anywaysupporting ShareWare leads to moresoftware of this quality!onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  39159. ô >!RunImageô ASM front endô © Andrew Hunter, 1996(:2#î Ŷ È− "Wimp_CloseDown":ö:ñ fi:à<:F+È− "XOS_CLI","CDIR <Wimp$ScrapDir>.ASM"P z%=³(-’)Z    òinitd    òpollnàx:ŵ
  39160. Ýòinit…"Þ line$(1000):nolines%=0:l$=""„ !òwimp_init("Assembler thing")ª´òreadxysize¾Èòreadtemplates:òbannerÒÜ!block%=-1æblock%!4=0:block%!8=0ðblock%!12=68:block%!16=68úblock%!20=&3002$(block%+24)="!ASM" È− "Wimp_CreateIcon",,block%"'È− "MenuUtil_Initialise",012 ¸ ver%,Fç ver%<012 … Ŷ 1,"This program requires MenuUtils 0.12 or greater"6@0È− "MenuUtil_New",,"Assembler",5 ¸ mainmenu%J&È− "MenuUtil_Add",mainmenu%,"Info"T&È− "MenuUtil_SubMenu",,infohandle%^&È− "MenuUtil_Add",mainmenu%,"Quit"hár:|Ýòwimp_init(name$)ŷ?È− "Wimp_Initialise",200,&4B534154,name$ ¸ ver%,taskhandle%‘Þ block% 4096,tblock% 1024Œá¤:®Ýòopencentral(whandle%)¸!tblock%=whandle%Â%È− "Wimp_GetWindowState",,tblock%ÌÖwidth%=tblock%!12-tblock%!4à height%=tblock%!16-tblock%!8ê@tblock%!16=(ysize%/2)+height%/2:tblock%!8=tblock%!16-height%ô"tblock%!12=(xsize%/2)+width%/2þtblock%!4=tblock%!12-width%tblock%!20=0:tblock%!24=0tblock%!28=-1&!È− "Wimp_OpenWindow",,tblock%0á::DÝòreadxysizeN+È− "OS_ReadModeVariable",-1,4 ¸ ,,xeig%X+È− "OS_ReadModeVariable",-1,5 ¸ ,,yeig%b,È− "OS_ReadModeVariable",-1,11 ¸ ,,xpix%l,È− "OS_ReadModeVariable",-1,12 ¸ ,,ypix%vxsize%=(xpix%+1)<<xeig%€ysize%=(ypix%+1)<<yeig%⇩xpixel%=1<<xeig%“ypixel%=1<<yeig%fiá¨:²Ýòopenwindow(whandle%)¼!block%=whandle%Æ$È− "Wimp_GetWindowState",,block%Ðblock%!28=-1Ú È− "Wimp_OpenWindow",,block%äáî:ø&Ýònewtext(whandle%,ihandle%,text$) ê addr% 'addr%=¤getindptr(whandle%,ihandle%)gç addr%=-1 … Ŷ 1,"Whoops - I just tried to do something stupid - write to a non-indirected icon..." $addr%=text$*(òseticonstate(whandle%,ihandle%,0,0)4á>:H1Ýòseticonstate(whandle%,ihandle%,eor%,clear%)R!tblock%=whandle%\tblock%!4=ihandle%ftblock%!8=eor%ptblock%!12=clear%z#È− "Wimp_SetIconState",,tblock%☓á‰:—"ݤgetindptr(whandle%,ihandle%)¢!tblock%=whandle%¬tblock%!4=ihandle%¶#È− "Wimp_GetIconState",,tblock%À'ç (tblock%!24 € 1<<8) … =tblock%!28Ê=-1Ô:Þ"ݤgetvalptr(whandle%,ihandle%)è!tblock%=whandle%òtblock%!4=ihandle%ü#È− "Wimp_GetIconState",,tblock%'ç (tblock%!24 € 1<<8) … =tblock%!32=-1:$!ݤicontext(whandle%,ihandle%). ê addr%8'addr%=¤getindptr(whandle%,ihandle%)BYç addr%=-1 … Ŷ 1,"Whoops! I just tried to read from a non-indirected icon... Stupid!"L=¤readtext(addr%)V:`(Ýòseticonsel(whandle%,ihandle%,sel%)j!tblock%=whandle%ttblock%!4=ihandle%~(ç sel% tblock%!8=1<<21 ⇧ tblock%!8=0⇦tblock%!12=1<<21‹#È− "Wimp_SetIconState",,tblock%†á¦:°#ݤgeticonsel(whandle%,ihandle%)º!tblock%=whandle%Ätblock%!4=ihandle%Î#È− "Wimp_GetIconState",,tblock%Ø=(tblock%!24 € &200000)<>0â:ìݤreadtext(addr%)öê a$    a$=""
  39161. È” ?addr%>31a$+=½?addr% addr%+=1(Î2=a$<:F
  39162. ÝòpollP quit%=£Zõd$È− "Wimp_Poll",,block% ¸ reason%nxȉ reason% ÊŵÉ 1:… òredraw„É 2:  È− "Wimp_OpenWindow",,block%ªÉ 3:´!È− "Wimp_CloseWindow",,block%¾'ç !block%=savehandle% … òwipeoutputÈÒÉ 6:Ü
  39163. òclickæðÉ 7:òenddragúÉ 9:ç !block%=1 … quit%=¹" É 17,18:,ȉ block%!16 Ê6É 0:quit%=¹@É &400C1:òreadxysizeJÉ 3:T-ç block%!20=starthandle% ☓ block%!20=-2 …^1ònewtext(starthandle%,2,¤readtext(block%+44))hç block%!20=-2 …ròopencentral(starthandle%)|ÍŷÍ‘ŒÉ 2:¤block%!16=4®,È− "Wimp_SendMessage",18,block%,block%!4¸"savefile$=¤readtext(block%+44) òsaveitÌÖô TaskWindow messagesàÉ &808C1:êòupdateoutô$ôVDU4:PRINTFNreadtext(block%+24)þÉ &808C3:òcheckout!tblock%=outputhandle%&%È− "Wimp_GetWindowState",,tblock%0ç (tblock%!32 € 1<<16) …:!È− "Wimp_OpenWindow",,tblock%DÌNòopencentral(outputhandle%)XÍblã q%=0 ¸ 4v!òseticonsel(proghandle%,q%,0)€í⇩Ë“fi˨² ý quit%¼áÆ:ÐÝòreadtemplatesÚÞ iblock% 2048äî1È− "Wimp_OpenTemplate",,"<ASM$Dir>.Templates"øKÈ− "Wimp_LoadTemplate",,block%,iblock%,iblock%+2048,-1,"Start",0 ¸ ,,q% 1È− "Wimp_CreateWindow",,block% ¸ starthandle% GÈ− "Wimp_LoadTemplate",,block%,q%,iblock%+2048,-1,"Output",0 ¸ ,,q%*2È− "Wimp_CreateWindow",,block% ¸ outputhandle%4>IÈ− "Wimp_LoadTemplate",,block%,q%,iblock%+2048,-1,"Progress",0 ¸ ,,q%H0È− "Wimp_CreateWindow",,block% ¸ proghandle%R\EÈ− "Wimp_LoadTemplate",,block%,q%,iblock%+2048,-1,"Info",0 ¸ ,,q%f0È− "Wimp_CreateWindow",,block% ¸ infohandle%pzEÈ− "Wimp_LoadTemplate",,block%,q%,iblock%+2048,-1,"Save",0 ¸ ,,q%☓0È− "Wimp_CreateWindow",,block% ¸ savehandle%‰—JÈ− "Wimp_LoadTemplate",,block%,q%,iblock%+2048,-1,"ShareWare",0 ¸ ,,q%¢1È− "Wimp_CreateWindow",,block% ¸ sharehandle%¬¶È− "Wimp_CloseTemplate"ÀáÊ:Ô ÝòclickÞȉ block%!12 Êè    É -2:òç block%!8=2 …ü$È− "Wimp_GetPointerInfo",,block%    'È− "MenuUtil_Show",mainmenu%,block%    Ì    òopencentral(starthandle%)    $Í    .    8É starthandle%    Bȉ block%!16 Ê    LÉ 8:    V6!block%=starthandle%:È− "Wimp_CloseWindow",,block%    `"ôPROCopenwindow(outputhandle%)    jòopencentral(proghandle%)    t'ònewtext(proghandle%,3,"Assembler")    ~òstarttask    ⇦nolines%=-1    ‹line$()="":l$=""    †Ë    ¦    °É savehandle%:    ºȉ block%!16 Ê    ÄÉ 0:    Î,ç block%!8=64 ☓ block%!8=16 … òstartdrag    Ø    âÉ 2:    ì&savefile$=¤icontext(savehandle%,1)    öç §savefile$,".")<=0 …
  39164. !tblock%=1
  39165.  
  39166. B$(tblock%+4)="To save, drag the icon to a directory viewer"+½0
  39167. 1È− "Wimp_ReportError",tblock%,%10,"Assembler"
  39168. á
  39169. (Í
  39170. 2 òsaveit
  39171. <
  39172. FË
  39173. P
  39174. ZË
  39175. dá
  39176. n:
  39177. xÝòstarttask
  39178. ŵt$=Ã~taskhandle%
  39179. …ç ©(t$)<8 …
  39180. „t$=Ä8-©(t$),"0")+t$
  39181.  Í
  39182. ªoutname$="a"+Ã~³
  39183. ´Kparam$=¤icontext(starthandle%,2)+" <Wimp$ScrapDir>.ASM."+outname$+" -n"
  39184. ¾-ç ¤geticonsel(starthandle%,4) param$+="t"
  39185. È-ç ¤geticonsel(starthandle%,5) param$+="a"
  39186. Ò-ç ¤geticonsel(starthandle%,6) param$+="D"
  39187. Ü-ç ¤geticonsel(starthandle%,9) param$+="s"
  39188. æotask$="TaskWindow ""<ASM$Dir>.!Go "+param$+""" -task &"+t$+" -txt &00000001 -quit -name ""Assembler task"""
  39189. ðÈ− "Wimp_StartTask",task$
  39190. ú0startdir$=¤getdir(¤icontext(starthandle%,2)) quicksave$="" á : " Ýòredraw ,ôSYS "Hourglass_On" 6*È− "Wimp_RedrawWindow",,block% ¸ more% @wh%=!block% JxO%=block%!4-block%!20 TyO%=block%!16-block%!24 ^ È” more% hminx%=block%!28-xO% rminy%=block%!32-yO% |maxx%=block%!36-xO% ŷmaxy%=block%!40-yO% ‘ Œòredrawoutput ¤ ®*È− "Wimp_GetRectangle",,block% ¸ more% ¸Î ÂôSYS "Hourglass_Off" Ìá Ö: àÝòredrawoutput êÈ− "Wimp_SetColour",7 ô)ã line%=“(maxy%/32)-1 ¸ “(miny%/32)+1 þì xO%+16,yO%-line%*32 ç line%>=0 … ñ line$(line%) í á &: 0Ýòupdateout :)data%=block%!20:rd%=£:oline%=nolines% D Nã x%=24 ¸ data%+23 Xchr%=block%?x% bç chr%=0 … x%=data%+24 lç chr%>31 … l$+=½chr% vç chr%=8 … l$=Àl$) €ç chr%=10 … ⇩nolines%+=1 “line$(nolines%)=l$ fi ¨ ȉ l$ Ê ²É "Reading input data...": ¼ òseticonsel(proghandle%,0,1) ÆÉ "Preprocessing...": Рòseticonsel(proghandle%,0,0) Ú òseticonsel(proghandle%,1,1) äÉ "MacroScanning...": î òseticonsel(proghandle%,1,0) ø òseticonsel(proghandle%,2,1)É "Assembling...":  òseticonsel(proghandle%,2,0) òseticonsel(proghandle%,3,1) ònewtext(proghandle%,3,l$)*É "Success!","Failure!":4!tblock%=outputhandle%>%È− "Wimp_GetWindowState",,tblock%Hç (tblock%!32 € 1<<16) …R!È− "Wimp_OpenWindow",,tblock%\Ìfòopencentral(outputhandle%)pÍz òseticonsel(proghandle%,3,0)☓ òseticonsel(proghandle%,4,1)‰É "That's it!"— òseticonsel(proghandle%,3,0)¢ òseticonsel(proghandle%,4,0)¬˶Àȉ Àl$,4) ÊÊÉ "Pass":Ôònewtext(proghandle%,3,l$)ÞÉ "Erro","Warn","Fata":è!tblock%=outputhandle%ò%È− "Wimp_GetWindowState",,tblock%üç (tblock%!32 € 1<<16) …!È− "Wimp_OpenWindow",,tblock%Ìòopencentral(outputhandle%)$Í.É "Defa":8#ç Àl$,17)="Default filename:" …B1ònewtext(savehandle%,1,startdir$+"."+Ál$,19))L$quicksave$=startdir$+"."+Ál$,19)VÍ`Ëjt    l$=""~    rd%=¹⇦͋톦 ç rd% …°MÈ− "Wimp_ForceRedraw",outputhandle%,0,-(nolines%*32+32),1280,-(oline%*32)º(!block%=0:block%!4=-(nolines%*32+32)Äblock%!8=1280:block%!12=16Î#ç block%!4>-768 … block%!4=-768Ø,È− "Wimp_SetExtent",outputhandle%,block%âì!block%=outputhandle%ö$È− "Wimp_GetWindowState",,block%ç (block%!32 € 1<<16) …
  39191. block%!24=-(nolines%*32+32) È− "Wimp_OpenWindow",,block%Í(Í2á<:FÝòcheckoutP)O%=‰("<Wimp$ScrapDir>.ASM."+outname$)Zç O%=0 … ádÙ#O%nxCÈ− "XOS_File",17,"<Wimp$ScrapDir>.ASM."+outname$ ¸ ,,load%;flg%ŵfiletype%=(load%>>8) € &FFF…„ q%=¤getvalptr(savehandle%,0) a$=Ã~filetype%ª#ç ©(a$)<3 … a$=Ä3-©(a$),"0")+a$´$(q%)="R2;sfile_"+a$¾
  39192. ft$=a$ÈÒòopencentral(savehandle%)ÜQç ¤geticonsel(starthandle%,7) € quicksave$<>"" … savefile$=quicksave$:òsaveitæáð:úÝòwipeoutputHÈ− "Wimp_StartTask","Wipe <Wimp$ScrapDir>.ASM."+outname$+" ~C~F~V~R"á:"Ýòstartdrag,savetype%=filetype%6-!tblock%=!block%-55:tblock%!4=block%!4-34@0tblock%!8=block%!0+55:tblock%!12=block%!4+34J3È− "DragASprite_Start",&5,1,"file_"+ft$,tblock%Tá^:hÝòenddragrÈ− "DragASprite_Stop"|%È− "Wimp_GetPointerInfo",,tblock%ŷ&!block%=64:block%!12=0:block%!16=1‘-block%!20=tblock%!12:block%!24=tblock%!16Œ+block%!28=tblock%!0:block%!32=tblock%!4¤$block%!36=-1:block%!40=savetype%®¸4$(block%+44)=¤leafname(¤icontext(savehandle%,1))Â7È− "Wimp_SendMessage",18,block%,block%!20,block%!24ÌáÖ:àݤleafname(str$)ê ê text$ôtext$=str$þÈ” §text$,".")text$=Átext$,§text$,".")+1)Î
  39193. =text$&:0 Ýòsaveit:cÈ− "Wimp_StartTask","Copy <Wimp$ScrapDir>.ASM."+outname$+" "+savefile$+" ~A~CDFL~N~P~Q~R~S~T~V"D!block%=proghandle%N%ònewtext(savehandle%,1,savefile$)X!È− "Wimp_CloseWindow",,block%b!block%=savehandle%l!È− "Wimp_CloseWindow",,block%vá€:⇩ݤgetdir(fn$)“ dirn$=""fiÈ” §fn$,".")>0¨dirn$+=Àfn$,§fn$,"."))²fn$=Áfn$,§fn$,".")+1)¼ÎÆdirn$=Àdirn$)Ð
  39194. =dirn$Ú:ä Ýòbannerîòopencentral(sharehandle%)ø$È− "OS_ReadMonotonicTime" ¸ now%then%=now%+500 õ$È− "Wimp_Poll",,block% ¸ reason% $È− "OS_ReadMonotonicTime" ¸ now%*ý reason%=6 ☓ now%>then%4!block%=sharehandle%>"È− "Wimp_DeleteWindow",,block%Háÿorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      á áëFëïEasyC ARM Linker  2.20¸N4] Oâ ’è0Sàð°Ñ ãŵä0SâüÿÿÊð°áÿ_-éÿflýèÿ_-éÿflýèð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãð ãï  á¤flå0àã@ ãPà㆕â“`flåVãj `„Fe áh áŴ
  39195. ïjh áVã@ ¡—•¢0 £ÿÿª4•â‘ä:AâQâaR•B+ï‘€Shared C library not loaded’€Shared C library is out of date4]€€@ŴÐNìQ@Ŵ$☓ìQ4]ÿÿÿÿ€€ø‰ •4]¤9¸NC¼ÿÿêDflåå€à ãÀä@-é™â,flå’éÿÿë$flåPã•€ýè@-éÊþÿë@½èflåÿÿêåOø‰XÈçÿÿêÀ áØ-é°Lâ
  39196. ]áëþÿ»ÐMâ  áÀKâ  á€ ãëÀåÿÀ â‡å á…á¨[éÀ áØ-é°Lâ
  39197. ]áÚþÿ»@ á á     ãh[éÁêÀ á÷Ø-é°Lâ
  39198. ]áÐþÿ»@ á` áp á(ÐMâÀ áp…åÀ„å áÀ€åÀ“å áÀ€å á ã­ëP áÀ áÀ†åÀŷåÀ áÀ†åÀ☓å áð¨[éÀ áwØ-é°Lâ
  39199. ]á³þÿ»@ áP á` á á áÂë  áŶà” ãph[éöêÀ áwØ-é°Lâ
  39200. ]á£þÿ»@ áP á` á á á²ë  áŶà‡ ãph[éæêÀ áØ-é°Lâ
  39201. ]á›þÿ» ãh[éºêÀ áØ-é°Lâ
  39202. ]á⇧þÿ»@ á(ÐMâÀ á@…å á ãpë¨[éÀ áØ-é°Lâ
  39203. ]á~þÿ»  ãh[é¥êÀ áØ-é°Lâ
  39204. ]ávþÿ»@ á á ãh[é£êÀ áØ-é°Lâ
  39205. ]álþÿ»@ áÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-å0 ã  á ã ã…ë¨[éÀ á3Ø-é°Lâ
  39206. ]áTþÿ»@ áP á  á á ã0h[éœêÀ á3Ø-é°Lâ
  39207. ]áHþÿ»@ áP á  á á ã0h[é•êÀ áØ-é°Lâ
  39208. ]á<þÿ»@ á á ãh[é#êÀ á3Ø-é°Lâ
  39209. ]á2þÿ»@ áP á  á áŶ ã0h[éyêÀ áØ-é°Lâ
  39210. ]á&þÿ»@ á á ãh[éêÀ áØ-é°Lâ
  39211. ]áþÿ»@ á á  ãh[éêÀ á3Ø-é°Lâ
  39212. ]áþÿ»@ áP á  á á ã0h[é=êáýÿêÀ á1Ø-é°Lâ
  39213. ]áþÿ»@ áÐMâÿÀâÀ™åÿ\âEÄ áÀ™å ™â áŴ ã$ÿÿëÀ‡åÿ\ãà0¨[    ‡å0¨[éÀ áØ-é°Lâ
  39214. ]áïýÿ»@ á á ãh[éêÀ á3Ø-é°Lâ
  39215. ]áåýÿ»@ áP á  á á ã0h[é,êÀ á3Ø-é°Lâ
  39216. ]áÙýÿ»@ áP á  á á ã0h[é êÀ á3Ø-é°Lâ
  39217. ]áÍýÿ»@ áP á ãóë áë á0h[éêÀ á-éðÙ-é°Lâ
  39218. ]á¾ýÿ»@ áP á`œåp á€ á`-åp-å0 á  á á ãäëð©[éÀ áwØ-é°Lâ
  39219. ]á¬ýÿ»@ áP á` á(ÐMâÀ á`…åÀ áP…åÀ á@…å áE ãëp¨[éÀ á3Ø-é°Lâ
  39220. ]á−ýÿ»@ áP áÐMâÈ áÀ…àÀ™åÀ ãÀ™å á     ãèë@ á‡å0¨[éÀ áØ-é°Lâ
  39221. ]áŷýÿ»ÐMâ ™â áŷ ã«þÿëÀ‡åÿ â¨[éÀ á-éðØ-é°Lâ
  39222. ]áxýÿ»@ áP á` áp á á áŷÿÿë  á ã     ã»ÿÿë  ã á     ã·ÿÿë dâ ã     ã³ÿÿë  ãeâ     ãðh[é®ÿÿêÀ á-éðØ-é°Lâ
  39223. ]áZýÿ»@ áP á` áp á á áhÿÿë  á áa ãðh[é†ÿÿêÀ áØ-é°Lâ
  39224. ]áIýÿ»@°á ±◰ýÿ» ³¨[¹¨[¹~ýÿë á áh[éDýÿêÀ á-éðÙ-é°Lâ
  39225. ]á8ýÿ»P á` áp á€ á(ÐMâÿÀ ãÿÌ…ã Àà áÀ…á áÀ€åÿÀ ãÿÌ…ã Àà áÀ…á áÀ€å áŷ ã €ã€ã ëð©[éÀ á3Ø-é°Lâ
  39226. ]áýÿ»@ áP á  á áŶã0h[éèüÿêÀ á3Ø-é°Lâ
  39227. ]áýÿ»@ áP á  á á á0h[éÜüÿêÀ á3Ø-é°Lâ
  39228. ]áýÿ»@ áP á  á á ã0h[é-êÀ á3Ø-é°Lâ
  39229. ]áöüÿ»@ áP áÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åÀ ãÀ-åàáÀ0 â â ã ãë0¨[éÀ áØ-é°Lâ
  39230. ]áÜüÿ»ÐMâ ™â áŷ ãþÿë‡å¨[éÀ áØ-é°Lâ
  39231. ]áÐüÿ»@ áh[é¥üÿêÀ á-é0Ø-é°Lâ
  39232. ]áÇüÿ»TPflåÐMâœåíÿÿëÀœå\ã@ ÃÊÀœå @ÕçÀ⇧âÀ…âÀ™å@Tâ0¨[    À‡åÀ…âÀ™åÀLâ†åÜÿÿëöÿÿê0¨[é—NÀ áØ-é°Lâ
  39233. ]áªüÿ»@ á€üÿëD áh[é}üÿêÀ á3Ø-é°Lâ
  39234. ]á üÿ»@ áP á(ÐMâÀ áP…åÀ á@…å á ãŵÿÿë0¨[é((Ŷ⇦Ŷ(Ŷ0Ŷ@ŴDŴHŴLŴŴýÿêþ_-é  ã0Ðä@ÑäSá   S㺠Tãöÿÿª áþflýèÀ áñØ-é°Lâ
  39235. ]áxüÿ»DPflåp á` ã@ ã´Â”å Tá    ª á°Â”åÁ†ç†å”üÿëPã°Â”a†@☓âòÿÿê áð¨[é¤9À á1Ø-é°Lâ
  39236. ]á_üÿ»☓@flåP áÞÿÿëPã0¨[´Â“åÀ…â´Â☓å  á°“å”üÿë°☓å  ã’üÿë°Â“å´“åAâ…ç á€üÿë€â⇨üÿë°Â“å´“åAâÁ†ç…å á°Â“å´“å@âÁ†ç†åaüÿë0¨[é¤9À áóÛ-é°Lâ
  39237. ]á6üÿ»ðPflå` áìpflåì€flå‘ á(ÐMâC”åÀ–å\ã@—Vã ª\Ôå\ãð«[    0Ôå\ã
  39238. 0Ôå\ãÚð«[éêêð«[é`Ôå\ãÀ ã`ÃŶåÀ ã áÀ€åØ”å áÀ€å  á á⇦ ã% €ã€ãáûÿëÀ ã áÀ€åØ”å áÀ€åÀ☓â á À€åÀ á`…åÀ á‘…å  á á⇦ ã% €ã€ãÎûÿëð«[é¤9¸N¼NSet TMP$Path TMP$Path set to '%s'
  39239. À ápØ-é°LâÌMâ
  39240. \áçûÿ»⇦PflåÜMâLOâ ™âüÿë@ ã` ãØ”åÀÜç\ã
  39241. Ø”åÀÜç.\ã` @☓âõÿÿê@ ãTáªØ”åÀÜçÀÍç@☓âøÿÿêÀ ãÀÍç á ™âîûÿë ™â5ýÿë áºOâüÿëp¨[é¤9À áðØ-é°Lâ
  39242. ]á¼ûÿ»XPflå(s”å`âð¨[    (”å£ë@ ãTáªÀ ã”å(”åŴàÀÀç@☓âöÿÿê(s”åGÁ á  áÀ€â(ÃŶå  á‹ëð¨[é¤9À áóØ-é°Lâ
  39243. ]áfiûÿ» Pflå` áp áÌ”å\ã ×ûÿ ÌŶ@ À  À☓
  39244.  áë@°á ÌB”å À“å\ã
  39245. @“åúÿÿê ãÆûÿë ☓å@ áÀ ã À☓å áµûÿë€â¾ûÿë☓å á“åfiûÿëp☓åÀ ãÀ☓åÀ ãÀ☓åð¨[é¤9À áñØ-é°Lâ
  39246. ]ánûÿ»` á,qflåP ãÀB–åÀÖå_\ãÄ–å@†åTãÀ ã|Ãå ãð¨[éê|Öå\ãÌB–À“å\ãÀ |Ã ð¨[     À“å\ã
  39247. Uãêê á“åÀþÿëPãP  @“åñÿÿê á“å¹þÿëPãP UãÌB–å|Öå\ãÀB–TãÀ |Ã ð¨[     À“å\ã
  39248. Uãêê á“å¢þÿëPãP  @“åñÿÿê á“åœþÿëPãP À ã|Ãå áð¨[é¤9Can't expand code - out of memory (realloc failed)À áqØ-é°Lâ
  39249. ]áûÿ»\@flåP€â€Ã“å Uáp¨[¹$c“åEÅ á$Ã☓å Å á$Ã☓åË…â$Ã☓å\á$““>ûÿ☓ ☓ Ã“å\ã Oæ $Óå€Ã☓åp¨[é¤9Errors in file '%s':
  39250. ...Warning - line %i - '%s' : %s
  39251. À áóÛ-é°Lâ
  39252. ]áßúÿ»@ŴflådÐMâ☓×åØ—å\á
  39253. Ø—å☓Ã⇦åØ—å\ãØ—☓O)ûÿ›—å ÁflåÀ†å\ãÁflÀ†¼Â⇦ü‘fl‘−(Àå`Lâp ãVã` ÓÚ²Oâ áäúÿëp ãP á
  39254. Àâ U᪼—å@Üçÿ@â
  39255. Tã
  39256. Tã
  39257. êêTã
  39258. êê@ ãÿ@â@ÍçTãdP À áPŶâ`ŷâæÿÿêdUã ª.À ã
  39259. âÀÍç.À ã âÀÍç.À ã âÀÍçÀ ãâÀÍç,0å  á⇨âjOâ @âèúÿë ã,åRþÿëð«[é¤9¸NÀN¼NErrors in file '%s':
  39260. ...Error - line %i - '%s' : %s
  39261. À áóÛ-é°Lâ
  39262. ]ávúÿ»TŴflådÐMâ☓×åØ—å\á
  39263. Ø—å☓Ã⇦åØ—å\ãØ—€OÀúÿ›—å ÁflåÀ†å\ãÁflÀ†¼Â⇦’fl‘−T×åÀ…âTÃ⇦å(Àå`Lâp ãVã` ÓÚºOâ áxúÿëp ãP á
  39264. Àâ U᪼—å@Üçÿ@â
  39265. Tã
  39266. Tã
  39267. êêTã
  39268. êê@ ãÿ@â@ÍçTãdP À áPŶâ`ŷâæÿÿêdUã ª.À ã
  39269. âÀÍç.À ã âÀÍç.À ã âÀÍçÀ ãâÀÍç,0å  á⇨ârOâ @â|úÿëÀ ãàÂ⇦å ã,åäýÿëð«[é¤9¸NÀN¼NErrors in file '%s':
  39270. Fatal - line %i : %s
  39271. À á1Ø-é°Lâ
  39272. ]á úÿ»x@flåP á☓ÓåØ“å\á
  39273. Ø“å☓Ã☓åØ“å\ãØ“tOUúÿTÓåÀ…âTÃ☓å  áÓå…â~OâMúÿëÀ ãÜÂ☓åÀ ãàÂ☓å ã á³ýÿën    ë ã0úÿë0¨[é¤9Invalid expression (mistake)OverflowExpression result is outside domainSWI name not knownNo such labelInternal error - unknown parsing errorÀ á0Ø-é°Lâ
  39274. ]áÀùÿ»⇦@flå⇦PflåÀ”å\ã ñ•‘êêêê
  39275. êê ê0¨[é“åèOâ4ÿÿë0¨[é“åÛOâ0ÿÿë0¨[é“åâOâ,ÿÿë0¨[é“åÎOâ(ÿÿë0¨[é“åËOâ$ÿÿë0¨[éÉOâ…ÿÿë0¨[é¤9lJÀ á÷Ø-é°Lâ
  39276. ]á”ùÿ»P á` áp á@àã@☓â ágùÿëÅçÀÕç
  39277.   ã á ãeùÿëPãêêTáªíÿÿêìÿÿê@☓âÀ ãÀÅçð¨[é>@-éP ã Ðå
  39278. RãRPŶ@ @À€âQâöÿÿ á>€ýèNot enough memory to load source file (malloc failed)Not enough memory to load source file (malloc failed)Not enough memory to load source file (realloc failed)À áñÙ-é°Lâ
  39279. ]á?ùÿ»pafl倠á(ÐMâ á¼üÿëPãð©[ áÑüÿëÀ ãÀ™å€™å áïúÿëp‡åânùÿëP°áBOÿÿ ð©[    ÿÀ ãÀ™å€™åP™åÀ ã À™å áàúÿëÀ ãÀÅçÀàãÐÂŷåÀ…âÐÂŷå á áfiÿÿëÐŷåÀ€â  áUùÿë¸ŷåÀ ãÐÂŷå¸Â„å\ãFO @üþÿ ð©[    ¸Â„åЄåQ…ç@ ãTáªÀÕç\ãÀ ãÀÅçЄåÀ…âÐÂŷå¸Â„å\ãOéþÿ ð©[    À☓â ÀŶคåЄåÁ€çÀÕç;\ãÀ ÀÅ@☓âåÿÿê¸Â„å°„å´„åAâ‘çÀ€åЄå°„å´„åAâ‘çÀ€åð©[é¤9Reading input data...
  39280. À áØ-é°Lâ
  39281. ]áÕøÿ»@flå8Oâ)ùÿëØ“å⇧ÿÿë¨[é¤9Internal error - condition field corrupt!À áñØ-é°Lâ
  39282. ]á¾øÿ»P á—`flåÀÕå \ã
  39283. ÀÕå \ã
  39284. êêàãð¨[épàãÀÕå\ã☓O†þÿ ð¨[@ ãTãÊÀÕådàÖç\á    ÀÕådàŷâÑç\áêêp á@ ã@☓âìÿÿê áð¨[é¤9þ_-é0àãP ã`ÑåpÐåVá`ÑpÐV`ÑpÐV0 
  39285. ŴâPŶâ Râðÿÿ áþflýèSyntax error (invalid shift)Unknown type of shift (syntax error)Syntax error (invalid register)Syntax error (invalid register)À áñØ-é°Lâ
  39286. ]áZøÿ»P áôaflåÐMâ¼Â„å@Üçÿ@â Tã
  39287.     Tã
  39288. êêPŶâ¼Â„å@Üçÿ@âôÿÿêÀ ã<ÃŷåÀ ã@ÃŷåÀ ãDÃŷå Tãð¨[¹;Tãð¨[    êêð¨[é,Tã
  39289.  
  39290. Tã
  39291. êêTã
  39292. ê êTã
  39293. êê;Tã
  39294. êêPŶâ¼Â„å@Üçÿ@âèÿÿê Tãð¨[¹;Tãð¨[    êêð¨[éPŶâ á¼„å£ëP áp ãW㪼„åÜç¶øÿë@ áÿ@â@ÍçTã
  39295.  
  39296. Tã
  39297. êêTã
  39298. êê á}Oâýÿëð¨[éPŶâpâæÿÿêÀ ãÀÍå  ãpŷâ ádÿÿë@ŷåÀ á|ã O @výÿ ð¨[    @Äå\ãÀ @ÃŷÀ <ÃŷÀ DÃŷð¨[     á¼„ånëP á¼Â„å@Üçÿ@âÀ ãDÃŷå#Tã    À ãDÃŷåê¤9PŶâ¼Â„å…à~ ë<ŷåþÿëRTã
  39299. rTã
  39300. êêPŶâ¼Â„å@Üçÿ@âDÄå\ã0Tãº9TãÊêê¼Â„å…àô÷ÿë<ŷåÀ°áº<Äå\ãÊêê áöOâ @â5ýÿëð¨[é<Äå…À á<Ãŷåê áúOâ @â,ýÿëð¨[éSŷåð¨[é¤9Too few argumentsRegister out of rangeUnusual syntax error (bug?)À áóÛ-é°Lâ
  39301. ]á‰÷ÿ»@ áp áÌ‘flåPàã`×çÿ`â á)øÿëRP〠@☓`×ÿ`Vã †Oýÿ àð«[     áøÿëP〠Xã«÷ÿ P 
  39302. à ëP á¨ýÿëàÂ−å\ãàð«[UãºUãÊêê áúOâåüÿëàãð«[éuã üOßüÿ àð«[     áð«[é¤9Too few argumentsImmediate constant can only be at end of argument listRegister out of rangeÀ áñÛ-é°Lâ
  39303. ]á9÷ÿ»°qflå‘ áÐMâC–åÀ ãÃåP ã    UáVÊÀ ã|Ã倠ã á¼–å³ë@ áà–å\ãð«[¼Â–å`Üçÿ`â áÄ÷ÿëRP〠@☓¼Â–`Üÿ`Vã üOœüÿ ð«[     á®÷ÿëP〠#Vã    Uá O @•üÿð«[À ãÃå¼Â–å☓â…à­ëüåCå;ýÿëêXã¼Â–…3÷ÿ ÀE ™
  39304. ¼Â–å…àflëÀEâ ™ç-ýÿëÀEâ ‡çPãºÀEâ ‡çPãÊêê áwOâ @âiüÿëð«[é    U᪠἖åRë@ áà–å\ãð«[PŶâ¦ÿÿêÀ‡åðÂåÀ‡åìÂåÀ‡åøÂå À‡åôÂåCå ánþÿëÀ ã|Ãåð«[é¤9Label not foundÀ áñÙ-é°Lâ
  39305. ]áÁöÿ»<QflåhÐMâC”åÀ ã‡åÀã… á!€á™åÔå‡åÀã… á¡€á™åè”å‡åÀã  á€á™å0Ôå\ãÀ ã‡åÿàãÀá  á!€á™å-ê¼Â”åÀÜç \ã
  39306. ¼Â”åÀÜç    \ã
  39307. êê@☓âóÿÿê` ã¼Â”åÀÜç™âÀÀç`ŷâ@☓â¼Â”åÀÜç \ãõÿÿÊÀ ã™âÀÀç™âûÿëp°á”IOüÿ  ð©[    À–å(”åÀLàÀLâLÁ á‡åÿàãÀá  á!€á™åCŶ倠á—åð©[é¤9À áðÙ-é°Lâ
  39308. ]ájöÿ»‘Pflå‘`flåÐMâC”å á¼”åìë@ áè”å‡åÀã  á€á™åÀ ã‡åÀã  á!€á™åÀ ãÀŷå¼Â”å…àú뀇åÿÄàã €ÈáÄ á,Ä⇦áÀ™åÀ ãÀŷåŵüÿëCŶåp á–åð©[é¤9pJInvalid multiplyR15 cannot be used as destination for multiplyMultiply instructions can't use immediate valuesÀ áqØ-é°Lâ
  39309. ]á öÿ»\Aflå` áÐMâVã
  39310. Vã
  39311. ê ã×þÿëÀ ãôÂ☓åê ãÒþÿëð“åì“å\á ÜO&ûÿ ð“å\ã ßO!ûÿ Óå\ã ÄOŶûÿ  p¨[    è“å‡åÀã  á€á™åÀ ã‡å?Àã  á!€á™åÀ áÆÌãŷ á …á™åÓå‡åÀã… á¡€á™åð“å‡åÀã  á!€á™åø“å‡å Àã  á!€á™å    À ã‡åðÀã  á!€á™åì“å‡åÀã  á!€á™åô“å‡å
  39312. Àã  á!€á™åP á”åp¨[é¤9Internal error: can't assemble a skiplineNo such instructionÀ áðØ-é°Lâ
  39313. ]á±õÿ»ÈQflåà”å\ãhOœûÿàð¨[c”å  ã0Ŷâ¹Ŷâýÿë@ átã
  39314. z!ëà”å\ã ð¨[     áz
  39315. ëð¨[é  ãðŶâ¹Ŷâýÿë@ átã
  39316. k!ëà”å\ã ð¨[     á¡ëð¨[é¹ÏŶâÀÜåB\ã_!ëà”å\ã ð¨[     á¹þÿëð¨[é¹ÏŶâÀÜåS\ã¹ÏŶâÀÜåW\ãê ê¹ÏŶâÀÜåI\ãêêG!ëà”å\ã ð¨[    ùþÿëð¨[é¹ÏŶâÀÜåA\ã¹ÏŶâÀÜåD\ãê ê¹ÏŶâÀÜåR\ãêê0!ëà”å\ã ð¨[    `ëð¨[é  ãŶâ¹Ŷâ¸üÿë@ átã
  39317. "!ëà”å\ã ð¨[     á¸!ëð¨[é  ã°Ŷâ¹Ŷâ©üÿëê¤9@ átã
  39318. !ëà”å\ã ð¨[     á ÿÿëð¨[é  ãŶâ¹Ŷâ—üÿë@ átã 1ð¨[  ãŶâ¹Ŷâ•üÿë@ átã ›ð¨[  ãŶâ¹Ŷâŷüÿë@ átã ¢ð¨[  ã#Ŷâ¹Ŷâ}üÿë@ átã ±ð¨[  ã'Ŷâ¹Ŷâtüÿë@ átã Àð¨[¼”å^ëp°áð¨[ áúOâ @â€úÿë ãð¨[é¤9À á3Ø-é°Lâ
  39319. ]áôôÿ»@ áP áÀÕç \ã
  39320. ÀÕç    \ã
  39321. êê@☓âõÿÿê á0¨[éALIGNTEMPInvalid registertemp_regLOCKtemp_regINCBIN#REPTNot a number!r_togo#ENDRr_togo#IF#ENDIF#ELSE#ELSE#ENDIF#ENDIFMACROSTRUCTSyntax errorInvalid in this contextCan't understand thisREADWRITERead/Write section must start on word boundary#INCLUDE#ERRORÀ áñÛ-é°LâÓÏMâ
  39322. \áœôÿ»øqflåÓßMââ/â(å›™âãëOâ›™âºôÿëPãÍøÿ À àÂfOâAâ›™â²ôÿëPãÀ ãÀ™åâÏâ‡åÜç$õÿëRPãÀ‡À…À™âÏâ‡åÜçõÿëPㇹO @øùÿ âÏâ‡å…à§ôÿë4å ásOâÈøÿëÀ ãàÂåÓOâAâ›™â•ôÿëPãÀà4Ã  îO @»øÿ À àÂùOâAâ›™âŵôÿëPã3À ã À™åâÏâ$À™å ™âöÿë ™å0À‡åÀ™å À‡å\ã  À‡…Ìùÿð«[(ÖåÀ™å(Öå‡åÀ…à(Ãå  á,ùÿë0Öå\ãÚHÖå\ãÊêêÿÀ ã À™åâÏâ$À™åÖå‡åÀ…à(À™åÀ ã,À™å ™âéõÿë ™åÀ°á  À‡…©ùÿÀ ãàÂåÚOâAâ›™âHôÿëPãâÏâÜåê¤9²ôÿëPã ÂO—ùÿ ð«[    ââHôÿë…åÖå⇦Äå…–åOâ @âføÿëÀ ãàÂåð«[é/OâAâ›™â,ôÿëPã…Ä–åÀLâ…Äå  áQOâ @âVøÿë…Ä–å\ã⇦Ä–ÅÃÅÀ ãàÂåð«[érOâAâ›™âôÿëPã,ââ“ë™å#úÿëÀ‡å\ã#¢OâAâ›™â ôÿëPã
  39323. ³OâAâ›™âôÿëPã
  39324. êêÖåЖå\áªê êÖåÀ…âÃå¸Â–å–åÁ†ç(KâÀ€åâ/â(å›™âëÞÿÿêÀ ãàÂåð«[éÀ ãàÂå-OâAâ›™âåóÿëPã?OâAâ›™âßóÿëPã
  39325. ÖåЖå\áªê êÖåÀ…âÃå¸Â–å–åÁ†ç(KâÀ€åâ/â(å›™âñëæÿÿêÀ ãàÂåð«[é¨OâAâ›™âÃóÿëPãÀ àÂð«[    ÁOâAâ›™â»óÿëê¤9P〠ã¼Â–åÀÜç}\ã
  39326. ÖåÀ…âÃå¸Â–å–åÁ†ç¼Â倠ã¼Â–åÀÜç \ã
  39327. ¼Â–åÀÜç    \ã
  39328. êÿÿêéÿÿê€⇦âóÿÿêæÿÿêÀ ãàÂåKOâAâ›™â–óÿëPãÅ` ãâÏâÀÜç \ãÚâÏâÀÜçH™âÀÀç`ŷâõÿÿêÀ ãH™âÀÀçÖåÀ…âÃå¸Â–å–åQ†ç¼Rå ã áZþÿë@ á‘ ãÀÕç}\ã¦
  39329. ÖåЖå\ᢪê êÀÕç.\ãÀ ãÀ™åÀÕç \ãÚÀÕçÈ™â‡åÀÀçÀ‡åÀ…âÀ™å@☓âóÿÿêÀ ãÈ™â‡åÀÀçH™âR™âUóÿëÈ™âR™âTóÿë     áR™â÷ÿëÀÕç\ã
  39330.  á á®ë@ á` ãVãªÀ☓à ÕçÁóÿë‹Ï™âÌç`ŷâöÿÿêÀ ã‹™âÀÀå@☓â  ãâ‹™â}úÿë™åêÀàãê¤9À™åÀÕç \ã ÁèO @Â⇩øÿË@DÂÀÕç\ãM
  39331. À‡å…âPãñ•‘ê êêêêêê ê0ê á/Oâ @âuøÿë;ê á+Oâ @âpøÿë6ê‘⇨â4ê‘⇨â2ê‘⇨â0ê á ákë@ áÀ ãàÂåŶàŷë™åùÿëà–å\ã#À‡å ‘⇨à ê á á[ë@ áÀ ãàÂåŶàvë™åùÿëà–å\ãÀ‡å… á‘⇨àê á áJë@ áÀ ãàÂåŶàeë™åôøÿëà–å\ãÀ‡å  á‘⇨àÖåÀ…âÃå¸Â–å–åQ†ç¼Rå ã á°ýÿë@ áUÿÿêÀ ãàÂå9OâAâ›™âËòÿëPã(ÖåXÃåÀâ WO @øÿÀ ãàÂå<OâAâ›™â¼òÿëPãâ= À àÂWOâAâê¤9›™â±òÿëPãð«[ ãââøÿëÀ ãàÂåð«[é¤9À áñØ-é°Lâ
  39332. ]ázòÿ»l`flåp áÜMâ ã áýëpàÀ×å#\ãpâ/ŷâ á á»ëPàã@ ãT㪠áIÎŷâ☓à€…àØõÿëPãP @☓âôÿÿê áð¨[é¤9þ_-éÐä Qã    Qûÿÿ
  39333.  áþfl½èUnknown preprocessor instructionBase set to &%X
  39334. Grin!
  39335. Default filename: %s
  39336. Bad file typeFile type set to &%x
  39337. #include - %s
  39338. Old-style set statementÀ áóÛ-é°LâAÏMâ
  39339. \á)òÿ»ŵflå‘ áAßMâ@ ã(Àå Táð«[©−çÂÿÿë#Pã Á−ç¼Â⇦åC⇦å¼Â—å  á–ÿÿëp áÀâ    \ã ñ•‘”êêêê!ê(ê@ê‰êBê…ê`ê ãOâ⇨÷ÿë;À ã¼—åÀÀå☓êâ⇦â¨ë8⇦å7øÿë8—åKOâ @âPòÿë;À ã¼—åÀÀåxêÀ ãLÃ⇦å^Oâ @âGòÿë;À ã¼—åÀÀåoêâ⇦âwOâ @â?òÿë;À ã¼—åÀÀågêâ⇦â⇧ëP⇦åøÿëP×å\ãºP×å \âÿP£Êêê ãµOâ @âW÷ÿëP—å·Oâ @â&òÿë;À ã¼—åÀÀåNê;À ã¼—åÀÀåJêâ⇦âGõÿëPãFâ⇦âáOâ @âòÿëâ⇦âxøÿëØ—åÀ™å°Â—å´—å@âÁ†çÀ†åØÂ⇦å°Â—å´—å@âÁ†ç†å°Â—å´—å@âÁ†ç†å{ÿÿëÀ‡åØÂ⇦å*êP ãâÏ⇦âÀÜç \ãÚê¤9âÏ⇦âÀÜç™âÀÀçPŶâóÿÿêÀ ã™âÀÀçâÏ⇦âÀÜç=\ã
  39340. âÏ⇦âŶâÀÜç=\ã
  39341. êê ã®Oâ @â ÷ÿëPŶââÏ⇦â…à-ë` á¼÷ÿë á™âÛõÿë;À ã¼—åÀÀå@☓âUÿÿêð«[é¤9Invalid parametersUsing throwback
  39342. Grin!
  39343. AIF format
  39344. Including debug data (AIF format)
  39345. Rotating line switched off
  39346. Using default header
  39347. LabelScan mode
  39348. Invalid switchÀ áqØ-é°Lâ
  39349. ]áHñÿ»P á$aflåÀÕå-\ãØO1÷ÿp¨[@ ãÀÕç \ãp¨[ÙÀÕçl\ã2
  39350. ÊD\ã)
  39351. a\ã
  39352. d\ã
  39353. /ên\ã
  39354. s\ã
  39355. t\ã)À ã\Ãŷå-Oâ @â~ñÿë&êÀ ãLÃŷåMOâyñÿë!êÀ ãhÃŷåAOâ @âsñÿëêÀ ãpÃŷåÀ ãhÃŷåUOâ @âkñÿëêÀ ãdÃŷåJOâ @âeñÿëêÀ ãtÃŷåFOâ @â_ñÿëêÀ ãxÃŷåROâZñÿëêQOâïöÿëp¨[é@☓â¼ÿÿêp¨[é¤9Adding AIF header...
  39356. À áðØ-é°Lâ
  39357. ]áððÿ»☓aflåÐMâ<OâCñÿë)õÿë@ ã TãªÀ ã „åÁ€ç@☓âøÿÿê S„åÀ ã‡åÀã  á€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÀã… á¡€á™åÀ ã‡åÿàãÀá  á!€á™åp áÀ–åÀŶåÀŶåÀŶåÀ ã‡åÿàãÀá  á!€á™åÀ ã‡åÀã  á€á™åÀ–å ÀŶåÀ ã‡åÀã  á€á™åÀ ã‡åÀã  á!€á™åÀ ã‡åÿàãÀá  á!€á™åp™âÀ–åÀŶåXÄåÀŶå(ÄåX„åÀLàÀŶåÀ ãÀŶåÀ ã ÀŶåÀ ã$ÀŶå€À ãÉ…ã(ÀŶåÀ ã,ÀŶåð¨[é¤9À áØ-é°Lâ
  39358. ]áðÿ»(ÐMâ  á á ã% €ã€ãUðÿë¨[éÀ áØ-é°Lâ
  39359. ]ázðÿ»(@flå(ÐMâ\Óå\ã¨[      á á⇨ ã% €ã€ãDðÿë¨[é¤9Internal error - #include file appears to have materialised from thin airCode is not word aligned|/-\À áñÛ-é°Lâ
  39360. ]áMðÿ»èAflå ÐMâ(åËóÿ뀰á†O5öÿ Ü“å\ã ŷðÿ¸Â“åÀ™åГåÀ™åØ“åÀ™å›“åÀ—å¸Â☓åÀ—åØÂ☓åÀ—åÐÂ☓åÀ ãÃ☓åÓåГå\ácÊÀ ã|Ã☓åS“å¸Â“åÁ†ç¼Â☓åÀ ãàÂ☓å¸Â“å†çèëÜ“å\ã¡ÿÿ  cðÿ à“å\ãeúÿ p Ü“å\ã [ðÿ à“å\ã(ÓåÀâ .O @)õÿKôÿ(“åøôÿë Ã“å(“å@ áq…ç(ÓåÀ…â(Ã☓åpÓå\ãHÓå\ãªêê«ëÀâ)dÓå\ã&ê$ê`ŷâVã` ÃVã
  39361. Vã
  39362. Vã
  39363. Vã
  39364. ê¹Oâ @â<ðÿë ã»ïÿëêÏOâ @â6ðÿë ãµïÿë êåOâ @â0ðÿë ã¯ïÿëêûOâ @â*ðÿë ãê¤9§ïÿëÓåÀ…âÃ☓å–ÿÿêÀ‡å¸Â☓åÀ‡åÐÂ☓åÀ‡åØÂ☓å›☓åð«[é¤9%s%s : &%x
  39365. %s%s : %i
  39366. %s%s : &%x
  39367. %s%s : %i
  39368. À áóØ-é°Lâ
  39369. ]á±ïÿ»@ á` áÜpflå4ÐMâTãð¨[    P ãU᪠À ãÀÍçPŶâùÿÿêÀ ãÀÍç À“å\ã
  39370. À“å\ã
  39371. À“å8–å0…à “å á´Oâìïÿëê0“å “å áÀOâæïÿëÀ“å\ãŷ“Óÿÿ @“ååÿÿêÀ“å\ã
  39372. À“å8–å0…à “å áùOâÕïÿëð¨[é0“å “å áOâ @âÎïÿëð¨[é¤9ASM v1.00
  39373.  
  39374. © Andrew Hunter, 1996
  39375. SHAREWARE version. Limited functionality. Please register!
  39376. Initialising...
  39377. Insufficient arguments
  39378. No of lines: %i
  39379.  
  39380. Preprocessing...
  39381.   (Default header)
  39382. <ASM$Dir>.Options.DefHeader  (Code files)
  39383. Total lines: %i
  39384. SHAREWARE version cannot accept files of >4000 linesCan't assemble - preprocessor did not successfully completeBase address : &%x
  39385. temp_reg
  39386. MacroScanning...
  39387. No of macros: %i
  39388. SHAREWARE version cannot accept >10 macros
  39389. Assembling...
  39390. Pass %0.2i
  39391. -------
  39392.  
  39393. <ASM$Dir>.Options.DefHeader 
  39394. Lines/second %i
  39395. Code size: %i
  39396. This file was created by the SHAREWARE version of !ASM - it is not for public distributionThis file was created by the SHAREWARE version of !ASM - it is not for public distribution
  39397. Success!
  39398.  
  39399.   ####     ####
  39400.  #    #   #    #
  39401.  # ## #   # ## #
  39402.  #    # # #    #
  39403.   ####  #  ####
  39404.          #
  39405.           #
  39406.    #   ####   #
  39407.     ##      ##
  39408.       ######
  39409.  
  39410. Failure!
  39411.  
  39412.  #####       #####
  39413. #  ####     ####  #
  39414.   #    #   #    #
  39415.   #  ###   ###  #
  39416.   #    # # #    #
  39417.    ####  #  ####
  39418.           #
  39419.            #
  39420.         ####
  39421.        ######
  39422.     ###      ###
  39423.  
  39424. Saving...
  39425. IDEFS::4.$.MoreProgs.!ASM.KefDump of labels used:
  39426.   Internal labels:
  39427.   Code labels:
  39428. That's it!
  39429. À áóÛ-é°Lâ
  39430. ]á8îÿ»Bflå‹flåTÐMâÀ ã0Ã☓å,Ã☓å(Ã☓å$Ã☓åàÂ☓åÜÂ☓åÀàã4Ã☓åÉ ã8Ã☓å4Oâ @â~îÿëOâ @â{îÿëîOâ @âxîÿëÀ ãÈÂ☓å ã]îÿëÀ☓åÀ ãÀ“åÀ€åÀ ãÀ“å À€åÀ ãÀ“åÀ€åÀ ãÌÂ☓åÿ ãOîÿëØ☓å,Àå\ã<OÒ @ÒøóÿÛ Óð«[ÙÚ(Àå†åØ“å&îÿë,Àå\ã(ÀÅ †Å¯üÿË\Óå\ãmýÿ òÿëqOâ @âMîÿëõÿëÜ“å\ãrýÿ  ð«[    Ð“å–Oâ @âCîÿë’Oâ @â@îÿëÀ ãTÃ☓åtÓå\ãflOâ @â8îÿë–Oâ @â−ôÿë°Â“å´“å@âÁ†ç†å°Â“å´“å@âÁ†ç†å¤ûÿë³Oâ @â'îÿë°Â“åÀ†å†å°Â“åÀ†å†åŒûÿëËOâ @âîÿëp ãP ã´Â“å U᪰“åÁ†çÀ†å pàPŶâöÿÿê áOâ @âîÿëúWãO @¢óÿËTÓå\ãÚê¤9ÄNóOâ @â−óÿë WãÚ    Wãªêê á•òÿëêgà€ á⇧òÿë8“å÷Oâ @âñíÿë4“åóOâ @âòñÿëöOâ @âêíÿëP ã´Â“å Uá
  39431. ª°Â“åÁ†çÀ†å¸Â☓å°Â“åÁ†çÀ†åÐÂ☓å:ëPŶâñÿÿêlflå’å3Oâ @âÖíÿëXÁflåÀ†å
  39432. \ã9O @ÂhóÿËOâ @âÍíÿëÀ ã0Ã☓åÀ ã(Ã☓åÀ ãÔÂ☓åÀ ãÀ™å0ÓåÀ…â0Ã☓å(Óå,Ã☓å°Â“åÀ†åÀ†åØÂ☓å°Â“åÀ†åÀ†å¸Â☓å°Â“åÀ†åÀ†åÐÂ☓å, ™â,™âB ã.íÿë,À™â`†åÀ ã(Ã☓åÀ ãHÃ☓å0Óå\ãÀ ÓHÃ☓ÕÀ ãTÃ☓å0“å¾Oâ @â íÿëÀ ãÀ⇨åpÓå\ã‹ Ø“¬ À“åÄÂ☓åhÓå\ã(Ó€À…(Ã☓€À XÃ☓tÓå\ãüO @áüÿ Ø“åßüÿë, ™â,™âB ãíÿë,À™âÀ†åÀ\àê¤9ÄNÈN,À™â†å€â…ågàŴà á,À™âÀ†åLàíÿë` á(#“å á\Oâ @âlíÿë0Óå\ãÀ TÃ☓pÓå\㤠(◰“å(Óå-éoOâ @â=íÿë½èÀ…à(Ã☓å  áðñÿë4OâAâÓå…à"íÿëHÓå\ã    ÚÔ“å\ãêêTÓå\ãÊ◰ÿÿêŵÿÿêÔ“å\ãÀ TÃ☓LÓå\ã#TÓå\ã ÊêêQOâ @â9íÿëQOâ @â6íÿëLOâ @â3íÿëFOâ @â0íÿëOâ.íÿë6Oâ @â+íÿë1Oâ @â(íÿë1Oâ @â%íÿësOâ#íÿë'Oâ @â íÿë#Oâ @âíÿëLÓå\ã)TÓå\ã&Úê$êOâíÿë<Oâ @âíÿë4Oâ @âíÿë+Oâ @â
  39433. íÿë$Oâ @âíÿëOâ @âíÿëOâ @âíÿëqOâÿìÿë Oâ @âüìÿë    Oâ @âùìÿëOâ @âöìÿëOâ @âóìÿëOâ @âðìÿëüÿëTÓå\ã!ÊhÓå\ãê¤9ÄNÈN–ûÿëpÓå\㜠COâ @âÞìÿë
  39434. À ãÀ™åPÓå À™å,Àå\ã\ÀOÒÌLÒÀ™ÕÚ(ÀåÀ†åÀ™å Ã“åÀ™å(“åÀ…àÀ™å™â1îÿëxÓå\ãŵOâ @âÄìÿëxOâ @âÁìÿë ãÌ“å°üÿë|Oâ @â»ìÿë ãÀ“åªüÿë☓Oâ @âµìÿë ãð«[é¤9ÄNÈNOíÿêÀ ásØ-é°Lâ
  39435. ]áSìÿ»P á` áE á Àeâ6Ì á @☓á áp¨[éÀ áóØ-é°Lâ
  39436. ]áFìÿ»P á` áppflåÀàãÀŷå@ ãTãº☓ á–åâÿÿëŶåÀ á \ãªÀ”å\ãºêê@ŷå@àã@DâíÿÿêÀ–å\ãð¨[À ãÀŶåÀ ãÀŷåð¨[é <À áóÛ-é°Lâ
  39437. ]á ìÿ»ôQfl倠á‘ áÐMâÀ ãÀ™åÁâÀ À™    ‘à@ ãTãªÿÀ ã☓ áÀ á À    à ™âÁ€ç@☓âõÿÿêp ãÀ ã‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åpÁflåÀ†å‡åÀã  á€á™åÀ áÈÌã á …á™åÀ áÊÌã á …á™åÀ ã‡åÀã… á!€á™å@ ãTãMªWã À ã‡åÀã  á¡€á™åÀ ã‡åÀã  á!€á™å
  39438. ê À ã‡åÀã  á¡€á™åÀ áÈÌã á …á™å À™âÁ†ç\ã⇩Tã
  39439. *ê)êp ã À™âÁ†ç☓ á<À á‡åÿÀã  á!€á™å☓Á á ÀlâÌÀ á‡å Àã  á!€á™åÀ á‡åÿ ãŴãÀá  á!€á™å”å›ðÿë`™âÀ„å flå‘åêÌ<…<Ä<”åA áÁ€çÀ”åÀ…âÀŶå@☓â¯ÿÿêÀ‡å\ãð«[À ã‡åÀã  á¡€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÀã  á!€á™åÀ áÊÌã á …á™åÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åÀ áÀÌã á …á™åÀ á‡åÿ ãŴãÀá  á!€á™å”åHðÿë`™âÀ„å8flå‘å”åA áÁ€çÀ”åÀ…âÀŶåÀ‡å‡åÿ ãŴãÀáð«[éÌ<…<Ä<Bad immediate constant (assign temporary register)Bad immediate constant (assign temporary register)Internal error - invalid opcode (data processing section)À áñÛ-é°Lâ
  39440. ]áëÿ»øAflåP áôaflåôqflåôŴflåô’flåÐMâÀ ãìflåÀ€åÀ‡åÆÌã á …á™åÔÁflåÀ†å‡åÀã… á¡€á™åÀ ã‡åÀã  á!€á™å¤ÁflåÀ†å‡åÀã  á€á™åUãñ•‘*ê⇦êêŷêŶê☓ê◰êŵêŴêêêêê|êëêzêéê ã¤óÿëÀ ã‡åÀã… á¡€á™åÀ—å‡åÀã  á!€á™åÀ ã‡å
  39441. Àã  á!€á™åðÀflåÀ†å\ãÀ ‡
  39442. À  !€™À„å\ãÀ“å\ãªêê
  39443. UãêêÀ“å\ã
  39444. êêÀ“åÀlâÀ☓å P ãÀ‡åÆÌã á …á™åÀ„å\ã À“å\ãªêê UãêêÀ“å\ã
  39445. êêÀ“åê <¤<Ø<“<‘< =¬<…<¨<ÀlâÀ☓å
  39446. P ãÀ‡åÆÌã á …á™åÀ„å‡åÀã… á!€á™åÀ„å\ãÀ−å‡åÀã  á!€á™åÄÁflåÀ†å‡åÀã… á¡€á™å¬ÁflåÀ†å‡å`Àã  á¡€á™å“ÁflåÀ†å‡å>Àã… á!€á™å`êÀ“å \ãªÀ“å\ãºê êÀ“å‡åÿÀã  á!€á™åÀ ã‡å Àã  á!€á™åKê™â ™âþÿë À‡å|ã ÚÀ‡å‡åÿÀã  á!€á™å À‡å‡å Àã  á!€á™å8êÀ–å\ã!º“å–åþÿëÀ ã‡åÀã… á!€á™åÀ–å‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åêDflå’åMOâ—ïÿë ãð«[é ê <¤<Ø<“<‘< =¬<…<¨<è<ä<à<¼<À‡å‡åÿ ãŴãÀá  á!€á™å5ê ãºòÿëÀ—å‡å
  39447. Àã  á!€á™åÀ ã‡åÀã  á!€á™åÀ„å‡åÀã… á!€á™åÀ„å\ãÀ−å‡åÀã  á!€á™å€ÁflåÀ†å‡åÀã… á¡€á™åhÁflåÀ†å‡å`Àã  á¡€á™åPÁflåÀ†å‡å>Àã… á!€á™åSêÀ“å\ãªÀ“å\ã
  39448. ê êÀ“å ÀàáÀ☓åUãP 
  39449. P ãÀ‡åÆÌã á …á™åÀ“å \ãªÀ“å\ã
  39450. ê êÀ“å‡åÿÀã  á!€á™åÀ ã‡å Àã  á!€á™å*ê™â ™âPýÿë À‡å|ã ÚÀ‡å‡åÿÀã  á!€á™å À‡å‡å Àã  á!€á™åêUãÀ“ ÀàÀ☓“å—å ê <¤<Ø<“<‘< =¬<…<¨<è<ä<à<¼<QýÿëÀ ã(flåÀ€åÀ‡å‡åÿ ãŴãÀá  á!€á™å¥ê ã*òÿëÀ—å‡å
  39451. Àã  á!€á™åÀ−å‡åÀã  á!€á™åÀ„å‡åÀã… á!€á™åÀ„å\ã¤ÁflåÀ†å‡åÀã  á!€á™åtÁflåÀ†å‡åÀã… á¡€á™å\ÁflåÀ†å‡å`Àã  á¡€á™åDÁflåÀ†å‡å>Àã… á!€á™åcêÀ“å \ãªÀ“å\ãºê êÀ“å‡åÿÀã  á!€á™åÀ ã‡å Àã  á!€á™åNê™â ™âÓüÿë À‡å|ã ÚÀ‡å‡åÿÀã  á!€á™å À‡å‡å Àã  á!€á™å;êÀ–å\ã1º“å–åãüÿëÀ ã‡åÀã… á!€á™åÀ–å‡åÀã  á!€á™åÀ ã‡åÀã… á¡€áê <¤<Ø<“<‘< =¬<…<¨<è<ä<à<¼<☓<†<™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åê…flå’å”Oâ     @âYîÿë ãð«[éÀ‡å‡åÿ ãŴãÀá  á!€á™åêŒOâ     @â¶îÿëàãð«[éÀ™âÀ™å†åð«[é <¤<Ø<“<‘< =¬<…<¨<è<ä<à<¼<☓<†<¨éÿêÀ ápØ-é°Lâ
  39452. ]á¬èÿ»P`flå¸Á„å\ãp¨[    ¸Á„åA†åTã
  39453. P“å áàèÿë@ áøÿÿ긄åÜèÿëÀ ã¸ÁŷåÀ ã¼ÁŷåÀàã°Áŷåp¨[é¬@À áñØ-é°Lâ
  39454. ]á‘èÿ»⇦@flå⇦Pflå⇦`flåp áÀàã°Á☓å¸Á“å\ãð¨[F ãÅèÿë¸☓åÀ ã¸“åÀ€åÀ ã¸“åÀ€å á¸Á“å…âfièÿëÀ”å„åÀ…ณåÁ€åÀà㸓åÁ€åÀ ã¸“åÁ€åÀ ã¼Á☓åð¨[é¬@Ì<Ü<À ápØ-é°Lâ
  39455. ]ádèÿ»@@flå@Pflå@`flåÀ”å„åÀ…ณå Á€åÀ ã¼Á☓å¸Á“åÀ†å\ãp¨[    ¸Á“åÀ†å¸Á☓åp¨[é¬@Ì<Ü<À áðÛ-é°Lâ
  39456. ]áJèÿ»4Qflå4aflå4qflå4Ŵflå4’flåÀ”å°„å´„å€à\áð«[    À”å°„åÀ\àð«[Ù¼Á„å\ã¸Á„åA†åTã ãrèÿë¸Á„å…å¸Á„åA†åÀ ãÀ☓åêÀ“å\ã
  39457. @“åúÿÿê ãdèÿë☓å@ áÀ ãÀ☓åê¼A„å ã\èÿë☓å@ áÀ ãÀ☓åÀ”å—åÀ…àÀ☓åÀ”å°„åÀLàÀ☓åÀ–åÀ…âÀ☓åÀ−å À☓åÀ–弄å À€å¼AŷåÀ”å°„åÀLà´ÁŷåÀ”å°Áŷå¸Á„åÁ†åÀ…⸄åÁ€åð«[éÌ<¬@¸<Ü<t<Adding debugging data...
  39458. %i
  39459. À áðÛ-é°Lâ
  39460. ]áéçÿ»üAflåüaflåüŴflåÐMâLOâ:èÿëÀ„åÀ™åÀ“å À™å À ãÀ™åÀ“å‡åÀ…àÀ☓å  áÄìÿëÀ—å ‡åÀ…àÀ™åÀ ã‡å‘åÿÁã , á",Ŵá €åÀ ã‡å‘åÁã…/ á¢+Ŵá €åÀ ã‡å‘åÁã…/ á"+Ŵá €åÀ ã‡å‘å?+ ãÿ(ŵãÁá ) á"$Ŵá €åÀ ã‡å‘åÿÁã , á Ŵá €åÀ ã‡åÀ€åÉ ã‡åÀ€åÁflåÀ†åÉ…â‡åÀ€åðÀflåÀ†å‡å À€å À‡åÜflå‘åÀLà‡åÀ€å À ã‡åÀ€åÀ“åÀ™åÀ ã„å“åA áÁ€çÀ“åÀ…âÀ☓å  áwìÿëÀ ã„å“åA áÁ€çÀ“åÀ…âÀ☓å  ámìÿëÀ“å-é`Àflå¸Á†å…â¯çÿë½èÀ…à…âcìÿë@Àflå¸Á†å…âÀ—å“å…à›çÿëÀ“å-éÀflå¸Á†å…âfiçÿëêÌ<Ä<À<ü<¬@½è€âÀ…àÀ☓å†ëÿë“åIìÿëÀ ã„å“åA áÁ€çÀ“åÀ…âÀ☓å  á?ìÿëÈÁflå¸Á†åQ†å‘ ãYãvÊ À”å”åÀLà… áÀ€âÀ…â„å“åA áÁ€çÀ„å“å@ áÁ†çÀâ
  39461. À„å“å@ á†çA á…çÀ„å“å@ á†ç á…çÀ„å“å@ á†çŴâ…çÀ“åÀ…âÀ☓å  áìÿëÀ”å„å“åA áÁ€çÀ“åÀ…âÀ☓å  áìÿë À”å„å“åA áÁ€çÀ“åÀ…âÀ☓å  áþëÿëÀ”å„å“åA áÁ€çÀ“åÀ…âÀ☓å  áôëÿëÀ”å ”å”å@à†àÀ„å“å@ á…çÀ“åÀ…âÀ☓å  áæëÿëp ã À”å”åÀLà WáÊ”åþOâ @âFçÿëÀ”å—å“åÀÀçÀ ã—å“åŴâÀÀçÀ“åÀ…âÀ☓åêÌ<Ä<À<ü<¬@“åÈëÿëpâàÿÿêP”åëÿë‘⇨âŷÿÿêÀ ã„å“åA áÁ€çÀ“åÀ…âÀ☓å  á¸ëÿëÀ“å ‡åÀLàÀ™å„å‡åA áÁ€çÀ„åÀ™åÀ‡å‡åÀ€åÀ ã‡å$À€åð«[éÌ<Ä<À<ü<¬@«çÿêFloating point instructions unsupported in SHAREWARE versionÀ áØ-é°Lâ
  39462. ]áflæÿ»\Oâ…ìÿë¨[éFloating point instructions unsupported in SHAREWARE versionÀ áØ-é°Lâ
  39463. ]áæÿ»\Oâtìÿë¨[éFloating point instructions unsupported in SHAREWARE versionÀ áØ-é°Lâ
  39464. ]áoæÿ»\Oâ\ìÿë¨[éFloating point instructions unsupported in SHAREWARE versionÀ áØ-é°Lâ
  39465. ]áWæÿ»\OâDìÿë¨[éFloating point instructions unsupported in SHAREWARE versionÀ áØ-é°Lâ
  39466. ]á?æÿ»\Oâ,ìÿë¨[é2çÿêÀ ásØ-é°Lâ
  39467. ]á6æÿ»P á` áE á ÀeâVÌ á @☓á áp¨[éÀ á÷Ø-é°Lâ
  39468. ]á)æÿ»P á` áp áÀàãÀŷå@ ãTãð¨[¹☓ á áâÿÿëŶåÀ á \ãªÀ”å\ãºêê@ŷå@àã@Dâíÿÿêð¨[éÀ áóÛ-é°Lâ
  39469. ]á æÿ»èaflåp á,ÐM†ãÀ ãØflå¸Á€åW〠³pg²À ³Àflµ¸Á€µÀàãÀ™å´ÁflåÀ†å\ãÀ À™À‡å|ãPÚÀ ã‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åhÁflåÀ†å‡åÀã  á€á™å,Àå‡åÀã  á!€á™å,Àå‡å
  39470. Àã  á!€á™åÀ ã‡åÀã… á!€á™åÀ áÆÌã á …á™åÀ ã‡åÀã  á!€á™åÀ‡å‡åÿÀã  á!€á™åÀ‡å‡å Àã  á!€á™åÀ á‡åÿ ãŴãÀá  á!€á™å„åœêÿë‘™âÀ−å|flå‘å„åA áÁ€çÀ„åÀ…âÀŷåð«[éÀ ãÀ™åÀ ãÀ™åÀâÀ À™@ ãTãªÿÀ ã☓ á‡å€àÀ á Àà™âÁ€ç@☓âóÿÿêÌ<PEÔ<…<Ä<À ã À™åÀ ã‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åÐÁflåÀ†å‡åÀã  á€á™å,Àå‡åÀã  á!€á™å,Àå‡å
  39471. Àã  á!€á™åÀ ã‡åÀã… á!€á™å@ ãTãð«[¹ À‡å\ã À‡åÆÌã á …á™åÀ ã‡åÀã  á!€á™å
  39472. êÀ‡åÆÌã á …á™å,Àå‡åÀã  á!€á™åÀ™âÁ†ç\ã ÊÀ‡å\ã    
  39473. êêWãATã?êê<ê;ê☓Á á‡åP…àÀ ã À™åÀ™âÁ†ç\Å á‡åÿÀã  á!€á™å ÀeâÌÀ á‡å Àã  á!€á™åÀ á‡åÿ ãŴãÀá  á!€á™å ÀeâÌÀ á4flå°Á€åÀ™âÁ†ç\Å á flå´Á€å„åûéÿë‘™âÀ−åflå‘åêÌ<PEÔ<…<Ä<„åA áÁ€çÀ„åÀ…âÀŷå ÀflåÀ†å\ãÀ ÃÀ™Å@Dâ“ÿÿêð«[éÌ<PEÔ<…<Ä<À áðÛ-é°Lâ
  39474. ]áìäÿ»ÈPflåÈ`flåÈpflåÈ‘flå@−å á”åmë@ á á”åLíÿëåÀ°á ³ð«[¹ á”åLë@ áÀ„å\ã ð«[À”å…àzëlÀflåÀ†å À@àdflå‘åÀLà€LâëÿëTÀflåÀ†å\〠À ÀŷÀ„å\ã ð«[ á–å«þÿë@⇨åÀ ãÀŷåð«[é`<☓<‘<¼<Ì<Ü<Ô<§åÿê?@-éP á Ñä Rã    Rûÿÿ
  39475. Aâ Ñä0 ãaRã0 ³zRã0 ÃSã  B Àä RãôÿÿÊ@â  ã Àå Ñä Rã    Rûÿÿ
  39476. Aâ á Ñä Àä Rãûÿÿª@â  ã Àå?€ýè◰åÿêþ_-é ÐçRã
  39477. RR
  39478. ,Rã
  39479. ŴâöÿÿêŴâþflýè-é•âêÿë½èþflýèToo few argumentsþ_-é ÐçRã
  39480. RRïÿÿ
  39481.  Rã    RŴâõÿÿê áþflýèþ_-é ÐçRã
  39482. RRâÿÿ
  39483. ,Rã]R
  39484. ŴâõÿÿêŴâþflýèInvalid registerOut of range of data transfer (set temporary register)Invalid registerOut of range of data transfer (set temporary register)Invalid registerYou can't use a register as a shift in a data transferSyntax error: too many operands or missing ]Syntax errorOut of range of data transfer (set temporary register)No such registerInvalid registerInvalid shift (can't use register in load/store operation)Syntax error (too many operands)À áñÛ-é°Lâ
  39485. ]áåãÿ»ìQflåìqflåìŴflåì’flåÐMâèAflå@“å á”ådÿÿë@ áÔÁflåÀ†å\ã ð«[    À”åÀÜçR\ã
  39486. À”åÀÜçr\ã
  39487. êêÀ”å☓â…àþãÿë⇨åêÀ”å…àk ë⇨åúéÿëÀ−å\ãºÀ−å\ãÊêê á§Oâ9éÿë á”å%ÿÿë á”å8ÿÿë@ á$ÁflåÀ†å\ã ð«[    À”åÀÜç[\ãï
  39488. À”å…àK ëøÀflåÀ†å `@àØéÿëäÀflåÀ†å\ã ð«[ØÀflåÀ†å `Fà`FâÀ−å‡å
  39489. Àã  á!€á™åÀ ã‡åÀã  á!€á™å(Àå‡åÀã… á¡€á™åÀ ã‡åÀã… á!€á™ålÀflåÀ†å‡åÀã… á¡€á™åVãÀ £‡¥À£… ¡!€¡™¥ªÀ ã‡åÀã… á!€áê`<Ø<†<“<¼<☓<Ü<Ì<°<™å`fâÀ ãflåÀ€åÀ ã‡åÀã… á¡€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÀã  á!€á™å´ÁflåÀ†å‡åÀã  á€á™åÌVâÿ\£rÚ‘ÁflåÀ†å\ã Óð«[ÙÀ–å\ãcº`ÁflåÀ†åÀ™åÀ‡å Ä á¬Ï°áÀ ‡À… !€™`f á–åýÿë4ÁflåÀ†å0flå‘倠á aâÀ áÀ™åÀ ãflåÀ€åÀ–å‡åÀã  á!€á™åÀ‡å
  39490. \ã&ªÐÀflå†å@â…åÀÀflåÀ†å‡å\áÀ ‡À  !€™À‡å‡åÿ ãŴãÀá  á!€á™å“ÀflåÀ†å\ãÀ ‡À… !€™-
  39491. À ã‡åÀã… á!€á™å&êÀ ã‡åÿ ãŴãÀá  á!€áê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG™åê á#Oâ @âRèÿë ãð«[éêÀ‡åÿ ã €ãÀÌá
  39492.  á 
  39493. …á™åäÁflåÀ†å Ààá‡åÀã… á!€á™åÀ™â À™å¨Áflå@…å À‡å†åð«[éÀ ã¼flåÀ€åÀ ã‡åÿ ãŴãÀá  á!€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÀã… á¡€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÀã  á!€á™å ÁflåÀ†å‡åÀã  á€á™åüÀflåÀ†å‡åÀã… á¡€á™å(Àå‡åÀã… á¡€á™åÀ–å‡åÀã  á!€á™åÀ ã‡åÀã… á!€á™åÀ ã‡åÿ ãŴãÀá  á!€á™åÀ−å‡å
  39494. Àã  á!€á™å@☓âÀ”åÀÜçR\ã
  39495. À”åÀÜçr\ã
  39496.  êêÀ”å☓â…à…âÿëDÀflå…åê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<4ÂflåÀ†å‡åÀã  á!€á™å
  39497. êÀ”å…àß
  39498. ëÀ‡åÈÌã á!…á™åôÁflå…åhèÿëèÁflåÀ†å\ãºØÁflåÀ†å\ãÊêê á¤Oâ @â¤çÿë ãð«[é á”å±ýÿë@ álÁflåÀ†å\ã ð«[À ãÀ™åÀ”åDâÀÜç,\ã.À ãÀ™å á”å‹ýÿë@ áÀ”åÀÜç#\ãa@☓âÀ”å…à©
  39499. ë`°á`f²À ³‡µÀ³… ±!€±™µÀ‡åÿ ã €ãÀÌá
  39500.  á 
  39501. …á™åÀ ã‡åÀã… á!€á™åÌVâÿ\£MÚÀ–å\ã;º á–å¼õÿëÀ–å‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åÀ á‡åÿ ãŴãÀá  á!€áê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<™åÀ ã‡åÀã… á!€á™åê áOâ
  39502. @â)çÿë ãð«[éêÀ”åÀÜç-\ã@☓À ‡À… !€™À”åÀÜçR\ã
  39503. À”åÀÜçr\ã
  39504. ê
  39505. êÀ”å☓â…àÁáÿë⇦åÀ‡åÀÌã á!…á™åêÀ”å…à)
  39506. ëÀ‡åÀÌã á!…á™å⇦å³çÿë0ÁflåÀ†å\ã ð«[À—å\ãºÀ—å\ãÊêê á<Oâ @âìæÿë ãð«[é á”åùüÿë@ áÀ”åDâÀÜç]\ãS
  39507.  á”åãüÿë@ áÀDâ¨flåÀ€åDâôèÿëÌÀflåÀ†å\ã –O @Ñæÿ ð«[¨ÀflåÀ†å‡åÀã… á¡€á™å‘ÀflåÀ†å‡å`Àã  á¡€á™åxÀflåÀ†å‡å>Àã… á!€á™å á”åÉüÿë@ áÀ”åê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<è<ä<à<DâÀÜç]\ãD1OŒæÿ ð«[À”åÀÜç!\ã!À ã‡åÀã… á!€á™åêÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åÀ”åÀÜç!\ãÀ ‡À… !€™À ã‡åÀã… á!€á™åÀ‡å‡åÿ ãŴãÀá  á!€á™åDêÀ”åÀÜç,\ã7☓â”åaüÿë@ áÀ”åÀÜç \ãºÀ”åÀÜç,\ã
  39508. êê áCOâ @âMæÿë ãð«[éÀ”åÀÜç#\ãjÀ ã‡åÀã… á¡€á™å@☓âÀ”å…àb    ë`°á`f²À ³‡µÀ³… ±!€±™µÀ‡åÿ ã €ãÀÌá
  39509.  á 
  39510. …á™åÀ ã‡åÀã… á!€á™åÌVâÿ\£ýÚÀ–å\ãê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<è<ä<à<)º á–å`ôÿëÀ–å‡åÀã  á!€á™åÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åÀ á‡åÿ ãŴãÀá  á!€á™åÀ ã‡åÀã… á!€á™å»ê áîOâ @âßåÿë ãð«[é´êÀ”åÀÜç-\ã@☓À ‡À… !€™À”åÀÜçR\ã
  39511. À”åÀÜçr\ã
  39512. êê@☓âÀ”åÀÜç0\ãºÀ”åÀÜç9\ãÊêê áOOâ @â¹åÿë ãð«[éÀ”å…àgàÿë⇦åÀ‡åÀÌã á!…á™åÀ—å\ãºÀ—å\ãÊêê áŒOâ @â¢åÿë ãð«[éÀ ã‡åÀã… á¡€á™åÀ ã‡å`Àã  á¡€á™åÀ ã‡å>Àã… á!€á™åÀ ã‡åê`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<è<ä<à<Àã… á!€á™åÀ ã‡åÀã… á¡€á™åÀ”åÀÜç0\ãºÀ”åÀÜç9\ãÊêê@☓âóÿÿêÀ”åÀÜç \ã
  39513. À”åÀÜç    \ã
  39514. êê áÀ”å…àXûÿë@ áÀ”åÀÜç,\ã áhçÿë@ÁflåÀ†å‡åÀã… á¡€á™å(ÁflåÀ†å‡å`Àã  á¡€á™åÁflåÀ†å‡å>Àã… á!€á™åÀ á…Í á¬Ï á\ã UO @/åÿ À‡å‡åÿ ãŴãÀá  á!€á™åÀ”åÀÜç!\ãÀ ‡À… !€™À”åÀÜç,\ãÀ‡å\ã ŷO @åÿ  ð«[    À™â À™åÀflå@…å À‡å†åð«[é`<Ø<†<“<¼<☓<Ü<Ì<°<¤<…<Ô<GGG =‘<è<ä<à<iàÿêÀ á3Ø-é°Lâ
  39515. ]ámßÿ»@ áP áÀÕç,\ã
  39516. ÀÕç\ã
  39517. ê êÀÕç
  39518. êêÀÕç\ã
  39519. êê@☓âëÿÿêÀÕç,\ã@☓ á0¨[éMACROMissing {Missing }À áðÛ-é°LâMÏMâ
  39520. \áFßÿ»ôAflåôŴflåô’flåMßMâ` ãìÁflåÀ†å Váð«[©À−åÁ†çÀ☓åÔÁflå`…åÐ!flå“å4™âŵúÿë☓Oâ4™âYßÿëPãsp ã¨ÁflåÀÜç \ãÚ—ÁflåÜçÉßÿëÍçpâõÿÿêÀ ãÀÍçÀ—åÀ…âÀ⇦å  á—å\ßÿë⇦å  ãXßÿëÀ—å—åAâ…ç áGßÿë€âPßÿëÀ—å—åAâÁ†ç…å áÀ—å—å@âÁ†ç†å(ßÿë`ŷâÀ−åÁ†çÀ☓å ã“åŷúÿëP áÀ“åÀÜç{\ãfO @åäÿÀ−åŷâÁ…à—å—åAâ‘çÀ€åÀ ã—å—åAâ‘çÀ€åÀ“åÀÜç}\ã$
  39521. |ÀflåÀ†å Vá ªêêÀ—å—å@âÁ†ç†å€â…å`ŷâÀ−åÁ†çÀ☓åP ãÀ“åÀÜç \ã
  39522. À“åÀÜç    \ã
  39523. àÿÿêßÿÿêPŶâóÿÿê`<¸N\<t<¸<,=ÖÿÿêÀ“åÀÜç}\ã%O©äÿ`ŷâwÿÿêð«[é`<¸N\<t<¸<,=Register out of rangep%ip_numÀ áñÛ-é°Lâ◰ÏMâ
  39524. \á¤Þÿ»P á◰ßMâ` ãÀÕç \ã
  39525. ÀÕç    \ã
  39526. êê`ŷâõÿÿêp ãÀÕç \ãÚÕç3ßÿëÀ™âÌç`ŷâpâõÿÿêÀ ã™âÀÀç@ áÀàãÀ™å` ã|ÁflåÀ†å Vá    ª™âhÁflåÀ†åÁ†ç†å£ÞÿëPã`™`ŷâñÿÿêÀ‡å|ã‡ð«[    ÀÕç \ã
  39527. ÀÕç    \ã
  39528. êê@☓âõÿÿê‘ ãÀÕç \ã<Úp ãÀÕç \ã
  39529. ÚÀÕç,\ã
  39530. êêÀÕçA™âÀÀç@☓âpâñÿÿêÀ ãA™âÀÀçAÏ™âÜåòÞÿëRPãAÏ™âÜåäÞÿëPã
  39531. ê êAÏ™â…âzÞÿ뀰áºXãÊêê ãwOâ¾ãÿëêA™âà뀠áoäÿë      áæOâAâŴ™â⇨Þÿë áŴ™â⇨âÿë á á·þÿë@ á‘⇨â¿ÿÿê     áOâ @âê¸N}âÿë‡åð«[é¸NInternal error - non-existant macro.ASM_Makro_%iCode is not word alignedÀ áñÛ-é°Lâ
  39532. ]áÞÿ»äAflåäQflåäaflåäŴflåä’flåLÐMâÀ ãÜflåÀ€åØÁflåÀ†åÌflåÀ€åÀ„åÀflåÀ€å(Àå\ãº(Àå¨flå‘å\áªêêÐOâÙãÿë ã,ÞÿëÀ—åÀ™å€ÁflåÀ†åÀ™åxÁflåÀ†åÀ™åÀ„å À™åhÁflåÀ†åÀ™åÀ ãÀ☓åDÁflåÀ†å(åÁ†çÀ†åÀ⇦å,Áflå †å€â …å!flå  ‹åJOâ™â#ÞÿëÀ™âflåÀ€å™â⇨ëÀ ãÀŷåÀ„åèflå‘å(å‘ç‘å@â\á<ªp„åÀ—åÁ†çÀflåÀ€åÀ ãÀ☓å\ãÀ—†s À−å\ã,íÿ  îÝÿ À“å\ãðçÿ ™À−å\ã æÝÿ À“å\ãÀ”åÀâ ÞO @´âÿÖáÿ”å◰âÿëÀ‡åHflå‘å”åA áÁ€çÀ”åÀ…âÀŶåÀ„å
  39533. ê☓<Ì<¸<\<€<¸N`<t<|<h<Ä<À…âÀŷå¹ÿÿêÀ ãÀ☓åÀ‡åÀ⇦åÀ‡åLflåÀ€åÀ‡åDflåÀ€å À‡åÀŷåÀ‡å4flåÀ€åÀ ãflåÀ€åð«[é☓<Ì<¸<\<€<¸N`<t<|<h<Ä<UÞÿêMissing }À á3Ø-é°Lâ
  39534. ]áVÝÿ»@ áP áÀÕç,\ã
  39535. ÀÕç}\ã
  39536. êêÀÕç\ã
  39537. ê êÀÕç
  39538. êêÀÕç\ã
  39539. êê@☓âæÿÿêÀÕç \ã ± O²ºâÿ» ±0¨[¹ á0¨[éToo few argumentsÀ á3Ø-é°Lâ
  39540. ]á(Ýÿ»@ áP áÕç¾ÝÿëPã
  39541. @☓âùÿÿêÀÕç \ã ±\O²flâÿ» ±0¨[¹ á0¨[éSyntax errorSyntax errorSyntax errorSyntax errorInvalid registerSyntax errorMissing {Invalid registerInvalid registerÀ áñÛ-é°Lâ
  39542. ]áòÜÿ»ÜQflåÐMâØAflå@“åÀ”åÜç‰ÝÿëÀ™âÌåÀ”å☓âÜç⇦ÝÿëÀ™âÌåÀ ã™âÀÀå@☓âÀ”åÀÜç \ã øO]âÿ ð«[À™âÀÜåE\ã
  39543. À™âÀÜåF\ã
  39544. EêDêÀ ãÀ™åÀàãÀ™åÀ™âÀÜåF\ãÀ À™À™âÀÜåD\ãÀ À™À™âÀÜåA\ãÀ À™À‡å|ã {O @8âÿ  ð«[    (Àå\ãÀ‡å\ãBÀ ™ÀÀ
  39545. AÀ ã™âÀÀåÀ‡å\ãDÀ ™ÀÀ
  39546. IÀ ã™âÀÀå(Àå\ãÀ‡å\ãAÀ ™ÀÀ
  39547. BÀ ã™âÀÀåÀ‡å\ãIÀ ™ÀÀ
  39548. DÀ ã™âÀÀå<ÀflåÀ†å‡åÀã  á€á™åÀ ã‡åÀã… á!€á™åÀ ãê`<¼<…<‡åÀã… á¡€á™åÀ ã‡åÀã… á!€á™å(Àå‡åÀã… á¡€á™åÀ™âÀÜåD\ã
  39549. I\ãÀ ã‡åÀã… á!€á™å
  39550. êÀ ã‡åÀã… á!€á™åê á
  39551. Oâ @âÑáÿëÀ™âÀÜåA\ã
  39552. B\ã
  39553. êÀ ã‡åÀã… á¡€á™å
  39554. êÀ ã‡åÀã… á¡€á™åê áaOâ @â¸áÿë á”åº÷ÿë@ áÀ”åÜçÐÜÿëRPã@☓À”åÜçÂÜÿëPã á”å•äÿë ™åÀ‡åÈÌã á!…á™åÀ”åÜç²ÜÿëPã
  39555. @☓âøÿÿêêÀ”å…àIÜÿë ™åÀ‡åÈÌã á!…á™å À‡å\㺠À‡å\ãÊêê á$Oâ @â☓áÿë ãð«[é á”åÍþÿë@ áÀ”åÀÜç!\ã
  39556. @☓âê`<¼<…<À ã‡åÀã… á!€á™åÀ”åÀÜç    \ã
  39557. À”åÀÜç \ã
  39558. ê êÀ”åÀÜç,\ã
  39559. êê á·Oâ @â[áÿë ãð«[é á”åE÷ÿë@ áÀ”åDâÀÜç,\ã ð«[ á”åQ÷ÿë@ áÀ”åÀÜç{\ã O @Dáÿ ð«[@☓â‘ ãÀ”åÀÜç}\ãp
  39560. À”åÀÜç,\ã☓”;÷ÿ @ À”åÜçQÜÿëRPã@☓À”åÜçCÜÿëPã ”äÿ ` 
  39561. À”å…à×Ûÿë` áVãºVãÊêê á¨Oâ @âáÿë ãð«[é á”åbþÿë@ álÀflåÀ†å\ã ð«[À”åÀÜç-\ã0@☓âÀ”åÜç%ÜÿëRPã@☓À”åÜçÜÿëPã ”åãÿ p 
  39562. À”åê`<¼<…<☓<…à¦Ûÿëp áWãºWãÊêê á[Oâ @âèàÿë ãð«[éWá `™µ` ± p‡µ€ áXáÊÀ ãÈ á ‘⇨á€⇦âøÿÿêêÀ ãÆ á ‘⇨á á”åóýÿë@ á☓ÀflåÀ†å\ã™ÿÿ
  39563.  ãð«[é⇩ÿÿêÀ‡åÿ ãÿ €ãÀÌá     á …á™å@☓âÀ”åÀÜç^\ãÀ ‡À… ¡€™@☓À™âÀ™åÀflå@…åÀ‡å†åð«[é`<¼<…<☓< ÜÿêÀ áØ-é°Lâ
  39564. ]á$Ûÿ»@ á¼ÛÿëPã .Tã    
  39565. êê&Tã
  39566. êê%Tã
  39567. êê ã¨[é á¨ÛÿëPã_Tã
  39568. êê.Tã
  39569. êê ã¨[é ã¨[éÀ áñØ-é°Lâ
  39570. ]áýÚÿ»` á8pflåP ã@ ãTãª0Àâ…à áÛÿëPã|ÀQ†@☓âôÿÿê áð¨[élJÀ á÷Ù-é°Lâ
  39571. ]áæÚÿ»P áp á€°áð©[¹À–å Xáð©[Éêêð©[éÀ–åÀLâÀå”çÛÿëÀ ãÁŶç@ áÀ–å TáÊÀ☓â ”çŶç@☓â÷ÿÿêÀ ã–å€âÁŶçð©[éÀ á÷Ù-é°Lâ
  39572. ]áÂÚÿ»P á` áp áÈŴflåÀÕå+\ãð©[    ÀÕå-\ãGð©[    ÀÕå*\ã–  ð©[    ÀÕå/\ãVãÀ À⇦
  39573.  á á«Úÿëð©[éÀÕå%\ãVãÀ À⇦
  39574.  á á¢Úÿëð©[éÀÕå^\ã‘aîŴ-í‘qîŴ-í½è"Ûÿëðîð©[éÀÕå<\ãÀÕå<\ãêê áð©[éÀÕå>\ãÀÕå>\ãêêW áð©[éÀÕå=\ã    ÀÕå=\ãêêWáàð©[     ãð©[éÀÕå!\ã    ÀÕå=\ãêêWáàð©[ ãð©[éÀÕå<\ãÀÕå=\ã
  39575. ê    êÀÕå=\ãÀÕå<\ã
  39576. êêêêWáàÓð©[Ù ãêlJð©[éÀÕå>\ãÀÕå=\ã
  39577. ê    êÀÕå=\ã ÀÕå>\ãêêêêWáà£ð©[© ãð©[éÀÕå<\ãWáà³ð©[¹ ãð©[éÀÕå>\ãWáàÃð©[É ãð©[é áð©[élJÀ á÷Ù-é°Lâ
  39578. ]áÚÿ»@ á` á“pfl倠áVãºÀ—å VáÊêêÀ ãÀå ãð©[éÁ“çÀ†å\ã
  39579. \ã
  39580. \ã
  39581. ð©[éÁ“ç†åð©[éÁ“ç†åð©[éÁ“ç…â¢ëP áÁ“çQ…åÀ ã“çÀ€å áð©[élJÀ á÷Û-é°Lâ
  39582. ]áëÙÿ»P á` á@qflå@ŴflåÐMâÀ–å\ãð«[@ ãÀ„å Táð«[ÉÁ”çÀ†å\ãÁ”ç…âŴëÁ”ç…åÀ ã”çÀ€åÁ”çÀ†å\ã0Á”ç…âÉþÿë0Àå Pá*  á áDâ¥ÿÿë™å  á á☓â ÿÿë‘ á      á‡åÁ”ç…âòþÿë™åÀ—å\ã
  39583. À—å\ã
  39584. \ãÀ ãÀåêÀ ãÀåÀ ãÀ⇦å  á á áºþÿë  á á á¶þÿë@TâÀ‡¥”§Á€¥À–å\ãÀ„@…@☓âµÿÿêð«[élJìQ16_2_À áñÙ-é°Lâ%ÎMâ
  39585. \á‰Ùÿ»@ á@aflå%ÞMâÀÔå"\ã ÀÔå"\ãêêÀÔå\ãÀ ÀŷPÔå áð©[éÀÔå&\ã
  39586. ÀÔå%\ã
  39587. êê á¨Ùÿëð©[éÀÔå&\ã¨Oâ(™â‰Ùÿë☓â(™â™Ùÿë(À™â áÀ€åÀ ã áÀ€åÀ ã áÀ€å  á á- ã/Ùÿ뀰áÀ ÀŷÀ áP†åêBOâ™âuÙÿë☓â™âtÙÿëΙâJ™âÀ€åÀ ãJ™âÀ€åÀ ãJ™âÀ€åJ/™âJ™â- ãÙÿëp°áÀ ÀŷJÏ™âP†å áð©[élJÀ áñÛ-é°Lâ
  39588. ]á4Ùÿ»P áDaflåDqflåDŴflåÀÕå"\ã
  39589. ÀÕå"\ãêêÀÕå\ãÀ ÀŷÕåð«[éÀ„å\ã
  39590. \ã
  39591. ð«[é á¦Ýÿë@°áÀ–å\ãÀ ÃÀŷÅ Ãð«[Éð«[É ãð«[éÀ“å\ãÀ“—…ð«[ð«[“åð«[éÀ ãŷâÀ€åÀŷâP…åÀ ãŷâÀ€å ŷâŷâ9 ãÏØÿë‘°á
  39592.  áŵÝÿë@°áÀ–å\ãÀ ÃÀŷÅ Ãð«[É ãð«[éÀ“å\ãÀ“—…ð«[“åð«[éÀŷâ†åð«[élJÔ<Ü<À áØ-é°Lâ
  39593. ]áØØÿ»@ áB ãÙÿë☓å¨[é À á÷Û-é°Lâ
  39594. ]áÍØÿ»P á` áp áÐMâÀ ãÀå áçÿÿë@OâÀ„å…âåØÿëÀÕå„å€âÀÀåÕå’ýÿë ™åÀ ãÀ™åÀÕå&\ãÀ À™À ãÀ™åÀÕå(\〠À  À™À „€ÀÀÀÕå-\ãÀ  À™ÀÕå"\ãÀÕå"\ãêꀠ㠀™åÀ‡åÀ…âÀ™å"À ã„å€âÀÀåÀÕå„å€âÀÀå"À ã„å€âÀÀåÀ ã„å€âÀÀåÀ ã„åÀ€å À‡å„åÀ€å@‡å á´ØÿëTáà*ÕçQýÿ뀠áÀ‡å\ãXãêêÀÕçA\ãºÀÕçF\ãÊêꀠãêÀÕça\ãºÀÕçf\ãÊêꀠãXã
  39595.  À‡å\ãêêÀÕç-\ã
  39596. êꀠãÀÕç-\ã
  39597.  À‡å\ã
  39598. êê À‡å\ã
  39599. êꀠãÀÕç(\〠ÀDâ Õç(Pã@D€ ÀÕç"\ãÀ☓â Õç"Pãêꀠã@☓â À‡å XáH
  39600. À ãÀ™åÀÕç&\ãÀ À™ À‡å\ãÀ– „€•þÿ À– „Ŵ À‡å\ãÀ– „€àþÿ À– „ŴÀ–åÀ…âÀå ŷà4ÿÿë €™åÀ ã–å„çŴâÀÀåÀ–å „瀀åÀÕç"\ãÀDâ Õç"Pãêê"À ã–å„çŴâÀÀåÀDâ ÕçÀ–å „çÀŴâÌå"À ã–å„çŴâÀÀåÀ ã–å„çŴâÀÀåÀ ã–å„çÀŴå@☓âXã5À ãÀ™å@☓âÀ‡å\ã"Ú áØÿëTá⇩êêÀÕç)\ãÀ‡ÀLÀ™
  39601. ÀÕç(\ãÀ‡À…À™À–å „ç€âþ×ÿë‘ áÀÕç–å„çŴâ    ÀÀçÀ ã–å„çŴâ⇨âÀÀç@☓âÙÿÿêÀ–å „ç€âì×ÿë‘ áÀ ã–å„çŴâIâÀÀç@DâêÀ–å „ç€âß×ÿë‘ áÀÕç–å„çŴâ    ÀÀçÀ ã–å„çŴâ⇨âÀÀç@☓âÿÿê À‡å\ãÀ– „€þÿ À– „Ŵ À‡å\ãð«[À–å „ç€âRþÿëÀ–å „çŴåð«[é>@-éP ã Ðä Rã    Rûÿÿ
  39602. 0RãP ³º9RãP ÃÊ Áäóÿÿê0 ã0Áä RãP Ó,Rã]RP  á>€ýè>@-é0 ã Ðä0 ãARã0 £ZRã0 ÃaRã0 £zRã0 Ã ÁäSãòÿÿ
  39603. Rã R    R]R,RA0 @ ã@Áå á>€ýè0À áñÛ-é°LâÀMâÌLâ
  39604. \áP×ÿ»ÐMâÜMâÀ ãØflåÀ€å™â(å¾ÿÿ뀠áp ãXã™®ýÿ ð«[    
  39605. ™â(åËÿÿëp áWã™ÿýÿ ð«[      ãv×ÿ둠ဠãp ãÀ ã À™å` ã(Àå ‡å@Üçÿ@â;Tã8
  39606. Tã6
  39607. ê4ê,Tã2
  39608. ê0ê]Tã.
  39609. ê,ê Vã*ªê(ê TãÚ;Tã
  39610. êê@Éç0Tãº9TãÊêꀠã á¢×ÿëPã_Tã
  39611. êêp ã-Tãp &TãVãÊêꀠã`ŷâ À‡åÀ…â À™å(Àå ‡å@Üçÿ@âÄÿÿêÀ ãÀÉçÀÙå-\ãmOâ™â×ÿë     á™â ×ÿë™â     á×ÿëXã     Lýÿ ™     ×ÿ ‡ð«[    Wã     á‡ýÿë™å     áêlJ×ÿë‡åð«[éP ãÿUãÊÀ ãŶ™âÁ€çPŶâøÿÿêŶ/™â!™â     áñýÿëP ãUãÊŶ/™â!™â áÌüÿë‡å\ãP ÓPŶâôÿÿêŶÏ™âÀ†åÁ†åÀ™åP ãÿUãªŶÏ™âÁ†ç\ãŶÏ™†êÖÿPŶâõÿÿê     áæÖÿë‡åð«[élJŒ×ÿêÀ áñØ-é°Lâ
  39612. ]áfiÖÿ»T@flåp á`“åÀ ãÀ☓å áöáÿëÀ“å\ã ð¨[     áç÷ÿëP°á ¡ŵøÿ«À £À☓¥ £ð¨[©`“å ãð¨[é☓<Duplication of labels!Memory allocation errorExtra label seems to have appeared between passesUnexpected character found in instructionInvalid instruction (syntax error)Invalid instruction (syntax error)Internal error - condition has not been interpreted correctlyUse of 'NV' is depreciatedÀ áñÛ-é°Lâ
  39613. ]á6Öÿ»` áà’flåØÐMâÜÁflå`…倠ãpàãÀàãÌflåÀ€åÀ ãÀÉåXã!pâPÖçÿP†ãUã
  39614. ÊUã
  39615.     Uã    
  39616.  
  39617. Uã    
  39618. ê Uã
  39619. .Uã
  39620. ;Uã
  39621. ꀠãꀠãꀠãAUãáÿÿºUãßÿÿªêÝÿÿꀠãÛÿÿêXãÀ (flÀ€ð«[    Xãä@ ãpâÁflåÀ†åÀÜç™âÀÀç@☓âpâèÀflåÀ†åÀÜç \ãóÿÿÊÀ ã™âÀÀçÔÀflåÀ†å À™åÌÀflåÀ†å\ãyÀ ãÀ™å™âoÚÿë ™åÀ°áÀ ¤flÀ€ «O_Ûÿð«[☓ÀflåÀ†å À™åÀ™âÀÜå_\ã$tÀflåÀ†åÀ†å À™å\ã ã ÖÿëTÀflåÀ†å…å ™åÀ°áñO @²Ûÿ ð«[    À ã ‡å À€åÀ ã ‡åÀ€åê⇦<`<¼<☓<d<Ô<x<h<À ã ‡åÀ€åÀ ãÀ™å À‡å À†å\ã
  39622. À‡å À†å À™å À‡å À†å\ãøÿÿÄÁflåÀ†å\ã ÚÀ‡å\ãêê ãØÕÿë À‡å …å À‡å À†å À™å™âÆÕÿë€âÏÕÿë À‡å…å™â À‡å†å­Õÿë`ÁflåÀ†å ‡åÀ€åÀ ã ‡åÀ€åÀ ã ‡å À€åÀ ã ‡åÀ€åÀ™âÀÜå_\ã À‡flÀ€Áflå†å€â…åÁflå†å€â…åê™â÷Ùÿë ™åÀ°áMO @UÛÿ ð«[    ÐÀflåÀ†å ‡å‘å\áÀÀfl†€…¬ÀflåÀ†å ‡åÀ€åÀ™âÀÜå_\ã À‡☓flÀ€À ãhflåÀ€åXÀflåÀ†åÀÜç \ã
  39623. DÀflåÀ†åÀÜç    \ã
  39624. ð«[é,ÀflåÀ†åÀÜç \ã
  39625. ÀflåÀ†åÀÜç    \ã
  39626. ê ê⇦<`<¼<☓<d<Ô<x<h<l<Ì<ì<pâæÿÿêøÁflåÀ†åÀÜç \ãð«[ÙÀ ãèflåÀ€åàÁflåÀ†å\ãð«[ÈÁflåÀ†å…àßþÿëð«[éXã árþÿëPãð«[ ásOâ @â“Úÿëð«[é@ ãTãªÀÖçÀÉç
  39627. \ã    
  39628. ÀÙç\ã
  39629. êêÀÙç\ã
  39630. êê@ ã€ ãÙç‡ÕÿëÉçpâ@☓âçÿÿêÀ ãÀÉåÀÙåB\ã.ÀÙåI\ã+
  39631. ê)êÀÖçQ\ã
  39632. ÀÖçq\ã
  39633. êêÀ ãÀÉåpGâÀ ãôflåÀ€åÀÙåL\ãÀÙåE\ã
  39634. êêÀÙåT\ã
  39635. ê êÀÙåS\ã
  39636. êêpâÀ ã†flåÀ€åÀ ãÀÉåêÀ ãÀÉ倠ãÀÙåO\ãÀÙåR\ã
  39637. êêÀÙåR\ã
  39638. êêRÀ ãÀÉ倠ãpGâXã á    þÿë ê⇦<`<¼<☓<d<Ô<x<h<l<Ì<ì<´<™åÀ°áG!O @Úÿ ð«[    @ ãTãªÀÖçt™âÀÀçtÀ™âÀÜç
  39639. tÀ™âÀÜç\ã
  39640. êêtÀ™âÀÜç\ã
  39641. êê@ ã€ ãtÀ™âÜç!ÕÿëtÀ™âÌçpâ@☓âàÿÿêÀ ãt™âÀÀåXã áÎýÿë™åÀ°áG¶O @ðÙÿ ð«[    t™â¥ÛÿëÐÀflå…åÈÀflåÀ†å|ãÀ ¸flÀ€pG¬ÀflåÀ†å\㺆ÀflåÀ†å\ãÊêê÷Oâ @âBÚÿëð«[étÀflåÀ†å\ãGÙO @fÙÿ À ãXflåÀ€åÀ ãPflåÀ€åÀ ãHflåÀ€å Àflåp…åð«[é⇦<`<¼<☓<d<Ô<x<h<l<Ì<ì<´<…<¨<¬<°<Invalid instruction (syntax error)À áðÛ-é°Lâ
  39642. ]á!Ôÿ»|Ŵflå|’flåÐMâxqflåp–åtAflå@“åÀàãÀ™åhÁflåÀÜåM\ãXÁflåÀÜåD\ã
  39643. êê@ÁflåÀÜåL\ãêêÀ ãÀ™åêÁflåÀÜåM\ã ÁflåÀÜåT\ã    êêôÀflåÀÜåS\ãêêÀ ãÀ™åÀ‡å\ã,ª` ãP×çÿPâ á‰ÔÿëP áÿPâ Uã
  39644. BUã
  39645. PUã
  39646. SUã
  39647. êÀ ãÀ⇦å@☓â êÀ ãÀ⇨å@☓âêÀ ãhflåÀ€å@☓âê` ã@☓âê` ãVãÝÿÿ
  39648. Vã á%ýÿë™åÀ°áDkOHÙÿ ð«[    Àflå@…åð«[é¨<¬<`<¼<⇦<°<°Ôÿêþ_-é ÐçRãR;R
  39649. ,Rã
  39650. ŴâöÿÿêŴâþflýè;Rã   À áþflýèMissing "Attempt to store byte value out of range (truncated)Data is not half-word alignedData is not word alignedÀ áñÛ-é°Lâ
  39651. ]áŶÓÿ»üQflåüaflåüŴflåÐMâøAflå@“å(Àå\ã ñ•‘Ŷêêmê«êÝêêêBêÀ”åÀÜç \ãªÀ”åÀÜç    \ã
  39652. uêtê á”åðîÿë@ áÀ”åÀÜç"\ã*@☓âÀ”åÀÜç"\ã
  39653. À”åÀÜç\ã
  39654. êêÀ”åÀÜç
  39655. ê ê„å<ØÿëÀ”åÀÜç—å„åÀÀçÀ„åÀ…âÀŷå@☓âãÿÿêÀ”åÀÜç\ã
  39656. À”åÀÜç
  39657. \ã
  39658. *ê)ê áOâ¼Øÿë%êÀ ãÐflåÀ€å á”åºîÿë@ áÀ”å…àÖûÿë™åeÙÿë¨ÀflåÀ†å\ã ð«[À‡åÿ\ãÊÀ‡å|ãºêê á*Oâ @â5Øÿë„åØÿëÀ‡å—å„åÀÀçÀ„åÀ…âÀŷå á”åTÿÿë@ á–ÿÿêêÀ”åÀÜç \ã ªÀ”åÀÜçê`<Ì<À<¼< =☓<    \ã
  39659. êê á”å€îÿë@ áÀ ãÔflåÀ€åÀ”å…à−ûÿë™å(Ùÿë¼ÁflåÀ†å\ã ð«[À„åÀâ ÑO @þ×ÿ„åÎ×ÿëÀ™â À™åÀÜå—å„åÀÀç À‡åÀÜå—å„åŴâÀÀçÀ„åÀ…âÀŷå á”åÿÿë@ áÁÿÿêÖêÀ”åÀÜç \ãªÀ”åÀÜç    \ã
  39660. ÍêÌê á”åHîÿë@ áÀ ãôflåÀ€åÀ”å…àaûÿë™åðØÿëÜÀflåÀ†å\ã ð«[À„åÀâ ›O @Æ×ÿèÖÿ„å”×ÿëÀ‡å¤flå‘å„åA áÁ€çÀ„åÀ…âÀŷå á”åâþÿë@ áÍÿÿê£êÀ”åÀÜç \ãªÀ”åÀÜç    \ã
  39661. Œê−ê á”åîÿë@ áÀ”å…à¾ÒÿëŴ™íÀ™âÀ™åÀ„å…âê`<Ì<À<¼< =☓<Ä<g×ÿëp ãWã*À‡åÀÜç—å„åŴàÀÀçpâõÿÿêÀ„åÀ…âÀŷå á”å¯þÿë@ áÍÿÿêpêÀ ãÀ™å á”åêíÿë@ áÀ ã…flåÀ€åÀ”å…àûÿë™å‹Øÿë á”åœþÿë@ áÀ”åDâÀÜç,\ãÀ LflÀ€À”…óúÿ ™ŵØÿë4ÁflåÀ†å\ã ð«[À„åÀ™åÀ„å‡åÀ…àÀŷå  á(×ÿ둇åÀ„å YáAªÀ‡å—å    ÀÀç‘⇨â÷ÿÿê;êÀ ãÀ™å á”åµíÿë@ áÀ ã¸flåÀ€åÀ”å…àÎúÿë™å]Øÿë á”åfþÿë@ áÀ”åDâÀÜç,\ãÀ”…Áúÿ ™PØÿëlÀflåÀ†å\ã ð«[À„åÀ™åÀ„å‡å áÀ…àÀŷå  áõÖÿ둇åÀ„å YáªÀ‡å$flå‘åI áÁ€çê`<Ì<À<¼< =☓<Ä<‘⇨âíÿÿêÀ ãflåÀ€åð«[é`<Ì<À<¼< =☓<Ä<EQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDADFMUFSUFRSFDVFRDFPOWRPWRMFFMLFDVFRDPOLMVFMNFABSRNDSQTLOGLGNEXPSINCOSTANASNACSATNURDNRMFLTFIXWFSRFSWFCRFCCMFCNFSTFLDFøBASESMILENAMETYPESPEEDREPTINCLUDEENDRSETIFELSEENDIFERROREQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDÿÿÿÿw±þÿEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDADFMUFSUFRSFDVFRDFPOWRPWRMFFMLFDVFRDPOLMVFMNFABSRNDSQTLOGLGNEXPSINCOSTANASNACSATNURDNRMFLTFIXWFSRFSWFCRFCCMFCNFSTFLDFEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBD^()<<>>*/%+-<>==<==<>==>!=<>EQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBDEQNECSCCMIPLVSVCHILSGELTGTLEALNVANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVNLSLLSRASRRORRRXMULMLASTRLDRSTMLDMDCBDCWDCDDCFDBBDBWDBD
  39662.     rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     lì,6SÀ[¤¨MenuUtilsMenuUtils    0.12 (27 Feb 1993)MenuUtils   tThis module provides interface to WIMP menu handlerMenuUtilInitialiseNewAddDeleteDecodeShowShowSubMenuInfoTextTickDotsFadeWarningWritableSubMenuColourMenuColoursTickOnlyêæUnknown MenuUtils operationÀ[Too old module versionÀ[Menu area corruptedÀ[Menu not foundÀ[Item not foundÀ[MenuUtils data corruptedÀ[MenuUtils not yet initialisedS1ãð ÿO-éÀ†å-éçëj6ã-ùÿ•½è@-é †å2ã ãø0 ãï
  39663. j£ ãøŵâ0 áÃä3áüÿÿflåŵå ãŵ堅倽èWork:ãð L-éÀ†å …â`Œå6ã-Újøÿÿ   áèë…½èÀ†å[ãO"òfi#ÿC-é @ áèë>j4ã
  39664. -y³{9j6ã O@5
  39665. 4ã4
  39666. 0ãŷ„4 àà-éâë)j
  39667. € á ‘ á P—å-éõë#j
  39668. p áñ•àJUMPê!êGêqê⇨êÇêÖêÚêYêÜêÛêÚêÙêØêðêøêoêuê
  39669. @ á Pã    OÂ
  39670. Ê-éŴëj6ã-›-yì{j  ãÿ◰½x™åÿC½èòfiã‘ŷâ0−倠ãP áùëöÿÿj0⇦åP flå ⇦å  ã  ⇦å ⇦å ⇦â ° ã -éë0•â  ⇦â$° ã -é#ë „å ⇩â ŷå ⇦å
  39671. àáŷå™åÿ◰ýèMenu°,€!@<dummy>PŶâÕëÒÿÿj  ã°⇦⌵+à7ã p  °K€ --éëÆÿÿj
  39672. p á P⇦å/ë àáààáŷå™åÿ◰ýè7ã ⇦ °  -    è
  39673.  –å-é?ë³ÿÿj –åã   –
  39674. Rá  ÁEËëÿ◰ýè7ã  á-    L ¥ÿÿj
  39675. €-éfë¡ÿÿj5ã°   0°⇦”º+  á|OpGp°K€ -éÑëPEâ P⇦åþëÿ◰ýè …âoë‰ÿÿj
  39676. @ á  ã° ã  ŵç°⇧â [ãûÿÿºP ãp’äwã+
  39677. 0⇦âpŵå€Câ☓¡å°—å :á P —P— ◰Ⱐ㜧'àpŵå –å ã  –  ŵ  ŵå ‘ ° -    † 0°⇧àŵåP‘ áp’äwã
  39678.  ŵâ° ã -éŒë0−åsã}S×ÿÿÊ Oâ¯@âWÿÿê á@™å ™å™åÿ◰ýè1ã † 0†
  39679.  ’åzã0’¶ `0⇧ ’å@ Bâ …å 0…å⇦âÔïAÿÿê ’å0’å⇦âèï<ÿÿê⇦âp™å™åÿ◰ýè    @DâL •â☓ ⇩à‘ÚåÚå  ã− á7ãP ëj4ã-     j  À -y){ôÿÿzÿ◰ýè⇦+qãQà-IÓKÿÿj⇩Båÿ◰ýè0 á  ãÁ[ï-yÊ{ÿÿj
  39680. € á<@•â0 ⇦â½ ã -éGë  ⇦å  „åã  -éëÿÿj ⇦åmë™åÿ◰ýè!0r%!1 ¤!'2%>!73ld!@4A!P5 r!`6mo!p7on!€8A!–9op! 10%!°110!Ç12T!Ð13p!ç14:€!÷15p7ã O²@œþÿ
  39681. Ŵà Çåÿ◰ýè7ãQá O¢Ö@¢‹þÿª  á°ë ávë –u Ês uúÿÿz ’å ⇩ã Ŵåÿ◰ýè°™âH-éé@flå …â`Œå6ã
  39682. °„å;á°„å;á ŷõÿÿ Ýè Oâ?@âЙâ`‡èòfiãTask°™âH-éé „å:ã°  -jøÿÿ „堀堠áë ÝxЙâ`‡èòfiã@-é ã
  39683.   áï€ýxЙâ@½èòfiã@-é…â  ã Ŵå  ã  Ŵå Ŵå ã  ãçï ’u€ýxЙâ@½èòfiã°™âH-éét&åàá  á°ŷâ œå:ã    
  39684. 0Œå3á     O+@0Œå0á°⇩óÿÿ Ýè     Oâq@âЙâ`‡èòfiã°™âH-ééàá  á0ã  
  39685.  ’å0Ŵâ:ã
  39686. °’å°å 0á JŴ÷ÿÿ  á Ýè     OâÂ@âЙâ`‡èòfiã°™âH-éé  ã ° ã -é2ë j⇩å ⇩å ±å°⇩å° ã°⇩å°⇩å°⇩å°⇩å°†å°⇩å …å ÝèЙâ`‡èòfiã'@-é5ãP Ŷ Ŷà⇩¡ á0 ⇩â-éë!j ⇨å8ã
  39687. € 
  39688. 8
  39689. 7ã°G p⇩⇩â€⇦âŷâ ’å2ã
  39690.  ‹åð·å :á
  39691. O⇧@ P‹å5ã
  39692. 0 ŵâ°Œå;á⇩PUâ ⇩ùÿÿŵâêÿÿê€@â'€ýèЙâ&@½èòfiã °™âH-éé0ã ÐZ  Ó  Ó Áä Râøÿÿ Ýè °™âH-éé2ãP    
  39693. €°@²Ŵ°A²°à³° Ã  Ðæ  Áæ Râûÿÿ Ýè°™âH-ééd flå å  ã å å  å å-é1ëj  „åã  -é¬ëj °–å  å „å ⇩â ŷå  å ÝèЙâ`‡èòfiã!@-é⇦â0 ã-éÃë
  39694.  á€â  —å2ã
  39695.  ‘å ã  €  ‘-é¸ëZá
  39696.  Á ‘åãD0◰,0◰ R†Ê€ ⇩ €äîÿÿ¢ á$ ⇦å° á€ýè°™âH-éé-é¤ë
  39697.  q{° q -yŒÿÿ{ ÝxЙâ`‡èòfiã@-é å°⇩â  –å:ã J -éŵë ⇩r  u€ýx@½èòfiã°™âH-é
  39698. é ’å
  39699. ¨àá-é
  39700. ÿÿëj:á O@ Œå ⇧å @’å4ã
  39701. 0 Ŵâ -é    ëj@Tâ ŵùÿÿ  áàþÿë ÝxЙâ`‡èòfiã°™âH-éé ’å ã
  39702. ’å  „åã å:ãÏþÿ @rÍþÿ{j2ã’p    P@Âòßc-ÉÉÿÿË ÝxЙâ`‡èòfiã@-é…âÏï ’u 
  39703. r€ýx@½èòfiã@-é5ãPE  2€ý@½èòfiã°™âH-éé0ã    
  39704. -é<ë
  39705.   á–å-é'ë
  39706.  qu-y/ÿÿ{ ÝxЙâ`‡èòfiã °™âH-éé –ç1ã Ê ⇩ ç Ýè°™âH-éé ã0ã- 
  39707.   - j
  39708.  -ÿÿ  á ÝèЙâ`‡èòfiãp ã0°⇦⌷'àð á°™âH-é éRã ³º å JâZá
  39709. 0C° ³¿  á ÝxЙâ `‡èòfiã°™âH-ééÿ  ã0ã°Ð[ ZÂûÿÿʬjâ ÝèWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickDefHeaderF%÷ÿ¡òÕë^MacrosF%÷ÿ‘­½óv^RegistersF%÷ÿMA⇦Õ–    ^DefHeaderF%÷ÿ¡òÕë^MacrosF%÷ÿ‘­½óv^RegistersF%÷ÿMA⇦Õ–    ^ZOptionsOptionsNickÔ;
  39710. ; ASM Default header
  39711. ; Add your #include files here...
  39712. ;
  39713.  
  39714. #include <ASM$Dir>.Options.Registers
  39715. #include <ASM$Dir>.Options.Macros
  39716.  
  39717. ; A marker for start of code (also gets around a *minor* bug to do with #set
  39718. ; and labels)
  39719.  
  39720. .code_base
  39721.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  39722. ;
  39723. ; Macros file
  39724. ; Wow.
  39725. ;
  39726.  
  39727. macro exg
  39728. {
  39729.   #if p_num>2
  39730.     #error Too many arguments
  39731.   #endif
  39732.   #if p_num<2
  39733.     #error Too few arguments
  39734.   #endif
  39735.   eor p0,p0,p1
  39736.   eor p1,p0,p1
  39737.   eor p0,p0,p1
  39738. }
  39739.  
  39740. macro div
  39741. {
  39742.   #if p_num>3
  39743.     #error Too many arguments
  39744.   #endif
  39745.   #if p_num<3
  39746.     #error Too few arguments
  39747.   #endif
  39748.   
  39749.   #if p0==p1
  39750.     #error Registers must be different
  39751.   #endif
  39752.   #if p0==p2
  39753.     #error Registers must be different
  39754.   #endif
  39755.   #if p1==p2
  39756.     #error Registers must be different
  39757.   #endif
  39758.   
  39759. ; Division code by Hugo Fiennes
  39760.   mov temp_reg,#0
  39761.   cmp p1,#0
  39762.    rsblt p1,p1,#0
  39763.    sublt temp_reg,temp_reg,#1
  39764.   cmp p2,#0
  39765.    rsblt p2,p2,#0
  39766.    mvnlt temp_reg,temp_reg
  39767.   str temp_reg,_minusflag
  39768.   
  39769.   mov  temp_reg,#32
  39770.   mov  p0,#0
  39771. ._loop
  39772.   adds p1,p1,p1
  39773.   adcs p0,p0,p0
  39774.   cmp  p0,p2
  39775.   subge  p0,p0,p2
  39776.   addge  p1,p1,#1         
  39777.   sub  temp_reg,temp_reg,#1
  39778.   cmp  temp_reg,#0
  39779.   bne  _loop        
  39780.     
  39781.   ldr temp_reg,_minusflag
  39782.   cmp temp_reg,#0
  39783.   rsbne p1,p1,#0 
  39784.          
  39785.   mov p0,p1
  39786.   b _end
  39787. ._minusflag dcd 0
  39788. ._end
  39789. }
  39790.  
  39791. macro fstdiv
  39792. {
  39793. ; Division code by Hugo Fiennes
  39794.   mov temp_reg,#0
  39795.   cmp p1,#0
  39796.    rsblt p1,p1,#0
  39797.    sublt temp_reg,temp_reg,#1
  39798.   cmp p2,#0
  39799.    rsblt p2,p2,#0
  39800.    mvnlt temp_reg,temp_reg
  39801.  
  39802.   mov  p0,#0
  39803.  
  39804. ._loop
  39805. #rept 32
  39806.   adds p1,p1,p1
  39807.   adcs p0,p0,p0
  39808.   cmp  p0,p2
  39809.   subge  p0,p0,p2
  39810.   addge  p1,p1,#1         
  39811. #endr
  39812.     
  39813.   cmp temp_reg,#0
  39814.   rsbne p1,p1,#0 
  39815.          
  39816.   mov p0,p1
  39817.  
  39818. ._end
  39819. }
  39820. Works     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     #set sl 10
  39821. #set SL 10
  39822. #set fp 11
  39823. #set FP 11
  39824. #set ip 12
  39825. #set IP 12
  39826. #set sp 13
  39827. #set SP 13
  39828. #set lr 14
  39829. #set LR 14
  39830. #set pc 15
  39831. #set PC 15
  39832. #set OS_WriteI 256
  39833. orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!VOOBarsGýÿÿIØà`!VOOBarsGýÿÿIØà`YDemoDemoNickWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!HelpFÿÿÿ ùÚÚ`!RunFëÿÿÍØa°Œ`!SpritesFùÿÿÙÏØ`MenuUtilsDúÿÿØ¿tÀ    `SrcGýÿÿeØàa!HelpFÿÿÿ ùÚÚ`!RunFëÿÿÍØa°Œ`!SpritesFùÿÿÙÏØ`MenuUtilsDúÿÿØ¿tÀ    `SrcGýÿÿeØàa_!VOOBars!VOOBarsNick´Iconbar VOOBars
  39834. ---------------
  39835.  
  39836. © Andrew Hunter, 1996
  39837.  
  39838. Provides you with pretty bouncy things to liven up your icon bar. Eats up a
  39839. fair bit of processor time on an ARM2 machine, but doesn't make the machine
  39840. unusable.
  39841. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | VU-Bars !Run file
  39842.  
  39843. RMEnsure MenuUtils 0.12 RMLOAD <Obey$Dir>.MenuUtils
  39844.  
  39845. IconSprites <Obey$Dir>.!Sprites
  39846. WimpSlot -max 16k -min 16k
  39847. <Obey$Dir>.!RunImage
  39848. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÜÌ!voobars¬¬#ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD33333333333333333333333333333333""""""""""""""""""""""""""""""""ÑÚÚÚÚÚÚ ªªªªªª
  39849.  ªªªªªª
  39850.  ªªªªªª
  39851. ¡­­­­­­¡­­­­­­""""""""ŵ⇩⇩⇩⇩⇩⇩*ŵ⇩⇩⇩⇩⇩⇩*""""""""33333333ÓØØØØØØ8ÓØØØØØØ8ÓØØØØØØ8DDDDDDDD☓⇦⇦⇦⇦⇦⇦H☓⇦⇦⇦⇦⇦⇦H☓⇦⇦⇦⇦⇦⇦HŶ⇦⇦⇦⇦⇦⇦XŶ⇦⇦⇦⇦⇦⇦XŶ⇦⇦⇦⇦⇦⇦XŶ⇦⇦⇦⇦⇦⇦Xŷ⇦⇦⇦⇦⇦⇦hŷ⇦⇦⇦⇦⇦⇦hŷ⇦⇦⇦⇦⇦⇦hŷ⇦⇦⇦⇦⇦⇦hwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     lì,6SÀ[¤¨MenuUtilsMenuUtils    0.12 (27 Feb 1993)MenuUtils   tThis module provides interface to WIMP menu handlerMenuUtilInitialiseNewAddDeleteDecodeShowShowSubMenuInfoTextTickDotsFadeWarningWritableSubMenuColourMenuColoursTickOnlyêæUnknown MenuUtils operationÀ[Too old module versionÀ[Menu area corruptedÀ[Menu not foundÀ[Item not foundÀ[MenuUtils data corruptedÀ[MenuUtils not yet initialisedS1ãð ÿO-éÀ†å-éçëj6ã-ùÿ•½è@-é †å2ã ãø0 ãï
  39852. j£ ãøŵâ0 áÃä3áüÿÿflåŵå ãŵ堅倽èWork:ãð L-éÀ†å …â`Œå6ã-Újøÿÿ   áèë…½èÀ†å[ãO"òfi#ÿC-é @ áèë>j4ã
  39853. -y³{9j6ã O@5
  39854. 4ã4
  39855. 0ãŷ„4 àà-éâë)j
  39856. € á ‘ á P—å-éõë#j
  39857. p áñ•àJUMPê!êGêqê⇨êÇêÖêÚêYêÜêÛêÚêÙêØêðêøêoêuê
  39858. @ á Pã    OÂ
  39859. Ê-éŴëj6ã-›-yì{j  ãÿ◰½x™åÿC½èòfiã‘ŷâ0−倠ãP áùëöÿÿj0⇦åP flå ⇦å  ã  ⇦å ⇦å ⇦â ° ã -éë0•â  ⇦â$° ã -é#ë „å ⇩â ŷå ⇦å
  39860. àáŷå™åÿ◰ýèMenu°,€!@<dummy>PŶâÕëÒÿÿj  ã°⇦⌵+à7ã p  °K€ --éëÆÿÿj
  39861. p á P⇦å/ë àáààáŷå™åÿ◰ýè7ã ⇦ °  -    è
  39862.  –å-é?ë³ÿÿj –åã   –
  39863. Rá  ÁEËëÿ◰ýè7ã  á-    L ¥ÿÿj
  39864. €-éfë¡ÿÿj5ã°   0°⇦”º+  á|OpGp°K€ -éÑëPEâ P⇦åþëÿ◰ýè …âoë‰ÿÿj
  39865. @ á  ã° ã  ŵç°⇧â [ãûÿÿºP ãp’äwã+
  39866. 0⇦âpŵå€Câ☓¡å°—å :á P —P— ◰Ⱐ㜧'àpŵå –å ã  –  ŵ  ŵå ‘ ° -    † 0°⇧àŵåP‘ áp’äwã
  39867.  ŵâ° ã -éŒë0−åsã}S×ÿÿÊ Oâ¯@âWÿÿê á@™å ™å™åÿ◰ýè1ã † 0†
  39868.  ’åzã0’¶ `0⇧ ’å@ Bâ …å 0…å⇦âÔïAÿÿê ’å0’å⇦âèï<ÿÿê⇦âp™å™åÿ◰ýè    @DâL •â☓ ⇩à‘ÚåÚå  ã− á7ãP ëj4ã-     j  À -y){ôÿÿzÿ◰ýè⇦+qãQà-IÓKÿÿj⇩Båÿ◰ýè0 á  ãÁ[ï-yÊ{ÿÿj
  39869. € á<@•â0 ⇦â½ ã -éGë  ⇦å  „åã  -éëÿÿj ⇦åmë™åÿ◰ýè!0r%!1 ¤!'2%>!73ld!@4A!P5 r!`6mo!p7on!€8A!–9op! 10%!°110!Ç12T!Ð13p!ç14:€!÷15p7ã O²@œþÿ
  39870. Ŵà Çåÿ◰ýè7ãQá O¢Ö@¢‹þÿª  á°ë ávë –u Ês uúÿÿz ’å ⇩ã Ŵåÿ◰ýè°™âH-éé@flå …â`Œå6ã
  39871. °„å;á°„å;á ŷõÿÿ Ýè Oâ?@âЙâ`‡èòfiãTask°™âH-éé „å:ã°  -jøÿÿ „堀堠áë ÝxЙâ`‡èòfiã@-é ã
  39872.   áï€ýxЙâ@½èòfiã@-é…â  ã Ŵå  ã  Ŵå Ŵå ã  ãçï ’u€ýxЙâ@½èòfiã°™âH-éét&åàá  á°ŷâ œå:ã    
  39873. 0Œå3á     O+@0Œå0á°⇩óÿÿ Ýè     Oâq@âЙâ`‡èòfiã°™âH-ééàá  á0ã  
  39874.  ’å0Ŵâ:ã
  39875. °’å°å 0á JŴ÷ÿÿ  á Ýè     OâÂ@âЙâ`‡èòfiã°™âH-éé  ã ° ã -é2ë j⇩å ⇩å ±å°⇩å° ã°⇩å°⇩å°⇩å°⇩å°†å°⇩å …å ÝèЙâ`‡èòfiã'@-é5ãP Ŷ Ŷà⇩¡ á0 ⇩â-éë!j ⇨å8ã
  39876. € 
  39877. 8
  39878. 7ã°G p⇩⇩â€⇦âŷâ ’å2ã
  39879.  ‹åð·å :á
  39880. O⇧@ P‹å5ã
  39881. 0 ŵâ°Œå;á⇩PUâ ⇩ùÿÿŵâêÿÿê€@â'€ýèЙâ&@½èòfiã °™âH-éé0ã ÐZ  Ó  Ó Áä Râøÿÿ Ýè °™âH-éé2ãP    
  39882. €°@²Ŵ°A²°à³° Ã  Ðæ  Áæ Râûÿÿ Ýè°™âH-ééd flå å  ã å å  å å-é1ëj  „åã  -é¬ëj °–å  å „å ⇩â ŷå  å ÝèЙâ`‡èòfiã!@-é⇦â0 ã-éÃë
  39883.  á€â  —å2ã
  39884.  ‘å ã  €  ‘-é¸ëZá
  39885.  Á ‘åãD0◰,0◰ R†Ê€ ⇩ €äîÿÿ¢ á$ ⇦å° á€ýè°™âH-éé-é¤ë
  39886.  q{° q -yŒÿÿ{ ÝxЙâ`‡èòfiã@-é å°⇩â  –å:ã J -éŵë ⇩r  u€ýx@½èòfiã°™âH-é
  39887. é ’å
  39888. ¨àá-é
  39889. ÿÿëj:á O@ Œå ⇧å @’å4ã
  39890. 0 Ŵâ -é    ëj@Tâ ŵùÿÿ  áàþÿë ÝxЙâ`‡èòfiã°™âH-éé ’å ã
  39891. ’å  „åã å:ãÏþÿ @rÍþÿ{j2ã’p    P@Âòßc-ÉÉÿÿË ÝxЙâ`‡èòfiã@-é…âÏï ’u 
  39892. r€ýx@½èòfiã@-é5ãPE  2€ý@½èòfiã°™âH-éé0ã    
  39893. -é<ë
  39894.   á–å-é'ë
  39895.  qu-y/ÿÿ{ ÝxЙâ`‡èòfiã °™âH-éé –ç1ã Ê ⇩ ç Ýè°™âH-éé ã0ã- 
  39896.   - j
  39897.  -ÿÿ  á ÝèЙâ`‡èòfiãp ã0°⇦⌷'àð á°™âH-é éRã ³º å JâZá
  39898. 0C° ³¿  á ÝxЙâ `‡èòfiã°™âH-ééÿ  ã0ã°Ð[ ZÂûÿÿʬjâ ÝèWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickSpritesFùÿÿ ¡Ï…aVUSrcF%÷ÿ€Àe°3bSpritesFùÿÿ ¡Ï…aVUSrcF%÷ÿ€Àe°3b`SrcSrcNick¡ ‘Lvbars,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww´vbar,, ³»»»»»»[³»»»»»»[³»»»»»»[²»»»»»»K²½½½½½½M¡««««««;ÑÚÚÚÚÚÚ: ªªªªªª* ªªªªªª* ªªªªªª*¡­­­­­­=Ŵ⇩⇩⇩⇩⇩⇩:ÒØØØØØØHŵ⇦⇦⇦⇦⇦⇦H◰⇦⇦⇦⇦⇦⇦X◰⇦⇦⇦⇦⇦⇦X◰⇦⇦⇦⇦⇦⇦XLoff,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD33333333333333333333333333333333""²""+"»»""""""»»""»»"²""+"»»"""±±±±±±°° ° °° °° °° ° »»° ° °» °° ° ° °° ° ±±±±±±""²""+"»»""""""»»""»»"²""+"»»"""33333333333333333333333333333333DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwLloadqtm,, wwwwwwww·wwww»»ww»»w·»{wwwwwwwwwwwwwwwww·www·ww{·ww{·w·wwwwwwwwwwwwwwwww·www·ww{·ww{·ww{wwwwwwwwwwwwwwww·www·ww{·»»{·ww{wwwwwwwwwwwwwwww·www·ww{·ww{·ww{wwwwwwwwwwwwwwww·www·ww{·ww{·w·wwwwwwwwwwwwwwwww·»»{w»»w·ww{·»{wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwzww§ªzwªªzwzwwzwwwwwwwwwwwwwwwwwzwwzw§wwzwwªw§zwwwwwwwwwwwwwwwwwzwwzw§wwzwwzzzzwwwwwwwwwwwwwwwwwzwwzw§wwzwwz§wzwwwwwwwwwwwwwwwwwzwwz§§wwzwwz§wzwwwwwwwwwwwwwwwwwwwwzwzwwzwwzwwzwwwwwwwwwwwwwwwwwzww§ª§wwzwwzwwzwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwLbg,, 3333333333333333333333333333333S3ffffffffffffffffffffffffffffffU3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"333333333333333333333333333333D""""""""""""""""""""""""""""""33"""3""""""""""""""""""""""""""""""3"333333333333333333333333333333D"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3ffffffffffffffffffffffffffffffUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUptbar,, ³»»»³»»»³»»»²»»»²½½½¡«««ÑÚÚÚ ªªª ªªª ªªª¡­­­Ŵ⇩⇩⇩ÒØØØŵ⇦⇦⇦◰⇦⇦⇦◰⇦⇦⇦◰⇦⇦⇦<speaker,, 333333333333333S3ffffffffffffffU3UUUUUuwwwUUUUUU"DDDtwWUUUwwDDDD"33sWUEDDDUUw33D""WED4333DDU'"3qUD3#!3CTu3WE4#""B$3DU"WE4#!333$3DU"WE4#A33C$3DU"qUD3#DD$3CTu3""WED4333DDU'"3"33sWUEDDDUUw33D"DDDtwWUUUwwDDDD3UUUUUuwwwUUUUUU3ffffffffffffffUSUUUUUUUUUUUUUUU<speaker2,, 333333333333333S3ffffffffffffffU3UUUUUuwwwUUUUUU"DDDtwWUUUwwDDDD"33sWUEDDDUUw33D""WED41DDU'"3qUD""CTu3WE4!"3 "4DU"WE4!33334DU"WE4!333334DU"qUDCD33CDCTu3""WED4DD4DDU'"3"33sWUEDDDUUw33D"DDDtwWUUUwwDDDD3UUUUUuwwwUUUUUU3ffffffffffffffUSUUUUUUUUUUUUUUU<speaker3,, 333333333333333S3ffffffffffffffU3UUUUUuwwwUUUUUU"DDDtwWUUUwwDDDD"33sWUUUw33D""WE!"""AU'"3qU"2333"BTu3WE!333333DU"WE!3333303DU"WE!3333333DU"qUD333333CTu3""WED4333DDU'"3"33sWUEDDDUUw33D"DDDtwWUUUwwDDDD3UUUUUuwwwUUUUUU3ffffffffffffffUSUUUUUUUUUUUUUUU<speaker4,, 333333333333333S3ffffffffffffffU3UUUUUuwwwUUUUUU"DDDtwwwDDDD"33sW!"""Qw33D""W"2333"Q'"3q"3333#u3W!33333333T"W!333333303T"W!333333333T"qE33333333Cu3""WD333333CT'"3"33sWD4333DTw33D"DDDtwGDDDwwDDDD3UUUUUuwwwUUUUUU3ffffffffffffffUSUUUUUUUUUUUUUUU<3232,, 333333333333333S3ffffffffffffffU3UUUUUUUUUUUUUUU"DDDDDDDDDDDDDDD"33333333333333D""""""""""""""33"""3""""""""""""""3"33333333333333D"DDDDDDDDDDDDDDD3UUUUUUUUUUUUUUU3ffffffffffffffUSUUUUUUUUUUUUUUU    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  39899. ; Source code for !VUBars
  39900. ; ***** extASM format *****
  39901. ; © Andrew Hunter, 1995
  39902.  
  39903. #speed 128
  39904. ; #type &ffa
  39905. #base 0
  39906. #name ^.!RunImage
  39907. #smile
  39908. TEMP r11
  39909.  
  39910. ; lets go!
  39911. B start
  39912.  
  39913. ; bitsa text
  39914. dcb 10,"This is "
  39915. .wimpname dcb "VU Bars",0
  39916. align
  39917. dcb 10,"Oi! Hacker! Bugger off. This code is MINE, got it? If you want some"
  39918. dcb " of your own, write it yerself!",10
  39919. align
  39920.  
  39921. .start
  39922.  
  39923. ; set up a stack (full descending, from top of memory)
  39924. ; Wow, dudes. Far out.
  39925.  
  39926. swi XOS_GetEnv
  39927. mov r13,r1
  39928. sub r13,r13,#32
  39929.  
  39930. ; get the Wimp going!
  39931. mov r0,#200
  39932. mov r1,#&4b534154        ; extASM allows this... EXCELLENT!
  39933. adr r2,wimpname
  39934. swi XWimp_Initialise
  39935. swivs XOS_Exit            ; if there is an error, DIEEE!!!! (Bogus)
  39936.  
  39937. bl make_de_menu
  39938.  
  39939. bl maincode
  39940.  
  39941. swi XOS_Exit
  39942.  
  39943. .ibarike dcd -1
  39944. dcd 0
  39945. dcd 0
  39946. dcd 128
  39947. dcd 68
  39948. dcd &311a
  39949. .spname dcd 0
  39950. .spaddr dcd 0
  39951. dcd 8
  39952.  
  39953. .name dcb "vbars",0
  39954. align
  39955.  
  39956. .mainsp dcd 0
  39957. .vusp dcd 0
  39958. .smvusp dcd 0
  39959. .loadqtm dcd 0
  39960. .nosong dcd 0
  39961. .back dcd 0
  39962.  
  39963. .backsp dcd 0
  39964.  
  39965. .setblock dcd -1
  39966. .ihandle dcd 0
  39967. dcd 0
  39968. dcd 0
  39969.  
  39970. .menu dcb "VU-Bars",0    ; 8 char title
  39971. dcd 0
  39972. dcb 7,2,7,0
  39973. dcd 92,44
  39974. dcd 0
  39975. dcd 1<<7        ; menu flags
  39976. dcd 0            ; submenu pointer
  39977. dcd &7000021        ; flags
  39978. dcb "Quit",0,0,0,0
  39979. dcd 0
  39980.  
  39981. .maincode
  39982. stmfd r13!,{r0-r12,r14}
  39983.  
  39984. ; deal with indirected garbage.
  39985. adr r0,sprs
  39986. str r0,spaddr
  39987. adr r0,name
  39988. str r0,spname
  39989.  
  39990. ; work out address of sprites...
  39991. mov r0,#0
  39992. adr r1,sprs
  39993. bl findsprite
  39994. str r0,mainsp
  39995.  
  39996. mov r0,#1
  39997. bl findsprite
  39998. str r0,vusp
  39999.  
  40000. mov r0,#5
  40001. bl findsprite
  40002. str r0,smvusp
  40003.  
  40004. mov r0,#6
  40005. bl findsprite
  40006. str r0,sp1sp
  40007.  
  40008. mov r0,#7
  40009. bl findsprite
  40010. str r0,sp2sp
  40011.  
  40012. mov r0,#8
  40013. bl findsprite
  40014. str r0,sp3sp
  40015.  
  40016. mov r0,#9
  40017. bl findsprite
  40018. str r0,sp4sp
  40019.  
  40020. mov r0,#4
  40021. bl findsprite
  40022. str r0,back
  40023. str r0,backsp
  40024.  
  40025. mov r0,#3
  40026. bl findsprite
  40027. str r0,loadqtm
  40028.  
  40029. mov r0,#2
  40030. bl findsprite
  40031. str r0,nosong
  40032. ;adr r0,sprs+&3C
  40033. ;str r0,mainsp
  40034. ;adr r0,sprs+&288
  40035. ;str r0,vusp
  40036.  
  40037. mov r0,#0
  40038. adr r1,ibarike
  40039. swi XWimp_CreateIcon
  40040. str r0,ihandle
  40041.  
  40042. mov r0,#0
  40043. str r0,exit
  40044.  
  40045. ._pollloop
  40046. mov r0,#0
  40047. adr r1,block
  40048. swi Wimp_Poll            ; NOT XWimp_Poll... we want to dieeee
  40049.  
  40050. ; check reason code
  40051. cmp r0,#6
  40052. bleq click
  40053.  
  40054. cmp r0,#9            ; is it a menu? BONUS!
  40055. bleq click_de_menu
  40056.  
  40057. cmp r0,#17            ; is it a message?
  40058. cmpne r0,#18
  40059. bleq message            ; Far out, dudes!
  40060.  
  40061. bl update            ; time to update dem sprites
  40062.  
  40063. ; do we exit?
  40064. ldr r1,exit
  40065. cmp r1,#0
  40066. beq _pollloop
  40067.  
  40068. ldmfd r13!,{r0-r12,r15}
  40069.  
  40070. .exit dcd 0
  40071.  
  40072. .VuType dcd 0
  40073.  
  40074. .update
  40075. stmfd r13!,{r0-r12,r14}
  40076.  
  40077. ldr r4,VuType
  40078. cmp r4,#0
  40079.  
  40080. beq ahem            ; PARTY ON DUDES!
  40081.  
  40082. cmp r4,#1
  40083. bleq plotspeakers
  40084.  
  40085. cmp r4,#2
  40086. bleq plotlevel
  40087.  
  40088. ; update sprite
  40089. mov r0,#0
  40090. adr r1,setblock
  40091. swi XWimp_SetIconState
  40092.  
  40093. ldmfd r13!,{r0-r12,r15}
  40094.  
  40095. mov r0,#0
  40096. swi XQTM_ReadVULevels
  40097. bvs _noqtm
  40098.  
  40099. swi XQTM_Info
  40100. bvs _nosong
  40101. ldr r0,back
  40102. str r0,backsp
  40103. mov r0,#1
  40104. str r0,_songpres
  40105. str r0,_qtmpres
  40106.  
  40107. adr r8,old
  40108. sub r8,r8,#1
  40109.  
  40110. ; get sprite addresses
  40111. ldr r9,mainsp
  40112. ldr r10,vusp
  40113. bl clearvu            ; get rid of vu bar
  40114.  
  40115. mov r1,#4
  40116. add r9,r9,#24
  40117.  
  40118. ._uploop
  40119. mov r0,r1            ; read VU level
  40120. swi QTM_ReadVULevels
  40121. mov r2,r0,asr #2
  40122. strb r2,[r8,r1]
  40123.  
  40124. bl drawvu            ; draw it
  40125. ; next vu bar
  40126. sub r9,r9,#8            ; next position
  40127. subs r1,r1,#1
  40128. bne _uploop
  40129.  
  40130. ldr r8,old
  40131. ldr r9,new
  40132. cmp r8,r9
  40133. ; update sprite
  40134. movne r0,#0
  40135. adrne r1,setblock
  40136. swine XWimp_SetIconState
  40137.  
  40138. str r8,new
  40139.  
  40140. ldmfd r13!,{r0-r12,r15}
  40141.  
  40142. ._songpres dcd 1
  40143. ._nosong
  40144.  
  40145. bl checkdsym
  40146.  
  40147. ldr r0,nosong
  40148. str r0,backsp
  40149. ldr r9,mainsp
  40150. ldr r10,vusp
  40151. bl clearvu            ; get rid of vu bar
  40152.  
  40153. ldr r0,_songpres
  40154. cmp r0,#0
  40155.  
  40156. ; update sprite
  40157. movne r0,#0
  40158. adrne r1,setblock
  40159. swine XWimp_SetIconState
  40160.  
  40161. mov r0,#0
  40162. str r0,_songpres
  40163.  
  40164. ldmfd r13!,{r0-r12,r15}
  40165.  
  40166. ._qtmpres dcd 1
  40167. ._noqtm
  40168.  
  40169. bl checkdsym
  40170.  
  40171. ldr r0,loadqtm
  40172. str r0,backsp
  40173. ldr r9,mainsp
  40174. ldr r10,vusp
  40175. bl clearvu            ; get rid of vu bar
  40176.  
  40177. ldr r0,_qtmpres
  40178. cmp r0,#0
  40179.  
  40180. ; update sprite
  40181. movne r0,#0
  40182. adrne r1,setblock
  40183. swine XWimp_SetIconState
  40184.  
  40185. mov r0,#0
  40186. str r0,_qtmpres
  40187.  
  40188. ldmfd r13!,{r0-r12,r15}
  40189.  
  40190. .checkdsym
  40191. stmfd r13!,{r0-r12,r14}
  40192.  
  40193. mov r0,#0
  40194. str r0,dsym
  40195.  
  40196. swi XQTM_Info
  40197. bvc _fin
  40198.  
  40199. mov r0,#0
  40200. ;swi XDSym_VuBar
  40201. bvs _fin
  40202.  
  40203. mov r0,#1
  40204. str r0,dsym
  40205.  
  40206. ;mov r0,#5
  40207. ;swi DSym_VuGravity
  40208. ;swi DSym_Configure
  40209.  
  40210. ._fin
  40211. ldmfd r13!,{r0-r12,r15}
  40212.  
  40213. .old dcd 0
  40214. .new dcd 0
  40215.  
  40216. .drawvu
  40217. ; r0 = height (0-64)
  40218. ; r9 = pointer to main sprite (change address to change pos)
  40219. ; r10 = pointer vu sprite
  40220. stmfd r13!,{r0-r12,r14}
  40221.  
  40222. mov r0,r0,asr #2        ; adjust height
  40223. cmp r0,#0            ; do we need to bother plotting this one?
  40224. ble _fin
  40225.  
  40226. rsb r1,r0,#16            ; no of lines to skip
  40227. mov r2,#32
  40228. mul r3,r2,r1            ; no of bytes to skip!
  40229. add r9,r9,r3
  40230. ; do same to vu sprite
  40231. mov r2,#8
  40232. mul r3,r2,r1
  40233. add r10,r10,r3
  40234.  
  40235. ._drawloop
  40236. ldmia r10!,{r3-r4}        ; load it
  40237. stmia r9,{r3-r4}        ; store it
  40238.  
  40239. add r9,r9,#32            ; next line
  40240. subs r0,r0,#1            ; have we finished?
  40241. bne _drawloop
  40242.  
  40243. ._fin
  40244. ldmfd r13!,{r0-r12,r15}
  40245.  
  40246. .drawsvu
  40247. ; r0 = height (0-64)
  40248. ; r9 = pointer to main sprite (change address to change pos)
  40249. ; r10 = pointer vu sprite
  40250. stmfd r13!,{r0-r12,r14}
  40251.  
  40252. mov r0,r0,asr #2        ; adjust height
  40253. cmp r0,#0            ; do we need to bother plotting this one?
  40254. ble _fin
  40255.  
  40256. rsb r1,r0,#16            ; no of lines to skip
  40257. mov r2,#32
  40258. mul r3,r2,r1            ; no of bytes to skip!
  40259. add r9,r9,r3
  40260. ; do same to vu sprite
  40261. mov r2,#4
  40262. mul r3,r2,r1
  40263. add r10,r10,r3
  40264.  
  40265. ._drawloop
  40266. ldmia r10!,{r3}            ; load it
  40267. stmia r9,{r3}            ; store it
  40268.  
  40269. add r9,r9,#32            ; next line
  40270. subs r0,r0,#1            ; have we finished?
  40271. bne _drawloop
  40272.  
  40273. ._fin
  40274. ldmfd r13!,{r0-r12,r15}
  40275.  
  40276. .clearvu
  40277. ; r9 = pointer to main sprite
  40278. stmfd r13!,{r0-r12,r14}
  40279.  
  40280. mov r0,#17
  40281.  
  40282. ldr r10,backsp            ; pointer to background
  40283.  
  40284. ._drawloop
  40285. #rept 4
  40286. ldmia r10!,{r3-r4}
  40287. stmia r9!,{r3-r4}        ; store it
  40288. #endr
  40289.  
  40290. subs r0,r0,#1            ; have we finished?
  40291. bne _drawloop
  40292.  
  40293. ._fin
  40294. ldmfd r13!,{r0-r12,r15}
  40295.  
  40296. .message
  40297. stmfd r13!,{r0-r12,r14}
  40298.  
  40299. ldr r0,[r1,#16]            ; get message no.
  40300. cmp r0,#0            ; shall we quit?
  40301. moveq r2,#1            ; yup
  40302. streq r2,exit
  40303.  
  40304. ldmfd r13!,{r0-r12,r15}
  40305.  
  40306. .click
  40307. stmfd r13!,{r0-r12,r14}
  40308.  
  40309. ldr r0,[r1,#8]
  40310. cmp r0,#2
  40311. bne _fin
  40312.  
  40313. mov r10,r1
  40314.  
  40315. ldr r0,mainmenu
  40316. swi MenuUtil_Show
  40317.  
  40318. ;adr r1,menu        ; menu addr
  40319. ;ldr r2,[r10]        ; x
  40320. ;sub r2,r2,#64
  40321. ;mov r3,#(192-44)
  40322.  
  40323. ;swi XWimp_CreateMenu
  40324.  
  40325. ._fin
  40326. ldmfd r13!,{r0-r12,r15}
  40327.  
  40328. .findsprite
  40329. ; r0 - sprite number
  40330. ; r1 - ptr to area
  40331. stmfd r13!,{r1-r12,r14}
  40332.  
  40333. ldr r2,[r1,#8]            ; offset to first sprite
  40334. add r1,r1,r2
  40335.  
  40336. ._findloop
  40337. cmp r0,#0
  40338. ble _exitloop
  40339.  
  40340. ldr r2,[r1]            ; offset to next sprite
  40341. add r1,r1,r2
  40342.  
  40343. sub r0,r0,#1
  40344. b _findloop
  40345.  
  40346. ._exitloop
  40347. ldr r2,[r1,#32]            ; offset to image
  40348. add r0,r1,r2
  40349.  
  40350. ldmfd r13!,{r1-r12,r15}
  40351.  
  40352. .ahem
  40353.  
  40354. ;mov r0,#0
  40355. ;swi XDSym_VuBar
  40356. ;movvs r0,#0
  40357. ;strvs r0,dsym
  40358. ;ldmvsfd r13!,{r0-r12,r15}
  40359.  
  40360. ldr r0,back
  40361. str r0,backsp
  40362. ;mov r0,#1
  40363. ;str r0,_songpres
  40364.  
  40365. ; get sprite addresses
  40366. ldr r9,mainsp
  40367. ldr r10,smvusp
  40368. bl clearvu            ; get rid of vu bar
  40369.  
  40370. ;mov r0,#-1
  40371. ;swi XDSym_Voices
  40372. ;cmp r0,#4
  40373. mov r0,#0
  40374. mov r1,#0
  40375. mov r2,#0
  40376. mov r3,#0
  40377. mov r4,#0
  40378. swi Sound_Configure
  40379. cmp r0,#4
  40380. ble _up4voice
  40381.  
  40382. mov r12,#7
  40383. add r9,r9,#28
  40384.  
  40385. ._uploop
  40386. mov r0,r12            ; read VU level
  40387. bl readvulevel
  40388. mov r2,r1,asr #2
  40389. ;strb r2,[r8,r12]
  40390.  
  40391. mov r0,r2
  40392. bl drawsvu            ; draw it
  40393. ; next vu bar
  40394. sub r9,r9,#4            ; next position
  40395. sub r12,r12,#1
  40396. cmp r12,#0
  40397. bge _uploop
  40398.  
  40399. ; update sprite
  40400. mov r0,#0
  40401. adr r1,setblock
  40402. swi XWimp_SetIconState
  40403.  
  40404. ldmfd r13!,{r0-r12,r15}
  40405.  
  40406. ._up4voice
  40407. ldr r10,vusp
  40408.  
  40409. mov r12,#3
  40410. add r9,r9,#24
  40411.  
  40412. ._uploop2
  40413. mov r0,r12            ; read VU level
  40414. bl readvulevel
  40415. ;swi DSym_VuBar
  40416. mov r1,r1,asr #2
  40417. ;strb r2,[r8,r12]
  40418.  
  40419. mov r0,r1
  40420. bl drawvu            ; draw it
  40421. ; next vu bar
  40422. sub r9,r9,#8            ; next position
  40423. sub r12,r12,#1
  40424. cmp r12,#0
  40425. bge _uploop2
  40426.  
  40427. ; update sprite
  40428. mov r0,#0
  40429. adr r1,setblock
  40430. swi XWimp_SetIconState
  40431.  
  40432. ldmfd r13!,{r0-r12,r15}
  40433.  
  40434. .dsym dcd 0
  40435. .dsvoic dcd 0
  40436.  
  40437. .sprs dcd 2660
  40438. incbin <tmp$path>.Sprites
  40439. align
  40440.  
  40441. .readvulevel
  40442. ; r0 = channel to read
  40443. stmfd r13!,{r0,r2-r12,r14}
  40444.  
  40445. cmp r0,#7
  40446. adrgt r0,_erm
  40447. swigt OS_GenerateError
  40448.  
  40449. cmp r0,#0
  40450. adrlt r0,_erm2
  40451. swilt OS_GenerateError
  40452.  
  40453. mov r12,#32534536
  40454. ldrb r1,[r12,r0]
  40455.  
  40456. adr r3,transtable
  40457. ldrb r4,[r3,r1]
  40458. mov r1,r4
  40459. tst r1,#128
  40460. subne r1,r1,#256
  40461.  
  40462. cmp r1,#0
  40463. mvnlt r1,r1
  40464. addlt r1,r1,#1
  40465.  
  40466. mov r1,r1,lsl #1
  40467. cmp r1,#256
  40468. movge r1,#0
  40469.  
  40470. adr r10,_olblock
  40471. ldrb r2,[r10,r0]
  40472.  
  40473. ldr r3,decay
  40474. cmp r3,#0
  40475. ble _nope
  40476.  
  40477. cmp r2,r1
  40478. movge r1,r2
  40479. subge r1,r1,r3
  40480.  
  40481. ._nope
  40482. cmp r1,#0
  40483. movle r1,#0
  40484.  
  40485. adr r10,_olblock
  40486. strb r1,[r10,r0]
  40487.  
  40488. ldmfd r13!,{r0,r2-r12,r15}
  40489. ._olblock
  40490. dbb 16
  40491. ._erm dcd 1
  40492. dcb "Er, I canne read from dat channel!",0
  40493. align
  40494. ._erm2 dcd 1
  40495. dcb "Don't do dat to me again! BUG!",0
  40496. align
  40497.  
  40498. .make_de_menu
  40499. stmfd r13!,{r0-r12,r14}
  40500.  
  40501. mov r0,#012
  40502. mov r1,#0
  40503. swi MenuUtil_Initialise
  40504.  
  40505. mov r0,#0
  40506. adr r1,_speedtitle
  40507. mov r2,#10
  40508. swi MenuUtil_New
  40509. str r0,speedmenu
  40510.  
  40511. mov r0,#0
  40512. adr r1,_sp1
  40513. mov r2,#0
  40514. swi MenuUtil_Add
  40515.  
  40516. mov r0,#0
  40517. adr r1,_sp2
  40518. mov r2,#0
  40519. swi MenuUtil_Add
  40520.  
  40521. mov r0,#0
  40522. adr r1,_sp3
  40523. mov r2,#0
  40524. swi MenuUtil_Add
  40525.  
  40526. mov r0,#0
  40527. adr r1,_sp4
  40528. mov r2,#0
  40529. swi MenuUtil_Add
  40530.  
  40531. mov r0,#0
  40532. adr r1,_typetitle
  40533. mov r2,#10
  40534. swi MenuUtil_New
  40535. str r0,typemenu
  40536.  
  40537. mov r0,#0
  40538. adr r1,_type1
  40539. mov r2,#0
  40540. swi MenuUtil_Add
  40541.  
  40542. mov r0,#0
  40543. adr r1,_type2
  40544. mov r2,#0
  40545. swi MenuUtil_Add
  40546.  
  40547. mov r0,#0
  40548. adr r1,_type3
  40549. mov r2,#0
  40550. swi MenuUtil_Add
  40551.  
  40552. mov r0,#0
  40553. adr r1,_maintitle
  40554. mov r2,#10
  40555. swi MenuUtil_New
  40556. str r0,mainmenu
  40557.  
  40558. mov r0,#0
  40559. adr r1,_typetitle
  40560. mov r2,#0
  40561. swi MenuUtil_Add
  40562.  
  40563. mov r0,#0
  40564. ldr r1,typemenu
  40565. swi MenuUtil_SubMenu
  40566.  
  40567. mov r0,#0
  40568. adr r1,_speedtitle
  40569. mov r2,#0
  40570. swi MenuUtil_Add
  40571.  
  40572. mov r0,#0
  40573. ldr r1,speedmenu
  40574. swi MenuUtil_SubMenu
  40575.  
  40576. mov r0,#0
  40577. adr r1,_quit
  40578. mov r2,#0
  40579. swi MenuUtil_Add
  40580.  
  40581. ldmfd r13!,{r0-r12,r15}
  40582. ._maintitle dcb "VU Bars 2",0
  40583. ._typetitle dcb "Type",0
  40584. ._quit dcb "Quit",0
  40585.  
  40586. ._type1 dcb "VU-Bars",0
  40587. ._type2 dcb "Speakers",0
  40588. ._type3 dcb "Levelometer",0
  40589.  
  40590. ._speedtitle dcb "Decay",0
  40591. ._sp1 dcb "Slow",0
  40592. ._sp2 dcb "Medium",0
  40593. ._sp3 dcb "Fast",0
  40594. ._sp4 dcb "'Real'",0
  40595. align
  40596.  
  40597. .mainmenu dcd 0
  40598. .typemenu dcd 0
  40599. .speedmenu dcd 0
  40600.  
  40601. .plotspeakers
  40602. stmfd r13!,{r0-r12,r14}
  40603.  
  40604. ldr r9,mainsp
  40605. ldr r10,vusp
  40606. bl clearvu            ; get rid of vu bar
  40607.  
  40608. bl calcstereo
  40609.  
  40610. ldr r1,leftlev
  40611. mov r1,r1,asr #8        ; calculate left postion
  40612.  
  40613. cmp r1,#3
  40614. movge r1,#2
  40615.  
  40616. mov r1,r1,lsl #2
  40617. adr r2,sp1sp
  40618.  
  40619. ldr r10,[r2,r1]            ; get the sprite
  40620. bl drawspeak
  40621.  
  40622. add r9,r9,#16
  40623. ldr r1,rightlev
  40624. mov r1,r1,asr #8        ; calculate left postion
  40625.  
  40626. cmp r1,#3
  40627. movge r1,#2
  40628.  
  40629. mov r1,r1,lsl #2
  40630. adr r2,sp1sp
  40631.  
  40632. ldr r10,[r2,r1]            ; get the sprite
  40633. bl drawspeak
  40634.  
  40635. ldmfd r13!,{r0-r12,r15}
  40636. .sp1sp dcd 0
  40637. .sp2sp dcd 0
  40638. .sp3sp dcd 0
  40639. .sp4sp dcd 0
  40640.  
  40641. .calcstereo
  40642. stmfd r13!,{r0-r12,r14}
  40643.  
  40644. mov r10,#8        ; no of voices
  40645. mov r9,#1        ; voice on
  40646.  
  40647. mov r7,#0        ; left level
  40648. mov r8,#0        ; right level
  40649.  
  40650. ._calcloop
  40651.  
  40652. sub r0,r9,#1
  40653. bl readvulevel
  40654.  
  40655. mov r3,r1
  40656.  
  40657. mov r0,r9
  40658. mov r1,#-128
  40659. swi XSound_Stereo
  40660.  
  40661. cmp r1,#-128
  40662. movle r0,#1
  40663. movle r1,#-128
  40664. movle r9,#1
  40665. swile XSound_Stereo
  40666.  
  40667. rsb r5,r1,#128        ; left level
  40668. mul r4,r3,r5        ; level*stereo
  40669. mov r4,r4,asr #8    ; 16-bit accuracy is a bit much
  40670. add r7,r7,r4
  40671.  
  40672. add r5,r1,#128        ; right level
  40673. mul r4,r3,r5        ; level*stereo
  40674. mov r4,r4,asr #8    ; 16-bit accuracy is a bit much
  40675. add r8,r8,r4
  40676.  
  40677. add r9,r9,#1
  40678. subs r10,r10,#1
  40679. bne _calcloop
  40680.  
  40681. cmp r7,#0
  40682. mvnlt r7,r7
  40683. str r7,leftlev
  40684. cmp r8,#0
  40685. mvnlt r8,r8
  40686. str r8,rightlev
  40687.  
  40688. ldmfd r13!,{r0-r12,r15}
  40689.  
  40690. .leftlev dcd 0
  40691. .rightlev dcd 0
  40692.  
  40693. .drawspeak
  40694. ; r9 = pointer to main sprite (change address to change pos)
  40695. ; r10 = pointer vu sprite
  40696. stmfd r13!,{r0-r12,r14}
  40697.  
  40698. mov r0,#17
  40699.  
  40700. ._drawloop
  40701. ldmia r10!,{r3-r6}        ; load it
  40702. stmia r9,{r3-r6}        ; store it
  40703.  
  40704. add r9,r9,#32            ; next line
  40705. subs r0,r0,#1            ; have we finished?
  40706. bne _drawloop
  40707.  
  40708. ._fin
  40709. ldmfd r13!,{r0-r12,r15}
  40710.  
  40711. .transtable
  40712. dcb 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  40713. dcb 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255
  40714. dcb 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255
  40715. dcb 1,255,1,255,1,255,1,255,1,254,1,254,1,254,1,254
  40716. dcb 1,254,1,254,1,254,1,254,2,254,2,254,2,253,2,253
  40717. dcb 2,253,2,253,2,253,2,253,3,253,3,253,3,252,3,252
  40718. dcb 3,252,3,252,4,252,4,251,4,251,4,251,5,251,5,250
  40719. dcb 5,250,5,250,6,250,6,249,6,249,6,249,7,249,7,248
  40720. dcb 7,248,8,248,8,247,9,247,9,246,10,246,10,245,11,245
  40721. dcb 11,244,12,244,12,243,13,243,13,242,14,242,14,241,15,241
  40722. dcb 15,240,16,240,17,239,18,238,19,237,20,236,21,235,22,234
  40723. dcb 23,233,24,232,25,231,26,230,27,229,28,228,29,227,30,226
  40724. dcb 31,225,33,224,35,222,37,220,39,218,41,216,43,214,45,212
  40725. dcb 47,210,49,208,51,206,53,204,55,202,57,200,59,198,61,196
  40726. dcb 63,194,67,192,71,188,75,184,79,180,83,176,87,172,91,168
  40727. dcb 95,164,99,160,103,156,107,152,111,148,115,144,119,140,127,136
  40728. align
  40729.  
  40730. .click_de_menu
  40731. stmfd r13!,{r0-r12,r14}
  40732.  
  40733. ldr r0,[r1,#0]
  40734. cmp r0,#2            ; is it a quit option?
  40735.  
  40736. moveq r2,#1            ; then we must quit! Bogus!
  40737. streq r2,exit
  40738.  
  40739. cmp r0,#0
  40740. bne _nottype
  40741.  
  40742. ldr r2,[r1,#4]
  40743. cmp r2,#-1
  40744. ble _nottype
  40745.  
  40746. str r2,VuType
  40747.  
  40748. ._nottype
  40749. cmp r0,#1
  40750. bne _notdecay
  40751.  
  40752. ldr r2,[r1,#4]
  40753. cmp r2,#-1
  40754. ble _nottype
  40755.  
  40756. mov r3,#16
  40757. cmp r2,#0
  40758. moveq r3,#8
  40759.  
  40760. cmp r2,#1
  40761. moveq r3,#16
  40762.  
  40763. cmp r2,#2
  40764. moveq r3,#32
  40765.  
  40766. cmp r2,#3
  40767. moveq r3,#0
  40768.  
  40769. str r3,decay
  40770.  
  40771. ._notdecay
  40772. ldmfd r13!,{r0-r12,r15}
  40773. .decay dcd 16
  40774.  
  40775. .plotlevel
  40776. stmfd r13!,{r0-r12,r14}
  40777.  
  40778. ldr r9,mainsp
  40779. ldr r10,vusp
  40780.  
  40781. ldr r0,_thing
  40782. add r0,r0,#1
  40783. cmp r0,#4
  40784. movge r0,#0
  40785. str r0,_thing
  40786. blt _noskroll
  40787.  
  40788. ; skroll the icon
  40789. add r0,r9,#1
  40790. mov r1,r9
  40791.  
  40792. mov r7,#17
  40793.  
  40794. ._loop
  40795. #rept 31
  40796. ldrb r2,[r0],#1
  40797. strb r2,[r1],#1
  40798. #endr
  40799.  
  40800. mov r2,#119
  40801. strb r2,[r1]
  40802.  
  40803. add r0,r0,#1
  40804. add r1,r1,#1
  40805.  
  40806. subs r7,r7,#1
  40807. bne _loop
  40808.  
  40809. ._noskroll
  40810. bl calcstereo
  40811.  
  40812. ; left
  40813. ldr r0,leftlev
  40814. mov r0,r0,asr #7
  40815. cmp r0,#8
  40816. movge r0,#8
  40817. rsb r0,r0,#8
  40818.  
  40819. ; calc ypos
  40820. mov r1,#32
  40821. mul r2,r1,r0
  40822. add r2,r2,#31
  40823.  
  40824. mov r3,#187
  40825. strb r3,[r9,r2]
  40826.  
  40827. ; right
  40828. ldr r0,rightlev
  40829. mov r0,r0,asr #7
  40830. cmp r0,#8
  40831. movge r0,#8
  40832. rsb r0,r0,#8
  40833.  
  40834. ; calc ypos
  40835. mov r1,#32
  40836. mul r2,r1,r0
  40837. add r2,r2,#31
  40838. add r2,r2,#32*8
  40839.  
  40840. mov r3,#187
  40841. strb r3,[r9,r2]
  40842.  
  40843. ldmfd r13!,{r0-r12,r15}
  40844. ._thing dcd 0
  40845.  
  40846. dcb 10,"Well, that just about wraps it up..."
  40847. dcb 10,"There should be nothing after this ---->"
  40848. align
  40849. ; and there shouldn't, too!
  40850. ; wimp poll block
  40851. .block
  40852. ; and then there was a big pile of poo
  40853. ; or bliss if you are a dung beatle
  40854. e dcd 0
  40855. .spaddr dcd 0
  40856. dcd 8
  40857.  
  40858. .name dcb "vbars",0
  40859. align
  40860.  
  40861. .mainsp dcd 0
  40862. .vusp dcd 0
  40863. .smvusp dcd 0
  40864. .loadqtm dcd 0
  40865. .nosong dcd 0
  40866. .back dcd 0
  40867.  
  40868. .backsp dcd 0
  40869.  
  40870. .setblock dcd -1
  40871. .ihandle dcd 0
  40872. dcd 0
  40873. dcd 0
  40874.  
  40875. .menu dcb "VU-Bars",0    ; 8 char title
  40876. dcd 0
  40877. dcb 7,2,7,NickAboutFÿÿÿW8ù¸´cManualFÿÿÿ4ÎÞfi'dAboutFÿÿÿW8ù¸´cManualFÿÿÿ4ÎÞfi'dYDocsDocsNickAbout !ASM
  40878. ----------
  40879.  
  40880. !ASM is an advanced ARM code assembler with none of the limits imposed on 
  40881. you as you would find using BASIC assembler, !AAsm or !ObjAsm. New features
  40882. include:
  40883.  
  40884. Support for floating point instructions
  40885. Local labels
  40886. ADR can address a 2-gigabyte range (should be enough...)
  40887. LDR can do that also, as can STR, STF and LDF...
  40888. All data processing instructions can take any constant
  40889. A full expression parser (not new over BASIC, but a rarity nonetheless.)
  40890.   Proper ordering of operations (brackets, +-*/, etc etc)
  40891.   Can tell the difference between SWIs and labels
  40892.   Has 'fast mode' if no parsing required
  40893. Structures
  40894. Very flexible macro support
  40895. Nice wimp front end
  40896. Can output in AIF format
  40897. Can use throwback
  40898. Default header can be automatically included and assembled at start of 
  40899. process
  40900. A smiley for those that like these things.
  40901.  
  40902. There are three stages to assembling any program:
  40903.  
  40904. 1. The PreProcessor. This collects any #included file, and processes the
  40905.    various preprocessor instructions (those that begin with '#').
  40906. 2. The MacroScanner. This finds all the macros and defines references to
  40907.    them.
  40908. 3. The multi-pass assembler. Due to the ability to auto-expand labels, the
  40909.    assembler can take large numbers of passes in order to create meaningful
  40910.    code. The minimum is two passes...
  40911.  
  40912. BASIC assembler code translates very well into !ASM assembler code, because
  40913. the syntax is designed to be the same (!extASM code also translates very
  40914. well, seeing as !ASM is based around it). In fact, the only real difference
  40915. is that you no longer need the BASIC bits at the start and end, and the file
  40916. is pure text. !ASM can do almost everything that you would want from the
  40917. BASIC assembler, and one or two things that BASIC could never do...
  40918.  
  40919. !ASM consists, basically, of the assembler itself, written in C, and the
  40920. front-end, written in BASIC. The assembler is compiled from about 4000 lines
  40921. of source code (wow...) into a 58k executable using Beebugs rather excellent
  40922. Easy C++. (The code itself is actually C, due to implementation differences
  40923. in structs). The front end uses the task window module in order to multitask
  40924. the single tasking ASM code, producing a nice window at the end where you
  40925. can view the output.
  40926.  
  40927. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  40928. !ASM v1.00
  40929. ----------
  40930.  
  40931. Welcome to !ASM! !ASM is a very advanced assembler, with none of the 
  40932. limitations imposed on you by BASIC or most of the other ARM assemblers
  40933. available. Features include:
  40934.  
  40935.  - Auto expansion of commands with constants that do not assemble into one
  40936.    instruction (no need for an ADRL!)
  40937.  - Local labels, structs and macros
  40938.  - RISC PC compatability
  40939.  - full preprocessor including repeated sections of code, conditional 
  40940.    assembly, multiple source files and more 
  40941.  - support for floating point instructions (registered version only)
  40942.  
  40943. It takes no great mental strain to realise that !ASM was inspired by the
  40944. excellent !extASM, which, while having most of the features !ASM does, it
  40945. produces larger code and is not RISC PC compatable owing to a funny method
  40946. of encryption...
  40947.  
  40948. !ASM is SHAREWARE! That means that you need to register it if you find it
  40949. useful, or want to release any of your creations into the world. I impose
  40950. no evaluation period, merely the fact that if you register, development will
  40951. continue apace, and I'll fulfil my promises for the next few versions.
  40952.  
  40953. Other reasons for registering
  40954. -----------------------------
  40955.  
  40956. It's cheap! It comes with a colour !Zap mode designed specifically for !ASM,
  40957. a more comprehensive macro library. The shareware version is also slightly
  40958. disabled in that you cannot have more than 10 macros, or 4000 lines of 
  40959. assembled code.
  40960.  
  40961. The registered version also supports the floating point instructions, and
  40962. I'm more likely to provide support to registered users.
  40963.  
  40964. Using !ASM
  40965. ----------
  40966.  
  40967. !ASM takes in text files and regurgitates ARM code files. It can be used to
  40968. create modules, utilities, absolute files, etc, etc.
  40969.  
  40970. For those of you who haven't used !extASM before, its syntax is very similar
  40971. to BASIC's - labels begin with a '.', and the instructions all take the same
  40972. format. However, it sports some features that, once you've used, you'll be
  40973. unable to do without. It can auto-expand instructions that it would
  40974. otherwise be unable to assemble meaningfully, using a temporary register
  40975. where required. This makes instructions such as 'MOV R0,#257' finally
  40976. possible, as well as removing the need for a 'ADRL' macro.
  40977.  
  40978. It supports throwback, so you can remove those irritating errors much 
  40979. quicker if you have a copy of 'DDEUtils'. It supports local labels, allowing
  40980. neater and more meaningful code, and has a comprehensive pre-processor. It
  40981. also has the benefit of not needing all that extra code that BASIC requires
  40982. to start itself up.
  40983.  
  40984. Auto-expansion
  40985. --------------
  40986.  
  40987. Some commands (MOV, for example) can be auto-expanded without the need for
  40988. a temporary register, and some (CMP, for example), need a temporary register
  40989. to store intermediate values. You can assign a temporary register with the
  40990. pseudo command 'TEMP Rn', where Rn is the register you wish to use as 
  40991. temporary. I generally use R12 or R11, but any will do.
  40992.  
  40993. The ADR/LDR/STR auto-expansion may change the size of the code produced -
  40994. this will result in extra passes being used to compensate for any inaccuracy
  40995. incurred.
  40996.  
  40997. Local labels
  40998. ------------
  40999.  
  41000. These are an immensely useful part of !ASM. Not only does use of these speed
  41001. up assembly, it also allows much more sensible names for labels in large
  41002. pieces of code. These are defined in the same way as global labels, but with
  41003. the first letter of the label as an underscore ('_'). The next 'main' label
  41004. (ie one without an underscore) will make all the previous local labels 
  41005. invalid (they go 'out of scope'). While 'in scope' they perform just like
  41006. any ordinary label.
  41007.  
  41008. The parser
  41009. ----------
  41010.  
  41011. !ASM contains an advanced expression parser, similar in capability and
  41012. operation to BASIC's. You can, therefore, have a constant like 
  41013. '#45+(1<<3)-(2*3)' if you really want to. Note that these do compile
  41014. slightly slower than if you just used a single number. Binary numbers
  41015. may be prefixed with '%' and hexidecimal numbers with '&'.
  41016.  
  41017. The preprocessor
  41018. ----------------
  41019.  
  41020. This supports several commands - see the reference file for full details.
  41021.  
  41022. #base <number> - this sets the 'code base' to <number>. By default, this is
  41023.                  at &8000, so for a module, you may want to reset it to 0.
  41024.                  
  41025. #if/#else/#endif - these allow conditional assembly - their use should be
  41026.                    obvious. Note that the conditions are in the same style
  41027.                    as C condtions. This essentially means that '==' is now
  41028.                    the equivilence operator rather than BASIC's '='.
  41029.  
  41030. #rept <n>/#endr - in speed critical applications, sometimes repeating code 
  41031.                   several times is needed to achieve the necessary speed. 
  41032.                   These two commands allow you to repeat the enclosed code 
  41033.                   <n> times.
  41034.  
  41035. #include <filename> - this command allows you to include another source file
  41036.                       at this point. It is useful to know that <tmp$path> is
  41037.                       set to the directory in which the original source file
  41038.                       is located.
  41039.  
  41040. #smile - produces a grin when things work well.
  41041.  
  41042. Pseudo-instructions
  41043. -------------------
  41044.  
  41045. Aside from the macros, which create new pseudo-instructions, several are
  41046. built in. Once again, the reference file contains full details, but some
  41047. of the more useful are:
  41048.  
  41049. INCBIN <filename> - this includes a binary file into the final object code.
  41050.                     Handy for including pre-calculated sine tables and 
  41051.                     suchlike.
  41052.  
  41053. ALIGN - well, we should all know what this does by now. Unlike BASIC, it 
  41054.         pads with 0's to ensure that no garbage is left in the code.
  41055.  
  41056. DIV Rd,Rn,Rs - Actually a macro... The code for this originates on World of
  41057.                Kryten BBS and was originally written by Hugo Fiennes
  41058.                (I think...). As there was no licencing information with the
  41059.                code, I presume it is PD, so here it is. This requires a temp
  41060.                register to assemble correctly.
  41061.  
  41062. Defining macros is fully documented in the reference file.
  41063.  
  41064. The licence
  41065. -----------
  41066.  
  41067. By running !ASM or any companion program, you indicate that you agree to be
  41068. bound by these conditions. If you cannot agree, you must delete the software
  41069. from your system.
  41070.  
  41071. The software (!ASM and all associated files, including this one) is 
  41072. SHAREWARE. This means that if you intend to use it for an extended period,
  41073. or to produce work for public release, you should register it. Registration
  41074. costs £10, and can be achieved by sending a cheque or postal order to:
  41075.  
  41076. Andrew Hunter,
  41077. 18 Warren Close,
  41078. Elmswell,
  41079. Bury St. Edmunds,
  41080. Suffolk,
  41081. IP30 9DS
  41082.  
  41083. For your money, you will get the latest version, and will be informed of
  41084. any major updates when they become available (to which you can upgrade
  41085. by sending your orignal disc and and SAE). The registered version has
  41086. numerous extensions and is well worth while.
  41087.  
  41088. YOU MAY NOT DISTRIBUTE ANY WORK ASSEMBLED ON THE SHAREWARE VERSION OF !ASM.
  41089. THIS INCLUDES PUBLIC DOMAIN DISTRIBUTION AS WELL AS COMMERCIAL
  41090. DISTRIBUTION. You may, however, freely distribute work created on the
  41091. registered version of !ASM by any means you please.
  41092.  
  41093. The author (of !ASM) cannot accept responsibility for the mis-function of
  41094. any software created using it. This is obviously the concern of the author
  41095. of that software.
  41096.  
  41097. !ASM is Copyright © Andrew Hunter, 1996. However, you may distribute this
  41098. ShareWare version so long as you ensure that all files remain intact and
  41099. unaltered. If you suspect that your version has been tampered with, you
  41100. can obtain a genuine copy by sending a blank disc with SAE to the address
  41101. above. Any distributed version MUST have this file.
  41102.  
  41103. You may not disassemble, reverse engineer or alter any of the programs
  41104. contained within the !ASM directory at any time.
  41105.  
  41106. This ShareWare version may not be sold as part of any commercial package,
  41107. although PD libraries MAY distribute it so long as they comply with these
  41108. conditions, and do not charge above a reasonable price for their 
  41109. distribution (say, 3 pounds sterling).
  41110.  
  41111. The registered version MUST NOT be distributed. You are permitted to make
  41112. backup copies for your personal use, but it MAY NOT be installed on more
  41113. than one machine at any one time.
  41114.  
  41115. The author (Andrew Hunter) CANNOT accept responsibility for any damage 
  41116. caused by your use/inability to use the software. You use the software
  41117. entirely at your own risk. (That said, I doubt it could cause much damage).
  41118.  
  41119. Extra conditions may be imposed upon your use in the start-up banner that
  41120. the assembler produces.
  41121.  
  41122. The future
  41123. ----------
  41124.  
  41125. In the pipeline is an AOF version of this assembler... It will probably cost
  41126. £20 (or £10 to registered users). This will allow you to compile projects
  41127. quicker, as well as link them to C/Pascal/etc programs. I am also thinking
  41128. of writing a debugging utility for this version.
  41129.  
  41130. Of course, you are welcome to send suggestions as to other features you'd
  41131. like to see implemented - development of the ShareWare version is unlikely
  41132. to progress much farther, but for registered users...
  41133.  
  41134. Contacting me
  41135. -------------
  41136.  
  41137. To register, you must contact me by snail-mail. A digitised cheque is not
  41138. acceptable...
  41139.  
  41140. Snail mail
  41141.  
  41142. Andrew Hunter
  41143. 18 Warren Close,
  41144. Elmswell,
  41145. Bury St. Edmunds,
  41146. Suffolk,
  41147. IP30 9DS
  41148.  
  41149. E-mail
  41150.  
  41151. Internet - ahunter@spuddy.mew.co.uk
  41152. Arcade - 'Ahunter'
  41153.  
  41154. Feel free to send money, suggestions, bugs or encouragement.
  41155.  
  41156. Gumph
  41157. -----
  41158.  
  41159. For those of you who are interested, !ASM's first piece of useful code which it
  41160. assembled was !VOOBars. This was actually distributed with a beta release just
  41161. to prove it did work. Next, I ambitiously decided to try it out on !SpaceRoads,
  41162. an 8,000 line monster of a program. After 3 minutes (it was very slow then) of
  41163. chugging, it went bleagh and died. When I fixed that bug, it assembled OK, just
  41164. didn't run. I decided to attempt the less taxing 'Tanx', a mere 5,000 lines, but
  41165. with floating point support. After lots of swearing, debugging and more
  41166. swearing, it worked! So, try on SpaceRoads again. Zip. To cut a long story
  41167. short, I eventually tracked down and destroyed that bug, so you now know that
  41168. !ASM is quite capable of handling enormous programs as well as small ones (and
  41169. in a mere 45 seconds now... on my A3000!)
  41170.   WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!ASMGýÿÿ‰ØàfASMGøÿÿK™<—o½hASMDocGÅûÿP£OC0Hi3ASMTxtGÿÿÿŒOC†~jInstallGÿÿÿ©â Œe3!ASMGýÿÿ‰ØàfASMGøÿÿK™<—o½hASMDocGÅûÿP£OC0Hi3ASMTxtGÿÿÿŒOC†~jInstallGÿÿÿ©â Œe3XRobertsRobertsNickàASM Version 3.00ß
  41171.  
  41172. To install ASM, copy the main ASM program (ASM) to your
  41173. Library directory.
  41174.  
  41175. If you have Acorn's DDE toolset, copy !ASM to the Tools
  41176. directory. Then edit !Make.choices.tools, and add the
  41177. following lines at the end:
  41178. -------------- Cut Here ----------------
  41179. ASM
  41180. A
  41181.  
  41182. ASM $(ASMFlags) -output $@ $<
  41183. DDE:!ASM.desc
  41184. DDE:!ASM.!setup 
  41185. -------------- Cut Here ----------------
  41186.  
  41187. The Impression document 'ASM_Doc' gives fairly extensive
  41188. documentation of the features of ASM (including a section
  41189. on features new to version 3.00), but does not attempt to
  41190. act as an ARM assembly language tutor, or even describe
  41191. ARM opcodes.
  41192.  
  41193. If you don't have Impression, please email me for an ASCII
  41194. version.
  41195.  
  41196.  
  41197. Licensing
  41198. ~~~~~~~~~
  41199.  
  41200. ASM is FREEWARE, not Public Domain. It should only be copied
  41201. and/or distributed in its intirety (including this document),
  41202. and copyright remains with me. If you use it to to write
  41203. applications for distribution (commercial or otherwise), an
  41204. acknowledgement would be nice.
  41205.  
  41206.  
  41207. Disclaimer
  41208. ~~~~~~~~~~
  41209.  
  41210. ASM is distributed as is, and the author will not accept any
  41211. responsibility for any resultant damage, whatever its form.
  41212.  
  41213.  
  41214. Bug Reports
  41215. ~~~~~~~~~~~
  41216.  
  41217. Irrespective of the formal disclaimer above, I am perfectly
  41218. happy to receive emails describing any bugs discovered, and I
  41219. will do my best to fix them quickly. Bug reports should include
  41220. a description of the problem, and a code fragment that exhibits
  41221. the aberrant behaviour.
  41222.  
  41223. NB There seems to be a bug in the Debugger_Disassemble SWI,
  41224. that will show up if the -validate option is used on code that
  41225. contains the ARM3 SWP instruction (Debugger_Disassemble returns
  41226. them as "Undefined Instruction"). All my tests of the generated
  41227. code against Acorn documentation indicates that ASM is producing
  41228. the correct opcodes, and that it is the SWI that is at fault. If
  41229. you have any info on this (ie whether the SWI or documentation
  41230. is at fault) please email me.
  41231.  
  41232. Nick Roberts
  41233. tigger@argonet.co.uk
  41234. s     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootBëÿÿ¨äXëf!helpGÿÿÿ⇧¸laf!RunCëÿÿŶܧe    f!SetupCëÿÿb"o§ f!spritesFùÿÿÒŵi4` f!Sprites22FùÿÿZi4LfDescGÿÿÿËv÷°fMessagesGÿÿÿnn gTemplatesGìÿÿå⇩÷Œ g!BootBëÿÿ¨äXëf!helpGÿÿÿ⇧¸laf!RunCëÿÿŶܧe    f!SetupCëÿÿb"o§ f!spritesFùÿÿÒŵi4` f!Sprites22FùÿÿZi4LfDescGÿÿÿËv÷°fMessagesGÿÿÿnn gTemplatesGìÿÿå⇩÷Œ ge!ASM!ASMNickñIconSprites <Obey$Dir>.!Sprites WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks        ASM
  41235.    ~~~
  41236.    Purpose:  Simple ARM Assembler
  41237.  
  41238.    Setup:
  41239.       Icon                  Action/Meaning                         Default
  41240.       ----                  --------------                         -------
  41241.       Source                File containing Assembler Source         nil
  41242.                             (typed or dragged)
  41243.       Include               File search paths for use in include     nil
  41244.                             (typed or dragged)
  41245.       Verbose               Produce informational messages           off
  41246.       Throwback             Generate throwback information            on
  41247.       Processor             Specify the target processor             ARM3
  41248.  
  41249.    Menu:
  41250.       Entry                 Action/Meaning                         Default
  41251.       -----                 --------------                         -------
  41252.       List                  Produce source file listing              off
  41253.       Hex                   Include generated Hex in list file       off
  41254.       Validate              Output disassembled Hex                  off
  41255.       Define                Define one or more flags                 noneonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     *If "<System$Path>" = "" Then Error 0 System resources cannot be found
  41256. *WimpSlot -Min 128k -Max 128k
  41257. *IconSprites <Obey$Dir>.!Sprites
  41258. *Set ASM$Dir <Obey$Dir>
  41259. *RMEnsure FPEmulator 0 RMLoad System:modules.fpemulator
  41260. *RMEnsure FPEmulator 2.80 Error You need FPEmulator 2.80 to run !ASM
  41261. *RMEnsure SharedCLibrary 0 System:modules.clib
  41262. *RMEnsure SharedCLibrary 3.75 Error You need Clib 3.75 to run !ASM
  41263. *RMEnsure FrontEnd 0 System:modules.frontend
  41264. *RMEnsure Frontend 1.13 Error You need version 1.13 of the FrontEnd module to run !ASM
  41265. *RMEnsure TaskWindow 0 System:modules.task
  41266. *RMEnsure TaskWindow 0.29 Error You need version 0.29 of the taskwindow module to run !ASM
  41267. *RMEnsure DDEUtils 0 System:modules.ddeutils
  41268. *RMEnsure DDEUtils 1.50 Error You need version 1.50 of the DDEUtils module to run !ASM
  41269. *WimpSlot -Min 64k -Max 64k
  41270. *FrontEnd_Start -app ASM -desc <ASM$Dir>.desc
  41271. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     *Set ASM$Dir <Obey$Dir>
  41272. *RMEnsure FrontEnd 0 System:modules.frontend
  41273. *RMEnsure Frontend 1.13 Error You need version 1.13 of the FrontEnd module to set the ASM options from Make
  41274. *WimpSlot -min 16k -max 16k
  41275. *FrontEnd_SetUp -app %0 -desc %1 -task %2 -handle %3 -toolflags %4
  41276. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     dTp12r¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ 0" 0 !!!00! 0""0!0032UPUD€⇦•⇦!CwwwwwU€⇦•⇦4DDDtwwwwwwf€⇦•⇦%wwwwwwwwwwf€⇦•⇦UwwwwwwwwwwU€⇦•⇦%ww–}wwwwwwf€⇦⇦⇦⇦−−−−wwwwwwf0Uww–}wwwwwwUUww4DDr 6pfUww@u`bpfUwwtGGgttwtUUUUUUUUUuUwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Pü!asm!¬TÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ0P0 D@ $00@B B BP00 $ B0P0 D"D $00 $ B $P0UPU0⇦• $$UPU⇦•⇦wwwwwUw⇦•⇦B$swwwwwU€⇦•⇦pwwwwwww€⇦•⇦UwwwwwwwwwwU€⇦•⇦UwwwwwwwwwwU€⇦•⇦wwwwwwwwwww€⇦•⇦UwwwwwwwwwwU€⇦•⇦UwwwwwwwwwwU€⇦•⇦ww–wwwwwwww€⇦⇦⇦Uww–ywwwwwwU€⇦⇦⇦⇦−−−−wwwwwwU€⇦⇦−−−−wwwwwww€Uww–ywwwwwwUUww–wwwwwwwUwwpuPWpwUwwpwppUUwwuPPpUwwpupwpwUwwpWppwpUUwwwwwwwwwwUUWuUWuUWuUwUWuUWuUWuUwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿððÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿÿðÿðÿðÿDsm!asm¬xÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ0 0@ 00 $ 00 $UR0⇦sww0⇦Xwww0⇦Xwwwww0⇦Xwwwww0⇦8wiwww◰⇦−−www Pwy!'rPw'#7 wwrPw''q7UVVUVÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðððÿÿÿÿððÿÿÿÿÿÿÿÿÿððÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿððÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿððððððÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     # This is a description of the wimp interface for ASM
  41277.  
  41278. tool_details_start
  41279.    name          "ASM";
  41280.    version       "3.00ß";
  41281.    wimpslot      640k;
  41282. tool_details_end
  41283.  
  41284.  
  41285. metaoptions_start
  41286.    has_auto_run;
  41287.    has_auto_save     ^. "o." leafname from icn 3;
  41288.    has_text_window;
  41289.    has_summary_window;
  41290. metaoptions_end
  41291.  
  41292.  
  41293. fileoutput_start
  41294.    output_option_is  "-output";
  41295.    output_dft_is     produces_output;
  41296. fileoutput_end
  41297.  
  41298.  
  41299. # options dialogue box
  41300. dbox_start
  41301.  
  41302.    #icon mappings
  41303.    icons_start
  41304.       icn 3  maps_to string            not_saved;
  41305.       icn 5  maps_to "-include" string not_saved;
  41306.       icn 9  maps_to "-verbose";
  41307.       icn 10 maps_to "-throwback";
  41308.       icn 11 maps_to "-processor ARM2";
  41309.       icn 12 maps_to "-processor ARM3";
  41310.       icn 13 maps_to "-processor ARM6";
  41311.       icn 14 maps_to "-processor ARM7";
  41312.       icn 16 maps_to "-nocase";
  41313.    icons_end
  41314.  
  41315.    #default icon values
  41316.    defaults
  41317.       icn 3  "",
  41318.       icn 5  "",
  41319.       icn 9  off,
  41320.       icn 10 on,
  41321.       icn 11 off,
  41322.       icn 12 on,
  41323.       icn 13 off,
  41324.       icn 14 off,
  41325.       icn 16 off;
  41326.  
  41327.    make_defaults
  41328.       icn 5  "",
  41329.       icn 9  off,
  41330.       icn 10 on,
  41331.       icn 11 off,
  41332.       icn 12 on,
  41333.       icn 13 off,
  41334.       icn 14 off,
  41335.       icn 16 off;
  41336.                 
  41337.    #drags to dbox (and icon bar)
  41338.    imports_start
  41339.       drag_to icn 3 inserts icn 3;
  41340.       drag_to icn 5 inserts icn 5 separator_is ",";
  41341.       drag_to iconbar inserts icn 3;
  41342.    imports_end
  41343.  
  41344. dbox_end
  41345.  
  41346.  
  41347. #menu from dbox
  41348. menu_start
  41349.  
  41350.    "List"            maps_to "-list";
  41351.    "Hex"             maps_to "-hex";
  41352.    "Validate"        maps_to "-validate";
  41353.    "Define"          maps_to "-flags" sub_menu "Flags: " 256;
  41354.  
  41355.    #default values
  41356.    defaults
  41357.       menu  1 off,
  41358.       menu  2 off,
  41359.       menu  3 off,
  41360.       menu  4 off sub_menu "";
  41361. menu_end
  41362.  
  41363. deselections_start
  41364.       icn 11 deselects icn 12, icn 13, icn 14;
  41365.       icn 12 deselects icn 11, icn 13, icn 14;
  41366.       icn 13 deselects icn 11, icn 12, icn 14;
  41367.       icn 14 deselects icn 11, icn 12, icn 13;
  41368. deselections_end
  41369.  
  41370. #make_excludes icn 3, menu 3;
  41371.  
  41372. order_is icn 11,icn 12,icn 13,icn 14,icn 5,icn 9,icn 10,icn 16,menu 1,menu 2,menu 3,menu 4,icn 3;
  41373.  
  41374. make_order_is icn 11,icn 12,icn 13,icn 14,icn 5,icn 9,icn 10,icn 16,menu 1,menu 2,menu 3,menu 4,icn 3;
  41375. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     # First section of messages file is general to all applications
  41376. # Third parties can change FEinterr1 to their company name so that 
  41377. # internal error messages will come up "Please report to <your name>"
  41378.  
  41379. FECmd1:String too long (limit %d current %d addition %d)
  41380. FECmd2:You cannot change the command used to run this tool
  41381. FECmd3:Output
  41382. FECmd4:ReRun
  41383. FECmd5:OK
  41384. FECmd6:Run
  41385. FEdbox1:Can't import from other applications when invoked from !Make
  41386. FEdbox2:Unable to start up -- not enough space (or too many windows)
  41387. FEinterr1:Acorn
  41388. FEinterr2:%s: internal error: %s (%s/%d)
  41389. FEinterr3:Please report this error to %s
  41390. FEmem1:Out of memory, on request for %d bytes
  41391. FEmenu1:>Info,Save options,Options,Help,Quit
  41392. FEmenu2:Options
  41393. FEmenu3:Auto Run,Auto Save,Display
  41394. FEmenu4:Display
  41395. FEmenu5:Text,Summary
  41396. FEmenu6:>Command line
  41397. FEmenu7:>Info,>Cmd Line,>Save,Abort,Pause,Continue
  41398. FEmenu8:>Info,>Cmd Line,>Save
  41399. FEmenus9:Task(s) active: are you sure you want to quit?
  41400. FEmsg1:Wimp$Scrap must be set to do this transfer
  41401. FEmsg2:Invalid DataSave (filename != Wimp$Scrap)
  41402. FEoutput1:No more memory for output display - requesting %d bytes
  41403. FEoutput2:Running
  41404. FEoutput3:Aborted
  41405. FEoutput4:Paused
  41406. FEoutput5:Completed
  41407. FEoutput6:Task active: abort and close?
  41408. FEoutput7:Output file produced but not saved and will be lost. OK to continue?
  41409. FEoutput8:Continue
  41410. FEoutput9:Pause
  41411. FEsaveas1:Directories can only be saved to a filer viewer
  41412. FEsaveas2:To save, drag the icon to a directory viewer.
  41413. FEtask1:Task window not active
  41414. FEtask2:Application needs at least %dK to start up
  41415. FEtask3:Command line too long for task window module
  41416. utils1:Field is too long
  41417. utils2:Save failed %s -> %s
  41418. FEOpts1:Unable to write choices file %s
  41419.  
  41420. # General help messages
  41421.  
  41422. CMDLINE:This dialogue box displays the command line equivalent|Mof dialogue box and menu settings.|M
  41423. CMDLINE1:This is the command line equivalent of dialogue box and menu settings.
  41424. CMDLINE0:Click here to Run/ReRun the tool or to send options back to !Make.
  41425.  
  41426. SETUP:This dialogue box sets commonly used options.
  41427. SETUP0:Click here to run the application with the current options.
  41428. SETUP1:Click here to return to the previous set of options for this application.
  41429.  
  41430. SUMMARY:This dialogue box gives a summary of the command which has been run|Mor is running.
  41431. SUMMARY1:This is the icon for this application.
  41432. SUMMARY2:Click here to abort a running task.
  41433. SUMMARY3:Click here to continue a paused task.
  41434. SUMMARY4:This gives the number of lines produced by this task.
  41435. SUMMARY5:This gives the time at which a task was run.
  41436.  
  41437. SAVE:This dialogue box is used to save the file output of a command.
  41438. SAVE0:Click here to save the file output.
  41439. SAVE2:Filename for output appears here.
  41440. SAVE3:Drag this icon to save file output.
  41441.  
  41442. # Tool-specific messages follow here
  41443. SETUP3:Enter names of source file to be assembled here.
  41444. SETUP5:Enter include paths here.
  41445. SETUP9:Provide information on assembly phase.
  41446. SETUP10:Enable throwback error reporting
  41447. SETUP11:Specify the target processor type
  41448. SETUP12:Specify the target processor type
  41449. SETUP13:Specify the target processor type
  41450. SETUP14:Specify the target processor type
  41451.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿìÒquery¾XHelp¿progInfoÕÅSummaryŒTxfer_sendîTsaveB°CmdLineò\OutputN    LSetUpL☓.—ÿÿÿÿ ☓  üÿÿ=0ASMdit>e öþÿÿö&ÿÿÿ=A¸¼ 0ÿÿÿÞüÿÿÿÁÃâöþÿÿ4&ÿÿÿ=AÊÍ YESR5,3?l40;R2NOR5,3Ð:$ÿÿÿÿ ÿ üÿÿ=0ASM helpevìòÄÿÿÿÿR☓  üÿÿ=0xÿÿÿÿ    ¤4ÿÿÿTdÿÿÿ=0·Ktitled>þŒÌÿÿÿvüÿÿÿ=a⇧… Œ—ÿÿÿvÈÿÿÿ=a• Œdÿÿÿv“ÿÿÿ=a£¸(Œ0ÿÿÿv`ÿÿÿ=a»¼>ÐÿÿÿŒøÿÿÿName:led>þ†ÿÿÿŒÄÿÿÿPurpose:>þhÿÿÿŒ‘ÿÿÿAuthor:d>þ8ÿÿÿŒ`ÿÿÿVersion:>þAbout this programR2Simple AssemblerR2© Nick Roberts, 1996R2R2æp4ÿÿÿÿ üÿÿ=0Xÿÿÿÿ†xÿÿÿðÿÿÿa\] €ÿÿÿŒðÿÿÿ+a`i
  41452. @ÿÿÿºpÿÿÿ=AŴ h@ÿÿÿpÿÿÿ=A…” ¤|ÿÿÿ°ÿÿÿcŒÿÿÿÿ L¬ÿÿÿìÿÿÿa¡ÿÿÿÿ |ÿÿÿ°ÿÿÿcªÿÿÿÿfi¬ÿÿÿNìÿÿÿcºÂ ASMR3Toolnamesapplication,aplicationAbortR5,3ContinueR5,3999999hh:mm:ssLines of outputRun at:R3^¼TdÿÿÿÿR☓ üÿÿ=0Save as:eÀ`ÿÿÿî‘ÿÿÿ=A8; ¸ÿÿÿäÿÿÿa@ÿÿÿÿ
  41453. `ÿÿÿº‘ÿÿÿ=ñKLN¦ÿÿÿ‰ìÿÿÿ9aPÿÿÿÿŒÿÿÿJ8ÿÿÿ=`×<Untitled>æDüþÿÿô,ÿÿÿ=`×<Untitled>æn ÿÿÿ<ÿÿÿ=`×<Untitled>æOKR5,3File name:a~ icn&ÀhÿÿÿÿR ŷ üÿÿ=0Save as:eÀ`ÿÿÿî‘ÿÿÿ=A8; ¸ÿÿÿäÿÿÿa@ÿÿÿÿ
  41454. `ÿÿÿº‘ÿÿÿ=ñKLN¦ÿÿÿ‰ìÿÿÿ9aPÿÿÿÿŒÿÿÿJ8ÿÿÿ=`×<Untitled>æDüþÿÿô,ÿÿÿ=`×<Untitled>æn ÿÿÿ<ÿÿÿ=`×<Untitled>æOKR5,3File name:a~ icnX¸<ÿÿÿÿ ☓üÿÿ=0—ÿÿÿÿö☓ÿÿÿ¦´ÿÿÿ=A¦ª Äÿÿÿ¦ôÿÿÿ=ñ¯ÿÿÿÿCommand Line:RunR5,3ä´hPÿÿÿÿ ÿ üÿÿ=0Xÿÿÿÿ$ASMÊÜ|…ÿÿÿÿ Pþÿÿ²=0ASMitled>eò^þÿÿ¢¦þÿÿ=1x| ,dþÿÿÜ þÿÿ=1Ŷ…
  41455. Èÿÿÿ øÿÿÿbSource:d>®Èÿÿÿ¨øÿÿÿ=ñ”ÿÿÿÿ
  41456. …ÿÿÿ ¼ÿÿÿbInclude:>¬⇦ÿÿÿ¨¸ÿÿÿ=ñ„ÿÿÿÿ
  41457. °þÿÿBnÿÿÿa–— F²þÿÿªnÿÿÿaœ† VPÿÿÿò€ÿÿÿ9`Processor*(ÿÿÿÈXÿÿÿ1fl§*òþÿÿð(ÿÿÿ1µ¿\ ÿÿÿúNÿÿÿ1ÍÓ ÿÿÿ‹Pÿÿÿ1 åë\ìþÿÿúÿÿÿ1ýìþÿÿ“ÿÿÿ1Tÿÿÿ“☓ÿÿÿ9`Optionsd>*Àþÿÿ6òþÿÿ1->RunN1/;R6,3CancelN1/;R5,3R3R3Verbosesoptoff,optonThrowbacksoptoff,optonARM 2sradiooff,radioonARM 3sradiooff,radioonARM 6sradiooff,radioonARM 7sradiooff,radioonCase-Insensitivesoptoff,optons     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Â.ë á ëµHëïLT€€ áÀNà À•à†éÀLâ0 †å ã4À†À…À…à ãSãð Ñ…ä0Sâûÿÿê¥.ê⇦3t)SW−Ô4V)46_M•ùÏO>ÿfl¨ì§¥îµªÞ¸¶Ý™€­7ªwŵÝâ&`™¶Ü`    ¡
  41458. wà“@“HàµPQà³0à‹ ì Hep4Ú8zfiíÀÒy-è€0¶gëýZëíD%dOù+ù>•ü¨XÏ& ‰«¨î¦v…é-¡7×…j­¶Ü0Óá‹@!µ×Ù¸¶Ý@¬¹}³†0ÁÆÁZÿÿúaà¶`0Ëà·pa“àב1à×pàV`à¥Pà´@2³¬uŴØ8…zrÝâv`…fiâçpáÈÓy-0$¹98flÞ´ÜÓ‹ýÀ$ÓðŷZ‰+A “•ùÏB>ÿfl¨ì§¥îÁªn$ªÂF'1⇧8ÔŴ-v´⇨ZH¼çS`Où+ù>•ü¨BÏ¥flîëf1€ª´Ŵ'Ø´“Ô‹¤¼vx`Zþ+_LSA’•ùϧHÏE¸ŵŶÖÓĆÆ„◰mÂC0 Œ2 âcP q)¶⇨üŷ=újöáŵ%1ay­ Õ #bZþ+A#“•ùϧEÏ8µŵ=ŶÖÓ D‡f◰Í€_ÜCà µ #ÇPhÌyRúÖ“:Z“ÕâL#aOù+ùE•üŵ§ÜÖ¬µ3¸‡Ŷm◰  Ö_Ì #©}hµÌ2úPly­Ö#aZþp„ª_•ûϧBÏÖ€=4Ŵ=kúµŴ‡Lãr1y Ú´\Ö‹l¾/~`Zþi-„Jp
  41459. •ûϧBÏ—Öy-/¸é€M0CàáZî„`¯_$pjû’ùE•ü¬§Ü„p¯_pJE¹›•üϧEÏhl­}ŴçØã◰1™ââ âqóî
  41460. !ñðâ!Ŵä4híð⇦5ã1X×y-'¶Ù4ñ2Zp¿çAàaAð„ lúdb4ûDAUñB•ü:§üîã⇦„q¯qsª_ ›•üϧBÏï=ÿQüh¾Ŵ³àå|2‘2øxîŒñæ fifî
  41461. 1î1rôò⇦Tî−ñaN®!qaãq”¶´ÉyÝT $3ZTØâ„`¯E_eldbDqNETX!•üϧBÏã:•4y=—Ø—#`Zþs„ª_$qjü’ùB•ü=§üyïß¾ÔØ‹Àößó¯ö€ë⇦#ôßð£ Áí€Ŵq`Zþs„ª_¨q:üKqòB•ü=§üyïß´DÙ‹!íÀŴá`ZþÄ«_−•ûÏE>ÿ⇨“ýÄ«_a•ûÏE>ÿ€”ýÄ«ypM_•ûÏE>ÿy„ýÄ«_,•ûÏE>ÿo¦÷Ä«meR_•ûÏE>ÿ¨–ÍíÛ!íÛÀößó¯à☓ñltsÿvuÿöz•#ôßòá"dpÚ2aZþ¸ïø·õøµóÿ‘Ú÷/ùë⇨÷ë™øê¤Ú‹æ™ú⇦VAM3ciN( ß10treboR kJÓ[ )sA]7 ›bä-ÜE==ªæ ð³fvt⇧UP€«segamÿ-`<e tupQŶe;£óeU£ymÑ´f< odi–t”-õ5  ]>á ohcE   ch±KtóEJ çi⇨Sa\ sro1 ÇaºUoé“==ª==ªn[söe/Ei⇨==ª==ªyÅB   At ,tOæhfiµ ⇦tòU<.L t»±»-;lnb==ª Í=:d n!VEek¤÷æªCa»oeäEyYeYT-_flY   etadi Û=:á tsi¡dÃŷKn&y[sasin‘l£bmesQ¨eg f¡=‰©==ª e=J octŵhgSDä«t„< sg-Bs; ; ulZeÚ¸[½Èº B    KmigD4ðt[¤fÞÐJ= ==ª X=Jg»ÀÙºf( y=s!oV/FEDFI n,rŒ==ª==ª» …¤sí;tahto]a esÙOrîSÚd¦aœrF#==ª==ªÒ 
  41462. ¥e´vah Q4:œÖ-~¤ >htap<  ulZeÚ¸[½ÈºC    »ðºhõtap A3o„==ª==ªI' nD>N4èïº-€ekB=Iª Æ=:ôo¤èrǤLdF¶ Vs»5-ûñZe?µ-ÝY  kco6U   =A ehssed nroc☓k͵worhl bLe-¹t¦R< roÁ>½Jt yfÓh¾¥¥§»t hc .Ehh¤netn:ded==ª==ª ÿ=:jMD£O Æ´A’tC3ME,ÿ3ŵ«    ==ª==ªfI B ìs| 0UoëµÝƺe#tUv€ig s1"ÙŒ==ª==ªÚ ŵ³ussaYm⇦==ª==ªlimiŶ,)ylraaa]dila1iiM; 0bUeh- & tsgí(I$leh_’•úϧEϯ“MlÃÍgÁÍ™äµí8kØ~ú¡
  41463. Æ£[ MSA :to0KuÂos< A>aá*o Ãµeêra s!P[ ±Åüç‘ե͙=¼¯a⇨ùÇ\»anelif_eüm±òL•üM§Ìy€“ÆV~Ì©¬ÝP¸A§2ŴÜX    ÊÁ†™´WÜ|O§çŴE¸È    2­†XÜcûÀøib‹Zpu(TüðF•üM§Ìy\“ƉÍV…a¿Ì¬ÚÞ8BÁØÖ
  41464. ê†ZÞaáÀøu ]‹m…•ùϧXÏLQ+Ç.C“vú“}Ý`ç/¾Z‰àÀ”™dÙîKÍX0‘¹}yüM−¼ÍüÞþMÍW…†WÜ}RÍÈU,¦“ÇÜ´Uø“ð]Ò`CåEŴgÜì­Vg×GZ³ÉxªTg×F]/Êx†­Ý±Ê2⇦pi¾~ÀEÍÊ⇦1pÎPâ    ⇩GÍ“™¾C]çÓÊhi¾\çÏÊgiCWYwCZrâxùË1• 8­xC7⇦‡ZÞ1ÍŴÀ⇦¾E]ç½ÊXip<Eè1¬8½ÞÌê´ÛÜ´·§™*yÜV    ÊjÀ†™¾B]ç§ÊDi8»Þ»àé¿ÍÈôBȉ·À¬™
  41465. 8­Z¼çVÀ†™…3ê™(g²rat$!±»,Üa/elQ/¤bäT/k/tærcaErp,s/kcas™º;t$=tk⇧=d/tegra,õjZ/xeh,k/tl;sSD,Bs/etA/Za/sgQÖ,~¤/}/KUeJsacoas/r/hÉhÉPx‘±»™/¹<3u"Ú & œ0†]rA](âx ¾ÞºZÊè·8‡⺉ib¹_¾eduá>Ê ™p|Êç
  41466. 1¬i”ýo v`$‰“Í ¾Þ°Ê1Êx1p· Úv3j_ö
  41467. Û†í¾/î"ÊipìÊç
  41468. 1¬i”ýh¶8\"…“ÍZÖí³8‡r¼Ý½Àé8­ÛÌΧ´Ýy·È    *­†VܾӿèÊ ™ptËç 1¬j”ýwsorhtA“Ù8ñî¾pìÊ    iÛ†íÙ/î{ZÞ{ Uö½^¢%⇦œÓ^Ò·ZÎ8ÊçδZÙí¯ç’á8ËØgúLº´{ZÞjýû Ý«Ìè¾ÞXÌÇÉx1p·ÚSA.Cs¹rÐeô3dI³orPmuNten8I†3Ù/“Bè0½¼‰ 8­|B̉‡ZÞ½y¿èÎ8‡5¼‰8äÊØ7 ⇩Zܼçl¿‡™½Ìè(ÌioŴÜ:⇩ZÚîfiÄ3×Ì_¿⇦ ^k/wO)¸RÙow̼cìyN›ÈZlBè'':<¶u‡ZçîH¿†™fi„2⇦*yÜdº z:ZÎ:⇩<    j÷VcÌ©¬Ýù>·ÈtuflÛ5¢âcâ:Zά¹Ù<©ýVcÌù.·È×ä·è8\Þ”¶ÙUifl“☓Ùeff“ýø<«_„•ûϧIÏ{›Ml©yÌVgÌ}ª²È0­bWüZ×î·;†ZÔîibfl¯Zé    ÿ⇨Çy¯ÞÓìbZþ\¨4ÂÕ¸‡™øbÏ<b¿_]øZf㔕üϧIÏM›Ml©yÌVgÌ}|²È0­bWüZæíµ;†Zèí¯bïÿPâPÌÿa¯    ìÿy½Zèí\bÏ©¸fi™øbÏ<b¿ªøºûùI•üM§Ìy"›ÆpªÌVÜÌ} ²È0­bWüZâî$:­ZöíÙ;†ZÛî;¬ZØî\]î⇦¼øm€−Ûŵé;ZÎÀêZØí\]î}n¼øßné;ZÎܶé;ZÎÀêZáí\]înƼøqp−ZÙîjkwr¾fi™⇩¸°‰Pbflo³j<›¹ªøºùÉ<b¿_QøJûùI•üM§ÌyÈ‹ÆgªÌ&²V…0}ÜWʸ¼b;ZÎļµybZþ¡\Üb.¸øbùüø<«úpf_ñI•üM§Ìy¨‹Æܫ̳V…0}ÜWÊèb•éî ’€ŴýÈZÕîÿÌb?V£„ëè⇦\í™Á¸fl™úbÏ<b¿_aøZûðI•üM§Ìy€‹ÆgªÌß²V…0}ÜWÊ\bÏí·¡™ùbÏ<b¿_øjeË“•üϧIÏe‹Ml«yÌVgÌ}ð²È0­bWü¢\ÜbÒ·øbúüø<«kŒ_v$•ûϧIÏK‹Ml®yÌVÞÌ}Ö²È0­bWü\òÌÍÝ6•0}ÜWÊ\bϯ·¢™ýbÏ<b¿_ØøJûùK•üM§Ìy(‹ÆéªÌVgÌN¬¬™ÛŴì<ZÎØÀé8^ÞÕ êkZþ¬[b)ÓYécZþ؆3Ò8^Þ¯ ê8ÊŵÈxX<ίcï}¶¼ÈÍZÓî“3c/]lºç½8‡î'ì\!ì·8‡ZÔî´]c/(—3ÂÕ͸Ê\~NrÎ;ÄÊçÜ(Ü    …ÍèÊ”}Üqn1ðíZÓîtcflcùü_õÂZú'ùL•üM§ÌyȒƪ~Ì‘VÌŴ‹Ì2­cXüVgÌŴV¬ÈZåî<¬þ¯îM­gé̬VÜVÙ«È‹‘Ì2ŴÜX    ÊdcflVgÌŴ<¬ÈXä™ÈùcϽc¯ï“ª蜕üϧZÏ•’Ml~ŴÌ«{ÌZè¿çn]îL™gv…ø|yÿP⇧…• ⇧¤•ª⇧¥⇧⇦³⇧“•Ç⇧½⇧⇦Û⇧Ñ⇧⇦£å⇧ølÓîl3…( »Ú¶x«lþgê̬VÜ›«È4­fYüZؼçµ?†là¼ç©ù⇧دflí ¸Èêó⇧ÈVgÌ|«¬™4Üê⇧⇩Z0½çµ?†lî©ã⇧د§çõ·ÈpÝ⇧ÈVÝÌí°È4­”©ß8ìîÓÂîÎ⇧0‰†<\Ò/    îVÜÌ\°È4­&Ã⇧è?ZÎ,õy¼⇧l‰Z¨ÁçÐ8‡±©ìýy½]¸Ì“KÞºNÞ¯½íþK¼    4­NmÔ»ÏÂflý¼ü·4‡±~u¶Ô…øÌê–⇧ÈVgÌ «¬™4Ü¥úZ×î·?†lÔîc⇧—€4r±    êM·ì¯îÁÏë{⇧è âV…v⇧…ë–dáâV…p⇧…;¶%ŵZØÂçn]îVëÎÕÏÈ%e⇧(%0¶è]ZîënîïáV…Z⇧…%¶0&ŵZ0Ãçn]îVëÎäáÈ°&‡/\öx]ZîënîÓVü—ü¶P'ŵZ⇦Ãçn]îVëÎÒϼ'›/´Ã¶x]ZîënîÃáV….⇧…“$(Ò:$Ðç0À†}“2Þ<<ÐçVíÎÐÏ4­°(Ŵ/]î
  41469. 8­lÓî‘3|/ZHÄç9­h“Àç^î ·¥™hüÞ¶È(lïkZ~fiÝoë/óÑnÃɨX܉·È6­f[üèﺽ©ï“ªèœ4­fYügê̬VÜqªÈZ×î·?†ZÔîhfflXéfZþfúü“½ª¼T«üðM•üM§Ìª*‘ÆÜpÌÓ· 'Z°î
  41470. 8­ZÓîTcfl\°î¹‡\°îÍãÀÑ~á¹}µc•8ÍÝÜžy]Zî¨hÞ¼¶Í™*yÜVÊ°cïo
  41471. ØÓ
  41472. êcZþ‡|3Ò0tÂçÍ°î (h~‘1Ïy›Ì*­cVüéªÌ¬gܪ˙0}ÜWÊ÷cß;ZÎù´ÙùiÎcVücùüe2pþUúenñF•üM§ÌªÌ•ÆÜpÌ«±¤…*yÜVÊþaß:Zΰêº8‡Z(Ççh]î°¨íyi¶ÈaVüZ—ÃçÅ:†8°ÞlǺy]Zî¨hÞÁ°þ*yÜÓ¶éhZþV4Â)aÀ°îaÚÿaùüdGliuba_]LKü/ùY•üM§Ì}⇦•Æ©zÌmDÃç“×”KÞ8,î4çn-ŷÉì8¯Þm¸ÙV¶É)i•~⇧Éè‰ãÏ⇨wm!¢Ö¯Äé8­ G©|”Kîh¯îiV|¯sÉè42¬L”íÄø|@ZΠ   z©¬Ýa<Ï[…㲑‰°ùüZ⇨ÉøfÏ™f¿o☓s_tuAûùG•üM§ÌxÅ8•v8[Þ·ÏypHÙçqrîSClg´¤…ZÙî 8­z¦…:É$18\q/Z‘ÉçZ]gz¹ç̱˙¦jÏ51zxa)Éø÷æª_¢“•ûϧZÏ•Mlz}ÌHÅ©|„mÞ8ÜDèÔB†™]Zîn1ÞÉQçÂÑŷÞ/☓ÆçZ¨Bè\]îAK‰¨Æ†}⇧0î×Ï'4=ZÄÆç¸8‡Zèî½]Îk·V…¹m‡Zâîh]î‰Vì¬âß<©ýYaÌ‘èùd²È€☓fl@Çŵy8ZÞgµÉO·V…¶m‡VoÌ܉þZtÇçÀ8‡ßÀÞ]ZîF\ÎgSÆ;·V…−aܶ ÉøZ«™ÈøfÏÍf¿=ssa_±û;ùH•üM§Ìµ—‰ÖÐÊ”}☓½8n!óÎ8ZÞ☓½Éi!òÎà☓☓ŴáÎã€\Üà☓0☓áZ­æ}ÀÏ    0­†WÜżÈø[ã™(ób¯_¢mÑDûùW•üM§Ìl‰ÆzÌ©☓ÌK“íníßݶé†ZÞjñ»ÈYgÌ…•¤È    5­eZüè5â·Z΀îlò‰Èèã8î8ZÞà
  41473. ê†ZÞ“×»Ø8ðîZÚîpëîCÌ◰“fluŴ−Ó°]Ò»ZÎ/Ö톳ßZÙí<Ú|€¼vn“/ÞpHÊç\Ú#|&vΓ9ÞphÊç|Ú#|&vÎã:Þ€¯ZnZ—ºçºÌæ1³ØçdÞZÎvÀÚç3€¼æZêíÜÊ|"pΠ³9iÇ™xZøºç„/Þ Ë<w9pîZ»ç8XÍç¶n‡Zäî~»†™ó†Ýa/ÎWᯉ5…ÜZÊ$MSAeÒ$÷´−
  41474. V5Ânð•Øà¶é†ZÞ“e»Ø8 ËçalÌѯþ5…ÜZ    Ê 5e/\×î·8‡ZÔî☓efl\UɆ©ÝZ◰»ÈøeÏÏe¿aÛeh_eQûðJ•üM§Ìyª™ÆV~ÌsÈȨÛ~Èfl™¹;‡îÇV…ZÔîì[b/sRɨW|Ȥ™·>‡àÇV…ZÚíÓbïbZþbtùe×ÏKúùP•üM§Ì}~™Æ“zܺ@ÞZÕîHÌ◰™fl»Íüß-ìZÎt
  41475. È⇨‡íÖÇ•‰1‰Îì¶ÙdZþ{Ŵé²⇧n-@ÎZØí
  41476. …‡tÜ•⇨î‰ÁÇèµ1†Z0»ç{dï²⇧nÓ™@‰Z»çddÿ´Ï«_eÉ[üùY•üM§Ìz8™ÆÏ€,×ŷÇ ™oŴܬ»
  41477. zfZþ¶bwÑ™ÇÇuφ¾ß/.ì.†Í†0Þ1.ì.†Íµ2þXgÌÚÏ4­fYüm¶Ý€Eçr“B ⇩$kZ~fi'j×â☓€ −º.}Î2−î.!È/†î.NÇ0†îjÇX…:/ìi„~8ÇØ/ÊiâX…4ÜXÊ̼9ÇxfZþTP©  íkÏskn±É´º_e”m‘ªsð‡uÜ –‰−AÇè·1†ÇX…ZîÇfÏ­ïgçÇâX…4ÜYÊXfÏ<½ÇxfZþf€d÷nuhc‹úùR•üM§Ì®…ÆŵÌ«|ÌX‰gȬVÜ•º«™
  41478. 8­ZÖî.º†™dúü†u©hNtoT'_õ”•üϧRÏ™…Ml~Ì|◰Ì“©Üê?î¸ÆZ‰K·ì»±\…s…gxsíÏ©d0×ê†ýäsìÀgî»âgyŴÞsÌŶ☓î³âg‰sìØøäÏdflH«‘:‘ NFDIS‘J‘ TRTS³‹ªú:ùR•üM§ÌyJ…Æ◰⇦̬€ÌcàBèK\îtÆV…jÁ̼B<•ÀcÎc°Bè¤B¼…ÂcÞù±Ècêî°}±Øc€Bè<ÀücpBèéÀìcÎcç™ ù…Wèp²ÍÝ<ïÀaÎaÚî×¼ìÂaÞù÷°ÈdûüsâÀ[R_lace¯:³Œ•üϧIÏÿ⇧Mly…DÊ­v!pÎbjÎw­í£â⇦(hºtºâŵq ì(äwDb¿²dI¥ûsloñT•üM§Ìyâ⇧Ƹ©Üþ°àC⇦ü°ÜC⇦ú°ØC⇦åfl!гì<ßÀbÎbîíð¼Ü¬bÞùµ°Èd¬Àç1“CèK–íp°Í,»<ÀcÎcòíD»|ÂcÞù¡°ÈZî­·lñÅîŷ8pËçZ÷í
  41479. 8­Z
  41480. î:¹†™Z‘ÁçCK‰qlÞÌ?çÂŴ”îA†Üû$ÚncîÊʼnŶÁìý<ßÀcÎcø»ç¼¼|ÂcÞùq°Èc¼çÓ°è,Ì*|!pΓ7ÞDÌàŷ!q$pΓ9Þ\Ü,|%vΓ:ÞtÜ,|%vΓ;Þ…Ü,|%vή<þÜ[à["Ä[ä["ÓD\ÒqlÞÌÞÉŴ”î<†Ü=µÙ•ÄùfîôÜAwDåŵ(á*ÎpÍçd!ì©®Ýóá‰,½ŶâŴ f(å~DîŴÞ*¼ÉpXÍçd!ì¯íßá⇦ÝuïKZîŶ¬ía<ÏZÖî½®©™hùü¿x3ò³¿™xøeÏŒe¯ÉbOet±à
  41481. •üϧIÏ⇧Ml©yÌf¾ç2öíZhBè<tËç[çîé☓Ëw‘Û³}<¾<ÀbÎb îT¾¼|¬bÞùݯÈÄ·}áUZ›üÇ<\Â'»ÏpèÓç]"ì'3°ÈpÔç]"ì¿\npÀÎç:$ì,Ô'|"pο[npèÎç9$ìTÔ'|"pÎàŶ\vÝç;%ìàŶ©p(Ïç<·öb8¿çD¿À|¼bÎbP¿çfi¯Â™¯ùül¿x|t¿$xèáb‰ÀVìbjàøbøüRR"RR"R    R"R R
  41482. "9R8R11R01R31R21R51R41RlMSRP FF"FF"F    F"F F
  41483. "aa"aa"vv"vv"v
  41484. v    "fls!li"¯ F¯»°°°°F _¯[°°_NQE!CC"PM"VV"LH"LG"LG"VNAAL"A™L™"R“R…"E…Ar"BSRBUSAoDDA!CSRCBSQETTSTCPMC!VOMRROM⇩CIB!ALMM€L⇧RTS!LŴS◰"BB"⇩S|‹RCMCRMCTSLoMxAt"FSRSxRtDy"R‹P’"F}Ru"DRFVDFMyP~"SBAMvTQSRrLŶLz"SŷPXE!T☓SOC!A‰A⇦"F›A⇨"W•TLF!R•Wp"C½Rp2C¾0Cu FTSCvPWSLtM™SRM!UÞ›Ufi›SÞ›Sfi›GILAA⇧IñN2EòR2RTNERmY¢R¤0E@D‰ E¥WUQEBCDD‘ E®QUQEDCDQCDZE$ZSCDSFCDxŒD¬xŒD¼Ex*PFCDxŒUsIÝ#ORCAM!EçI¸›,rŒEÀEÏ›m
  41485. F F"E E"D D"I I"CºDflOR«CUBEDA•G2j A’0A‹0°ŵŒof_kc{m„r¨%•ûϧJχ⇩Mlz}ÌéªÌWgÌ£¬™w?ñwî1pί¹éMþÞ×    ê?Zîw~dbflù^É”b¯¢#»h¨Ñ[ým„òM•üM§Ì}r⇩Æ{ŵÌWcÌ?M©èwÞ“ÚacÏéWüccÿ¢"»m(mIrOQüa¡òL•üM§ÌyV⇩Æ©~ÌVgÌŴì£È2­cXüZíí<¬þ¯îD­gk̬VÜbk£Èo¨V…jŴüVbÌŴ©ÈcXücøüdIÒd4e\”•ûϧCÏ©^Ü…ÇÃqÏâÿ¾1¬`´ö üâa¸á◰ñ`Áý½`¯¬“ª_¹”•üϧ[Ï ⇩Mlz}Ì­◰ÌL“íK“íâ»΀×väv
  41486. ¸ùY‡ÄØÇÊ3‹Ý‹ºÙ“Ä
  41487. •    X­ŒÇÜ
  41488. Lþ¶8‡ZÓîTffl3­ÜìÌÛVü8­f³þã°nº@v–gìÌÙVü8­f³þáx¯VÞÌOnâè³Þ³ê³fïpðî¾1†‘ⲉ⇩…ÜÔìfZþrj−¡†÷“©Ü@K‰Þì̬VÜP×¢è8D´‰1pÎÅâéZî
  41489. 4¬þ²î·M‡ZÔîhfflìQÉVÞ̾¢¬™´Pî­f´þ×Åî4ZÎÔ·éfZþ84b)Ä°²‰u‰ÜØ    ÚfZþyœÞ"ÿ⇧ŷKþVßÌPÖï´Þ´êÅfïZôíÄ4†A³Þ“Ú³Oî4ÇÓ¶éfZþ"¼4ŵÄÎjKþ³#èK³æå¯nâøl®Y…üfϽf¯tRSP“û(ùW•üM§Ì<⇨Æ◰z̬€ÌZ×î⇨ÇZÔî^e/ð3òµ8‡Zô¼çeµo‡Óp‡fll⇧xé¢ÇVÞÌ8¤áØ°êÝeÏX¨V…°Lî­e°þ?²ÞÓ
  41490. êeZþ²ô3â±SìzÍZÓî04e/é±n¡ŒÝ•£Ç:¨V…°Lî­e°þVÜÌ8KáØ°ê±eï­VÞÌLŧè°Þ°ê²eïã€⇦á⇦gŷÏ{áV…°Lî­e°þ¤Í°~1pÎfl½y†á¯‰¯Kîÿy½Z̽çleÿ?¯Þ4»    zeZþ±~Ô¯n¿Øöo­Z…ûeϽe¯paws“ûðW•üM§Ì}¦⇦Æz|®☓ÌZD¼çÿz½ZP¼çóeo‘œã€tqë88
  41491. T­Ç‡Ç8
  41492. ßh¿µyeZþßêÌáV…8­e±þÞêÌÉVü8­e±þgé̬VÜM£¡è@Ò±~1pί
  41493. ê\þÞ´¾µyeZþVàÌMG§è±Þ±êéeÏVgÌ⇦¡¬™±Mîp¬Òç
  41494. 1¬þ¯îµ^‡Zî´eï¸?‡?²Þ³µé    ?­Z½ç´eïÄòæÃÒæ×Nlõ¬Y…ýeϽe¯l“Zûm¸òW•üM§Ì},⇦Æ⇨zÌ­☓ÌZ,¾çÿ⇨·Z8¾çøeoã€ŶÛ
  41495. ‘fi÷Y½ÃØ›Ú
  41496. Çüµ8‡Z!îpeÏVÞÌ8“àØÄÚpeÏVßÌ8…àØÄÚpeÏVÜÌ8☓àØÄÚÝeÏÖ¦V…¯Kî­eÄý?²Þ³»é¸?‡?°Þ±µé    ?­Z ¾ç³eï²÷æÂÙæ°ÖæØOl’¬Z…üeϽe¯m¸“*•úϧWÏÉMlz}Ì⇩◰Ì“­Ü‘¬K~ŷèëf`Ã
  41497. •Y­›ÇÜ8
  41498. ßȵyeZþÞìÌ7àV…8­e³þ?²Þ…¿    zeZþç²nÝìÌ'àV…8­e³þ²î
  41499. 4¬ZÓîè3e/R±ÎVÜÌOo¦è³Þ³ê°eïoæÖßÄÉÞßV…8­e³þVgÌO[¦è³Þ³ê¯eïZSÌe,¬øeüüTSRDGâs²Rù$•ûϧPÏcMlz}ÌgªÌù W…2ŴÜXÊ°Æd<Zί%êDþÞL·ÙNÖÙ‰×ùgé̬WÜÜs Èw¥W…2ŴÜXÊ°dïyÍ´°ÎiLþ’wÞ°?îüÿ5·ÓìdZþwséNÁÎÓ?îdZþwté?’ígé̬WÜiI øZøÃçidÿ’wÞw?î?„çWÜÌŴï¥È2­dXüÁwî?NìWgÌŴfi ÈZ ÈçL'<<þ¯îH'M=gé̬WÜé! ÈWgÌ ¬™2ŴÜXÊlÄd<ZÎxĵydZþ&®¯‰qÜ—Ä    zdZþyØ›ÿë☓LþWÜÌŴÃÏ2­dXüZ°Åç
  41500. <¬ZÓîà3d/A°Þ“Ú°LîÁçµ1†Z€Äç“dï"°ÎwLîÑÁnÜ»?~dZþdùü“½ª_άJü%ùW•üM§Ì} ŷÆ⇨zÌ®☓Ìã »³OîOÕæÓ³n
  41501. OþT3Âس
  41502. êO–ç
  41503. ÇüZ+ÂؼÚ
  41504. Çüµ8‡Z†ÇçíeÏVÝÌ8ßØ´ê³eïÒÂngOÎ  V…ÅPîZæî¬'4<þ¯î¨'\=gë̬VÜÜ™flÈ>¥V…´Pî    ­e´þ°déÚÄnëOÎVgÌzfl¬™´Pîp8Êçµ1†ZHÇç¯eïMþÞ^µÙ|⇧ß⇨¶r‡ZÓîä3e/‘³ÞßOÎÈáV…´Pî­e´þgë̬VÜPSflèÔºÅ~4Zί
  41505. ê^þÞôǵyeZþgë̬VÜPAflè,´î1p·ú4Ë´~1pίêBþÞ³
  41506. êO—çdÈieZþë„ÏVgÌ$fl¬™´Pî­e´þ¨Ø´~1pÎÅ»éZ¸»ç4¬þ¯îB­‘³Þ³OîO’íµr‡Zøí⇧e• Ì´~1pί
  41507. êMþÞÓ¶éeZþr^Ù³µéO—çVßÌPYáèdÉieZþޙϩVÜPn¥è´Þ´ê³eïOã€ᑳ޲OîyÍ´²ÎiNþ’³Þ²Oîüÿ5·×ì:ZÞ“¶ÙjNþ€éeZþ1ÞüOOìIª³‰ýeϽe¯b“J;fx_k’•üϧWÏŶMl¹­ÜÍã SÑÎáÖÑàÖ“¬0'⇩…ÜÓìeZþÐTÙ8þÞ×µÙeZþÞáŶ[⇦ÁD¤Ï™*yÜVʲeïìßƬgÜ☓fiÏ™ ¾y|:ZίêBþÞãŶVgìÌϬÝyufiÈZ î
  41508. :¬þ¯îµM‡ZîìeϬgÜdfiÏ™yì:Zί
  41509. ê{wþ~Ó¶éeZþéH4ÂÏÝÜyÂ¥È*­eVü°>èËÆËkÏ”½ß¾ãögìÌϬÝy?fiÈZî
  41510. :¬þ¯îÞîM-Z@¿ç
  41511. :¬þ¯î¶}w–ZÓîL4e/gQÌ”fiÏ™☓¿y|:Zίê_þÞì ʬgÜfiÏ™WãŶUÁe¤©øeüü“½ª7bŶ”•ûϧ[ÏÛ☓MlŵÌ|Ìã ☓
  41512. ©ëêf8ß☓¼µyfZþXg̤ª™6‰Ü[ʯfﶇZÓîÜ3f/]¯Î¯KîKãÀÿáR¯Îo©Z…øfϽf¯s£“*•úϧ[ϧ☓MlzŴ̪ÌÎã tÑ äöµ8‡ZîgfÏ3fiV…Ü…ì@ZÎܼÉâV…5…ÜZ    ÊcfflÔß@Zα!Êä,[ǬVÜ·«‡èpLÎ9¦g|‰M¿ÈÁu‡â@ÏyŒ §ZÓîÈ4f/KgÜ$èfiZÞ¯ù°èRÞâ°n©Y…wfflfùü“½ªdÌpVüðW•üM§ÌyP☓Æ⇨~̬☓Ì÷Yë¿ØÅÊ›ýµ8‡ZÀ¾çëeÏWÝÌ8ÂÜزêÃeïZæîº4†@D²‰1pÎßµéNZîÜpÌØ¢W…²Nî ­e²þom−à[é]Zî½\ΰΰLîSym° çL´ìŵhfl° çLÛÜèy°ÞTÀ
  41513. Sv:ZÞ“µÙjLþZÓîreflR°Î¢flwS±Î­¨Z…ûeÏ”e¯dÙA_PCAûsò>•ü¨XÏã◰Ml{}ÌS☓|ª~ÈI“íE“íWgÌr‡È4­fYüZ ÄçÂ'?<þ¯î(\­gé̬WÜWñ†È¢¢¤‰4ÜYÊéfÏWgÌ䆬™)ì?ZÎÓ¶éfZþ¯QéMþÞ^µÙ¥HçòE”ígé̬WÜ͆È4­fYüZ+î
  41514. ?¬þ¯îµD‡ZâíafÏÁ¡W…4ÜYÊéfÏWgÌ°†¬™4ÜYÊlÅf?Zί
  41515. ê^þÞïµÙfZþWgÌ ‡ÈZ¨Åç?¬þ¯îB­gé̬WÜ”•†ØI⇧I‰WgÌø†È4­fYüZÆç
  41516. ?¬þ¯îÆM‡E”í?“íZ8Æç?¬þ¯îB­I”ígé̬WÜ⇦i†øgé̬WÜéc†ÈWgÌ^†¬™4ÜYÊ´Æf?Zί
  41517. êDþÞ4¼µyfZþWaÌR¡È4­fYüiïfZþÿ⇧w~w    ì…ÍZÓîsfflaŴÏ©WÜ¼¢È4­fYü¤Œí”8ÞwEî    ÿ⇧Ç…wÞ)    Sæ:ZÞ“µÙi?þZ|ºç“fßwJîyÍ´wÎh?þJ”íwÞ⇦ÁµyfZþ]wÎÓ?îfZþùtÉ”f¯Ôcüµûð>•ü¨XÏÇŵMl⇦yÌ€◰Ì®-èVfÌIò è„Þ“ÚŒfïyÍEŒÎõ|f“ý¶n‡VeÌgÛøf”ýæf¯PDC_÷ûð>•ü¨XÏœŵMlz}Ì-,⇦ã d® áŷnááŷh    áŷjáŷf¡áŷbáŷdXáŷ`ÁfF§øæf¯TRC_÷ûð>•ü¨XÏ}ŵMlÑy̬@}èã T­áŒg€à nß    àfáŶV¡áŶTflQáŶRŷÁ%§W…ffÿ÷æªTDC_•ûÏX>ÿM¨Ì$*\ŵŷ@}Ñ…­¬îfiã Cáá☓Lá☓NÞÞfÝ⇨Ýfá☓H á☓F¡á☓Dflá☓@(%§V…ffÿ“½ªú⇩ùR•üM§Ì:ŵÆ◰zÌ°€ÌN“í8ßǵydZþïñÌÛ<ïVgΣ­ÝùVâÈ    8­d±þñÜ4Â<îügÛî­VÜG⣙8ùܱ    êà4d/[ñ|Û<ïVgΣ­Ýù8âÈ    8­d±þñä4Â<íügÖí­VÜØ£ý8ùܱêñdÏ<ìügÞí¬VÜ⣙8ùܱêgdÏ}œV…±Mî­d±þó±î1pίêMþÞéÊVgÌúŒ¬™ëñÌÜ<ïVgΠ¬ÝùöáÈ
  41518. 8­d±þè4d)ËÅî=ÎþÆWìÐ(6èdâødý“½ªúTRCñR•üM§Ì¨ŴÆ◰zÌ°€ÌO“íM“í8ßTɵydZþïòÌ,¼<VgΣ­ÝùÂáÈ8­d²þîòÌ<ïVgΠ­ÝùÐÏ8­d²þVáÌN[ è²Þ²êÞdÏÎÙV…8­d²þìòÌ<ïVgΣ­Ýù„áÈ8­d²þíò̆¼<VgΣ¬Ýù⇦áÈ8­d²þVgÌNêŒè²Þ²ê²dïpèËç1¬þ¯îM­gé̬VÜògŒÈ<êüg$¼ç¬VÜcá ™8ùܲêudÏ1ßü>ÊþÇWìÑ,6èdÏÿdý“½ªúTDCñW•üM§ÌyŴÆ⇨~Ì ,☓|»ýLw±½x¼ÚÅü¶8‡ZÓîTefl[õ|☓¾<WgΣ­Ýù,áÈ8­e¶þíõÌ <ïWgΣ­ÝùáÈ8­e¶þéxÌó<ÏáíÌõßW…ùù|¶Þ¶êmeÏÁZì>ÎþÏ6èX<ÏöÇÎhá5•ÿeÏF‹e_‡e”•úϧRÏ¿€Ml⇦}Ì☓{Ì?“íF“íX½
  41519. •À8‡¸U‡¹V‡³Y‡xsÿ?–í—ußrFþZÕî“EÞü4d/ZÕî“EÞì4d/
  41520. Çü89½ØMwÅyX»ÙZwµyt»ù‰wÞs?þ”w~o?þ”w~k?þd”ýZÜîÇEÎ8
  41521. ßäƸyEZîd“ý”ð4ÒddÿΔªogªcüðM•üM§ÌŴd€Æ{~ÌܪÌù−X…w?î­c“ýÝzî4ZÎbÊaflX…w?î    ­c“ý„bùzî4Zΰ
  41522. êDþÞÌǸy?Zîc“ýªgÏÞê̬XÜg_−È›flX…w?î­c“ýC“í}Þtü·λCþîîí‘’"ûè⇦hú¶^ò}ÞÕì?Zîc“ýô4âC•í”ùÜùcϽc¯C_PF“ûDòW•üM§ÌúÆzÌ®☓ÌM“íëðÌYßÌ8Øß°êeVàÌLøfiè°Þ°êÜeÏ:ØV…8­e°þÇã
  41523. ’VgÌLæfiè°Þ°ê¯eïOÄÎÜOÎ$ØV…8­e°þ´iïP•íÝéÌQâV…8­e°þñÄÎ=5ÿXnÌ 9‡™e àøeýü“½ªlFxiF!•ûϧRÏ¡MlzÌ☓Ì“®Ü“OÞxNÎÞêÌÒYü8­dÅý·n‡VàÌKkfièÜnÏ–fiV…°KîOÃίNî­dÅýVgÌ8Õ×ØÅÚndßß·ÉŴfiV…jKþVàÌKKfiè¯ÞÅÚ´dï
  41524. ?­ZÓîø4d/ÞtÌÊ1ïX>χ©ÝÏßЉýdϽd¯tsPF“à •üϧ[ÏEMl~ŴÌ©{Ì8 ß ÁµyfZþWgÌfiÈ4­fYüã
  41525. â‘”´Ù“gßw…̆©Ý>“ýÏoì·Ýffißøføü“½ª$mCPF’•ûϧRÏMlŵyÌ⇩Ìŵ­|™z ¢ö¹8‡ª¼•g^|80¼Ø¡ÊðâEPÁßêÌ6áV…    8­d°þgSsÂfiX…°Lî­d°þÀ³îONìXÜÌ8C×Ø°êédÏXÞÌ8Ìß°ê­dßóî>ÊþYk̇©×dLßødüü“½ªD_PF’•ûϧWÏÃ~Ml~yÌ☓⇨Ì»¯ÜWàÌQ̇èµÞµêáeÏ×W…8­eµþéxÌó<ÏáíÌ»ÝW…QùìµÞµêeÿU?¼ØV¼ÙX¸ÙY¼Ùr³ù¼uß´sïP•í´oïP•íj¼ýZÓî5e/Åüµ8‡ZÄçmeÏÁZì>ÎþÏ6èX<Ïö‡Í ß5•þeÏe¿8®Œ•úϧQÏc~Mlŵy̦|fi»È
  41526. q­Zåîꪆ™”ó×ß òçG`îÛHîò_~èØ~·m‡¸–uoflÓP^Òpå€`ñׇÝl3þZ×îjkwʪfi™PdflyHrtnea1¹8®Œ¸p+¤úùE•üM§Ìã&~Ö…ºå‘@q8_Þá ÚkZ~fij×é­ªØ[_î=ÀÊç_êí9ZÞ†    Ú3àºç_îíôÊ^~VéÇaE»ø2s on±p+@¸Œ§‹ªrÉûJüfòM•üM§ÌŴô}Æ{~ÌW«ÌKh·è8¯Þ÷
  41527. Ú†ZÞ“yªØÿM~XgÌ«¬Ý8̪ذ»
  41528. z†ZÞúkªÈ4c¿ŶuqµûðK•üM§ÌyÌ}Æjþí¼n‡ŷÉì⇨aì8ëºØXÊó™c•c“ýXc¿o.e-DüϧPϯ}Ml~yÌàºV…麸…qÜ
  41529. ê†ZÞŶ5ªÈÅn‡Pß·ùÅûλËüû:¦çÅËÌAß
  41530. úÅûÎ;¦Ë|ËûÎAßÅÊXaÌY¦ºÈddÿutitsbusStŵ&¡œ•ýϧZÏs}MlŵyÌ«ÌM“íq⇦Þ H½yV”΄º—‰±Mî³8‡·gÿ8±ÞVÊEÔ¶èZÓîtfflÌÍ“}:$ èpÿÇÓÜÌx„¬™6‰Ü[ÊãfïAZλâÙZßîA¬q⇦Þ H¾y°—î8_ºØk    úbh−”»í°¶ïÂaºè¨§f<jüc€¾çÀì¼cÎc—¾ç¡Â™rùÜ–ÃéqMºÈ< øcîÔ¾À|¼cÎcîô Â™vùü<º°‰Éqì<ïÀcÎcî$¿¼|ÂcÞùã Èp<ÈÓÜÌ „¬™6‰Ü[ʦ™f•K“íp­Í<ïÀcÎcî“¿¼|ÂcÞùÇ Èc¨¿çS¶Z‰¼E~fZþfúüo9“kp¡•ûÏX>ÿM¨Ì…,È|v;ªþ©£îÒgÎ×¹'i\øÌ…6¶È
  41531. r­Z<ÀçH©†™“€Ø¢☓ùçÕ¤þ⇦‰…¬çÜfi«í8„©Ø
  41532. ê†ZÞ¯5©È    £‰Içn-⇩Éì¶8‡@ s%—%− ‰#ÜŷÎP„Ï…*yÜVÊ×fï:ZÎÔ êfZþÀ3d)Zî
  41533. :¬ZÓîÄ3f/óµ°‰⇧ïç
  41534. 8­ZLÁ穆™Üp̬ÏÜy−”È*­fVüZîº:†Zäí
  41535. :¬þ°î¹M‡⇩Éì    8­Zåí³™f•Üp̬ÏÜy{”È*­fVüZ°½çÃ:†Z»ç:¬þ°î M­ZÓîÈ3f/ÓjïfZþnXÙÉÉÉ\Âŷ~¿aÎå$~ ÓÜÓ@¹Èï µx8⇧Þ—Â
  41536. z†ZÞ±±¨ø$“£þìqå‘pÑÌ%çÂ☓1”‰☓ù·|'⇦XÎŴþ*yܬÚ<©ý⇦9…6⇦ &V…ù†fiÈZà†™¬çÜfi«í8æ¨ØHÃ
  41537. z†ZÞØ™Ŷ¨⇦ ¿Ì3rfZþf…d÷u„4K»ºüðI•üM§Ìyà{Æ(¶ÍÖÎ8ZÞw
  41538. úÇÜÄÁ(¹ÏÖÍaZÎ8ÒµØ( ÊÜÍb\þ“´ßbbÿam_epþé_orc¡üð>•ü¨OÏ·{Ml ­ìëMÎÓßÌy“†È*­dVü^pÄç½8‡`€Äç¹8‡8³ÞÚ¶éĪí¬ÄÇ8^ÞH¶⇨\^i/*X^ŵ8²ÞÜÄz8`ÞÐÀɬWÜu¨«™
  41539. 8­Z Å稆™Z\Áç²dïŴ„âÈ`0Åçb'8=û‰·m ÿqoÿ(⇧~•-⇧⇩•°ÁŒdZþZ¼Áç☓Åd8^ÞÓ¶édZþ©°3Ò”†Ý"ñßèdZþ_ÀÅç·8‡_ÐÅç9ZÞÓ¶édZþà¼3ŵZ<Âç©dß“†Ý#ÙßèdZþ_ Æç¼8‡_0Æç8ZÞDÆ z]_î
  41540. 8­ZÓîÐ3d/_hÆçtÖ\~ÀÂ=~dZþ_⇦Æç·8‡_—Æç8ZÞÓ¶édZþëßÔ3ŵZ%îodßŴÈy³    êÃ8‡ÁŴ– Äî öSàxWÐÌ«¬Ý8ð§Ø Ç
  41541. z†ZÞpÕ§x‰i~m…û⇧’nÿª€⇧ø« …øE…/…⇦²R…èàÈq­WÐÌ«¬Ý8ҧؗÇ
  41542. z†ZÞS…q§⇦¬Çg8^ÞýéZØî8ý·ØÔ êviþ¬3T^"ªmìO<A]ÿÍWì$46⇦òàø…yû̪4…È^(Èç·8‡iÔî+…ù…ê¸3ÂÕÜÌÜ›¬™*yÜùÊÜ …è:ZÎ8ļy:ZÎÕ¸éùiÎc…—p4ÂdxBèú£°‰*yÜ°ê\KΩ¬Ýd†I§*yܯºépLÎdÜî棰‰*yÜÁ ê4 ÉçdVüb ]¯¨îy•Èé⇧ù…^PÉçµ8‡iȽç©â⇧Ø”†Ý“ÿÞØ8¨Ëç´Ë“}“9Þ:ÀËçÜp̬ÓÜy›È*­xÅÌ⇧x:ZÎÓ¶édZþ«YÉK³îÝéÌõ \…Z±î»8‡þ¯î 8­iÔî¨úüú´3±³°‰8hÌçÜp̬ÓÜy]›ÈZÆçÕ:†Ó*‡Z'î
  41543. :¬þ°î¶M‡iÓî^flÜp̬ÓÜyE›È*­€Æx:Zλµyqiþ©ÞßÁ‰Üp̬ÓÜy1›Èw⇧Ò™⇦_Üî·8‡_Øî9ZÞT¿¶y¢iþÇÞP^ŵÕxÍ׫¬Ý8ܦØÕ
  41544. ê†ZÞfl{¦øpuÉÓÜÌ›¬™*yÜS⇧⇩Z\Ççµ:†iüí°œïKû¢èŴ§8¯Þ”Ú“g߯Kî8­gªý“©ÝXÞÀ‰ì’ß8_Þï¼ÙZ_î 8­_»ç8]Þø¿    z⇦iþ_ »ç,Ë\~◰=þ_òí·8‡_H»ç8ZÞµégiþxpÞøZáîñ·ìÐ8άWܦ«™
  41545. 8­Zh»ç¦†™◰gfl*­WÐÌ«¬Ý8p¦Ø¤»
  41546. z†ZÞV¦ÈüdÏid¿'t8„•úϧLÏozMlz}̺m‡WÆÌ
  41547. •Þ}Âï⇨ºflpÇc_sqÓJû‘ùZ•üM§Ì}XzÆ{ŵÌެ쓼m~K_îiW|‰fl¶È u­ZÕîtfflO%−cмç8­^‡<C⇦µ²W…“LÞêMÎ[ÞÌ݆ÈZßí&?¬( ½¸8‡¶m‡ 6V…<¶?1L½†}s4Îu;ϱêì]àé‹ŴøÌ"4­Äm‡(⇦½8­…Vì    −âè8^ÞÁ¶yVeΔáß(éÈÍwZ»ç@¬¬™Ü è½t<ÏYaÌ•œË‰êùÌ[ÞÌ−†Èt^º™(Zéî
  41548. ?¬´5‡mùíL¾À~4_Îß¾é¬mÞ<©ýatÌ×ËîoœZ‰ZùÌNfflûØ3“f¿a o%•úϧQÏÅyMl~Ŵ̆{Ü/ÛîbjÌ]âX…4ÜY    Ê€dflZL¼çddÿ_.sÈUecapset•ûϧCÏF^…çÒµ‡¼Âüù ;w§8ß´ÉT¾Ï``ÿs§sì$•ùϧWÏ™yMlŵ}Ì|⇨Ìfi⇨ÎDÌ⇧â“¡@ð?9gÌg@Iý{eìC»µè8ÞÝ
  41549. ê†ZÞñ¥xdjÌ•µ‰†íeçÀñÂu©ciremun_ûð[•üM§Ìy^yÆ☓Ì”­Ü¼OÞ:ÐÝ<¼Ù>¹Ù@¶Ùj³ùÎÎÌgÎüÓ»Íè’ï\è€Á(Ö0¸4ÜY    Ê“^f/0Óüw.ïصþ‰"¸Ë÷­uÁýþwîϵØw
  41550. ìʵþ‰kflüþwî ÅµÈ‰¿Ï⇧ÍKÐÍÓìfZþåŶ‘\3·wÎw?î²µþ‰"PÌ÷­uÁýþwØw
  41551. 줵þ‰kflüþwî flµÈ‰¿ÏNU⇧mKÐÍrKSÖ­ÂÙw;Ï7Wüø_ÕÈ4ÜYÊfïC    Ð怕_Èüê@Ï4Wü¨ÔÇ™øÌ4­fYü_Èüì@Ï4WüÕÇ™øÌ4­fYü·wÎw?îbµþ‰"‘Í÷­uÁýþwîYµØw
  41552. ìTµþ‰kflüþwî OµÈ‰¿Ïo¬ßXºÉ¨Õ7•4ÜYÊofßÐÁçÒ(
  41553. w§þwî·O‡þwîVÀß°µ'ÃiÖ|îÕy⇦iÔ|êÕy⇦þwî>'O=·wÎ…Î?~þwî"ßÖÜÉA]ÿ$V$^w2Ö6•úÌ 4­fYüŒk
  41554. þwîñflüð\üÄÕ€⇦^$X÷òAÏ6ÔüúÖÈ4ÜYÊÞfÏA^ÿ{X…úïÕÈ4ÜYÊwfï?·ìwÙèä´þ‰N'V=”­Ü“OÞwNî?·ìþwî N­OÁí·wÎm?þþwî    L­·wÎ?îzþßä½    zfZþwÐç"þþ½‡°²nþwîflŴ¬ÆwNî?·ì޳ϒ£1o²Nîg0î‘qí-’x’´ €⇦ð\ü`Õ€⇦^ÞüXAϬÕ{⇦úÌ4­fYü¹üìSym]Êü GA•6Xüú’ÕÈ4ÜY    Ê†^f/ZÓîaffl ízþß<Ñzþwî"ßwê8þÞµéfZþy³ÞÈSÆ@_ÿWôÝÇÇ4ßøÔÈZÓî`fflfüüstxentegúyò>•ü¨XÏ«xMl~yÌå“p◰oæî%†™¢⇨Ôè¶8‡Ë¢~-3ÿìàY…ü 8­ÔAîfZþht−'⇨ ¿É¼C‡èF-èG‡QK…ØS6èÒF…èŵ«ü“MÞYKη­³ÈL¶³è8°ÞäÁ
  41555. z†ZÞ@£⇦¡ÞµùgüþÎ%ÇÍüfçC-æH‡³]‡¡¢ï¹‡üïÍÎÌüïÍU⇧Èn⇨ ÄÉÊC‡ÈH‡º]‡rw−twÀyxw»y„Âùü\¦ç−?⇧Ø”üþü    ¦ç¦›’üþüï©‘ßåÉÔÍ+ÿ)­oÂý☓ß    üi0#÷7#U¿ÏåÊÍ+ÿ)­oÂý☓ß    üi0#÷7#`¿Ï€Íÿy½å›‘å8H¸goYr…“jßÓüîsoþH3òüþ1ÂÎÓ´éioþL3òüþ1Âεù€,8=Âdè    1¬¡ÞγÉàH°cKÎÉWìDà͉³°‰8ßÍ³É ½A~AZÎú´É±ªïµC‡¡Þ׺éÀoî/%èä⇧ú…¯cé    }Í8¯ÞÓ
  41556. êuoþ¦`3â6“™ÉÆ·lÏŶ½ïçÁ çÒ F½•úå‹‘Ád4É⇧(ÍúÌÆA~ÿÀ‡V$Ǥ¬Ý/ਉw‰ìmÌWcÌkùßøWcÌ­ݧóßøÍ&ÂAþµ0w–1w$z¬Vܨfií‰ÆÏwÎcmÌÜßW…ckÏWÜÖß­™%¦/ÍüS­Íü S­ÓÍìioþÓféioþÚgéwoîcªÆ|WìA»ßèds⇧—Íü Q­ÓÍìioþÚeÙwoîcªÆ|WìA§ßè¬× "ÿÀ‡VAÎQ
  41557. §wÅ5ÿw‰ìmÌWcÌœÄÿøÇ÷ßú¶`‡Eß’³ùY©Ì·K²È…T²È
  41558. r­ZhÇç ¡†™øùÀî·¯ÎÍKÎxÈ÷ß3úðî`-EߤÈéyÿè,=À“íZùÎq%²ÈcnÌXßW…ZAÎÔ'²èøoÎbrflmøÌWcÌJß­™AÍìoûí[¿Ïffÿ–Ûœ•ùϧ[ÏÍwMlŵÌ|ÌsªÌ<püHDHF⇦¬YÜùáÈß…ìE\î½5‡8Wü‰ëÿÛ◰Á 6­f[ü☓^⇦^"Z|^ÂùfÏÛf¿ ]»û;ùW•üM§Ì wÆ{~Ìu☓ÌbjÌìYü5…ÜZÊõeß@ZÎÓ¶éeZþaYÉeeÿÃÛ«ú–ùW•üM§Ì|wÆŵÌs|Ì<küøÊøÚw¬YÜù¾àÈñ…ÜE\îeZüP+eoxSwei±û ùL•üM§Ì}^wÆ®zÌPîëxÌ(F<•×ðÎflଙŴùÌ^⇦»çX?Α^c/ý…^ÂÛc¿nNSD‰alsn’•üϧLÏ;wMlz}Ìx­Ì<ëüøËøÛw­WÜù~àÈÿŴÜ?\îcXücüü)º5mD”•ûϧ[ÏwMl~Ì|◰Ìá¯ì.0ÿ8ÕX|,2ÿpñÌYáÌ…⇩âÈ    5­fZüÐÄ“^r@Zζé@ZÎ\Ê.0ÿÝXÌ,2ÿZ Åç@¬µ-‡Z´ÅçÓhïfZþtiyÕ    ÚfZþZîðÅf@ZÎ-ÚX¸É2ÝüZ,ÏÓfïfZþP¾Ä4r@ZÎà‘'Ã2Œµ‰5…ÜZÊWfϪÓʼnZ¨ºç@¬¸-‡7Xü‘Æ¿ÓxfZþfZü¶-‡ZÓî_fflZæî¶@†Zãî@¬ZÞî@¬ +­ZÙî@¬·,‡fZükj−ÓjïfZþ+´4ÒÓ¶éfZþ,\ÙÓ¶éfZþµ]é@¹°x[îKÌfì¼°Z‰8ØÎçZî
  41559. 8­Zæî †™å€‘¿4è•°Z‰ZÝî¶@†ZÚî@¬·*‡kZümu−íoÙfZþZàîº@†ZÝî¶@†ZÚî@¬·t–kZüqn−ópÙfZþZÝî
  41560. k×Ðflfi™ZÄç@¬ZÞîPfflÊì»x³»1lH„)º5mD” Ç4r@ZÎ×    ÚfZþZ¬Âç»@††ZÜpº¯flxkZ~fi3×µ©flèIþÞL¾ÙN2çÒ~wÚy¢âùÊì»utat³«&ÉísÌYÞ̉™‘È6­f[üÝp̬YÜ…ÌÏZdÃç
  41561. @¬þ±î´J‡mÞî¹5‡0ÔüX.Ï2àü    ,–úüúd3ÂþµîN­gÁý‰”ÍêsÌYgÌ…­áÈÆ5‡⇧Íé1PÝÝ@4WüÒÇ™Vø|A]ÿXGÈfÓ6•…ú̆^⇧(êsÌYgÌ…•áÈZ×î @¬ZÔîaffl5Ð4Ò¯¸éCç°~hî÷mîfZüfþü·Âªúœù[•üM§Ì}‘vÆ|ŵÌ8,ç/0ÿÈÊÏ},2ÿësÌWäÌ…]áÈ5­fZüWæ̉áÈZ\Åç A¬ÿ¹îœ¯™8­0ØüÞ/Ï2ÏýZ,Ï*uf?à@ZÎò¹Ù@ZÎì¾µyfZþµ t–Zè¾çïfÏWæÌËଙÆ|?ZÎ
  41562. ¸ékZ~fij×¹Õfiè0ùþ~psÌWãÌ…ÊÏ5­fZütats@v su±Â œ·ŒZÁç¹@†Zÿíµ@†ZÀ¿ç01f•ßF‡äG‡µK‡Î/w–Øg⇧È@\ÿ0V0[wÇ4ßøßÐÈ4ÜYÊÔfÏA]ÿÖô̸Ò6•úÌ4­fYü-Q⇧ØÞÀÉA^ÿÖô̲Ò6•úÌ4­fYüØ–Ï@\ÿã÷Ì50V÷ùäÐÈ4ÜYÊ•fÿÀ-‡^ÞüôAÏ6Öüú‡ÒÈ4ÜYÊŶfÿ\Øü÷@Ï V0XwÅÐ5•ùÌ4­fYü-zß¼½µyfZþ 4·‰(ù£vÆ$1èR¤æ ÀlkZ~fiŶ3×æ=fiÈCàW… È‰|AZι êÆ0ÿ~8Ê®ØØI,Ã/0ÿÏÞÜ,2ÿfZü†@º© f8d÷flºú!ù[•üM§Ì}☓uÆ|ŵÌ$Ä0,w/0ÿøÎÏ},2ÿîsÌWÝÌ…ÔÏ5­fZüWå̉àÈZ…ÉçA¬ÿ¸î•®g¸8‡Á.‡þ¸îN­0Óüâ/Ï2ÏýZ,Ï^|-+fpÀWåÌŬýæì?ZÎÈÁ¸yó4Z~fiݸӇè(ùþ~ìsÌWgÌ¢áÈ 4­d¨flflº·!é¹L‡ÛN‡ç_‡ä|w–-¦ß×ÀÉA]ÿØö̾Ñ6•úÌ4­fYü\Ť@ZÎlŹy?ZÎĵyfZþZ⇦Åç@¬Ó™Ì@\ÿÕìÌÇ4ßøCÐÈ4ÜYÊ¡fÿÀ-‡]×üöAÏ6Øüú−ÑÈ4ÜYÊV⇧f•ZÆç¹@†Z(Æçµ?†Z*îDÆf@ZΙÊ\Óüì@Ï4Õü+ÐÇ™øÌ4­fYü-‹ß“ÁµyfZþZ¨Æç
  41563. @¬Z¸Æçµ?†ZhÅç¯fïOÂΰMîOÃÎŵNþµ-‡Z"î Çf@ZÎÇ
  41564. z?ZÎÌŵyfZþ¯îMìðîNì⇦ÄldGZ‰fi¢3×å#‡È)ßW…¨¼‰|AZθ êÎ0ÿ~8°­ØÓ1,Ã/0ÿÏâÜ,2ÿfZü#ÑÂf¯%_Ï”•úϧ[ÏmtMlŵyÌ0,|0€È÷W/Ï2TÓ÷î,ÏVÝÌÓáÒ™6‰Ü[ÊåfÏñÞV…åì?ZÎâÆé?ZÎßÂé?ZÎÓ¾Éwè‘PŴâWÌ-3ÿf[üfe−ÄÈgyAZÎÓ¶éfZþpØ4ÂVåÌ­Þ¬™ìÌVgÌfláÒ™5…ÜZÊ$Éf@ZÎàµÙfZþ8Øü…çÏÈ5­fZüZèí?¬;¬ýë,9È4Ôüø}ÏÈw…üZíí?¬êÑÎ4Óü…®ÏÈÑlïÓêÌ⇩Ï4•5…ÜZÊåfÏ⇧ÞV…L»|?ZÎX»µîr?ZÎö±îÒ?ZÎ4­îÒYÊÓfÏ/0ÿâWÌ,2ÿZÓîifflfýø;«Ô¾»üðP•üM§Ì}ÆsÆ­zÌgê̬WÜŴKâÈZÖî    <¬dXü2WÙÜê2kÞV»ÉzÏ8•4ÜY    ÊZdfldXüdüüø;«¾ÃºÔ •ýϧLÏ–sMlz}Ìp«ÌWaÌ⬙çŴÜ<ZÎXÊ2cßäÚXkÎúcÏ;c¿”øºûfiùV•üM§ÌŴvsÆ{~Ì“­Üê?ÎXgÌøᯙ4ÜÔ·é?Zî|^i/lÜî»4‡8Wü…)ÏÈ    5­eZüY[ÉüeÏ;e¿–øª%l−“•üϧVÏGsMl~ŴÌ­{Ì?“ígêÌ­XÜÉáȶ4‡Zéíh?þlÜî»4‡8Wü…ûÎÈ    5­eZüY4ÂüeÏ;e¿"øº¢ •üϧLÏsMlz}Ìê­ÌWgÌÏ°ý2ŴÜÓ
  41565. êcZþV\ÉÔÎ8•2ŴÜXÊwcïyÍ~wÞÝÜcZþZÓîjcflcüüø;«Ùκü;ùL•üM§Ì}èrÆ­zÌgê̱WÜŴmáÈ
  41566. 2­ZÓî]cfl8VüŴ£ÎÈ2­cXüywÞwì|ÍZÝíÓcïcZþükÉ;c¿P»øJ;Ùœ•üϧLÏ·rMlz}Ìj©ÌWgÌ    Ý¬™×Ŵì<ZÎÓ
  41567. êiZþÓlécZþø,4Â;c¿£øªû'ùL•üM§Ì}„rÆ­zÌÞp̲WÜŴËÏZÚî¶<†Z×î
  41568. <¬cXüSV−
  41569. 2­ZÓî_cflV…cìÎøcüüø;«ÄÿªüðL•üM§Ì}jrƪzÌgj̲WÜŴïàÈZäí¶<†Zåí<¬cXü    2­ZæíXcÏùcÏG÷c?”>»ûfiùQ•üM§ÌyDrÆ◰~ÌgªÌÙÜV…Üì?ZÎo`'Óp¹ÉVÜÌ¶áÈblflÜpÌÔVü4ÜYÊådï?ZÎâ¶é?ZΰêÝCî:ZÞÀ êZÙî\]„øpn−ŵ€−Z î ?¬ZÓîÌ4d/ágï?ZÎÞ¶é?ZÎÞÚ]Zî½\ΰÎxCþom−Z×î ?¬ZÔîqdflg¤3òZØîk×tŒfi™dYü²P©›o„>G÷³fi”œZ|Çç-'?<þ¯î)'K=gé̬VÜg÷ÛÈcÜV…4ÜYÊÐÇd?ZίêNþÞ¯ºéLþÞÓ¶édZþÜ@4ÂãàV…4ÜYÊ°dïC!çdYüZ×î
  41570. ?¬Zúí`dflZÓîD4d/dùü_ÂZ%þŒ•ûϧLÏ™qMlz}Ìp­ÌWÞÌÆ$©÷2ŴÜXÊëcÏ4VüŴëÿÔIÁ2­cXüywÞwì~ÍZî(ÀccZþcüü¼RteG±aÏRretAüðQ•üM§Ìy^qÆŵÌcªÌìVü4ÜYÊ⇨dïgCÎéÛV…4ÜYʸÉd?Zί
  41571. êNþÞàÀµydZþgé̬VÜbeÛÈ¢âV…4ÜYÊ◰dïF⇨ÎÓìiZþÓtédZþùì3”d¯lŴl¾Te”d›UýiòZ•üM§ÌyqÆ◰~Ì“«Ü“CÞpEÎVÜÌ6Û¬™Øì?ZÎ4´ÙY    ÊhfflZîk'?<VÝÌ…“ÛÈZtBèc'@<þ±î¶P‡þ±î['R=c¦°‰pCÎVÝÌÛ¬™þ°îE'R=Zî
  41572. 8­ZôídfflVÝÌ…pÛÈZî @¬g©Ì2›²‰ø…ÌZ¼Âç @¬g­ÇÇVüküg­ÇïßV…4ÜYʤf6èg‹ÈC“í4­fYüÜp̬VÜÑÚÈZøí?¬hYüZÓîXfflÜp̬VÜÁÚÈ4­fYüZ…Àç?¬E°îfYüfúüø;«n
  41573. •ûϧPÏ{pMlz}ÌàŶp± ŷmZèîjkw−fi™K“íW‰N”ígpÌ:©[¦oŴÜâŷ ·ß…îð—Z‰d(³÷Z¸PYganel 16,œø;«n
  41574. wÙdOdO’mess’•úϧMÏEpMl~Ŵ̱{ÌáVî]ZîL\îpÿÇã g
  41575. ©:ÉXìH©icý⇨ŵ−Ç\»0¢Œ•ûϧ[ÏLF+Çy#pÆÿ~|ÿÎ}w²ìMç8-z\ì¹:©Ø¦\ÜŴ>©È
  41576. >¬ZÓî,3f/¹o‡Ë⇧̦XÜŴ0©ÈqºßnÊå“0\© ™s¥\…Õ?îfZþ&%.c%’ŶtÉ Ëü^’©ÈáZ|Æ™©Ø'4<8cØŶ'à ¢ü´O‡8>¬³>†FË| ©Y…cùÆö¨Y…ËWÈû.¦çwgì⇧ð¨ø,¸\|\ì¨Èñ¨†™ Ŵü¶O‡´>†¼¢ü >¬ZîjkwH—fi™ ¢ü^U©Èá[|ÆQ©Ø¸4†Zîk×8—fi™\WÈ?¥èZõí@f¯ùcÙ¥ièrµE\%¹¢Ç«@0©‘áºaweEŒÙîf¯p•úϧRÏ◰oMl⇦ŴÌ|ÌÁn‡;sükvÌ
  41577. XÜø™¨Èhp¯ns,/5 í: d1!jÀÄ1X|dŴ¨ørÖR¶Uúr°ò>•ü¨XÏ_oMlz}Ì☓⇨Ì¢®î¿8‡«oìF<•WîÎö„®™…ù̸^z/u´^Ò    û¼i Ú;W ÊÇè„­™…øÌ@ÚlW@ÊÇà„¬™Ŷ…|uÚo·É‡WÜjÖøWo̾–†™☓D☓B⇦ l…ãdüÁm‡ÆlBha¾ÉŴ¨gdæÎVå‘0 Áß©ý−aÜ£w¨ÈL|mr{ÿryÿvsÿtsÿŷsfl0_☓)+++ ’s±÷q»ýo¼ým¬÷Zî<j7kw⇦–fi™⇩8¨ØäB…·kÈçŴØDÖo‡'¢⇩mZÄBè#ç8-¬B,,¤D[‰qÎ9­ÜéÌ®§ê‰“KÞ L‰Üé̦§tB⇦”KÞ L‰£ÈüºP~Q]îÜéÌ—§á‰,dK~âf¯Oº:ð»R¶4Yr°rÖ%^☓)⇦``"oÆe'Tr¶r&TüròE•üM§Ì±¨nÆhHºçeÞí·§g[áíqhÊçyÜâÜ8ZÞp·Éágìyg§ÈaýÅ'«1% hÐr‰dVT ¡g|C®Áº)boí%ax⇨`BùrahñW•üM§ÌznÆ◰~Ì⇨|ìzfiì Cl ?⇨~eìC­§è8ÞÝ
  41578. ê†ZÞñ÷„x◰Yìp|‰·wÎe?þÂu©é
  41579. •úϧQÏQnMlzŴ̪ÌK ¦ç⇨§¯‰w?î
  41580. 8­ZáíÔ„†™L“í·ÎXCÎœ§È½™‡»
  41581. ŵ–pðÌYaÌX°âÈ•§È†·ßÉwî™ß°ê
  41582. 8­ZÓîNiflZXÁçùdÏmùd_tÞ•úÏX>ÿM¨Ì}nÆ|◰Ì©.Èýŷ½à☓p    ZflîUHl⇧    §@ñÿ9g»ã aeìC;§è8Þú
  41583. Ú†ZÞflŶ„è⇧7Þ¢æK¬æ¦oì
  41584. §¯‰H⇨Îð|føü⇧N£›•ùϧIÏÙmMl ¦y|}§È
  41585. n­Zîb„†™C“íî“}î“}bå☓Pñ̺ú"ùC•üd§ìºq–âQdB⇧z¨Aõv/%ì`¿f¯nû$•úϧFÏ«mMl©yÌK“íyÞy½éâa0<püâ☓â☓ ÂVÜù◰âÈaøün×KúùB•üM§Ì)‰mæ]Zî`ÙâøAoTeÎú⇧ùJ•üM§Ì}€mÆszÌ<küZ*îÀ]ÎZèÄç¼]ÎZ+îÂ]ÞùWâÈZÅçpñî1¬_î8­‡íÔäçbZþ 3Ŵ)ZhÄçbbÿe1¨[g†•ûϧCÏMmMl'¸âxëflý``ÿeŵ¨Kú‘ùK•üM§Ìy>mÆèâV…$}|¸0‡
  41586. Ŵ§ZÓîø3h/cWü”c¯o”³Jû—ùU•üM§Ìy$mÆé~ìVlÎ^S¦ÈŒßV…“…ÜqCÞâ` rç⇧”î
  41587. p§ZÛî»8‡⇨aì8£Ø³µù ^D\"⇩pï³@†aç™È&¦⇨‰³8‡åŶ`ᙆ⇧ÎÛ}‡9 Ü:ÀÙ<ÏÙ=ÕÙ›¾ùØ@‡-çA-Ù@w–Ó•ïeZþi⇨pH×ç1sÎÓ
  41588. êiZþÓoéeZþp⇨p€×ç1sÎÓ
  41589. êiZþÛmÙeZþZÓîneflZÓîjeflZÓîkeflZÓîqeflZÓîleflZ°Èçj}>”fi™v>’™Xtb6%³”ª—o”“ZÓî 4e/_GeocÊL[ûðJ•üM§Ì}“lÆzz츥‰bbÿ−Û«úðB•üM§Ì B☓lŷ·ZÎ8“DèZ…Bèp⇦DèCÌZ‘Éçk×”fi™Z\Bè¼Í|"pÎ8ÙçɆ}]Zî†1ÞZ0Éç1_îDɆ}1ZîZ`Èç°]`/â◰©œOª= #„_×ÛK`ùtî†Z xœ•ûϧQÏElMlzŴ̯ÌZ×î¶9‡ZàÈç€dfl<‡Ü/ÚxB¸⇨kZ~fi j×gÁ“ÈâX…üÜ?ZÎX%ÊLfi¡èV¥X…X^ÌM‡Þè. ÿ×àËù4ÜYÊPdflOelli¡& œtî†Z xœpD°‰8pmp\Dè¶9ÞOÁíZãîP^î4G⇦ Üìn”¨
  41590. 8­Z¨Ãçŵ“†™ZÕîŵdfl¤4G!\¯î⇨†| Ñɾ9‡À:‡Å<‡>ŷß@·ÙAµÙ€³ùZÓî¬4d/<‡ÜÖ    ÚdZþ‡}ϵ<‡ZÛíwdÿ<‡ÜÞ    ÚdZþ:‡Üã☓@÷lßö4Z~fi\3ׯE“è\Þ/·Ù ºµydZþæ¯~´/‡ç¯~ZÓî°4d/dþü¹4» xœ•ûϧLÏ›kMlz}Ì“©Üg?ÎaáW…2Ŵܯ¶é?_îx¾p<ZÎð¼ z:ZÞ´éXkÎøcÏpcoÀŒ•úϧLÏmkMlz}Ì
  41591. øÀ8‡þwîåÕ¥µ1†“í×ÇcÏ·wγ?þc”ý4c¿ŵuqµû…ùZ•üM§ÌyLkÆ ,~|å“‘°¦»}8Ñí)ËÌ!îÎCî8ZÞ„úaä\ÂZî8êßBÜé,º+|dìO¤Ó…^¤Ó…)ùÇ!PÊÇ\ÞŒ´ÙÁgßÍÌÓ†Í6økpB⇦¶8‡èþ7¤Ó…ÓaÌ8œâØ©¾É>¤Ô…BKîɯn@…Y‰Õøì8kØ­Ý,ó⇩L\ÒÕÜkÀ‰µ8‡Ñ¯Þ°8î4Ë|C!ì¬wnÿ?Î4f¿2¹»’œ•üϧLÏÛjMlz}ÌË°Çí)ìZ!ì    8­cÁý+0]ÂÔÍbZÎ8UâØ)éÉ!0ÊÇ[­æccÿ¹4»oh&•ûϧIϵjMl¶yÜá(ìZìÂ8‡ï'ìZ!ì« a… 8­Ó(ìbüg‘\ò²Çüb“ýjb¿t„•úϧPÏ’jMlz}Ì©âpÿÁ\mÌ¡£i þö½8‡A ß0¦z ûþû!¤è·Ëüp%µÂ
  41592. WÜø™£È<dflt¢jKúùP•üM§ÌyjjÆÀ~|]Zîè©æp4ÐçqrîCÌþöéVüVÏèÿçVüV Ïaæϯ£™ : jaÜ Àª£x]Zîdî⇨ºÖ«|ý‘·⇨¹Ý”Lösmÿyÿ=⇩¯   =aÜ0⇧‘£⇦==ª ùßVü0a|⇨ŷ£øVÏ Þÿ☓âV…0a|€|£øV ÏÝÿzâV…VÏawâÈo£%0vÿpâV…VÏmâøjâV…V ÏaÛÏ^£ ¦¿ïC¬ææd¯_"÷JR°”•üϧFÏëiMlªyÌœÿ× ÂL~\Zî0Ò·|:pîp±ÍHÂ<_Zî# ì_Zî$¼ì_Zî¸Þ™ùùÌ”a¯o³Zû#ùI•üM§ÌyÂiÆg©ÌÄVü—Å}|;ZÎ' êkZ~fijׯE‹èy]Þ†Æ Sv;ZΰøykZ~fi
  41593. jׯ7‹è³‡Ñxb]þu`µ;:³Œ³”ª#o”³bR£refeoÕÒ
  41594. bøü÷æªR°_$TüùJ•üM§Ì}☓iƪzÌœVÞ°LîL−çåVüNÁÎ(Lî\Zîðû|1Zîp±ÍÄ<_ZîÄ |_Zî(ļ|_ZîHÞ™ùùÌæb¯RCP_÷eeDýðJ•üM§Ì}PiƪzÌœVÞ°LîL−çÝVüNÁΰÄL~\ZîÀÄ»|1Zîp±Í*<ï_ZîèÄ |_Zî+¼ì_ZîÞ™ùùÌæb¯’÷ºÏe¡£ýl—òL•üM§Ì}iÆ«zÌã W±MîM„çVgÌŴæÞÈZLÈç <¬Z,Æç—4×—’fi™^¯î±"çMOìZ¼Åç·\ÎpÌÕç±:Þ<éüZäÅç _ÎZôÅç¼_ÎZÆçÂ_ÞùÑÝÈcúü÷æªe¡’;l—Ï*up4Koo)µ_B“•ýϧKÏÓhMlÝyìnjÞɽÉaŷÎÍfiX…    8­c”ý·†]òc“ýác¯stsixe_•úϧIÏ·hMl±yÌK¦çpÿÇ—gÜ}◰¡È9¯Þ”Ú“gßbß”b¯Ñáºhà´Ú •þϧVÏLC+ÇŴ–hÆ{~Ì“²Ün?Þ E6çreŷέ¡\…†\Ü²¡ÈYcÌ\¦¡È8ëß\ÁÉ?ö‡è8wÞ×
  41595. ê†ZÞÔ’èeZþtu−X.¦cÍÌ™¡Y…ªâ\…¿8‡Ý‡\…w?î
  41596. 8­ZÞí™Zàí¯eÿZÓîOefleýa_pu4-r5´übòI•üM§ÌyFhÆ(¶ÍßÎ8ZÞ(¿ÉÙÎVdÎ8<fiØW    Ê´]b/ì™Ç…bÁýCb/¶å~‡Ü?øþ4DÒ…3¡é’ŴyÝÞ◰◰B•üî §…'¡ë‰ßý`‘D$[W−?Î3?—F—3‰ licaAÇûi¹òñŶ•…M§Ì—hÆ°⇨ŷPHØãT WÌ¡i=¡”™oTJ⇦¸8‡jWÌ¡™3¡”™diø«ŷ©rh–;i3Í[ Ê;i  rd⇦y‹ÆN»c6e>T%ë# yt!l—@i ·jûi±òH•üM§Ìåfl@¼Ðg8yÞ°B⇩èZþZ¨Bè Bç•æZþl,”}#gëwÒDùÇ@¦Hùw“Lù×TùPùwDXD[w;#¦w„ ÈŶ¼é·ã2I’åâŶ0áfiZÞn;‘ØT1⇩¿8‡ã9-{ÇùÔHÀ^"@MU"iMq³galFt!¬wÙé;Ï
  41597. ©Ó|¯‡†™8øܯ´ébMø@ïgêåŵÀq8@òæòå›aê òvgœìjßäÑ0·äÂ0ñ9j­œåÇœ_Îteg__Qúð>•ü¨XÏLU*ÇggÆŵÌ®|Ì­-çœå’áŶð8-â◰;òàA\ÇYâŴÁ[ÊâÈ8†‰?ŷçÑ‘qvÊk;ÏÒcì¼I}/ …8x€ÌSvfç’!Ñå‹à½Ï ;hvÌk;ÏÒcì¸Il/;vückÌZÖîÀ‰­™t⇧ø…ù´IÂàŵ!◰å‹  é2âŵ ëé-Áý|o[~3·⇨dç’áŒâÓ…›Þ¿-¦–ëÂζ5†ÂùîUÂìåÁ‘ÂÂÂΓUî½!‡ëÂζ5†±ùîM·ìÓÀÎSÜ•Û‡»²ìCZ?x¼1†ø,§ç·»ÎT¥í»øîT·ì8ßÐùF­¢ŷm€ •ÝF⇨–F ÜCw½yUâÙlÕù;çW-ÌY‡ß[‡Èï»ùîT·ì8ßß,Ó“íÔùηóflÈ−ÉfÞ ÆÛflX…f3ø¸„ι¿Í.Iî    \Ü<‘fl¸„ι¿Í.Iî    \Ü%−⇧/¸„Î9¿}é Ii\|◰ñfløf%‘#¸„ι¿Í.Iî    \Ü%­z/¸„ι¿Í.Iî    \Ü%´p/¸„ι¿ÍÊIÞ\ÿÇ•fliBWg|¡õáÈ%ª™(Gë‰:.ªŒ•ûÏB>ÿM¨ÌOffvx-Î⇨;•`òáøGë‰:uBegª-−œ•ýÏS>ÿM¨ÌRRfvxâÇ Q;gè›    ádflîÓfiþÿ±„|OH}âeÁ—€flÈ åFÀ¡iV|—QflØfl|flè 6îX5î;xückÌ©fiî„ÑÏOH iV|—=flØWhflÈ^e¯eàQ[ Êd;bA -
  41598. aü-©®8»nKAßGGStìas⇨U;ldna’•ûϧQÏfMl~yÌPGLJxiŴÌfl™⇨áX…(G^|4ÍÏô9 0sÃ
  41599. #V 6Á_d/
  41600. í8ÐÞ×ä (T LÈKœ†ðÞTLȉœ¬Vgs}•úÏpŶ>•C+¨|ÖeLl²“Ì<Ù+(;°@ ñcr|ã ,T[á ôŷ„øÌ Ô—©Ý’‘Ìfl—™glÌ‘WÌc’ütMKcp☓»c~»aZnretArGuÍ4tìAß%*°h¡n*Dûl¯òG•üM§Ìy¢eÆiíÆ´fiR1aVü*‰ºú=ù>•ü¨BÏ’eMl-Oç;(øPð|Ô4ïfl«âèbÈ`}‰ª.ªŒ•ûÏB>ÿM¨ÌOzev(-‰ð;Ï Pfi~â4ÿ‰`¯9`œ•úÏB>ÿM¨ÌÏfeÆôÂ-~’^~âø"ð;Ï⇨“™fiÝï$Ó`œöÎt¼†Jyrtn•ûϧQÏKeMlzŴÌA|−ŷfiÈ°“‡YFÎ GxcjÌ”^fiØdåŶpñe'à[sops’•ûϧQÏ/eMl~yÌZ◰ì°8‡nwÞ¸lficºÌ‹‘Ì°8‡\fiw‰?    çd0úeà»_,×Kop@µþðN•üM§Ìy eÆ€íÆp©ÌTqÌ`…8åßoÔÙÒÙgUöâUP’oµÙv9úÀo‡¯™î¯å áw6î¯<ì„¡¯¬érNø[wî/ÀîöÀîz¯îhöþ?¯îc¯þeà»_×kü;ù?Ŷ•…M§Ì|ÌdÆj©ìþn‡³ðÏ"TÆÉp_Ì8oâدÀézå @á/¯î8wÞæ®)"3?¯îb¯þeÉàK_lædüròD•üM§Ìa¤dÖ     [¨© Ç yhå
  41601. zºf‡å◰ i´f‡hå¢0ñõZî·T…`”ýeà»_¥×Ke‡•ýϧWÏŴdMl~yÌ☓_Ìp©ÌWlÎ8'âØ“Úq…߬®−gÔùq”Þâ ¹‘WÌ…›Ìyͯríêî ¡!qè×›¾éöÀîG¯î?wά¯fiªwoïÀ[îÀöî¯/îözîe¯þ Bp~ºZÎå‹ðFàÔ^²ros_e!•úϧPÏ7dMl~yÌd¹í¸a‡pÍì:a­ ‘gd”ýg‡îŷ“—Üz°é·a‡·hÈapÞå9ÚtG5‰XdÌ]‡¨å Àå¡ …ʆݓ/ÞŴâG Ñàŷn⇦mø· Èå¡0áR⇨ìX?ÎÏ™;‡⇦àhH±a¾*•úϧMÏñcMl{~ÌokÞʽɑaÌy‹Ü¢
  41602. †’¯é4o­c“ý¾à«srevaÝüùQ•üM§Ì~ÔcÆZ{ì¿8‡⇧PÈaÊÌ‹‘Ì
  41603. yÍ°¢−=È“4Ú1dÏ©ŒiœÌ®Døujdá»j‡>èå›0u õ‰“å  Ñ”8Þàœ¼pe¨%•úϧWÏ¡cMl~“Ì⇩◰Ì8“íÄÌÉWǬ™8ŵáØo»Ù¾¿ÉmZÌ›‘Ì 8­©WÜPᆙe“ým}Þ”+Úàe¿r‡em_e!•úϧMÏucMl~y̪◰ÌZÜ쩬Ý8ÅâØ“ÚgŵÏ©¬Ý¼â‰º8‡°gìc¥âÈâÒ… 8­©ÒܠᆙV²Ï†©ÝWËφ©Ý°Êï”?Þ8cße·éá2t°ðÃœ“ÍRLKSA!ié-@0áåÔàå’Àÿw‡éêkZ~fij×êÿýÂ0ŵ"'⇦7ÿ sx=ŶP1ý    ïkß0ä¨)fÝÙLÀÿxÅüµ{¹kœledaîøNe"åÓ@â☓0á41µzfâ◰@Ñ\⇩    U÷9¬/ã3 ¡ý    ïkß·¨−j    ß9·É    Ú,ó j­x=lúx~ÙŵÉÇf-[©™åŴÀæZÓît0◰—±îªú”ùV•üK+§|ÚbLl~ŴÌB/{|ú\|S⇨î8­ZòíÝ\àfi™{fl¯Dä«6,œ±îªÄJ”⇨'þþ¹‡·ºÎþSî'ߺ7ê8þÞà…ä‹èsÌ©ÚÜlâغÞéåŴÀþ"M­‰wÞº?î2ÿ‰ºøîS·ì·2Ⱥúç8þÞ'µù¶‡Ŷ„þ}−èsÌ©ÚÜHâغÌéMþÞºÜîâ8þÞ-û©½n‡ñ–\…8CÞÕ ê†ZÞkàøºuéè»E~eZþC/•joæ⇨ZüaòZ•üM§Ì„^bÆ{ŵÌ-¹íå›âO?Æßå•/’8þÞå€øÂÓpÌk↙ ^…¹Æ„á ‡±Íì8þÞ“0ÚqAÞE®Z¬¼ç•Œ¯⇨C/¦aoæ%flYÜnœxñ Ú†ZÞ‹½ßø¹WÜ
  41604. MþÕ8‡påQ¬ÁÓÜÌ◰>âèÑ1†­^GÈU©ÍŒ|ßè(3kwŷ€fl±îªcgMZn–a deQÉëªo®+HwÎYSÆÁÍì±jè8þÞw)êÜ?,ŒºîâF3}☓ßfi™@f¯ #w¥d•=©áݺûùP•üK+§|âaLl¸“ÝÌà×Ó6ÎÍLÞ8­Zîõ4×dßfi™•¡¯áݺåS &þþ¹‡·ÍÍþÉí&ßÍ7Ú8þÞPçDÕ"ùŒ—™äÔ“,Bç­)síÇ¥ÜÌq᪙à‡þÍíåe°ô%'M=ڌӅݿ̬\Ü8‰ßØw×é?‰í·ÍÍÓÉÍÍLÞ8þÞ&µùµ‡ŷ⇨þsvÉ¥ÜÌI᪙͇þÍíÙîM-þÍíû8‡Óì,ÿ¯ŒÈ\ÝÌc߬™
  41605. 8­†‹Þlßøë¯~æÌ}Zî%d¿‡öºì
  41606. •üϧDÏ]aMl_–Z‰8­`©ùu3K›s“•ûϧCÏMaMlíùæRà׉©8‡`ùùÜ^sÜ!쇫᜕ûϧDÏ9aMl8y„Ø«93`¿Vresu •üϧDÏ)aMli9Ç.à쉩8‡`ùù•tl¡ö%«ì
  41607. •üϧYÏaMl”}Ìðש,4ÂÒyn­ZÞfiÝfiœÞøe‹N×CŴf»•"©ö%«ì
  41608. !zÞ¸K—ã„    êäN−/¹ ‡q☓~Ó
  41609. ê”Zþ☓ðNâågøâ?àpãQ ÉÉÑ|'aÅÙã1×À
  41610. Ñ‹}n}ÕyºÑ‹Ñ|'Z·é43kw`Þfi™KxîÚ8‡º¯ÎÊ™‡ q­ŵ^ì8áß Q!⇩8[ÞqÃîòßV:¥lI e Ð fiŒ8ŵÞ*£f⇨þ©¬Ý–†™°î8-¬oßv;φ©ÝøÀ„Ȧî8-Z¯î8KÞqÎ,Óx,êÉ8‡Då–xq¾xÎ^âŵ‰À−……e¿Ì¬\Ü8tÞØߪ)Y ÿûÁÕÞå“Ŵ8xÞ¯ê,ã°MøÿXßçs$e
  41611. Úý©ahßÿ¾é8s$e Ú´ý−œ“Íaß”3Ú•œ¬o©é;2oF“•üϧLÏU`Mlå’@jÇhÏ
  41612. ÅüÁ8‡aßì−¸⇨Ŵü<é−È
  41613. ñîòÔ8—ú9ÓêcZþ•´N¢aØ⇧;ûsyeñL•üM§Ì„0`Æåjàzºþ−}ÄìîWü¯‡6m­c⇨þ8Õ×h¶é r§ ÿ+◰•œ¬ö%«aÕ+•üϧTÏ`Ml¬å“,ýhçbŷâŶ áå’`ä’ É8-å…å‹Éâc…±‡Ào‡’âŷ€ ẖZd̾âØ”±é6q­1o­*n­~Æìºn‡ ŵ‰äßŷ±é6n­n~ÞÂ⇨oâŶp ÑÊ»Éd’îx⋉±‡5o­nŷÞ–/Ê“ÆÙoØâŷ ¿q’î "­Π-8µÙx£2o­nŷÞ–-ÊâŶ@ Äàwþ±‡oå´` ÑʹÉÞ’þ±‡7o­nŷÞÇ.zeZþzy−•°N¢y)A^EaÕ+•üϧYÏL_+ÇO/’_v¸‡ÝÑ$û×p×åŴ`q8pÞè(û–“þ“Ȫå[¸’ ÿúÞ@Ö÷"߶ù"ß:úrçÑ q`    ÚÎ'ü9LXìO¹íNMîfßßZèÂ,8üg°Æ÷Åü&qØe9Ú÷îý) ÿ¸ ‡ú†í ÿ: ­†bØrúÞ¶Ó½¸Ý 't=æ—•ÊL⇨' ŷçÂÊAw'UŵçÒKwßy}çÊ"Rw☓⇧xçÊ‹ÊY-ZvçÒC|'sdÿÞ=zÊ—•ÍI⇨' jçÂÅE‡ÌT-FwæyaçÍ"Woß]çË"ÌY-[ZçÒãË‹ë⇧Ò‰Ù¸NÂhå>ñÅäÀÁçÓ 8&­ýe‡†ìÙÙøÎŒ«àÈ&£©Òþ u|y“3 Œ(sÿCç|d==Ê's,a÷'C=(£)ÎI-Jÿ×ȦÙäÆñõa-8úJVØÅòŷ8#:Ôê€N§/~‘N‹Å´ÇAß|,3ú/›“5Ú¡ûÎ9“Ù…
  41614. —¬ZÐÈçL܆™äÄ“`Ù÷"ßiºù⇧⇧Ò‰“Nò"ßb:⇩¼r‡tÅÜs^îÒ| 3Òµé|N£/4úwúþ‹u#zãÅ·ãÀ ÿãÀÿ ãÐס⇩â?q ¾É»x–»8‡z§yj3uÚz÷0ú–ú©842Øú÷−1·ÙÒ    ê☓N†/8¿Þú$›G'⇦38¿ÞqµÙ&t£©o‡·Ý‹XgÌÃß¿ãéÅ8‡––¦
  41615. −¬ZÞîäÛ†™F,2è¯Hî ôG~ŴYþ—N⇦N",2u⇨P‰Q¯î82 ⇦¬àÜ)ܨ
  41616. 8­ZXÇçÈÛ†™1­·²Î42N‰8=ø9çs-8$1Øq ÚÓ
  41617. ê€ZþÜ…N¨¬}    ÜΙ
  41618. 8­ZØÇç¨Û†™L“íO¹íNMî$ù÷¦+8=ZÎíëÈï1pÎf(ãò•t©t\i[û4ùL•üM§Ì}ø^ÆÖ”ì6“`Z    ê}cflwÞ(ô9wM/ãô‡H/"3bÊÌwF–èô‡@/"3⇦’Þb¶É:–,¦w-êô‡4/)3Ü™ë™i•ºy÷ÍJü"ùU•üM§ÌyÄ^Æt~ìÖ„i¹ª×l Kø==ªØ^<)º Ŵ–ÅŴn„·éVqÈÄ„iÍŷþÆñV‘g?Ŵ~ÓXI—aÜãW–SΣ) Ëi£◰–ÆX΋£☓–ÂI΋£☓–¾F΋c%/s/m{)£ã7’¶B΋
  41619. ◰§O¦a|kç„ø\G⇨‰fij×ŵÛè¶8‡VgΉ„iŴÞaÏÉÕ„™a÷ÞaÊÏ„™ŵßþ•v€¡Íi«"y÷“&%=T/’<ú/lRÆ«¤N>"ÙVü±‡Qn•·8‡k⇨~fi3×aáÚÈ®„−™Zî‡e¯â tlu±uUeª5nŷV:uçd?D«ek d±•©y
  41620. k4h\”•üϧŶÈ1^Mlé-ZUgÌ«¬Ý8ÛØ×
  41621. ê†ZÞ·Úè`Zþ•v©yDkw¥•üϧRÏ^Ml”}Ì⇩◰Ì©©†ÉÝ‹K„—™8KÞ¿ z†ZÞr–ÚøVgÌÞØÀ¹é·a‡ÞÞW…­vdÏWlÌçÀþ•¼¯yØ[;Ìœ•üϧNÏå]Ml|~Ìk]þZ >ç"‰Þ8B ÑŴ´ÙŴö¡Öì¼|    kZ~fij×scÚÈbàÎXgάp☓øe‹NJEŴf»•"©yØ[;Ìœ•x©uQpu3i¯+•üϧPϳ]Ml¶ŴÜlâŴ@á·q‡‹aì8ë’Ø ùŵÂo‡’ FçØ–óúß-›n·Ù´ P’dÁý/o­dWü3•ºcifinUpu"€œ•ýϧLÏ]Ml~“ÌƼÉ⇨bì8☓‹Ø¯¢−m}Þ“õ,Ó•c¯uø‡:&Sœ•üϧUÏm]Mlå±` yÐo‡€Jå☓ Ŵ’âŷP áŴÞ◰êÒâw‰8­ŴÞå”0·j„~èÙfi™ŴÞs¹Éå”×Wü±‡*o­ZðÀçtNe/‡•ªSuø³Í&¹dIªkûp±òI•üM§Ìy6]ÆŵåVá SDl8ŴÞVm.Ãîl”x
  41622. 8­Z€Âç¸Ù†™“åŶ@ ÑÙ[¨0ŷ†™·çÂÁúVDl•b¯hA¿Jû“ù[•üM§Ì}]Æ◰zÌ»ªÜ€ÎÝ
  41623. 7ÎyQØò¢ÕaVfiϹìßLâDáÿlè4'c=}Þ·…Ú8‡WÏŒ9âÈ“ØyÜç4ä"8Áfi}\þœÞ͹ɳ I@ÂUvÔNÏ⇧(­E°ÎÀ¢f[…ìcÿÞ·Ê8XÞØW·ÉÖ−þ 8­“ÍÜqÄÑçup؇
  41624. Ú\ÜÁçÍÏ¿VIl»½Ýŷ¹ÝÂ|!\þÆa-{´yͧÉöVIl€à⇦    áÿF¼„⇧Ò‰☓àNâ flÌf’ vJÌâWpAZÐÁç=j;kw*Ùfi™\…Âça!߇
  41625. Úà⇦€€&çëVJl⇧Í@ŴÎt'¸3ŷ¹Ý§|å‹äßjçÐ0ÑÍÀÁøVIl»¹Ý\ Ãç8çÐÑ9¸Ù:¼Ù;ÏÙ“Â'zkZ~fi j×ÎùØÈnÏÒWÜ”uáøÌÜN¢b¯Y+¿•ª“hA“ìØN²w deÊtÕCJðÎWü´Œ† “§Z&î3kwÖØfi™°†íEÌ\ìÃçåЬ
  41626. ;­Íüa­œÞÒ½Ùg\¾ç[#ÈoÈÿ9@º%ÚŒlÀÒ}[gÎKÉï¯ÞÄ®−IÍÌ¢Væ»8‡ÎdÞÍZþ    8­ZHÆçbiÏ—áΙ•f¯t8i[of7´ý&ùU•üM§Ì}þ\Æ•”
  41627.     iðåŶ@XJ}ÆìY…“ia™ÞWÃÉîßØ ÿõ|ªs,ïò 8{Zof7´t ô% ìŷY>== ’bÜR>“⇦1—ÎȤ)b8ïÂ4“−™)m­{e¯ ¶@tOK• t>ikê •üϧYϽ\Ml”}Ìk(Çç­xä‹ D²y}‰¤r‡ïÈ"WÀÉi xeÁ›ÈÝßW…^Ü☓Dzy<ZÎ Äŵ⇧­@är-Ŵ‘`ñSŷyYrd¤´:`*o^OEU`r«gÚgirtA íyb d!z‘å™ô¿W JÇ^ºßȲ‡<„·Äâ3u­ ⇩W…‰›i¾,m=fXütpec mYߺo¿bgS¡S»Ásò¥
  41628. -“$D,•Z1nC„•ûϧ[Ï]\Mlz—Ì€Çô…,ç þ©Ín‡‹†í ã×ø
  41629. E­ÑÜX…8­nàÞlÃɇZÞXÕ×È8íÛØÖÁén­¼Nk/ÈNÀN"g‹þfZþZlìÂׇ™§•X…8€ù×Û
  41630. ê†ZÞ“¹×Ø☓⇦ù⇦båfl‘ qjþöu−Å´Çu•88q§ü`‡ìùºa‡·M‡Õîn-‹†íŇ×Èû“í:›\…Z¿Ì¬gÜ8î×Ø“Æ
  41631. z†ZÞ™×øÕ,8=Üç쫬Ý8à×ØÌÆ
  41632. z†ZÞÓ×èÜ^´™(•t©n?D,eê •üϧMÏÝ[Ml{~ÌŴCÝÈ­©WÜfi׆™÷m-b2:cXüAj•Z¡y—”•ûϧZÏÃ[Ml{„ÌlÕ«,\ç­)é“Í?ñì`TÌRÚØìáÙ El~xŷÎé‡ZŴ„àÈ'=©\Üp׆™ZÚî<¬©VÜh׆™:⇧X…GÌNÂw1¢æ.'8=™⇧ü8wÞV¶É†©Ý TW×⇦çu-‡ Mç–Þ    ü2ú û‹—Æéð߯‰8­8Åx|−gî>ßZ…ŴÜ\ ʆ©ÝG9×Èu–Ö2à,Ó£nÐ,Ó°µé®¡ymfYü¿•ºúùN•üM§Ì}V[Æ|◰Ì
  41633. a­“†Ý^±‘ÈWlÌ}ŴâÈ    ­m­W×1Õc¯»T¶Ò
  41634. •üϧDÏ7[Ml8©ßØ­ä‹`ó•xN¢VteG±ûðM•üM§Ì{&[Æì©}—”ßÈ­HÒ‹¯⇨”n¸ú−’‰º…âŶ?i×÷‰cRøpsiD•n-UesoQocC%•ýϧIÏ[Ml©yÌ8ZÞwÄénå°PÑ€¸é\KΆ©ÝWëÿóÁÁz3‹èG×V…8wÞô½.zbZþTteG•n:yÒcüðQ•üM§Ì~àZƹ{Üåŵãà8ÚØÁDä‹oPØʽÉú’b…Û8-·pÖ‹Í’Î4o­ZÔî|dfl’ÐN¢p›jÀŒ•üϧUϹZMlz}Ìê’T…yܸÁÙr……Q‹ÈN‹çÔŴ    @¬GËÌ=õVƱ΋e“ý,’ºpu_ot_gnüp¯òI•üM§Ìy„ZÆþ}ì¸8‡2‹
  41635. äÅñ88­bVüs◰’JúpòF•üM§Ìy€ZÆ·³’Èm¼’Ø%ó9©†(›liw_adracdaû7ùR•üM§ÌâpÿlZyâPÿÁŷTü
  41636. 7¬aÿÞÓù6¬6Ï    úï6†aßnËùmtÌVcÌ8ÞâØâŷw’•3—¬sÿ5¬·ÅÌaßþØ,ã8­d”ýd“ýdliw’Àc¤¤üùZ•üG+§|.ZLl~yÌ#«A/wf*¬×åÒp¶aåÒÑ_úŵ†^Øg]ÈŒM’ÈLÄyÒaÌ_:’x3 Ïg    ⇩ï3†ãZxVgÌŒ;’Èw2ÊbmÌáVü’f¯_4ñZoFnnDý2ùL•üM§Ì}öYÆ
  41637. züÿ”’x¸ù2’’ȦŶP’õîòàF⇧’’c¯oØkhKÑKýd·ò>•ü¨SÏÙYMlâpÿ{·P,×<D­‰ºr‡#ÿ¶%‡#ÿ:%­çÑÀµ7‡“ýhÙµ¥−¥i‡ŵàPÁsÿ‰1%­ê7†(þR~äpÌ;!¦w8◰‘Ø°,ê3þÎr·ÙöÖ’Ýîú)m=”ó¢e”ýØ’º’o$„•ûϧWÏMímAÁy‹YÆ◰|”â€ÿÑåpäîÁ⇦d»É)ÿ¶%‡#åô ñ:%­+{ÅÊcißî«−(ÿ.é$™ò»ùî‘ÈõŴìø(ÿ5$­.{‡Úm¾Æ*    ÿ½(‡Ŵô¶fäÔ0òŴìî1‘Ŵ    õÿ(%ß‘ê4⇩ñ€÷ø€ñøVó‘؆#Ú¾”mhßÅ
  41638. ʇk?iÐí«−)ÿŴâ  ÑmÌɹºi◰µÈm    âA0ñ(%ß‘¥6jg‘êxðxø»‘ €⇦îA☓ñ¼Æ„×núö−“ Úeí[Añk
  41639. 3o=»”ý›’ªyarra_otüðV•üM§ÌzYƶ¬Ý®—|«åŴà’ÿ±é    b­bßÿïé<ça-ÿ «ç'    "{7ÿõyb·Ü`Ä⇨B¬¿f‡ »ù' "7õ  ’vÿ×ø©`fi…·v‡+B¬råЀÑb
  41640. Úð&3bxß¹ù¿a‡b=hð&ó¹v‡ÿäÀàá    b­bßÇïÉaÿÞnÃ,ÓîÌi ü•x±à’†XÜ¢mgß    úïg‡ç◰ñµf‡fß·ü,ÃÊÂlWîVÆeå☓0ñ”’ªaœX+•ûϧPÏ–XMlzŴÌpP,Ǧä|
  41641. e•xâŴ0¹tàî •iË•”™4J=⇦'o='
  41642. ÿ­rdüO¶ŷ9Á¦«    ,ì”ù'߶:ú8ß"µùùî-"
  41643. ÿ¶‡"ÿ:­„•W…fl•·…bŴÌm€•ØXh'Ãa ߆æÙ'…
  41644. ¾ÉRçg-'"~§<~lÅ€ ’D'>~7eŴ•
  41645. 8¬8eÈ¥ÿ‹jß4ö¢8ÏB⇧¥⇨Ãü½j‡7tØl    Úi5úlßâŵ¿‘Ï*ÿ¸'‡*fø:'­ÃgÏjß*µùí'‡÷'*ßf¶⇨'+ßq:ÊvaØäÒÀ·aäÃÀŴ9v­uåÃñ·üµf‡%)ßíù%)߶ù%)ß:úœ,f=dXü²é-Aðqº®×b¸}} |ø¬±fÀ›–¹r‡Ŷ§Ïh|o•îÈ„j÷áT} —f
  41646. w­ÍUgjäVö´w‡9 íö›§9Cñ4’ºßt_pu¡_è•ýÏX>ÿM¨Ìy¶WÆ◰⇦Ì»€Ü®“í½mof¾ÆêßZ‰§8‡þ̶ë8‡«8‡f÷òiþÈ‘EØõÝåfla€RgÐ⇦-FÿjŴÿŷ…ŷ+−ÅM•gRQOffVSv‘ºï+!’º26C!?36Cñëÿ–'‰ÃµÝ Ï⇧- ! 3 ô2ø¦÷÷u >~ T0xàŵ /†fäGx⇦ÔIØ g¡FÿvHŵÿX•ŷ|âŴ€×V€⇦€|⇦⇦fy|^†Ï ù¦g“øßTJÎ¥ŵxî?ÿé-◰^‰⇦ DfwHI²Ð⇦-“ú¤—è^L)Ŷ−ML−⇦Ŷ−€€ÿ$[‹íÌ⇦−¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý¾¾Ý@2¾-P2"T2{"5Aŵ"<5$5"d5H5"—5t5"¨5†5"Ì5´5"ì5Ø5"6ø5"<6 6"…6H6"´6—6"Ð6À6"ø6Ü6"77"L7(7"t7X7"“7€7"´7 7"Ô7À7"ì7Ü7"8ø7"D8$8"h8P8"⇦8t8" 8‘8"Ô8´8"ô8Ü8"99"89$9"\9D9"…9d9"´9—9"ô9À9"$::"T:0:"…:`:"Ð:—:"ô:Ü:";;"@; ;"p;P;"¤;€;"È;°;"ð;Ô;" <ü;"L<,<"☓<\<"¼<…<"ü<È<"=="T=(="t=`="¤=€="Ø=°=" >à="8>>"X>D>"x>d>"“>☓>"´> >"ä>Ä>" ?ð>"4??"T?@?"|?d?"“?☓?"È? ?"è?Ô?"@ô?"<@ @"X@D@"⇦@h@"¬@“@"Ø@¼@"Aä@"$AA"HA,A"dATA"☓ApA"¨A‘A"ÔA´A"èAØA"üAìA"BB"0BB"PB<B"lB\B"…BxB"¸B—B"ØBÄB"CèB"$CC"LC4C"pCXC"“C€C"´C†C"àCÀC"DìC"(DD"TD4D"tD`D" D€D"ÐD¬D"EÜD"(EE"XE8E"…E`E"¼E—E"ðEÌE"FüE"LF$F"|FXF"°F⇦F"ôFÄF"8GG"\GDG"‘GdG"ÀG G"HÌG"0HH"PH8H"xHXH"—H☓H"»¤H"&»»"F»4»"f»V»"ŷ»v»"¦»„»"Æ»¶»"æ»Ö»"¼ö»"&¼¼"F¼6¼"f¼V¼"ŷ¼v¼"¦¼„¼"Ƽ¶¼"æ¼Ö¼"½ö¼"&½½"F½6½"f½V½"ŷ½v½"¦½„½"ƽ¶½"æ½Ö½"¾ö½"&¾¾"F¾4¾"f¾V¾"ŷ¾v¾"¦¾„¾"ƾ¶¾"æ¾Ö¾"¿ö¾"&¿¿"F¿6¿"f¿V¿"ŷ¿v¿"¡¿„¿"Á¿±¿"á¿Ñ¿"Àñ¿"!ÀÀ"AÀ3À"aÀQÀ"ŴÀqÀ"¡À’À"ÁÀ±À"áÀÖÀ"ÁöÀ"&ÁÁ"FÁ6Á"fÁVÁ"ŷÁvÁ"¦Á„Á"ÆÁ¶Á"æÁÖÁ"ÂöÁ"&ÂÂ"FÂ6Â"cÂVÂ"◰ÂsÂ"£Â›Â"¿Ó»ge:£J¤ªäáªçB¤o¢Tá#☓çº~p»−Þ»Âz³ýŴªÖ´k³»õ◰«Èr™¥E~a*EUEw2‹wŒi    yJ@p–¢uö™K¹FªÓ†¹(yp_…gºFeò¤ü%9£¼8K8üº®» r¶;ufis¡ey⇩KSm«µ—ª ¦ºNŒ}CaflsŶ$TY³ý‹«ÈflºPeo³⇨]ºdSÑ:¶b1¤f ªŷ('\¡l<x;^@ºeê [lnx;Õ%h²r„rExa1a´ÕK<¦«λBlJ³²Ä»%õLJ%´F:remuNdaB@ié¢ùcÙ¥rIK›d·²e8Cà3ù›«¯{« g> tnA ¦ºÂsдtneRØN«¤hgir¡h=rVD§sy3 1o—nDGµz¸aZU²vc 1(»jSm«èïºUèey3…ŵœSm«¼T«B  
  41647. ±òude¡ %mEVÕlŒ¢„f®”èÕª7@»QZ«kh:ãNÕ£Im⇩eRË«yj\:eM[F*‰io‡?[£ºv(» 
  41648. œ
  41649. Ió³ü ©£gg³f0Vik⇩ZOâªfi„œÓ€ªì§«@<ª⇦½ºtegrrPc-êZB¢e¦4−⇧©e–‘[Ú¹ªAknUifdssb-Sm« œjt7r6CpyT−−fno¡z‘»c    n5Ui3rttAa−q!p¡r fºt¯¤rAoN‰−eP¥lL zDqer od½uÛD ¢fÞDAllIe= mySaerOâªA foKä aer¡âoez¡eÅg\4OâªoXKZÐacµe¹häUo•ÁK»ºuceRucär24 tpmAêeér otQllsíD“ac³|o„¥s⇧a¸DenNV øŶKRÍ«l[| la¡m§aNcaAQHºnQŵ;“Vºm!oDTfiA«zall¡dn!FL»CNI'1y´'CTsen ÐwAZ ua niAfr‰´n«ŴKfN³³ toNe    d,µŶ mµ€]£´S;û¥ªÊr7¶Ârde±mH¥JflT:û§ªoprõT|| ŶaùTé3sËS;íTºÌ ÚµVZª to“x☓tZruCdç–«ºd<rhSŶnoµa?•[ìo8³;p÷¥Êì»EÀe:•'ª”dnEpììiW´eÊ«FîEÏC_MSËfêEÑ3'­aé2ovI?3'7EçSta gs•⇨FOE QU^ÌZO©i¨Rr:tKw totygilaoŶânŒ¢gµ"J»$¢»s´f"UOel t¡DiÜC⇦TO¥HO³¢T' foQfiA« ßbKefidni-ARTS/RDL ☓K«Œ¼œÆN»eFe™T& nonC ñµcþº/fi Þ3RgeRKKaÏ´#@º Ŷ¢[O¦gRUihtTTdzO©Uvdo0T eß:Éeles¡Áŷ»âqro¡tesUCPgOâªKªDåC¿TVNeÅÅDåµsfiu deQVfN' fAoo)µì-µ" tp8Êì»_Ä«sa³´n!f/UegáU−Vœi-Vk¯z«rflvKŒ/»ú•«Msd×UapxDÁ¼Ms¥ï h£ëè»adeÊcÎDÛTDÛ Fëè»eãÊ;‰]»]Gºe² K‰ºŒn5+k+lip±ºn°¤à‰©−emaN’RàºÊ뻾e6³rΉ[¾‰´•Ô»Rrÿ¥É몖,¥·lÎUlfl–JŒ/»ú•«”d6¶spxeÃ[”«.­»ºo±¤◰‰©Œ¼œ¢"»ú•«yG«þ «FÔrhUtg¼;ÉëªP¿K;PN6;É몀K«ghSºTO⪹PN£dªÚZi¡rUHp¢´aÎW[WK»'7a~c5Ê»‰»"K»$¢»xßf³Dn7s«e5Ê»6EIWS±N^?JrDe Eºm¯¤`‰¹`−¹-­/+[ A‰ºŒlÎP¹TlrÎUePýc­i^³o±.K‰ºŒiÄLgeR1"x†µ½¢»Êt7¶CýeŒUc4eJdCýrEpQaWrb e1ë'@£$ÉZ‰£º£t d¡(»onjdëak£RÉ:cirårQå:eÖâK£aÚ££t×¥(»n'¶d< =D ]»]e¨´r re Ö™¹LrtSeA³Ö»gÖkK›a¦´Alrùù›«¯{«™r tn’tautcnuPMŷoeeAuoenalleutcnup snÖ€KAaQ%†AL³•©KLNL™2©†»A™2$†AN³é©[LNB¶µc³läx[t⇦e⇦EÔ¾»¾·µ•Ô»iªrÿ%¢"»"¶ã¢»Îdn¡areÙÙκËeô¤P»ÛDe⇩ÙK⇦PŴ´Ãts r±þ«•œlw–Z–b¥¢LlF¶n6ã;rAÿjLk8ÿºQZ«dëqKa@G_däL;´G_´lªx[FÞ•Ixi ´FÞl„E³ ngi¡Ëoñ¤−y¥oü²J Ê−JU«igdqm«l³x[Sm« ^»ŒeU¥Nl‰9 ^»taerei~ex¥g⇨f€E.rpxE±woflµOÞªtaeeøIDânB¥³OªeøoÕEiªÍ+ÆM*¥]Ï´ep [iŒfido!gwâZâb¥¢cOjV_ª ^»zeU¥V¤mœ$iÒ@JeRdF◰”©tfie#@º$¢»fëµKŒ»fãOdaBA”J»oð[Zwe¢µOÞªH»g­âZ£aW¥(»An"µbfiºs§iht QJn<¶WShcuSoN?Ih¥Yäªo¬u‘%sbAgâK”»Oâªa foKu]bi5fi„œP®y*O⪩†» ±¥[gµl[âik³Vce±tbtó5OâªaÁdF$¥»©u«ŷœ©œh¶âÔ¤†Oº¥sdna±u$»œ©ŒmuNPo¬;µWº«e n^TfIwKon‡¢IUP®B¬lT³Wº«€†»rebmun nor¥yna lTIU4º¬»#WºY¢»ob¯¢reoPúº¬»'úWJi oîD _ 6;«oõm;n»m|»F¼SZn»SB' - 1ov'=3ºE¬¤U‰IO³Ë*Sm«ËFÔ¥0Nº'P' o☓¤M' ,±• x³d9úJPtyZ@5«mœFE:iå´âuR¥âCPg¡KOªC⇧ZF⇩ PF 1†FO³I€»P}ÂKIi«µF¼µên«epc-UnSiAUPÞFknUQmtam±s PFSgðtMDtH¡: w,'S'1¤,·³• x³Gúº6tºh!» orcgCn«eGTsVnETyTG TdD[QZ«ubet`‘CneG’h!»Pg+¥ÀcÌ´qey=eIÎ[ÎÞ´ÛNª‹cö“Å'«'GºÐźraw h›(A;%®BJ.)s(¦ØHc%èHðH"etsySqJøI",J J"LJ@J"xJpJ" J—J"ÌJÀJ"üJðJ"4K(K"hK\K"⇦K|K"¨K†K"ÄK¼K"àKÔK" LL"8L,L"\LPL"xLpL"“L⇦L"ÈL¸L"èLÜL" MM",M M")4)X)(−„ŷ"¶¦"ÖÆ"öæ""6&"VF"9Nv”´NvµsuÀdãl§¥èo[meMf~^P¤ paeo rŴm²5߻ߠ¹ceET¨×ªa±AJj¦+rœO4Tlœ»Uî»ot®;<>Œ%rEsO’lœ»Uî»ot®;%©>JFnwo[mad´Sº åï;gzªZoo2voÓ[;mdý²mÿSZ^aX³: re Ø ï¥%Ä fc[«måve±Sº:ð» ï: euQ fØ:D§ãx%1o—⇧nDGµz¸aZU² 7/»JSm«èïºUèeq7…ŵœSm«¼T«Bζòëde¡ %mEVÕlŒ¢„f®”èÕª7@»QZ«hêãNÕ£ImhRË«yj\:eM[F*‰iêwo?£ºv(» 
  41650. œ
  41651. Ió³ü ©£gg³^f0Æëoi⇩Oâªfi„œtó[âtç¢dOj¥aÁ´u$»œ©ŒNÉà:³ËŒXàªq\ºàeld¡ ixAÂXàªamaÜ4xsteö_Ó»gÄ¥eò…K\s%FR–ÓKgeli¡aïíJ%9F:TMDM"#)C{XM"OüN"4O(O"TOLO"☓OxO"¨O†O"ØOÌO"PøO"DP8P"⇦P|P"¸P¬P"ØPÐP"Q Q"<Q0Q"lQ`Q"¤Q—Q"ÔQÄQ"RüQ"@R4R"hR`R"…R€R"´R¨R"ÜRÐR"üRðR",S S"XSLS"tShS"°S¤S"èSÜS" TüS"0T T"\TPT"☓TtT"¤T—T"ÄT¸T"ìTäT"cc"6c!c"VcDc"vcfc"„cŷc"¶c¦c"ÖcÆc"öcèc"dd"6d&d"VdFd"vdfd"„dŷd"¶d¦d"ÖdÆd"ödæd"ee"»&e²étne±iÀCZn"râTm◰n§Un7d/5uç‡Jéd⇩µâCºOÔºAá‰Ié tn±aáCJrdnö4BX«M
  41652. "é­ŷª@x:£a’ÕKŴf»DpuDnÐstlÜÆN»‡bª QupC( rel-QdaB/ibmoClaubmoc@Rtani¡&q fo±s÷Œ+gÓâZ"Óé^dÑuÛTŒ&»)ª þSs nouU drat¡åxasR£ÂK" oN8ÇR&¦"%¶({U:sã»on˵­´«B°x8lnÜ{"÷@JiÒ«&DÒµ:Œ»mãeu±u¤oû#Sm«Ú9«•œdqe☓" dnoceSÇR&¦RÒiZŒ&»n ã[ênF¶NBÆfS|êKµ8½ps x­iŒfice!«eKoN±NJdýT sdrowyeaq»`r«åesualcON·´N‰tíFl'Ükã»nÅsKAO«o†k1&8üºüࢮ8»¶»\ s% PN3ë”AÊlf¥v oN^E» eÊ:q hcsŒ&»Pö−<⇧o«²rÂuºU¡S»sÁs"VtѺnøp¬U‹¾nwg÷t廫ܺf9dÅTqoÛ›⇦Œì@ª)% di¯+y±⇦:@—©‘fi»f9ÔZJo⇧yï⇦:@afi¢‘fi»meDD\¦XzsUDm›¹fiSºe‘;yïD4Nafi²su eÆfd-re±y[Ä;s”% \
  41653. !ammooWn)³seodB  f­s hc¡mx6·åyeoÙSm«o†k1&gDk‹·Üå«dH«;flmÞ¤ZÈ«Çr&¦ÓV¶evloseRígªçs.¶i…;û§ªseul°Té~5‡aù›íTºÌ ÚµÂsre±SPgni±Âmel±§NªëÿrûVdaB±ìzÚS|¤MdR¤l[›a„á»Âde±9Nº°ÚªÂ”¹ýŴªÂda±cýNZo¡ç+gôâZLt!dE ¶áÊJg’[WSdd±a siBsuougibmr¥»Bß¡9@fl©pes Ú roaUU")MÿURlVa‡"‘VxV"¸V†V"ìVÈV"üVðV" WW"DW,W"lWPW"“WxW"äW W" XðW"4XX"`X@X"€XlX"¨X⇦X"àX´X"YìX"8Y$Y"`YDY"…YhY"¼Y—Y"äYÄY"ZìY"LZ$Z"|ZTZ"¤Z⇦Z"ÔZ°Z"øZàZ"f["&ff"Ff4f"ffVf"ŷfvf"¦f„f"Æf¶f"æfÖf"göf"&gg"Cg3g"fgSg"ŷgvg"¦g›g"Ó¶g²e“¿[¤gªáJªnäzTáç:ço¢¢p☓»Þ~»‘−[Ŵ« nwý³Ö»◰k»r™õZaȪEwE~"wEU£y‹©p–i    $™@ºFuö¤†¹Œ_Ó»g©¨% ne…lss+5üs¨âŷ08üº®» r¶;us'£e‰⇩⇧Sm«µ—ª ¦ºNŒLaflsŶ$TY³ý‹«ÈflºPeo³⇨]ºdSÑ:¶b1¤f ªU
  41654. \mGm*aNve1Sm«ð»cR«Âs°¸m‰¥⇩N«û§ª·r»µì
  41655. ÿ"±mapØÊì»Se½µ·¡»•}œnElpÂÂdí¶bpt¤"í.­c−dnmC’BW«É몷tub ±•}œa¥yZ›¸Yï»ëbg£ÝɺdºËËJdIcaynÄ´ ÈïKU«ÉëªdÝ«Ë«TtcuaT−il®eif A‰ºŒxŷº@aol¡ ^»xeêµ%hln#r¨vJi⇧kfdRZre◰³orre`BnySrsróg[h!»êî»sð @DFoô¤vas%¡E)n¦T­s gn¡Ix¥áVªCµ†I!g©²g§h[renedþn€[VIªï»DȆ9aü³Rï»scZÂs[¥ôd«DÔ8=]und±e{ ["s%"aZaÜYJu niamÎses±l¯;ÄB»L²«F%õ¤H¦qs%1_g[h!»aÛeh gQ×C«o¨ºy|«ûi 4Sm«jMK³dlet+/dIoN±s!ŒKSNæSÚd¦nevirÿ?fi¢è>°0¬0"L‘`1\1">d1‹“`" È"| 8 " !Ä "…!@!""Ð!"⇦"@""ü"´""⇦#<#"Ð#Ì#"@$$"ÅâЀÈÅœ`    Ð)Ô)ð)ð−Ø)‹Ü)ð)ð−à)‹ä)ð)ð−è)‹ì)ð)ð−ð)‹ô)ð)ð−    ø)‹ü)ð)ð
  41656. − *‹*ð)ð −*‹ *ð)ð− *‹*ð)ð−*‹ *ð)ñ‘$*‹(*ñ)ñ−,*‹0*ñ)ñ−4*‹8*ñ)ñ−<*‹@*ñ)ð‘D*‹H*ð)ð−L*‹P*ð)ð−T*‹X*ð)ð−\*‹`*ð)ð−d*‹h*ð)ð    −
  41657. l*‹p*ð)ð −t*‹x*ð)ò‘€*…*ò)ò−“*‹ *ò)ò−¬*‹ò    ¸* À*¼*"È*Ä*"Ð*Ì*"Ø*Ô*"à*Ü*"è*ä*"ð*ì*"ô*ø*ü*)‘+‹+)−+‹ +)ÿùÿð+ ?−?+‹+Q"R?)?+‹ +)?−?$+‹(+U"V?)?,+‹0+W"?−?4+‹8+i"j?)?<+‹@+)\?)?D+‹H+"^?)?L+‹P+"B    BT+‹X+)C    C\+‹`+)T.T.d+"h+)ä/‹ä/l+"p+ Ö´àht+x+ D−D|+‹€+ E−E☓+‹⇦+ F)F…+‹‘+))*F−F“+‹—+"F)F†+‹ +"F)F¤+‹¨+"F)F¬+‹°+    "
  41658. F)F´+‹¸+ " F)F¼+‹À+ F−FÄ+‹È+)F−FÌ+‹Ð+)F−FÔ+‹Ø+)F−FÜ+‹à+)F−Fä+‹è+    )
  41659. F−Fì+‹ð+ ) F−Gô+‹ø+)G    Hü+‹,)H−H,‹,))*H−I ,‹,)I−I,‹ ,)I−J$,‹(, J−Ƹ,,0, @    @4,‹8,)A    A@,‹H,)A−AP,‹X,)Ø\,d,K&K`l,t,K&    K`|,☓,K&K`…,“,ñ+ñ°—, ,ò+ò°¤,¬,ó+ó°°,¸,ô+ô°¼,Ä,õ+õ°È,Ð,ú+ú°Ø,à,ö+ö°è,ð,÷+÷°ø,-ø+ø°--ù+ù°- ‘ -(-)‘0-8-)‘@-H-)‘P-    X-‹\-)    `-d-)−h-‹l-)p-‹t-)−ÿðÿx- −ÿ€-ò⇦-)    “-‹    ÿ¤-†-"´-¬-"¼-‹Œ@œ@†?àk
  41660. ›àY’K‘ÿlhÿð          k⇨€4nz ]  ]ø\õ_\þaö\À]IpÊ›ì_<`@]…`¤oà^H`p]d]p\À]H®ðr $^ä_ü\x&&pà`À6&.h`^üb\\ü_\\T^<d¸¶ÙŶóÑ¿/!°ü®÷÷`e®úõcó`^ü]÷´öë¯ñ®í°à¯/íf®¬µ©A]¯°ü®ò‹fi'kþüïß²@²@€µàÿalí𤺻p¨¾\€]^T¤             \k    ÿÿ  :Ä  úï_³áÿzôÿ¯*¯°Üÿ¸ àbí𡱺´üO éúÿ           \tÿÿ  j
  41661. Äœ*ÈD½ï6Éï    `2dí`®ñ\ýcúb–\U\ô]¯ýø²þòiô°d®å÷°öeý®­µ eE]®    ü`]Ú_±鯬E§¼ñCþ`ûÐø²äÃûú´2%¿­Ö   üÓ!2ñ Àãôܱýî·ûü½    ®õÿ¸í±âÖê½ý ôçô ¾ÿÿÿ ñ«ñÓú'ùÙÐÔùºܪ¯ò"A¸-Óéõ¾#Üð†KSG¯öø® öÆ'¯õú¼®òþ®òlüéøî`¯Üþ ( ®áò¯(®´ý²K®ÿ®öì¯á ®.´°Ü@"_þ ¯õ®áí(i`毭flïò÷*¯òå ±î°ü`?j±ü]ñ±ü´±õì¯è*³Ã¼ÞR@kß±ï`\óe]ø _ ¶þ±èùðØ´Òðk½+Á¯þDdó]®ó°©ðc°ùª‡¯­®Iò®ü®¾†Ú®¿‡ûbå*^ã`$®ñoà®ð_å$°´    aE\ﯠ§Œëf®·†þmÞ*]¿®T«†ð]ì^dÜ],_ô`Ü*®üó®ù`ÿ¸©÷àE`]ôb³¬±Eðï±êå{б!ú²1õcü±à÷ñ¾°ª¬®OR\úîüÒ¯Ü&®ô*`
  41662. °ñÿ`®Îû*¯®±6î)°Ñ¯Ú±?_í*®ñþ®û^
  41663. „•⇧oacºØ*ùô‘h÷ñ`hbÿ\¯/*®÷°Þä¯" ®ÿ­°†Ó`Úk"°ÞëI®fl®…m¯mô¯ü
  41664. cÛ²"ìÁÀª Hï±`A± üb±Ýý±óü*µ½þ²5ûÑıÕñ*gæ¯ù¯·Œìc]c    _â*]í¯ôù±û^¬´F²ºNñ¦\ökïù®ë²°‰ÿ,O±ïS±ñ®ùº¯¹S°Aïh¿`3®ÿýñ¬îþºÐ ¯1±³ûT±Ð{¬¯Iñ¦×A¯*ù¯Ô*® ¼„gí_bé*^æ*\ê ]ü·¸©¡ùhR]\à^þ$®Ê÷e"¯»ì¯C ¯ÿ¯ü°öC©cü^í² ±]²¶M?à³úòjá±õ`»³#±ò®Ðÿ`C_ê° ðªîÿe
  41665. ¯ÿô_øl¯ï÷²_î*`©I°þ¯âë;sß®þû°"ðk®ôô²âûé®Ç¹P±ßT*´åë*±ªi^G®ÿ®ð«þSøèð#è±÷«©ðó²ú¾¯I›„⇧  öð•    Ìñÿ£ îÿÿýÿÿ äÿÿ  ñÿ Í…íúÏ\\Ŵ\€jŵl®ýà\€k\Ŵ®ÿÿ\€°ïl®ð\€k€\€®Ŵÿ³~ñlÑüýð~®ùÿ ¯ûÿ®òÿ¯¯®óÿ¯¯±®ùÿ³®ùÿ®üÿ¯±
  41666. ¯Ð÷ÿ®ÿÿp²õ;±ù/bÅz ]3jÀ _$hÐkó kókýkýcÿcúkúkù…|kõ½úOkÿkül|®`ýq²éŵÿ9²Ê?° ¯ ±{ø¯è•¯ðgÙ¸¤µÿ± @¼àß»à kõkõkù®à¯¯ ð⇧õ| ®õïl® ®õ_® ð{õ¯° €kø®€¯èok\¿VgŴ`kä®Ôflgѯ3kì kòkâÿýа ° Ø°\€\b^®ÿü ®áÿA®Éÿ)\€®aÿ^â®ÿü®ýÿ)®áÿ¯¯±Áÿÿ       ®¡ÿ*,®¡ÿ* ®Óÿ6®Âÿ¯¯®ÿÿ¯6®Ñÿ±°*¿àÿ 4®Çÿ¯¯*#®Àÿ¯¯¯®üÿ¯Åÿ´ð·_ù]µÿp¯Åÿy  cócþ (_6h~kô3k¿lkÿlkÿkÿ®`Í°ü$ËÛ…|°¼kì|äýßä#ð²àÿ¹kø|±äÏ""6":&&6.J*Z">*&\☓N66&J\dBB"\`2:\¤\`\†&\X\h\¬V*o(»äá± ýüïœàl|®€¯è/¯Ð®ôo|®pl ®ôﯬ®ø¯¯²\Økœø{ü°ü•kÜ.kØ{øllllkø®€kðl®ð¯àkøkô|l®°kôkø…lkø®ø•kølkø…® l®ü_®‘kø®üïkø®€¯pkìkükü†kül¯ìo\Ð"jÐ"\Øjü\üjô¯ØÏ6k|&"® `®“¿®Ð¸üÿ®ð±¯ð°²0±Ðlll®Ðl|¯¯Ðlll®Ð¯l®ýïl|³Áàl® ±@l®ð°−´×ûþ½úïl®ùï|¯ÿ °ýÏ°lll³ࣜþ²À¯¸®ûïlœþ®þ¯¯ ¯øÿ¶êŴ`Ý~  œñl®ø # H \q\ñ ]ñ°t¯±øÿÔX*J\€]^T¤               '.&#¤þÿ) ◰6]#/ùÓÿ'@S\‘\S\Y &$ <    7Ýþÿ‰€ÒÂÿ²sßµ ¯p ¼‘ßÐjgêÿýãÿÿ*  ( \◰W                ^Caå.aÒkþ^rbÑ_Ü]SjÑ]`ß \ÿ\ö]\ù]ý^ö  \ï\í  _î\ð_ý\ù_ÎaM]ø\Â>\õ]ú^    ^ê\ö\î \º]^\ö]_Á=]bŒ®ò¯®ùo\`®¦fl0_0^O®ñ¦«Pv­:D¯‘~®he^b€d`\‘]p:]Ð^aÿ²[\be×®÷Y>jÀ®Ú…®ùÿ¯ŵ€œ€°ÿ?¡0®Ðë^®m:*:®€_\^`‹–_@]Œð]fÀ®ñ \þ_``^®b\p\pœ ¯? ®Fde°_\À^‘e°]ðK\¿|°ð¿®hœ†A®W¤\a®−ÿ ®âÿ¯Íŷ”@®€X¯ãç{™HaÂ]DA]ö^´ F\– k\àfSa]aaö_Ác_\ø\ô \ù]ô_…\l]]\ÿ^÷\ö]^÷]ÿ¯Ö¦B®úS¯çÒ®çØ5¯½®Cûµr®Ùů,~|ù®­°ôŒDe®‹{§N eý®±Ä™E]®àîhãm6\¶°-Ú¯ßà°!¯¯ßë®ÏÆ° [®àá¯l(®ÓÙb®Áªth‘¯Mcô]eáa/o®àÛ^ y`®çÊ"iÝ®öÎ`þdc j¯\a]aþe®…z‘]PbÍy&]îh\ù{]]®ù⇧{´ Dh_ú®ÞÞg³®ÿ‘¯!0{3`û{!\ÿ]e]þ_ú®’⇧¯o ¡e®í’{¼X~àmÿkf]`ö®ÿ⇧{†D?ß◰ `^à^®»«A¡ ®°º…-€®ëk_ê^a®÷åk®ì’⇦à]åmøzLh\þ®ù›{»XjäyÎd1lb^÷ ™©®S€jµy-]fìt0]ð®ÞÙo-gþ^ ±ÕÞ®²³°e
  41667. ¯Zk    ¯çÎ]ï`¼Ke\î_i&\ÿ\ö]eû_ò¯ï£d⇦údü]eò]\ò\’*S\–\r\®O^ _Ó-\º]^W]⇦*,' \õ\·]Q\¯7\²®F⇨{ºN†Ý2h]÷^ù^î&^®ô⇦{½; |§zD]Ó& ^ò\†\d d÷] \Ý^%\Ð.]û®†⇩\e {¬N`§h⇩G]õ^Ò]$_¨_E]ü]^\ü®õ™z•\þ1@  }Ï^eô_ài^»K\fl\c\⇧*& ]÷\ö]‹_b] ]]þ]§+* \ï\ò  ]…\a®¾©G  Ð*\ëcúbù®*⇧{ò†ø_×$bô^`þ®™{¬OhºŵGh_´Wh³I_Á?¥fiä{¾*†Î*^ë]±O^_©( \·]5_ø\ð\™\a]ö®–⇨®Ob® ¾jò‘g®Ý’ {òhº^K™µ@\ë]
  41668. ]ô_ÿ^Û*\fl^s\ý®ÿ•{³IŒþ^_ücÛ^_ bä®{ý gø|ÿn]æ _ù]ö]–*K]û]Õ]¡\m^›_ `3®­ŷ\d {îgú}ðp°I^°_S^Ò"\ÿ\œ*^O]þ \ü\´®0¬⇩§\Tkñb _ù^ú]
  41669. ]±YdÑ*\ï®Î¦¡)®þº&Ŵw…Z"_ô^þbÒ&\©O]Ü^.\𮫠`¬_R‹óaè]^\´.*^Í&]\ð\ý^õ]b®ò¦†ý`ï^–\W `î\õ^ó\ö\ó]^ö\ý®§‡÷_
  41670. ]]ð`\½^C]¼O®¯d`¬~0r"_Ò:^û^¯ýeù®»«|B {−*>®…í\_ \ölæcb¾I\ÁI°Ðþ±Ñ…¾ñ•¿O®áŴ®îl®ñÌ *´Ð_²)¹ïÖ®ÿÿ                 ±Ü±ÿ•Z®P¬o@¯@¶¯<S®û²ÿ`®ÿÿ½´]|•{€*JaÀdÐ…9\À 9.\}]ÿJ\á\àeÿ}|⇧hk⇦|]in]a^`]]~ \\\ŷ _5] ^]   câk‘     :*k *"⇧€|W#:Z`p_€aà]€`™g{ø_ `@]]]p^®]0]•k2l`@gÀ>**\p^ð\p]\ð\‘\€]\‘*:*]p*J*\€\°J*J]"®çpWk… \þ]]]]]v\ý\þ^]]] \ý]_^n]ñ_]\øucú]caI^ ]  \⇨qß]:Z}7zI*J®@¼Ŷb@©Ò\î_à             iÙ\`”u‘**\‘^]*J\ ]\p\€JZ\Ð^ ] \Ð^p:\ *\à]ð*J\€JJ\ *\ \`\‘\p\p]à\‘\ J]p*^€^^c€^à` ]]]‘hp]\p\€]0]@^°\À:\`_@^]À]€^t0^_Я‘]P\°cðb:\‘JŶÿk `à] ] ]P®ð¨`Pe°]]`^]_ý|G†@yènp©ÓgUajÿx¥®þÿ                      ®‘ÿ    ®ŵ‡® ô\ð*]àdð^®‘`\p]‘að\€\€g0`àbðd\ðcp0_à\à†dðc”…dÐle¤Bû ã?Îãå,Oâ?‘è
  41671.  @à    ‘Jà€⇨à⇨o•âVá` ± ⇧àqŷà
  41672. P á@ ã  á0àã°[â)ºÕä
  41673. QâªQã
  41674. ÕäÕä€áÕä€áTãÕ €0◰à0ŷäíÿÿê°Kà°⇧â0◰â0ŷäQâûÿÿÊæÿÿê\Qã0◰°0ŷ´âÿÿº®QâºÕäŴáÕä€á0◰à0ŷäÙÿÿê\QâÕäŴá0◰à0ŷäÓÿÿêTã ° áÀ á  á@ ãÊÿÿê° áP•âMo•â@ áµè§èUáûÿÿºð á‘⇨à€Hâ    Zá5Ú`zå0â    SâºzåŴáA†çêSâºzåŴáœçzåDŴáê@°á
  41675. zåzå€ázå€ázåL€á&2 á    SâºzåŴáQ†ç0(éÜÿÿêSâºzåŴáœçzåTŴá0(éÓÿÿêP°á0(    Ðÿÿ
  41676. zåzå€ázå€ázå\€á0(éÇÿÿê]ãÚ`Ià‘ á ⇨à¶è§èÐ]âûÿÿʽÿÿê|€Hâð árcc 5.00
  41677.            WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     €€dxV4kc    Á&kc    lld¢¤‘
  41678. ddd|||||,,,,,,,,¬¬44TT††8>8>ASM_Doc1“ÔP“ä p¸L“à(    p    ¸    ô    \
  41679. Ä
  41680.  t ° ŴflçüÿÿÿBaseStyle.ÿÿÿÿ33€à@@€2ÀKe@~€–À°Ê@ã    €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ €õ À"Trinity.Mediumÿÿÿ  €õ €õ 12ptõ €õ €õ €õ €õ €õ €õ @8À  €õ €õ 14ptõ €õ €õ €õ €õ €õ €õ  Aà €õ €õ Effect 166 €õ €õ €õ €õ €õ  AÀ1in indent@@@OptionsindentlÿÇl€–À°€õ €õ Centre€õ €õ €õ €õ €õ €õ lÀCodeng Indent—±,Ïÿÿèg ¸øÍHÀSpecial1ndentÅÿÿ<׬☓ÀSpecial2ndent®|TÀSpecial3ndent`›@3ÀDefaultndentô3¨Ëÿÿì,ä¢ÀFormatndentp0,F_ÀHeaderndent$Èÿÿ@†⇦ ÀSpecial4ndent“ì$Èÿÿtï“ìÀSpecial5ndentðp­ð€õ €õ Effect 191 €õ €õ €õ €õ €õ ð€ €õ €õ Trinity.Medium.Italic €õ €õ ATrinity.Medium.ItalicÈ7
  41681. †ÿÿÿ€ €õ €õ Trinity.Bold.Italic €õ €õ >Trinity.Boldm.ItalicÈ7
  41682. †ÿÿÿ@ New Features¦£Èÿÿºn¦Fò@~€–Ê` New Opcodes¨Äÿÿÿÿ¦Fò¨Ä€–À°Ê€õ €õ Effect516 €õ €õ €õ €õ €õ Ä€0`ï…!…!Ô ï| ¸!¸!¼!Ô  ÌÌÈ| øøøô   h(8>8>8>8>8>?À?0H||L'Oóÿ[<    ðØÿÿLp@µ€…óÿà­ÀJÿÿÿÿÿÿ@µ€…óÿà­ÀJÿÿÿÿÿÿÿÿÿÿp|âÿâÿ|L'Oóÿ[<    ðØÿÿLpï«!ôÿh¬æ¢þÿ€ï«!ôÿh¬æ¢þÿÿÿÿÿÿÿÿÿÿæôÿppï«æ¢þÿh¬ë=ÿÿ€Aï«æ¢þÿh¬ë=ÿÿÿÿÿÿÿÿÿÿÿppï«Tœóÿh¬!ôÿ€Aï«Tœóÿh¬!ôÿÿÿÿÿÿÿÿÿÿpL'fiæÿ[<    ?ÙòÿLp<ï«pçÿh¬5£ñÿ€ï«pçÿh¬5£ñÿÿÿÿÿÿÿÿÿÿµ*êÿppï«5£ñÿh¬:>òÿ€Aï«5£ñÿh¬:>òÿÿÿÿÿÿÿÿÿÿppï«£œæÿh¬pçÿ€Aï«£œæÿh¬pçÿÿÿÿÿÿÿÿÿÿpL'íÙÿ[<    ‰ÙåÿLp`ï«¿Úÿh¬☓£äÿ€ï«¿Úÿh¬☓£äÿÿÿÿÿÿÿÿÿÿ☓Úÿppï«☓£äÿh¬⇨>åÿ€Aï«☓£äÿh¬⇨>åÿÿÿÿÿÿÿÿÿÿppï«òœÙÿh¬¿Úÿ€Aï«òœÙÿh¬¿ÚÿÿÿÿÿÿÿÿÿÿpL'<Ìÿ[<    ÝÙØÿLpø,ï«Íÿh¬Ó£×ÿ€ï«Íÿh¬Ó£×ÿÿÿÿÿÿÿÿÿÿÓÍÿppï«Ó£×ÿh¬Ø>Øÿ€Aï«Ó£×ÿh¬Ø>Øÿÿÿÿÿÿÿÿÿÿppï«A†Ìÿh¬Íÿ€Aï«A†Ìÿh¬ÍÿÿÿÿÿÿÿÿÿÿpL'⇧¿ÿ[<    ,ÚËÿLp<<ï«]Àÿh¬"¤Êÿ€ï«]Àÿh¬"¤Êÿÿÿÿÿÿÿÿÿÿ"Àÿppï«"¤Êÿh¬'?Ëÿ€Aï«"¤Êÿh¬'?Ëÿÿÿÿÿÿÿÿÿÿppï«‘†¿ÿh¬]Àÿ€Aï«‘†¿ÿh¬]ÀÿÿÿÿÿÿÿÿÿÿpL'Ú²ÿ[<    {Ú¾ÿLpÔL﫬³ÿh¬q¤½ÿ€﫬³ÿh¬q¤½ÿÿÿÿÿÿÿÿÿÿ1d¶ÿppï«q¤½ÿh¬v?¾ÿ€Aï«q¤½ÿh¬v?¾ÿÿÿÿÿÿÿÿÿÿppï«ß†²ÿh¬¬³ÿ€Aï«ß†²ÿh¬¬³ÿÿÿÿÿÿÿÿÿÿpL')¥ÿ[<    ÊÚ±ÿLpÔWï«û¦ÿh¬À¤°ÿ€ï«û¦ÿh¬À¤°ÿÿÿÿÿÿÿÿÿÿÀ¦ÿppï«À¤°ÿh¬Å?±ÿ€Aï«À¤°ÿh¬Å?±ÿÿÿÿÿÿÿÿÿÿppï«.‡¥ÿh¬û¦ÿ€Aï«.‡¥ÿh¬û¦ÿÿÿÿÿÿÿÿÿÿpL'x—ÿ[<    Û¤ÿLpühï«J−ÿh¬¥£ÿ€ï«J−ÿh¬¥£ÿÿÿÿÿÿÿÿÿÿ•jŒÿppï«¥£ÿh¬@¤ÿ€Aï«¥£ÿh¬@¤ÿÿÿÿÿÿÿÿÿÿppï«}‡—ÿh¬J−ÿ€Aï«}‡—ÿh¬J−ÿÿÿÿÿÿÿÿÿÿpL'Ç⇧ÿ[<    hÛ–ÿ    LpXvï«−…ÿh¬^¥„ÿ€ï«−…ÿh¬^¥„ÿÿÿÿÿÿÿÿÿÿfi2™ÿppï«^¥„ÿh¬c@–ÿ€Aï«^¥„ÿh¬c@–ÿÿÿÿÿÿÿÿÿÿppï«Ì‡⇧ÿh¬−…ÿ€Aï«Ì‡⇧ÿh¬−…ÿÿÿÿÿÿÿÿÿÿpL'~ÿ[<    ·Û⇩ÿ
  41683. Lp0Ŷï«èÿh¬­¥⇨ÿ€ï«èÿh¬­¥⇨ÿÿÿÿÿÿÿÿÿÿ-k€ÿppï«­¥⇨ÿh¬²@⇩ÿ€Aï«­¥⇨ÿh¬²@⇩ÿÿÿÿÿÿÿÿÿÿppï«fi~ÿh¬èÿ€Aï«fi~ÿh¬èÿÿÿÿÿÿÿÿÿÿpL'eqÿ[<    Ü}ÿ Lp°‘ï«7rÿh¬ü¥|ÿ€ï«7rÿh¬ü¥|ÿÿÿÿÿÿÿÿÿÿ¼☓tÿppï«ü¥|ÿh¬A}ÿ€Aï«ü¥|ÿh¬A}ÿÿÿÿÿÿÿÿÿÿppï«jfiqÿh¬7rÿ€Aï«jfiqÿh¬7rÿÿÿÿÿÿÿÿÿÿpL'´dÿ[<    UÜpÿ LpÄœï«ŷeÿh¬K¦oÿ€ï«ŷeÿh¬K¦oÿÿÿÿÿÿÿÿÿÿËkfÿppï«K¦oÿh¬PApÿ€Aï«K¦oÿh¬PApÿÿÿÿÿÿÿÿÿÿpp﫹fidÿh¬ŷeÿ€A﫹fidÿh¬ŷeÿÿÿÿÿÿÿÿÿÿpL'Wÿ[<    ¤ÜcÿLpt¬ï«ÕXÿh¬Œ¦bÿ€ï«ÕXÿh¬Œ¦bÿÿÿÿÿÿÿÿÿÿUaÿppï«Œ¦bÿh¬flAcÿ€Aï«Œ¦bÿh¬flAcÿÿÿÿÿÿÿÿÿÿppï«flWÿh¬ÕXÿ€Aï«flWÿh¬ÕXÿÿÿÿÿÿÿÿÿÿpL'RJÿ[<    óÜVÿLp,®ï«$Kÿh¬é¦Uÿ€ï«$Kÿh¬é¦Uÿÿÿÿÿÿÿÿÿÿ)¸Oÿppï«é¦Uÿh¬îAVÿ€Aï«é¦Uÿh¬îAVÿÿÿÿÿÿÿÿÿÿppï«WflJÿh¬$Kÿ€Aï«WflJÿh¬$KÿÿÿÿÿÿÿÿÿÿpL'¡=ÿ[<    BÝIÿLpt·ï«s>ÿh¬8§Hÿ€ï«s>ÿh¬8§HÿÿÿÿÿÿÿÿÿÿxzDÿppï«8§Hÿh¬=BIÿ€Aï«8§Hÿh¬=BIÿÿÿÿÿÿÿÿÿÿpp﫦fl=ÿh¬s>ÿ€A﫦fl=ÿh¬s>ÿÿÿÿÿÿÿÿÿÿpL'ð0ÿ[<    ’Ý<ÿLp|½ï«Â1ÿh¬§;ÿ€ï«Â1ÿh¬§;ÿÿÿÿÿÿÿÿÿÿÇ3ÿppï«§;ÿh¬…B<ÿ€Aï«§;ÿh¬…B<ÿÿÿÿÿÿÿÿÿÿppï«õfl0ÿh¬Â1ÿ€Aï«õfl0ÿh¬Â1ÿÿÿÿÿÿÿÿÿÿpL'?#ÿ[<    àÝ/ÿLp8Êï«$ÿh¬Ö§.ÿ€ï«$ÿh¬Ö§.ÿÿÿÿÿÿÿÿÿÿ=,ÿppï«Ö§.ÿh¬ÛB/ÿ€Aï«Ö§.ÿh¬ÛB/ÿÿÿÿÿÿÿÿÿÿppï«D #ÿh¬$ÿ€Aï«D #ÿh¬$ÿÿÿÿÿÿÿÿÿÿpL'‰ÿ[<    /Þ"ÿLpDÎï«`ÿh¬%¨!ÿ€ï«`ÿh¬%¨!ÿÿÿÿÿÿÿÿÿÿe=ÿppï«%¨!ÿh¬*C"ÿ€Aï«%¨!ÿh¬*C"ÿÿÿÿÿÿÿÿÿÿppï«› ÿh¬`ÿ€Aï«› ÿh¬`ÿÿÿÿÿÿÿÿÿÿpL'Ý    ÿ[<    ~ÞÿLp Ò﫯
  41684. ÿh¬t¨ÿ€﫯
  41685. ÿh¬t¨ÿÿÿÿÿÿÿÿÿÿ´=ÿppï«t¨ÿh¬yCÿ€Aï«t¨ÿh¬yCÿÿÿÿÿÿÿÿÿÿppï«â     ÿh¬¯
  41686. ÿ€Aï«â     ÿh¬¯
  41687. ÿÿÿÿÿÿÿÿÿÿpL',üþ[<    ÍÞÿLpÜÕï«þýþh¬Ã¨ÿ€ï«þýþh¬Ã¨ÿÿÿÿÿÿÿÿÿÿC´ÿppï«Ã¨ÿh¬ÈCÿ€Aï«Ã¨ÿh¬ÈCÿÿÿÿÿÿÿÿÿÿppï«1¡üþh¬þýþ€Aï«1¡üþh¬þýþÿÿÿÿÿÿÿÿÿpL'{ïþ[<    ßûþLp8Ýï«Mðþh¬©úþ€ï«Mðþh¬©úþÿÿÿÿÿÿÿÿÿR>øþppï«©úþh¬Dûþ€Aï«©úþh¬Dûþÿÿÿÿÿÿÿÿÿppï«€¡ïþh¬Mðþ€Aï«€¡ïþh¬MðþÿÿÿÿÿÿÿÿÿpL'Êâþ[<    kßîþLpLá陼ãþh¬a©íþ€陼ãþh¬a©íþÿÿÿÿÿÿÿÿÿá”êþppï«a©íþh¬fDîþ€Aï«a©íþh¬fDîþÿÿÿÿÿÿÿÿÿppï«Ï¡âþh¬†ãþ€Aï«Ï¡âþh¬†ãþÿÿÿÿÿÿÿÿÿpL'Õþ[<    ºßáþLpÔæï«ëÖþh¬°©àþ€ï«ëÖþh¬°©àþÿÿÿÿÿÿÿÿÿ°Þþppï«°©àþh¬µDáþ€Aï«°©àþh¬µDáþÿÿÿÿÿÿÿÿÿppï«¢Õþh¬ëÖþ€Aï«¢Õþh¬ëÖþÿÿÿÿÿÿÿÿÿpL'hÈþ[<        àÔþLpxëï«:Éþh¬ÿ©Óþ€ï«:Éþh¬ÿ©Óþÿÿÿÿÿÿÿÿÿ??Ñþppï«ÿ©Óþh¬EÔþ€Aï«ÿ©Óþh¬EÔþÿÿÿÿÿÿÿÿÿppï«m¢Èþh¬:Éþ€Aï«m¢Èþh¬:ÉþÿÿÿÿÿÿÿÿÿpL'·»þ[<    XàÇþLpPïï«⇨¼þh¬NªÆþ€ï«⇨¼þh¬NªÆþÿÿÿÿÿÿÿÿÿ‰^Ãþppï«NªÆþh¬SEÇþ€Aï«NªÆþh¬SEÇþÿÿÿÿÿÿÿÿÿpp﫼¢»þh¬⇨¼þ€A﫼¢»þh¬⇨¼þÿÿÿÿÿÿÿÿÿpL'®þ[<    §àºþLpõï«Ø¯þh¬‡ª¹þ€ï«Ø¯þh¬‡ª¹þÿÿÿÿÿÿÿÿÿ]µþpp難ª¹þh¬¢Eºþ€A難ª¹þh¬¢Eºþÿÿÿÿÿÿÿÿÿppï« £®þh¬Ø¯þ€Aï« £®þh¬Ø¯þÿÿÿÿÿÿÿÿÿpL'U¡þ[<    öà­þLppüï«'¢þh¬ìª¬þ€ï«'¢þh¬ìª¬þÿÿÿÿÿÿÿÿÿl¶¨þppï«ìª¬þh¬ñE­þ€Aï«ìª¬þh¬ñE­þÿÿÿÿÿÿÿÿÿppï«Z£¡þh¬'¢þ€Aï«Z£¡þh¬'¢þÿÿÿÿÿÿÿÿÿpL'¤“þ[<    Eá þLp4ï«v”þh¬;«flþ€ï«v”þh¬;«flþÿÿÿÿÿÿÿÿÿl¶¨þppï«;«flþh¬@F þ€Aï«;«flþh¬@F þÿÿÿÿÿÿÿÿÿppï«©£“þh¬v”þ€Aï«©£“þh¬v”þÿÿÿÿÿÿÿÿÿp@½¾¥@BØ ÿÿë=ÿÿ "½½½¾½¾@¥HB,„ËÖþÿ«ÿÿ "ASM Documentation¾½½½HyV4°»¼¥@BØAæóÿ!ôÿ "»»»¼»¼@¥@ÂH®óÿáÜóÿ " »¼»»@yV4ÐÁ­´PbÆ;þÿ¦jþÿ "xy ¿ ¿ÁÁ ¿ÁÁ ¿Á ¿ÁÂINTRODUCTIONÁ ¿ ¿´-(Pŷþÿf2þÿ "ì,!Ì(…0pFËýÿ&úýÿ "ì,!ÌSM øuASM is a (mostly) full function assembler for the Archimedes and A3000 machines, producing …-hPÐî›ýÿæÁýÿ "ô3!Ìan AOF (Acorn Object Format) file suitable for use with the linker.h-(PÆZýÿ¦⇨ýÿ "ì,!Ì(-xT Úŷ"ýÿfQýÿ "ì,!ÌøuTo install ASM, simply move the file "ASM" into your Library directory.x-(PFêüÿ&ýÿ "ì,!Ì(-XTä8²üÿæàüÿ "ì,!ÌrøuTo assemble a file, use the command:X-(PÆyüÿ¦¨üÿ "ì,!Ì(-LTô⇨ŷAüÿfpüÿ "ì,!ÌrøuASM [options] <sourcefile>L-(PF    üÿ&8üÿ "ì,!Ì(“ “Ñûÿæÿûÿ "ì,!Ìrøuwhere <sourcefile> is the name of the file to be assembled. If no directory is specified, ASM will “⇦ :Æ—ûÿ¦Çûÿ "ô3!Ìlook for the source file in sub-directory A. For compatibility with C, the filename "SOURCE.A" is ⇦☓ô"ŷ`ûÿf•ûÿ "ô3!Ìtaken to refer to "A.SOURCE". The output will have the same leaf name as the sourcefile, and be ☓-@P°áF(ûÿ&Wûÿ "ô3!Ìstored in sub-directory O.@-(Pðúÿæûÿ "ì,!Ì(™°d9Æ·úÿ¦æúÿ "ì,!ÌrøuOptions are used¿ ¿ÂÄ Ä Ġto modify the standard behaviour of the assembler, and are introduced by a °…È›ŷúÿf®úÿ "ô3!Ìhyphen, the option name, and any allowed parameters. So long as enough letters of the option name are ……TFGúÿ&vúÿ "ô3!Ìgiven to preclude ambiguity, any number of letters may be given; all options are case-insensitive. In ……xkúÿæ=úÿ "ô3!Ìthe list of options below, the upper case part of the name indicates the minimum that can be specified …­HP$§ÆÖùÿ¦úÿ "ô3!Ìto preclude ambiguity. ÄÂH­8PŷfiùÿfÍùÿ "x÷Â÷8-<T—Ffùÿ&”ùÿ "ÿÇyOptionÜ!Effect<-(P.ùÿæ\ùÿ "ÿÇy(…
  41688. Æõøÿ¦$ùÿ "ÿÇy-Output <filename>¤-The assembled code is written to <filename> rather than the default. If no …-TPD[ŷ½øÿfìøÿ "lydirectory is given, subdirectory O is assumed.T-(PFŶøÿ&´øÿ "ÿÇy(‘<Møÿæ{øÿ "ÿÇy-List [<filename>]´GAn assembler listing is produced. If no filename is given, the file is given ‘l(ßÆøÿ¦Cøÿ "lythe same name as the sourcefile. By default, the file is produced in l-4PhŷÜ÷ÿf øÿ "lysubdirectory L.4-(PF¤÷ÿ&Ó÷ÿ "ÿÇy(☓4Ùl÷ÿæŒ÷ÿ "ÿÇy-Hexv`FInclude the generated hex code in the -List file. If -List is not explicitly ☓-HP0OÆ3÷ÿ¦b÷ÿ "lyspecified, this option implies it.H-(Pŷûöÿf*÷ÿ "ÿÇy(…HFÃöÿ&òöÿ "ðÿÇy-Include <pathlist>@=Specifies a search path for use in the 'INCLUDE' directive (qv). <pathlist> …h|ñ⇧öÿæ¹öÿ "ðlyis a comma-separated list of directories (or RISCOS symbols) to be h-<PDŴÆRöÿ¦Ŵöÿ "ðlysearched for the file.<-(PŷöÿfIöÿ "ÿÇy(x`æFâõÿ&öÿ "ÿÇy¤This is a slight deviation from the method use by the C compiler, which xtô⇩ªõÿæØõÿ "lyallows the -I option (which serves the same purpose) to be specified several tpü‰Æqõÿ¦ õÿ "lytimes, each of which extended the search list. ASM only allows a single use p-\P‘Þŷ9õÿfhõÿ "lyof -Include, where all the paths are specified at once.\-(PFõÿ&0õÿ "ÿÇy(-€T‘Éôÿæ÷ôÿ "ÿÇy-VErboseVErtðOutput informational messages describing the current phase of assembly.€-(PÆ‘ôÿ¦¿ôÿ "ÿÇy(☓HŷXôÿfôÿ "ÿÇy-VAlidateAl èThe List file produced contains a disassembly of the generated code rather ☓tìtF ôÿ&Oôÿ "lythan the source code. It is not anticipated that users will make much use of tlÂ÷-\P°<ñÿõjñÿ "lyythis. As for -Hex, -VAlidate implies -List.\-(PÕñÿµ2ñÿ "ÿÇy(…”Ëðÿuúðÿ "ÿÇy-Flags <flaglist>stlDefines a number of flags to be set before beginning the assembly, for use …l¨RU›ðÿ5Âðÿ "lyin the IFDEF/IFNDEF directives. <flaglist> is a comma-separated list of llØg[ðÿõ⇨ðÿ "lyflag names. Note that these flags are NOT assembler symbols, and cannot l-dPàêÕ"ðÿµQðÿ "lybe used as such - they are only recognized by IFDEF and IFNDEF.d-(P”êïÿuðÿ "ÿÇy(x¥U²ïÿ5áïÿ "ÿÇy-Nocase☓
  41689. Forces ASM to use case-insensitive name matching for user-defined x-0P¨zïÿõ¨ïÿ "lysymbols.0-(PÕAïÿµpïÿ "ÿÇy(-xT¬|”    ïÿu8ïÿ "ÿÇy-Throwbacka¿Enables the Acorn desktop throwback error-reporting mechanism.x-(PUÑîÿ5ïÿ "ÿÇy(⇦Hª−îÿõÇîÿ "ÿÇy-Processor <CPU>PU>tBSpecifies the target processor. This constrains which of the extended ⇦-lPÕ`îÿµ•îÿ "lyinstruction set operations are available. Legal values for <CPU> are:llX÷”(îÿuWîÿ "ÿÇy¤ARM2, ARM3, ARM6 and ARM7. (StrongARM will be coming when I l-`P Uðíÿ5îÿ "ðlydiscover what additional opcodes, if any, are available).`-(P¸íÿõæíÿ "ðÿÇy(­‘T ÀÕíÿµ®íÿ "ðÿÇy-HelpelX9Produce brief help text for the ASM syntax and options.s.÷ÂÆÂÆ‘­4P”Gíÿuvíÿ "ÿÇyÆÂ4­8PUíÿ5>íÿ "x È È8-0Pà¸×ìÿõíÿ "ì,!ÌExamples0-(PÕfiìÿµÍìÿ "ì,!Ì(-<T—G”fìÿu”ìÿ "ì,!ÌÌøuASM tharg<-(PU.ìÿ5]ìÿ "ì,!Ì(-xT¨uöëÿõ$ìÿ "ì,!ÌÌøuwill assemble the code in A.tharg and produce an object file O.thargx-(PÕ½ëÿµìëÿ "ì,!Ì(-|T–”Ŷëÿu´ëÿ "ì,!ÌÌøuASM -hex -flags debug,check -include <C$UserLibRoot>,<ASM$MylibRoot> eric|-(PUMëÿ5|ëÿ "ì,!Ì(—¬rëÿõCëÿ "ì,!ÌÌøuwill assemble the file A.eric and produce an object file O.eric; a listing file called L.eric will be —☓$ÕÜêÿµ ëÿ "ô3!Ìproduced containing the hex code generated. Any 'INCLUDE' statements will look in directories ☓☓⇦:”¤êÿuÓêÿ "ô3!Ì<C$UserLibRoot> and <ASM$MylibRoot> for the include files. Finally, the conditional assembly ☓-TP8Ulêÿ5œêÿ "ô3!Ìflags debug and check will be treated as set.T­<P4êÿõbêÿ "ì,!ÌÉ ÈÉ<  ÈÉ ­TPød<äÿDkäÿ "ì,!ÌySOURCE FORMATMAÉ ÈT-(P$äÿ3äÿ "ì,!Ì(‘—SäËãÿÄúãÿ "ì,!ÌÌøuIt is assumed that the user is fully familiar with ARM assembly language (what are you doing ‘⇦€ý¤›ãÿ☓Âãÿ "ô3!Ìwith ASM if you aren't?) and therefore this note contains no tutorial-type introduction; only the ⇦-|PÜ”d[ãÿD⇩ãÿ "ô3!Ìdifferences between the ASM format and that in use in the BASIC assembler are detailed.|-(P$#ãÿRãÿ "ì,!Ì(⇦⇦NäêâÿÄãÿ "ì,!ÌÌøuIt is recommended that users of ASM be familiar with the "RISCOS Programmer's Reference ⇦⇦h0¤²âÿ☓áâÿ "ô3!ÌManual" (especially those sections on the linker and Acorn Procedure Calling Standard) and Peter ⇦-XP°dzâÿD©âÿ "ô3!ÌCockerell's "ARM Assembly Language Programming".X-(P$Bâÿqâÿ "ì,!Ì(™¼…€ä    âÿÄ8âÿ "ì,!ÌÌøuThroughout, mnemonics and their options follow the Ê ÈÊde factoctoÊ Ƞstandard, that in Cockerell's book. ¼…pU¤Ñáÿ☓âÿ "ô3!ÌFor certain FP coprocessor instructions this differs slightly from that used by the disassembler (SWI …-dP Ýd−áÿDÈáÿ "ô3!Ì"Debugger_Disassemble"), which seems to contain a bug anyway.d-(P$aáÿ‘áÿ "ì,!Ì(-TT‘ºä(áÿÄWáÿ "ì,!ÌÌøuThe general format of a line is:T-(P¤ðàÿ☓áÿ "ì,!Ì(-dT zd¸àÿDçàÿ "ì,!ÌÌøu[<label-part>]  [<mnemonic-part>]  [<comment-part>]d-(P$€àÿ¯àÿ "ì,!Ì(‘ @äGàÿÄvàÿ "ì,!ÌÌøuAny or all of these parts are optional. Unlike the BASIC assembler, there is no facility to put ‘-lP ¤àÿ☓>àÿ "ô3!Ìmultiple mnemonics on a single line by separating them with a colon.l­HPd×ßÿDàÿ "ì,!Ì ÈÂÌÂÌH-€T†¼$flßÿÎßÿ "ÿÇy<label-part>rt>“»A label is any legal ASM Symbol (see below), terminated by a colon.€-(PäfßÿÄ”ßÿ "ÿÇy(€h¤.ßÿ☓]ßÿ "ÿÇy<mnemonic-part>ÌPThis part is any ARM instruction mnemonic (eg ADDS, STMFD), generic €`PÒdöÞÿD%ßÿ "lycoprocessor mnemonic (eg MCR, CDPEQ), or any Floating Point `-lPH$¾ÞÿíÞÿ "lycoprocessor mnemonic (eg MUFD, FIXS), plus any associated parameters.lt|¦äŶÞÿÄ´Þÿ "ÿÇy¤Alternatively, this could be the ADR pseudo-operation, or any ASM t-DP0X¤MÞÿ☓|Þÿ "lydirective (eg IFDEF, MACRO).D-(PdÞÿDDÞÿ "ÿÇy(⇦8/$ÝÝÿ Þÿ "ÿÇy<comment-part>r<hA comment is introduced by a semi-colon. Any text following a semi-colon ⇦­`Psä¤ÝÿÄÓÝÿ "lyon a line is ignored.edÌ ΠÎ`-(P¤lÝÿ☓œÝÿ "ì,!Ì(-|P$Zd4ÝÿDcÝÿ "ì,!ÌIn addition to the above format, ASM will also accept constant definitions of the form:|-(P$üÜÿ+Ýÿ "ì,!Ì(-PT áäÃÜÿÄòÜÿ "ì,!ÌÌøu<label> = <constant-expression>P-PTdѤ⇧Üÿ☓ºÜÿ "ì,!ÌandH2<label> = <register-expression>P-(PdSÜÿDŵÜÿ "ì,!Ì(…⇦’$ÜÿJÜÿ "ðì,!Ìwhere <label> is a legal ASM identifier (without the colon this time),  <constant-expression> evaluates ……ŶäâÛÿÄÜÿ "ðô3!Ìto an integer, and <register-expression> is one of the built-in register symbols (see “Symbols in ASM” …-,P䙤ªÛÿ☓ÙÛÿ "ðô3!Ìbelow).,-(PdrÛÿD¡Ûÿ "ì,!Ì(…{$:ÛÿiÛÿ "ì,!ÌThe following code fragment demonstrates both possible formats (it actually performs a 64-bit integer …­@PL¶äÛÿÄ0Ûÿ "ô3!Ìaddition): ÎÂ@­8P¤ÉÚÿ☓øÚÿ "xÐÂÐ8-<T0d’ÚÿDÀÚÿ "èg¥Ï¸Presult = 0<-DTÄj$YÚÿ⇦Úÿ "èg¥Ï¸Plhs = result + 1D-@Tä;ä ÚÿÄOÚÿ "èg¥Ï¸Prhs = lhs + 2@¤ÂÐ-@T¸P³<×ÿ›k×ÿ "èg¥Ïy…¸P@-tTTós×ÿS3×ÿ "èg¥Ï(mo¸PEXPORTt _Long_Add th¯; Make the function externalt-`Tpã3ÌÖÿûÖÿ "èg¥ÏLong_Add: (“xSTMFDorysp!,{lhs ,lhs+1,link}`-LT0$ó›ÖÿÓÂÖÿ "èg¥Ï¸PADDS(À”lhs,lhs,rhsL-TTй³[Öÿ›⇩Öÿ "èg¥ÏM, ¸PADCShe T—lhs+1,lhs+1,rhs+1T-HTHs#ÖÿSRÖÿ "èg¥Ï¸PBVS,ºoverflowH-TT¨½3ëÕÿÖÿ "èg¥Ïle ¸PSTMIAe ☓◰result,{lhs ,lhs+1}T-XT¼Üó²ÕÿÓáÕÿ "èg¥ÏAüÿ¸PLDMFDHqsp!,{lhs ,lhs+1,pc}^X-PT—³zÕÿ›©Õÿ "èg¥Ïoverflow:xŒADRd²R0,oflerrP-PT¼ësBÕÿSqÕÿ "èg¥Ï> i¸PSWIl¿"OS_GenerateError"P-HTØÐ3
  41690. Õÿ9Õÿ "èg¥Ïoflerr:“ÛDCDd²&901H-TT\ óÑÔÿÓÕÿ "èg¥Ïire¸PDCS,º"Arithmetic overflow"T-@T€}³−Ôÿ›ÈÔÿ "èg¥Ï•ûÿ¸PDCBø´0@-8T€âsaÔÿS‘Ôÿ "èg¥Ï ha¸PALIGN8-(P3)ÔÿXÔÿ "èg¥Ï(­DT`óðÓÿÓÔÿ "èg¥Ï su¸Petc.ÐÂD-(P³¸Óÿ›çÓÿ "x(­8Ps€ÓÿS¯Óÿ "x Ò Ò8-4P—E3HÓÿwÓÿ "ðì,!ÌSymbols in ASM4-(PóÓÿÓ>Óÿ "ðì,!Ì(⇦pô³×Òÿ›Óÿ "ðì,!ÌøuSymbols (Identifier names) in ASM may contain the following characters: A-Z, a-z, 0-9, ⇦…à`sflÒÿSÎÒÿ "ô3!Ìunderscore (_) and dollar ($). These may be in any order, with the exception that an identifier cannot …-8P(U3gÒÿ„Òÿ "ô3!Ìbegin with a digit.8-(Pó.ÒÿÓ]Òÿ "ì,!Ì(-dTdý³öÑÿ›%Òÿ "ì,!Ìg øuThere are several classes of identifiers in ASM :d­HPs¾ÑÿSíÑÿ "ì,!Ìnk ÒÂÔÂÔH☓H3ŷÑÿµÑÿ "ÿÇyConstants(ëConstants are defined by the use of the <constant> = <expression> format. ☓hDÛóMÑÿÓ|Ñÿ "lyThe expression must evaluate to an integer, and may contain other hl ³Ñÿ›DÑÿ "lyconstants. For example, the symbol "result" in the example above is a l-0Pô§sÝÐÿS Ñÿ "lyconstant.0-(P3¥ÐÿÔÐÿ "ÿÇy(☓·ólÐÿÓœÐÿ "ÿÇyLocal Symbols i☓⇨A local symbol is a label. The symbols "overflow" and "oflerr" in the ☓lÐr³4Ðÿ›cÐÿ "lyexample above are local symbols. Local symbols may be either "Close" or l-8P¤QsüÏÿS+Ðÿ "ly"Far" - see below.8-(P3ÄÏÿóÏÿ "ÿÇy(⇦L÷ó⇧ÏÿÓºÏÿ "ÿÇyGlobal  SymbolsðhA global symbol is similar to a local symbol, but one that has been made ⇦p|6³SÏÿ›ŵÏÿ "lyexternally visible at the link stage by the use of the EXPORT directive. p-LP☓sÏÿSJÏÿ "lyGlobal Symbols may be "Close" or "Far".L-(P3ãÎÿÏÿ "ÿÇy(……·óªÎÿÓÙÎÿ "ÿÇyExternal SymbolswedpUAn external symbol is similar to a label, but is not defined within this …l`:³rÎÿ›¡Îÿ "lyassembly unit. It is introduced by the IMPORT directive. References to llè3s:ÎÿSiÎÿ "lyExternal symbols must be resolved by the linker. External Symbols are l­@PXþ3Îÿ1Îÿ "lyalways "Far".ÔÂ@­8PóÉÍÿÓøÍÿ "x Ö Ö8-xPðQ³’Íÿ›ÀÍÿ "ì,!ÌUser-defined symbols are case-sensitive (ie "SYMBOL" is not the same as "symbol").x-(PsYÍÿS⇦Íÿ "ì,!Ì(…X’3!ÍÿPÍÿ "ì,!ÌIn addition to the above user-defined symbols, ASM provides a set of built-in symbols of special types, …@ Ö™¼hx=ÊÿâkÊÿ "ðô3!Ìywhich are case-insensitive. These symbols refer specifically to registers, either in the ARM itself or in g Ö If Ø ؼ-8PppÂÊÿ¢3Êÿ "ðô3!Ìthe FP coprocessor.8-(PŵÌÉÿbûÉÿ "ì,!Ì(­PP°ÿB“Éÿ"ÃÉÿ "ì,!ÌThese built-in symbols are: ØÂP­8P\Éÿâ⇩Éÿ "xÚÂÚ8-LTh\Â#Éÿ¢RÉÿ "<×}År0-r15L8ARM registers 0 to 15.L-LTØ’ŵëÈÿbÉÿ "<×}ÅspxÄ◰Stack Pointer. Set to R13.L-LT#B³Èÿ"âÈÿ "<×}Ålinks i€dLink register (R14).L-XT\‰{Èÿâ©Èÿ "<×}Åpc0ŴProgram Counter/Status register (R15).X-TT òÂBÈÿ¢qÈÿ "<×}Åf0-f7ti¼OFP Coprocessor register 0 to 7.T-(Pŵ
  41691. Èÿb9Èÿ "<×}Å(-8T ½BÒÇÿ"Èÿ "<×}Åa1-a4 TE)8-8T ½ŒÇÿâÈÇÿ "<×}Åv1-v6il@)8-xTD¿ÂaÇÿ¢‘Çÿ "<×}Åipø⇦)  These are defined as part of the Acorn Procedure Calling Standard.x-dT¼´ŵ)ÇÿbXÇÿ "<×}Åfpdŷ)  ASM binds them to their RISCOS values (APCS-R).d-4T ½BñÆÿ" Çÿ "<×}ÅspvÄ◰)4-4T ½¹ÆÿâçÆÿ "<×}ÅlreÌ‘)4­@T ½Â€Æÿ¢¯Æÿ "<×}Åpco0Ŵ) ÚÂ@­8PŵHÆÿbwÆÿ "xe, Ü Ü8…\ABÆÿ"?Æÿ "ì,!ÌøuASM tries to be as flexible as possible with its parsing: where a mnemonic requires an ARM ……ì`ØÅÿâÆÿ "ô3!Ìregister name, ASM will accept any of the register constants above (except the FP register f0-f7) OR ……°uÂflÅÿ¢ÎÅÿ "ô3!Ìan integer expression which evaluates to a number in the range 0-15. Where a FP coprocessor register ……°lŵgÅÿb„Åÿ "ô3!Ìis required, ASM will accept the register symbols f0-f7, or an integer expression which evaluates to a …⇦À#B/Åÿ"^Åÿ "ô3!Ìnumber in the range 0-7. However, if a constant is required, ASM will reject the use of any of the ⇦-8PL@÷Äÿâ%Åÿ "ô3!Ìregister symbols.8-(P¾Äÿ¢íÄÿ "ì,!Ì(-(PŵŷÄÿbµÄÿ "ì,!Ì(-,PPmBNÄÿ"}Äÿ "ì,!ÌAreas,-(PÄÿâDÄÿ "ì,!Ì(“<sÂÝÃÿ¢ Äÿ "ì,!Ìs. øuWhen the linker is combining several AOF files, it does so on the basis of "Areas". An area is a “⇦Pŵ¥ÃÿbÔÃÿ "ô3!Ìnamed chunk of contiguous memory with associated attributes (eg area contains code, area contains ⇦⇦2BmÃÿ"†Ãÿ "ô3!Ìdata, area is readonly etc) (See the AREA directive). ASM allows multiple areas to be created in a ⇦‘Ìŷ5ÃÿâcÃÿ "ô3!Ìsingle source file, but the ordering of areas in the final executable image is wholly the responsibility of ‘-dPx‹ÂüÂÿ¢+Ãÿ "ô3!Ìthe linker. This leads to the concept of Close and Far symbols.d-(PŵÄÂÿbóÂÿ "ì,!Ì(-<P8´B…Âÿ"»Âÿ "ì,!ÌClose and Far Symbols<-(PTÂÿâŵÂÿ "ì,!Ì(☓ÝÂÂÿ¢JÂÿ "ì,!ÌPU>øuWhile some ARM mnemonics allow the entire 24-bit address space to be addressed (eg ☓☓ÜŵãÁÿbÂÿ "ô3!ÌBL A_SubRoutine), others allow only a restricted window into the address space (eg PC-relative ☓… yB«Áÿ"ÚÁÿ "ô3!Ìaddressing, such as LDR R0,Tharg). Where the entire address space is legal, ASM will accept either a ……ÀAsÁÿâ¡Áÿ "ðô3!Ìsymbol which is close to the the instruction or one that is far away. Where only a restricted address …-`PD*Â:Áÿ¢iÁÿ "ðô3!Ìspace is available, ASM will accept only a close symbol.`-(PŵÁÿb1Áÿ "ðì,!Ì(⇦ÌæBÊÀÿ"ùÀÿ "ì,!ÌøuASM regards a symbol as "Close" if and only if it is a local or global symbol, AND ITS ⇦pÀV‹ÀÿâÀÀÿ "ô3!ÌDEFINING POINT IS IN THE SAME AREA AS THE INSTRUCTION THAT REFERENCES IT. p­dPÂYÀÿ¢⇦Àÿ "ô3!ÌAll other symbols are "Far".AS ÜÂeri Þ Þd-(Pŵ!ÀÿbPÀÿ "ì,!Ì(Ü Þ­lT\zQ=½ÿ1l½ÿ "ì,!ÌyO.eøuFor example :l ÞÂl bàÂàl-PTüí½ÿñ3½ÿ "èg¥Ïain¸PAREAodeÀ”ASM$$CodeA,CodeP-4T`Ñ̼ÿ±û¼ÿ "èg¥ÏY:Ø!etc4-\T4µ’“¼ÿqüÿ "èg¥Ït> ¸PAREAbRoÀ”ASM$$CodeB,Code,ReadOnly\-4T`Q\¼ÿ1⇧¼ÿ "èg¥Ï8¸Petc4-TTdo$¼ÿñR¼ÿ "èg¥Ïl b¸PBLspÙXHX; Legal.T-hTTÑë»ÿ±¼ÿ "èg¥Ï<¸PBLpÙYHX; Legal. Y is Far, but allowed.h-`Tp>’³»ÿqâ»ÿ "èg¥ÏRMA¸PADRd²R0,XTÜ; Legal. X is Close`-€T XQ{»ÿ1ª»ÿ "èg¥Ï,¸PLDR—·R0,YumeÜ; Illegal. Y is Far & address space not available€-4T`C»ÿñq»ÿ "èg¥Ï›ãÿ¸Petc4-DTà¿Ñ
  41692. »ÿ±9»ÿ "èg¥ÏX:eØ!MOVü§r0,r1D­DT`’Òºÿq»ÿ "èg¥Ï ¸PetcàÂD­8PQŒºÿ1ɺÿ "xrm â â8☓Ä£bºÿñ‘ºÿ "ì,!Ìd.øuThe user need not particularly worry about close and far symbols; ASM handles this ☓⇦ Ñ)ºÿ±Xºÿ "ô3!Ìautomatically. It is included in this documentation simply to explain the cause of the error "Local ⇦⇦⇦F’ñ¹ÿq ºÿ "ô3!ÌSymbol Expected" that the above code fragment will generate, despite the fact the the symbol 'Y' is ⇦-8P†#Q¹¹ÿ1è¹ÿ "ô3!Ìdefined locally.8-(PŴ¹ÿñ¯¹ÿ "ì,!Ì(-(PÑH¹ÿ±w¹ÿ "ì,!Ì(-4P¨’¹ÿq?¹ÿ "ì,!ÌOther Exotica4-(PQظÿ1¹ÿ "ì,!Ì(-☓T¨€ ¸ÿñθÿ "ðì,!̼øuWhere a PC-relative address is allowed, ASM supports an additional syntax, as in:☓­HPÑg¸ÿ±„¸ÿ "ðì,!ÌSW â ÝäÂäH-DTÐÆ’/¸ÿq^¸ÿ "ðèg¥Ïh s¸PBntö*+12D­hTÌñQ÷·ÿ1&¸ÿ "èg¥Ïor¬)LDR—·R4,*+8ðäÂÌ æ æh-(P¿·ÿñí·ÿ "ì,!Ì(‘, Ñŷ·ÿ±µ·ÿ "ì,!̸àÿøuIn this notation, the asterisk * means "the address of the current instruction" (Not the PC - ‘…_’N·ÿq}·ÿ "ô3!Ìallowing for pipelining, the PC will be at *+8). ASM resolves this as a PC-relative address. Its use is …⇦°uQ·ÿ1E·ÿ "ô3!Ìnot particularly recommended, as local code changes may require that the offset be manually changed ⇦‘LŶÞ¶ÿñ ·ÿ "ô3!Ì(whereas labels are self-adjusting). However, for short jumps it does negate the need for a label, which ‘-<P…⇩Ñ¥¶ÿ±Ô¶ÿ "ô3!Ìis why it is provided.<­<P’m¶ÿq†¶ÿ "ì,!Ìç æç< x
  41693.  æç ­pP“Ŷ =°ÿ€l°ÿ "ì,!ÌySTRINGS, CHARACTER CONSTANTS AND NUMERICSprç æp-(P`°ÿ@4°ÿ "ì,!Ì(‘X0 Í¯ÿü¯ÿ "ðì,!ÌcesøuASM differentiates strongly between strings and character constants. A string is enclosed in ‘⇦ûà“¯ÿÀïÿ "ðô3!Ìdouble quotation marks ("), and can be of any length. A character constant is enclosed in single ⇦­|P™ \¯ÿ€⇧¯ÿ "ðô3!Ìquotation marks (') and its maximum length depends on the current context: æÂ|­8P`$¯ÿ@S¯ÿ "xowéÂé8-lT¼ ì®ÿ¯ÿ "èg¥Ï¸PMOVü§R0,'A'ü; Move ASCII 'A' (65) into R0l-pTp[à³®ÿÀâ®ÿ "èg¥Ï|¸PMOVü§R0,"A"†ï; Will generate an assembly error.p­TT ¸ {®ÿ€ª®ÿ "èg¥Ï fo¸PDCWü§'AB'"ðéÂT­8P`C®ÿ@r®ÿ "x ë ë8-|T,  ®ÿ:®ÿ "ì,!Ì⇧ÜÿøuThe last statement above will store two bytes, ASCII A followed by ASCII B.|-(PàÒ­ÿÀ®ÿ "ì,!Ì(­¬T¸è Œ­ÿ€É­ÿ "ì,!ÌgaløuASM, like C, uses the backslash (\) as an escape character to store odd values in strings:ÿ ëÂíÂí¬­HP`b­ÿ@’­ÿ "ÿÇy bíÂter    ï    ïH-8T8E *­ÿY­ÿ "®y\nððŴNewline8-@TÓàñ¬ÿÀ ­ÿ "®y\rÄ⇨Carriage Return@-4TLï ¹¬ÿ€è¬ÿ "®y\tmX…Tab4-@T€†`Ŵ¬ÿ@°¬ÿ "®y\' ð‘Single Quote@-@T°® I¬ÿx¬ÿ "®y\"@ŷDouble Quote@-<T|dà¬ÿÀ?¬ÿ "®y\\X…Backslash<-`T$, Ø«ÿ€¬ÿ "®y\xhhPSHex code hh. eg \x0E is ASCII 14 (<CTRL>N).`­HP` «ÿ@Ï«ÿ "®y    ïÂ"ð ñ ñH⇦<³ h«ÿ–«ÿ "ì,!ÌøuIntegers may be specified in a number of ways: & treats the characters following as a ⇦­“P€€à/«ÿÀ^«ÿ "ô3!Ìhexadecimal number, % treats it as binary, no character treats it as base 10. ñÂûÖÿóÂó“-(P ÷ªÿ€&«ÿ "èg¥Ï(-|Tä`¿ªÿ@îªÿ "èg¥ÏÂÖÿ¸PADDЯR0,R0,#&F0Sà; Add F0 Hexadecimal (240 decimal) to R0|-€TT% ªÿ¶ªÿ "èg¥Ïhs+¸PSUB,ºR1,R1,#%1100RÖÿ Y; Subtract 1100 binary (12 decimal) from R1€-hTØàNªÿÀ}ªÿ "èg¥Ïle ¸PMOVü§R2,#15udñ; Move 15 decimal into R2h­HP ªÿ€Eªÿ "èg¥ÏóÂ,lh õ õH‘$Ŷ`Þ©ÿ@ªÿ "ì,!ÌlowøuFloating point numbers may only be specified in base 10. They may include both decimal points ‘☓äç ¦©ÿÕ©ÿ "ô3!Ìand exponents. However, there must be at least one digit before either the decimal point or the ☓­<P‘·àm©ÿÀ†©ÿ "ô3!Ìexponent. õÂ<­8P 5©ÿ€d©ÿ "x÷Â÷8-hT¤þ`ý¨ÿ@,©ÿ "èg¥Ï¸PADFD)ÔÿÀ”f0,f0,#3.0‘Â; Add 3.0 to f0.h-|TÜv Å¨ÿô¨ÿ "èg¥Ï¸PDCFDT—1.0654E-6⇦µ; Store a double-precision constant.|­…T°à…¨ÿÀ»¨ÿ "èg¥Ï"ð¸PDCFEymb⇦‡.3421¨; Illegal - no digit before the decimal point.÷Â…­8P T¨ÿ€◰¨ÿ "xme ù ù8“à”`¨ÿ@K¨ÿ "ì,!Ìa-zøuIt should be remembered that there are only 8 floating point values that can be used as immediate “-lP É ä§ÿ¨ÿ "ô3!Ìvalue constants: these are 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 0.5 and 10.0.l-(P૧ÿÀÚ§ÿ "ì,!Ì(-(P s§ÿ€¢§ÿ "ì,!Ì(-<P`¹`;§ÿ@j§ÿ "ì,!ÌArithmetic Expressions<-(P §ÿ2§ÿ "ì,!Ì(‘$RàʦÿÀù¦ÿ "ðì,!̵ÑÿøuWherever an integer or floating point number is required, ASM will accept an expression that ‘…Èl ‹¦ÿ€Á¦ÿ "ðô3!Ìevaluates to the correct type (ie integer expressions must not contain any floating point values). ASM …­XP „`Z¦ÿ@⇨¦ÿ "ðô3!Ìrecognizes the following operators:is  ùÂX­<P "¦ÿQ¦ÿ "x
  41694. ûÂ
  41695. û< Â
  41696. û-PT„
  41697. ï=£ÿÏl£ÿ "`›yyOperatorabe‹‰PrecedenceP-8T—«¯£ÿ•4£ÿ "`›yUnary +Üø18-8T—«oÍ¢ÿOü¢ÿ "`›yUnary -°18-@T—«/”¢ÿÄ¢ÿ "`›y*Ïÿ0\⇦ 2@-@T—«ï\¢ÿÏ⇧¢ÿ "`›y/ð—f⇦ 2@-HT—«¯$¢ÿ•S¢ÿ "`›y%mb“L(remainder)HC2H-LT—«oì¡ÿO¢ÿ "`›y& h(O(bitwise AND)¤2L-@T—«/´¡ÿã¡ÿ "`›y+th0Yage⇦ 3@-@T—«ï{¡ÿϪ¡ÿ "`›y-d"ð⇦ 3@-LT—«¯C¡ÿ•r¡ÿ "`›y| ⇦^(bitwise OR)"ð-3L-TT—«o ¡ÿO:¡ÿ "`›y^¤](bitwise Exclusive OR)exh3T-XT—«/Ó ÿ¡ÿ "`›y>>fÀ>(Arithmetic shift right)rÎÿàr4X-TT—«ÿÏÉ ÿ "`›y>>>P$(Logical shift right)enÈ®4T­`T—«¯b ÿ•’ ÿ "`›y<<lÀ>(Logical shift left)theØÈ4t
  41698. ûÂ`­8Po* ÿOY ÿ "x ý ý8‘ }/òflÿ! ÿ "ì,!Ì"ðøuSub-expressions in parentheses are also allowed, and have the highest priority. Parentheses may ‘-HP\Yï¹flÿÏèflÿ "ô3!Ìbe nested to an arbitrary degree.H-(P¯Ŵflÿ•°flÿ "ì,!Ì(-|T4§oIflÿOxflÿ "ì,!ÌuseøuWithin a single level of priority, expressions are evaluated left to right.|-(P/flÿ@flÿ "ì,!Ì(-tTH<ïØfiÿÏflÿ "ì,!ÌøuThere are a number of constraints on the use of certain operators:t-(P¯ fiÿ•Ïfiÿ "ì,!Ì(-…TPohfiÿO–fiÿ "ì,!Ì1)ìNThe only operators that can be applied to non-constant symbols (ie addresses) are + and -.…-(P/0fiÿ_fiÿ "ì,!Ì(­XT¸Óï÷‡ÿÏ&fiÿ "ðì,!Ì\ÉÿøuThus ýÂÿÂÿX­‘T`~¯¿‡ÿ•î‡ÿ "ðèg¥Ï8¸PegiXBL Tharg+2*4LÿÂ"ð   Ânte  ‘­`TlOo‡ÿO¶‡ÿ "ðì,!Ìinkøuis legal, bute ÂLÂ`­hT€L/O‡ÿ~‡ÿ "èg¥Ïoun¸Ps rXBL Tharg*2ÂqÈÿ  h-8T“èï‡ÿÏE‡ÿ "ì,!Ìer øuis not.8-(P¯Þ†ÿ•‡ÿ "ì,!Ì(‘Èqo¦†ÿOÕ†ÿ "ì,!Ì2)ìNBit-based operators (&,  |, ^, >>, >>> and <<) may only be used in integer constant expressions ‘-8Pìi/n†ÿ‡†ÿ "ô3!Ìor sub-expressions.8-(Pï5†ÿÏd†ÿ "ì,!Ì(­XT¸Ó¯ýœÿ•,†ÿ "ì,!ÌM bøuThusthe Âes    Â    X­xTðYoÅœÿOôœÿ "èg¥Ï◰¸P4XDCFE  12345.6 + (1<<12)r    Â4  x­`TlO/™œÿ¼œÿ "ì,!ÌÂøuis legal, butÿ ÂÂ`­pT†öïTœÿÏ◰œÿ "èg¥Ï̸PXDCFD  12345.6 >> 2Âith  p-8T“诜ÿ•Kœÿ "ì,!Ì…øuis not.8-(PoäŒÿOœÿ "ì,!Ì(…¨/¬ŒÿÛŒÿ "ì,!ÌRule 1 is to ensure that addresses are always properly relocatable. Rule 2 is because it is not very …­xPø9ïsŒÿÏ¢Œÿ "ô3!Ìmeaningful to apply bit operators to floating point values.ð x °  ­LPôÅ>>„ÿm„ÿ "ì,!ÌyMACROS L-(Pþ„ÿÞ4„ÿ "ì,!Ì(“y¾Í”ÿfiü”ÿ "ì,!Ì reøuA Macro is a section of code defined in a single place, and then used in several places. It differs “☓|Ý~””ÿ^Ä”ÿ "ô3!Ìfrom a Branch-with-link in that the macro is copied in whole wherever it is referenced; it thus ☓… I>]”ÿ…”ÿ "ô3!Ìgenerates more code than a branch-with-link, but will usually process faster; in addition, it does not …-@P¬îþ$”ÿÞS”ÿ "ðô3!Ìmake any use of the stack.@-(P¾ì“ÿfi”ÿ "ðì,!Ì(…ôH~´“ÿ^ã“ÿ "ðì,!ÌconøuA Macro may be given any number of parameters, of any type (including labels - see below). ……$n>|“ÿ«“ÿ "ô3!ÌThese are automatically substituted when the macro instruction is used. The handling of labels within …“ÀtþC“ÿÞr“ÿ "ô3!Ìmacros is quite straightforward: if the defining point of the label is within the limits of the macro, it is “…P¾ “ÿfi:“ÿ "ô3!Ìregarded as a local label, and substituted; any labels referenced that are not within the bounds of the …⇦°›~Ó›ÿ^“ÿ "ô3!Ìarray are not substituted. Local label names generated by ASM are of the form $nnnnnn, where nnnnnn ⇦…n>œ›ÿÊ›ÿ "ô3!Ìis 300000 plus a count of the number of labels generated. Thus, the first label will be called $300001, …-…Päŷþb›ÿÞ’›ÿ "ô3!Ìthe second $300002, and so on. For obvious reasons, labels of this form should be avoided by the user.…-(P¾*›ÿfiY›ÿ "ì,!Ì(-⇦Tì ~ò‹ÿ^!›ÿ "ì,!ÌhatøuA macro is defined with the MACRO directive, and terminated with the ENDM directive.⇦-(P>º‹ÿé‹ÿ "ì,!Ì(…⇦0þŴ‹ÿÞ°‹ÿ "ì,!Ì,øuA macro is used simply by giving its name as a standard mnemonic, followed by a list of its …-0P\Ù¾I‹ÿfix‹ÿ "ô3!Ìparameters.0-(P~‹ÿ^@‹ÿ "ì,!Ì(…hç>Ù’ÿ‹ÿ "ì,!ÌTRUøuAs an example, consider a macro to take the absolute value of 64-bit integer held in two ……“‰þ ’ÿÞÏ’ÿ "ô3!Ìconsecutive registers. This will be defined as ABS64, and then used twice, once for register pair R0,R1 …­TPÀg¾h’ÿfi–’ÿ "ô3!Ìand once for register pair R2,R3. ÂT-(P~0’ÿ^_’ÿ "x(­8P>ø‘ÿ'’ÿ "xÂ8-LT‘fþ¿‘ÿÞî‘ÿ "èg¥Ï\¸PMACROðtiABS64,regnoL-pT ¾‘ÿfi¶‘ÿ "èg¥Ïead¸PCMPX²regno+1,#0ðì¢; Is the upper word negative?p-DT¨å~O‘ÿ^~‘ÿ "èg¥ÏL¸PBPL`¿notnegD-(P>‘ÿF‘ÿ "èg¥Ï(-pTômþÞ•ÿÞ‘ÿ "èg¥Ï Le¸P; It is negative. Subtract it from zero to get the abs valuep-(P¾¦•ÿfiÕ•ÿ "èg¥Ï(-PTØŴ~n•ÿ^‡•ÿ "èg¥Ï¸PRSBSP°¢regno,regno,#0P-PT—å>6•ÿe•ÿ "èg¥Ï sp¸PRSCÀ¼regno+1,regno+1,#0P-(Pþý‰ÿÞ,•ÿ "èg¥Ï(-<T¸Ú¾Å‰ÿfiô‰ÿ "èg¥Ïnotneg:ÄENDM<-(P~™‰ÿ^¼‰ÿ "èg¥Ï(-DT¨Ô>U‰ÿ☓‰ÿ "èg¥Ï¸P; Now use the macroD-hTËþ‰ÿÞK‰ÿ "èg¥Ï"ð¸PABS64âÿL⇧R0 lC; Ensure R0,R1 is positiveh-hT˾ä™ÿfi‰ÿ "èg¥Ï th¸PABS64L⇧R2ðlC; Ensure R2,R3 is positiveh­HP~¬™ÿ^Û™ÿ "èg¥ÏexÂse ÂH­DT`>t™ÿ£™ÿ "èg¥Ï̸Petced"ÂD­<Pþ;™ÿÞj™ÿ "xte  <L ­tTØœ™>⇨ÿmm⇨ÿ "ì,!ÌyøuWhen expanded, this will be assembled as: Ât­8PM⇨ÿ-5⇨ÿ "xÂ8-DTĆÎ⇦ÿíü⇦ÿ "èg¥Ï ¸ÿ¸P; ABS64…rR0D-lT Í”⇦ÿ­Ä⇦ÿ "èg¥Ïlow¸PCMPX²R0+1,#0ôÖ; Is the upper word negative?l-DT 
  41699. ™]⇦ÿm…⇦ÿ "èg¥Ïä¸PBPL`¿$300001D-(PM%⇦ÿ-T⇦ÿ "èg¥Ï(-pTômíÿí⇦ÿ "èg¥Ï¸P; It is negative. Subtract it from zero to get the abs valuep-(PÍ´ÿ­ãÿ "èg¥Ï(-LTÈ™|ÿm«ÿ "èg¥Ï̸PRSBSn t°¢R0,R0,#0L-LT⇦}MDÿ-sÿ "èg¥Ïrre¸PRSCÀ¼R0+1,R0+1,#0L-0P± ÿí:ÿ "èg¥Ï$300001:0-DTĆÍÓŷÿ­ÿ "èg¥Ïres¸P; ABS64…rR2D-lT ™œŷÿmÊŷÿ "èg¥ÏE·ÿ¸PCMPX²R2+1,#0ôÖ; Is the upper word negative?l-DT 
  41700. Mcŷÿ-‹ŷÿ "èg¥Ïly ¸PBPL`¿$300002D-(P+ŷÿíYŷÿ "èg¥Ï(-pTômÍòŶÿ­!ŷÿ "èg¥Ï it¸P; It is negative. Subtract it from zero to get the abs valuep-(P™ºŶÿméŶÿ "èg¥Ï(-LTÈMŵŶÿ-±Ŷÿ "èg¥Ï¸PRSBS<°¢R2,R2,#0L-LT⇦}JŶÿíxŶÿ "èg¥Ï=°ÿ¸PRSCÀ¼R2+1,R2+1,#0L­<P±ÍŶÿ­@Ŷÿ "èg¥Ï$300002:Â<­8P™Ù☓ÿmŶÿ "x  8““M¡☓ÿ-Ð☓ÿ "ì,!ÌNBfÜ4The use of the INCLUDE directive is specifically forbidden within a macro definition. It is legal “-…PH;i☓ÿí–☓ÿ "ô3!Ìfor the body of one macro to use another macro; however, it is illegal to nest the actual definitions.…-(PÍ0☓ÿ­_☓ÿ "ì,!Ì(-(P™ø◰ÿm'☓ÿ "ì,!Ì(-@Pô    MÀ◰ÿ-ï◰ÿ "ì,!ÌLabels as macro parameters@-(P⇦◰ÿí¶◰ÿ "ì,!Ì(-xP†¸ÍO◰ÿ­~◰ÿ "ðì,!ÌAs stated above, it is perfectly legal to pass a label into a macro. For example:x­4P™◰ÿmF◰ÿ "ðì,!ÌWi Â4­8PMßŵÿ-◰ÿ "ðx®ÿøÂø8-TT8â§ŵÿíÕŵÿ "èg¥Ï¸PMACROtiJMPZ,regno,a_labelT-HTd Ínŵÿ­‡ŵÿ "èg¥Ï:®ÿ¸PCMPX²regno,#0H-DTpí™6ŵÿmeŵÿ "èg¥Ïyte¸PBEQ—·a_labelD-8T¸ÚMþŴÿ--ŵÿ "èg¥Ï̸PENDM8-(PÆŴÿíôŴÿ "èg¥Ï(-LTÐÍ™Ŵÿ­¼Ŵÿ "èg¥Ï es¸PJMPZr t¼¢R0,thargL-(P™UŴÿm☓Ŵÿ "èg¥Ï(-4T`MŴÿ-LŴÿ "èg¥Ï¸Petc4-(På€ÿíŴÿ "èg¥Ï(­PT¤Nͬ€ÿ­Û€ÿ "èg¥Ïtharg:\ãdo somethingøÂP­PP™t€ÿm£€ÿ "xÿ   P è  ­\P“HÜ>|ÿ¼m|ÿ "ì,!ÌyCONDITIONAL ASSEMBLYote \-(P†|ÿ|5|ÿ "ì,!Ì(‘H–\Î{ÿ<ý{ÿ "ì,!ÌøuASM gives simple support to conditional assembly: ie, the code produced can be made to depend ‘-`PÌ•„{ÿüÄ{ÿ "ô3!Ìon the value of some flags defined by the assembly command.`-(PÜ]{ÿ¼…{ÿ "ì,!Ì(…0†%{ÿ|T{ÿ "ì,!Ì€€øuThe directives involved in conditional assembly are IFDEF (if a specified flag is defined), …-dPä—\ízÿ<{ÿ "ô3!ÌIFNDEF (if a specified flag is not defined), ELSE and ENDIF.d-(Pµzÿüãzÿ "ì,!Ì(‘ ŶÜ|zÿ¼«zÿ "ðì,!Ì(24øuAs described above, the flags used by IFDEF/IFNDEF are set using the -flags assembly options. ‘-XP,y†Dzÿ|szÿ "ðô3!ÌAny flags not explicitly set are treated as unset.X-(P\ zÿ<;zÿ "ðì,!Ì(­`T¤nÔyÿüzÿ "ì,!ÌEªÿøuFor example: ÂõÂ`-(PÜœyÿ¼Êyÿ "èg¥Ï(-HTã†cyÿ|‹yÿ "èg¥Ïe s¸PIFDEFse ›DebugH-LTÔ
  41701. \+yÿ<Zyÿ "èg¥Ïäç¸PSTMFDysp!,{r0 }L-HTÌxóxÿü!yÿ "èg¥Ïe d¸PADRd²R0,DebugMsgH-HTÔaܺxÿ¼éxÿ "èg¥Ï¸PSWIl¿"OS_Write0"H-DT‘!†ŵxÿ|±xÿ "èg¥Ï¸PBöEndDBugD-LTØÐ\Jxÿ<yxÿ "èg¥ÏDebugMsg:`sDCDd²&902L-LTä]xÿü@xÿ "èg¥Ï"ð¸PDCS,º"Hello there"L-@T€}ÜÙwÿ¼xÿ "èg¥Ïble¸PDCBø´0@-8T€â†¡wÿ|Ðwÿ "èg¥Ïa-z¸PALIGN8-0P⇦È\iwÿ<—wÿ "èg¥ÏEndDBug:0-8T¸Ú1wÿü_wÿ "èg¥Ï…¸PENDIF8­HPÜøvÿ¼'wÿ "èg¥ÏÂK¨ÿ ! !H‘‘“†Àvÿ|ïvÿ "ì,!ÌhatøuIf the file was assembled using -flags debug, the code between the IFDEF and the ENDIF will be ‘-\P†ê\⇦vÿ<·vÿ "ô3!Ìincluded in the output AOF file; otherwise it will not.\-(PPvÿü~vÿ "ì,!Ì(‘cÜvÿ¼Fvÿ "ì,!Ì;§ÿøuIFNDEF works in exactly the same way, except the code is included if the specified flag is not ‘-,PÌ?†ßuÿ|vÿ "ô3!Ìset.,-(P\§uÿ<Öuÿ "ì,!Ì(-PTDñouÿü‡uÿ "ì,!ÌøuELSE works in the expected way.P-(PÜ6uÿ¼euÿ "ì,!Ì(€L†þtÿ|-uÿ "ì,!Ìng øuAny number of IFDEF/IFNDEFs may be nested, and they may be nested inside MACRO €-DPÐ÷\Ætÿ<õtÿ "ô3!Ìdefinitions, and vice versa.D­<P‰tÿü¼tÿ "ì,!Ì" !"< ☓ !" ­TPtc+?oÿ noÿ "ì,!ÌyNEW FEATURES" !T-(PëoÿË5oÿ "ì,!Ì(-LPèö«Înÿ⇧ýnÿ "ì,!ÌVersion 3 has a number of new features:L­HPk„nÿKÅnÿ "ì,!Ì !Âe aÿÂÿH-<TÕ +^nÿ ™nÿ "ºnÉa)ñThrowback<…⇨1ë%nÿËTnÿ "ºnÉ›]7ASM now fully supports Acorn’s desktop throwback error-reporting mechanism. It is activated …-dPs«ímÿ⇧nÿ "¦Éby the use of the ‘throwback’ qualifier on the command line.d-(PkµmÿKämÿ "ºnÉ(-PTá◰+}mÿ ¬mÿ "ºnÉb)QCase-insensitive symbol namesP“−TëDmÿËsmÿ "ºnÉ]7User-defined symbols can now be (optionally) be made case-insensitive. This feature is activated “-TPÔj« mÿ⇧;mÿ "¦Éby the ‘nocase’ qualifier on the command line.T-(PkÔlÿKmÿ "ºnÉ(-PTõr+†lÿ Ëlÿ "ºnÉc)ñExtended ARM instruction setP⇦­ëclÿË‹lÿ "ºnÉxpr]7The additional instructions introduced by the ARM3, ARM6 and ARM7 series processors are ⇦☓ «+lÿ⇧Zlÿ "¦Énow supported. ASM must be informed of the architecture for which the code is targetted, using ☓☓¨ùkókÿK"lÿ "¦Éthe ‘processor <proc>’ qualifier. If this qualifier is not present, ASM assumes an ARM3 target. ☓…t+»kÿ êkÿ "¦ÉThe use of an opcode that is not available on the specified target processor will generate an error. …-LP¸flëŵkÿ˱kÿ "¦ÉThe extra instructions available are:L­HP«Jkÿ⇧ykÿ "ºnÉÿÂÂH-\UIùkkÿKAkÿ "¦xEarliestmWMnemonicDesÔlDescription\-,PXz+Újÿ     kÿ "¦xTarget,-TT=\ë¡jÿËÐjÿ "¦xARM3Ç−SWP2¢Single data swapT-ôT”Ú«ijÿ⇧—jÿ "¦xARM6—w—MRSâ Processor Status Register transfer (Register->PSR)ô-pT”Úk1jÿK`jÿ "¦x¯MSRâ Processor Status Register transfer (PSR->Register)p-`T’ø+ùiÿ (jÿ "¦xARM7v¥vUMULLUnsigned 64-bit multiply`-XTÇëÀiÿËïiÿ "¦xüÁüSMULLôŵSigned 64-bit multiplyX-lTÑ8«⇦iÿ⇧·iÿ "¦xøÝøUMLALUnsigned 64-bit multiply with accumulatel­´T]kPiÿKiÿ "¦xüÁüSMLALôŵSigned 64-bit multiply with accumulate´-(P+iÿ Giÿ "ºnÉ(‘Q<ëßhÿËiÿ "ºnÉ]7NB. The 64-bit multiply instructions only work in 32-bit modes, while RISCOS works in 26-bit ‘-“PôÚ«§hÿ⇧Öhÿ "¦Émode, which makes its use in ASM somewhat moot.“­HPkohÿKfihÿ "ºnÉÂ"  H-dP+7hÿ fhÿ "ì,!Ìd-,Q€âëþgÿË-hÿ "ì,!ÌWARNING,-(Q«Ægÿ⇧õgÿ "ì,!Ì(⇦xtk‰gÿK½gÿ "ì,!ÌASM uses the Debugger_Disassemble SWI to decode the generated opcodes for the ‘validate’ option.  ⇦…À_+Vgÿ Ŷgÿ "ô3!ÌUnfortunately, this SWI does not seem to recognise the SWP instruction, and they are all returned as ……¼›ëgÿËLgÿ "ô3!Ì“Undefined Instruction”. Users should ignore these errors, as ASM has been tested fairly extensively in …°xM«åfÿ⇧gÿ "ô3!Ìthis area, and the generated codes match with the Acorn documentation. Should you be able to shed °⇦Lk­fÿKÜfÿ "ô3!Ìanydefinitive light on this situation (ie whether the SWI or the documentation is at fault), please ⇦­€Q“[+ufÿ ¤fÿ "ô3!Ìcontact the author.""Â"  Â"! ! !"€   !" ­PPlz?bÿZnbÿ "ðì,!ÌyDIRECTIVES" !P-(P:bÿ6bÿ "ðì,!Ì(­—T⇦úÎaÿÚýaÿ "ðì,!ÌuøuThe rest of this documentation concentrates on the assembler directives provided by ASM. !—-(Pº„aÿŒÅaÿ "ðx(­PPz^aÿZ™aÿ "ðx$Â$%%Â$%P ¼Â$% ­¸TbÉ?Uÿ©nUÿ(#ð@†‡ÈyALIGN%Â$ê êîEnsures that the code pointer is on a word boundary.$Â' ' '¸­HP⇨Uÿi6Uÿ "ðì,!Ì 'Â) ) )H­\T☓§IÏTÿ)þTÿ "ðp0yFormat:HŴALIGN ) + +\-(P    –TÿéÅTÿ "ðì,!Ì(…È⇩É^Tÿ©™Tÿ "ðì,!ÌCertain DC directives (DCB, DCW, DCS) store a number of bytes that is not an exact multiple of four. ……¸y⇨&TÿiUTÿ "ðô3!ÌRESB may also reserve less than a complete number of words. It is therefore possible for a label to be ……⇦IîSÿ)Tÿ "ðô3!Ìgiven an address which is not that which is required. The use of ALIGN will bump the pointer forward …-TP    ¶SÿéäSÿ "ðô3!Ìto ensure that it is correctly word-aligned.T-(PÉ}Sÿ©¬Sÿ "ðì,!Ì(☓—÷⇨ESÿitSÿ "ðì,!ÌNB All mnemonics and all other DC operations automatically carry out an align, and labels are ☓…üSISÿ)<Sÿ "ðô3!Ìadjusted to allow for this. Thus the two code fragments below lead to different values for L1 and L2 …­`P…O    ÕRÿéSÿ "ðô3!Ì(L1 is NOT word-aligned, but L2 is aligned).es +Â`­8PɆRÿ©ËRÿ "ðx”ÿ-Â-8-LT ÷⇨dRÿi›Rÿ "ðèg¥Ï1)¬)”ÿXDCBÀ0L-4TÔ’I,Rÿ)[Rÿ "ðèg¥Ïu¸PL1:4-PT P    ôQÿé"Rÿ "ðèg¥Ï, o¸Pe (XBlaÜZThargP-(PÉ»Qÿ©êQÿ "ðèg¥Ï(-LT ÷⇨◰Qÿi²Qÿ "ðèg¥Ï2)n¬)o iXDCBÀ0L­\T PIKQÿ)zQÿ "ðèg¥ÏÀt¸PL2:<ÔBÜZTharg -Â\­8P    QÿéAQÿ "ðxl  / /8­‘P°0ÉÚPÿ©    Qÿ "ðì,!ÌIf code fragment 1 had an ALIGN directive after the DCB, L1 and L2 would have the same value.h /‘­8P⇨¢PÿiÑPÿ "ðx›ÿ 1 18-8T☓§IjPÿ)−Pÿ "ðp0yegb|éALIGN8-(P    2Pÿé`Pÿ "ðp0y(­PT☓ãÉùOÿ©(Pÿ "ðp0ySee Also: 3À`DC, RESB o 1ÂP­|P⇨ÁOÿiðOÿ "ðxa3Â3d $4Â34b›ÿ3Â4Ì6Â46| XÂ46 ­☓Tx@HÿønHÿ(#ð@†‡ÈyAREAY›ÿ4Â6|ÿInstructs ASM to start a new area.6Â☓­8PØHÿ¸6Hÿ "ðxnd 8 88­€T—ÏGÿxþGÿ "ðp0yFormat:HŴAREAÌD−<areaname>,<attributes>, 8 : :€-(PX–Gÿ8ÆGÿ "ðì,!Ì(⇦¨h_Gÿø™Gÿ "ðì,!ÌThe areaname parameter is any legal ASM identifier. The attributes parameter(s) must specify one of ⇦­pP☓®Ø&Gÿ¸UGÿ "ðô3!ÌCODE or DATA. READONLY may be specified.e  :Âe o<Â<p-(P—îFÿxGÿ "ðèg¥Ï(­|Tð”X¶Fÿ8åFÿ "ðèg¥Ïeg x$AREAed À”ASM$$Code,Code,ReadOnlyce <Âpai > >|-(P~Fÿø¬Fÿ "ðì,!Ì(⇦☓tØEFÿ¸tFÿ "ðì,!ÌNote that an AREA statement must precede any mnemonics or directives that cause data to be written ⇦-4PôΗFÿx<Fÿ "ðô3!Ìto the area.4-(PXÕEÿ8Fÿ "ðì,!Ì(☓°c‡EÿøËEÿ "ðì,!ÌLater versions of ASM may support additional AOF area types (eg Zero-Initialized, Common Block, ☓­`P@ØdEÿ¸›Eÿ "ðô3!ÌCommon Block Reference). >Âôm @ @`-(P—,Eÿx[Eÿ "ðì,!Ì(­HTê·XôDÿ8#Eÿ "ðì,!ÌSee Also:î•ÿ @ÂH-(P¼DÿøêDÿ "ðx(­PPØ◰Dÿ¸²Dÿ "ðxnBÂBPCÂBCP ôÂBC ­…T°,g@;ÿGo;ÿ(#ð@†‡ÈyDCCÂB—@Store a constant value.<B¼‰ÿ E E…-(P';ÿ7;ÿ "ðp0y(­lT8½çÏ:ÿÇþ:ÿ "ðp0yFormat:HŴDC<type>g(R<value>[,<value>....] EÂl­8P§–:ÿÆ:ÿ "ðxË G G8‘äfig_:ÿG‰:ÿ "ðì,!ÌThe <type> is one or two characters that define the type of the constant being stored, and hence the type ‘­HP|'':ÿV:ÿ "ðô3!Ìexpected of <value>H¹ÿ GÂH­8Pçî9ÿÇ:ÿ "ðxIÂI8­dThQ§¶9ÿå9ÿ "ðp­y<type>½Type of ValueÿIÂÌKÂKd-8T¬Ug~9ÿG­9ÿ "ðtï‡ÈBseÜÝByte8€X€'F9ÿu9ÿ "ðtï‡ÈWàÐWord. Actually this is a 16-bit value (ie a half-word). This letter is used for €-TPüÉç9ÿÇ<9ÿ "ð“ì‡Èconsistency with the BASIC assembler and AASM.T-dTp¦§Õ8ÿ9ÿ "ðtï‡ÈD
  41702. HÛDouble Word. Actually a 32-bit value. See above.d-TTô—g‡8ÿGÌ8ÿ "ðtï‡ÈQHÛQuad Word. A 64-bit integer value.T-|T4³'e8ÿ“8ÿ "ðtï‡ÈSo ãString. (NB C programmers: this is NOT zero-terminated - use DCSZ below).|-HTð¯ç,8ÿÇ[8ÿ "ðtï‡ÈSZlÆZero-terminated string.H-PT:§ô7ÿ#8ÿ "ðtï‡ÈFSÉSingle-precision floating pointP-PT8Lg¼7ÿGë7ÿ "ðtï‡ÈFD8ÁDouble-precision floating pointP-TTDs'☓7ÿ³7ÿ "ðtï‡ÈFEðlÆExtended-precision floating pointT­…TÜ−çK7ÿÇz7ÿ "ðtï‡ÈFPÉPacked KÂgMÂMfloating point.02MÂ+ŷÿOÂO…-4T¸P§7ÿB7ÿ "ðèg¥Ïg¸P4-@T¨¾gÛ6ÿG
  41703. 7ÿ "ðèg¥Ïegzx$DCBø´&FF@-LTä]'£6ÿÒ6ÿ "ðèg¥ÏϸPDCS,º"Hello there"L-PTiçj6ÿÇ−6ÿ "ðèg¥Ï,#0¸PDCSZ⇦}⇦‡“Hello again”P­tTDâ§26ÿa6ÿ "ðèg¥Ï¸PDCFEŶÿ⇦‡12.32E12, 3.141592O Q Qt-(Pgú5ÿG)6ÿ "ðì,!Ì(…X|'Â5ÿñ5ÿ "ðì,!ÌThe use of DCD allows addresses to be stored, and hence the address of Far symbols to be loaded into …­<PØ«ç⇨5ÿǸ5ÿ "ðô3!Ìregisters: QÂ<­8P§Q5ÿ€5ÿ "ðxr,SÂS8-LT….g5ÿGH5ÿ "ðèg¥Ï(¸PIMPORTð@dmyaddressL-4T`'á4ÿ5ÿ "ðèg¥Ï(¸Petc4-DTÈûç¨4ÿÇ×4ÿ "ðèg¥Ïara¸PLDR—·R1,addrD-4T`§p4ÿfl4ÿ "ðèg¥Ï~◰ÿ¸Petc4­lT….g84ÿGg4ÿ "ðèg¥Ïaddr: tdðDCDd²myaddressrSÂx U Ul-(P'4ÿ/4ÿ "ðì,!Ì(⇦ômçÇ3ÿÇö3ÿ "ðì,!ÌWhere a DCD is used that is interpreted as an address, ASM will automatically generate any required ⇦­TPhÙ§•3ÿ¾3ÿ "ðô3!Ìrelocations. U W WT-(PgW3ÿGŷ3ÿ "ðp0y(­|T¼'3ÿN3ÿ "ðp0ySee Also:À`EQU, RESB WÂÿ~Â~ÏÂ~| ‘Â~ ­¬TL ¶@.ÿ„o.ÿ(#ð@†‡ÈyELSE(Â~"ðl Part of IF/ELSE/ENDIF conditional assembly structure.~¤N Ŵ Ŵ¬­HPv.ÿV7.ÿ "ðì,!Ì ŴÂP ◰ ◰H-<T¸Ŷ6Ð-ÿÿ-ÿ "ðp0yFormat:HŴELSE<­HPö–-ÿÖÆ-ÿ "ðp0y ◰Â\ Ŷ ŶH…0”¶_-ÿ„‰-ÿ "ðì,!ÌELSE negates the current condition flag. See the section on Conditional Assembly for details of the use …-@PØŶv'-ÿVV-ÿ "ðô3!Ìof IFDEF/IFNDEF/ELSE/ENDIF.@­HP6ï,ÿ-ÿ "ðì,!Ì d ŶÂ`ÂH­XT´Àö¶,ÿÖå,ÿ "ðèg¥Ïegdx$ELSEasÂd. ⇨ ⇨X­HP¶~,ÿ„­,ÿ "ðì,!Ì{ÿ ⇨Â, ⇧ ⇧H­°TäôvF,ÿVu,ÿ "ðp0ySee Also:y À`IFDEF, IFNDEF, ENDIFg i ⇧Â… ™ ™ð ™ÂFND••d f‘•‘° ,•‘ ­¬TL A!ÿåo!ÿ(#ð@†‡ÈyENDIF‘•e, tòPart of IF/ELSE/ENDIF conditional assembly structure.y•Â‘ ‹ ‹¬­HPÅ!ÿ¥7!ÿ "ðì,!Ìly ‹Âted “ “H­\T¼flŶРÿeÿ ÿ "ðp0yFormat:HŴENDIFð “  „ „\-(PE— ÿ%Ç ÿ "ðì,!Ì(€ Û` ÿ剠ÿ "ðì,!ÌENDIF terminates the current conditional assembly statement. See the section on Conditional €-`P☓×Å' ÿ¥V ÿ "ðô3!ÌAssembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.`­HPŶïÿe ÿ "ðì,!Ì „Âéxÿ——H-8T¸ÚE·ÿ%æÿ "ðèg¥Ïegx$ENDIF8­HPÿå­ÿ "ðèg¥Ï—ÂL Œ ŒH­…TàÚÅFÿ¥uÿ "ðp0ySee Also:02À`IFDEF, IFNDEF, ELSE ŒÂP††Hel‡†‡… È†‡ ­¨TpTAÿ4pÿ(#ð@†‡ÈyENDMLIG‡†iwÿõPart of a MACRO/ENDM macro definition structure.†ÂP fl fl¨­HP    ÿô7ÿ "ðì,!Ì flÂ! ¡ ¡H-<T¼flÔÐÿ´ÿÿ "ðp0yFormat:HŴENDM<­HP“—ÿtÇÿ "ðp0y b ¡ÂDEF £ £H⇦2T`ÿ4•ÿ "ðì,!ÌENDM terminates the current macro definition. See the section on Macros for details of the use of ⇦-0P¤N(ÿôVÿ "ðô3!ÌMACRO/ENDM.0­HPÔïÿ´ÿ "ðì,!Ìay £Âcod¥Â¥H-8T¸Ú“·ÿtæÿ "ðèg¥Ïegx$ENDM8­HPTÿ4®ÿ "ðèg¥Ïð¥Â § §H­—T ÁGÿôuÿ "ðp0ySee Also:thÀ`MACRO §6uÿ §ÂÂ(YÂY"ðZÂYZ— dÂYZ ­ TTf£Aÿ◰pÿ(#ð@†‡ÈyENTRYðZÂYiti8àDefine the entry address for a program.YÂ" \ \ -(Pc    ÿC8ÿ "ðp0y(­pT☓í#Ñÿÿ "ðp0yFormat:HŴENTRYW  |<symbol> \ÂT ^ ^p-(Pã—ÿÃÇÿ "ðì,!Ì(‘Ðy£`ÿ◰•ÿ "ðì,!ÌThe linker requires that one and only one of the object files given to it contain an entry address; this is ‘⇦€c(ÿCWÿ "ðô3!Ìthe location that will be called when the linked program is run. The ENTRY directive specifies a ⇦­⇦P“µ#ðÿÿ "ðô3!Ì(Local or Global) symbol which will be used for the entry point.‘t ^Âlif`Â`⇦-(Pã·ÿÃæÿ "ðèg¥Ï(­hT†¾£ÿ◰®ÿ "ðèg¥Ïegx$ENTRYyStarti`Âame b bh-(PcGÿCvÿ "ðì,!Ì(⇦¬#ÿ>ÿ "ðì,!ÌNote, however, that there is an extensive quantity of code required to set up application memory ⇦‘‘⇨ãÖÿÃÿ "ðô3!Ìconstraints etc, during program initialization, which is outside the scope of this documentation; for this ‘⇦⇦I£fiÿ◰Íÿ "ðô3!Ìreason, the author does not advocate the use of the ENTRY directive unless you know exactly what ⇦…XscfÿC”ÿ "ðô3!Ìyou are doing; it is much easier to use C for the majority of an application, and just program the time-…-<P8„#.ÿ]ÿ "ðô3!Ìcritical parts in ASM.<-(PãõÿÃ$ÿ "ðì,!Ì(­äTê·£½ÿ◰ìÿ "ðì,!ÌSee Also:î»kÿ bÂ~Â~truÂ~Â~±kÿ~ÉÂeeÂddeIùÂÂdeä !Âde ­…T°,òAúþÒpúþ(#ð@†‡ÈyEQUeÂd™ç´Store a constant value.†dÂta  g g…-(P²    úþ‹8úþ "ðp0y(­€T8½rÑùþRúþ "ðp0yFormat:HŴEQU<type>ð2<value>[,<value>....]7 gÂult i i€-(P2−ùþÈùþ "ðì,!Ì(⇦rò`ùþÒ•ùþ "ðì,!ÌEQU is a synonym for DC, and works in exactly the same way. It is supported simply for consistency ⇦­`P²(ùþ‹Wùþ "ðô3!Ìwith the BASIC assembler. iÂbÿkÂk`-(PrðøþRùþ "ðèg¥Ï(­dTð“2¸øþçøþ "ðèg¥Ïegnx$EQUBtraÀ”12kÂcti m md-(PòøþÒ®øþ "ðp0y(­ìT☓ã²Gøþ‹vøþ "ðp0ySee Also:À`DC, RESB mÂ~Â~PÂ~Â~~?UÿppoopÂÂÂopì †"Âop ­—TÜABíþ!qíþ(#ð@†‡ÈyEXPORTpÂoôÀGives a local symbol global scope.oÂÏTÿ r r—­HP
  41704. íþá8íþ "ðì,!Ì rÂ+ t tH-LT—¾ÁÑìþ¡íþ "ðp0yFormat:HŴEXPORT‘b<label>L­HPŴ−ìþaÈìþ "ðp0yer tÂt i v vH…ð5Aaìþ!‘ìþ "ðì,!ÌBy default, all labels used in an ASM source file are local, and hence other source files cannot call …-…PT;)ìþáWìþ "ðô3!Ìlocally-defined routines. The EXPORT directive gives the linker visibility over the specified label.…-(PÁðëþ¡ìþ "ðì,!Ì(⇦ðqŴ¸ëþaçëþ "ðì,!ÌNote that the EXPORT directive and the defining point of the label may appear in either order - ASM ⇦-8P(7A€ëþ!¯ëþ "ðô3!Ìwill accept both.8­HPHëþávëþ "ðì,!Ìar vÂüSxÂxH-HTèÁëþ¡>ëþ "ðèg¥Ïegsx$EXPORTr _ADD_64H­HPŴ×êþaëþ "ðèg¥ÏxÂÕRÿ z zH­ TÔÆAflêþ!Îêþ "ðp0ySee Also:).À`IMPORT z†Rÿ~Â~Â~8Â~"ð~)it o § §Â §’ §Â©©ª©ª  8$©ª ­¬TL ‘Bàþpqàþ(#ð@†‡ÈyIFDEFª©"ð¨÷Part of IF/ELSE/ENDIF conditional assembly structure.©Â ¬ ¬¬­HPP
  41705. àþ09àþ "ðì,!Ì ¬Â8 ® ®H-LT\¬Òßþðàþ "ðp0yFormat:HŴIFDEF¤„<flag>L­HPÐ−ßþ°Èßþ "ðp0yr  ®Ând  ° °H☓†ê‘aßþp‘ßþ "ðì,!ÌThe flag parameter is any legal ASM identifier. Note that although it follows the same naming ☓…☓VP)ßþ0Xßþ "ðô3!Ìconventions, such a flag cannot be used in any expression evaluation, for example as an integer. See …-|P¼ÐñÞþðßþ "ðô3!Ìthe section on Conditional Assembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.|­HPиÞþ°çÞþ "ðì,!Ì °ÂnHÿ²Â²H-HTã‘€Þþp¯Þþ "ðèg¥Ïegx$IFDEFct ›DebugH­HPPHÞþ0wÞþ "ðèg¥ÏHÿ²Â ´ ´H­⇦T¨âÞþð>Þþ "ðp0ySee Also:rmÀ`IFNDEF, ELSE, ENDIFare ´Âut¶¶·¶·⇦ Ô%¶· ­…TL ßBÓþ¿qÓþ(#ð@†‡ÈyIFNDEFn·¶ifiÐÕPart of IF/ELSE/ENDIF conditional assembly structure.…­HPfl
  41706. Óþ9Óþ "ð@†‡ÈRE¶Â sp ¹ ¹H-LT\¬_ÒÒþ?Óþ "ðp0yFormat:HŴIFNDEFÌt<flag>L­HPŒÒþÿÈÒþ "ðp0y ¹Â » »H☓€*ßaÒþ¿‘Òþ "ðì,!ÌIFNDEF acts exactly as an IFDEF, but with the condition negated. See the section on Conditional ☓-`P☓×fl)ÒþXÒþ "ðô3!ÌAssembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.`­HP_ñÑþ? Òþ "ðì,!Ìa. »Â½Â½H-HT@¹ÑþÿçÑþ "ðèg¥Ïegx$IFNDEFeHqVerboseH­HP߀Ñþ¿¯Ñþ "ðèg¥Ïg ½Âzed ¿ ¿H­☓TÐÀflHÑþwÑþ "ðp0ySee Also:ckÀ`IFDEF, ELSE, ENDIF ¿Â@ÁÂÁEÿÂÂÁÂ☓ p'ÂÁ ­‘Tìù.CÆþrÆþ(#ð@†‡ÈyIMPORTÂÂÁP“ÃDeclares the name of a symbol defined in a separate module.‘­HPî
  41707. ÆþÎ9Æþ "ð@†‡ÈÁ  Ä ÄH-PT☓í®ÒÅþ‰Æþ "ðp0yFormat:HŴIMPORTÄg<symbol>P­HPnŒÅþNÉÅþ "ðp0y ÄÂ;ÿ Æ ÆH⇦pŒ.bÅþ’Åþ "ðì,!ÌIMPORT informs ASM that the specified symbol needs to be visible to the current module (ie the name ⇦… Qî)ÅþÎXÅþ "ðô3!Ìis referenced somewhere in the current source file). The symbol can then be used as a (Far) address, ……Px®ñÄþ‰ Åþ "ðô3!Ìand any references to it will be handled by the linker. The IMPORT directive may be placed before or …-☓PX¤n¹ÄþNèÄþ "ðô3!Ìafter the symbol is first used (although it is normal to declare the symbol before it is used).☓­HP.ŴÄþ°Äþ "ðì,!Ì ÆÂ8ÈÂÈH-PTô_îHÄþÎwÄþ "ðèg¥Ïeglx$IMPORT-@dErrorHandlerP-(P®Äþ‰?Äþ "ðèg¥Ï(­lTô_nØÃþNÄþ "ðèg¥Ïith¸PB aöErrorHandlerÈÂ9ÿ Ê Êl­HP. ÃþÏÃþ "ðì,!Ì-b Ê ab Ì ÌH­xTÌîgÃþ΄Ãþ "ðp0ySee Also:orÀ`EXPORT ÌÂTÎÂÎðÏÂÎÏx  )ÂÎÏ ­‘TÏ}C¹þ]r¹þ(#ð@†‡ÈyINCLUDEÏÂÎÆ$¬Directs ASM to include another file in the current module.‘­HP= ¹þ:¹þ "ð@†‡Ètμ7ÿ Ñ ÑH-PT|ýÒ¸þݹþ "ðp0yFormat:HŴINCLUDE,K<filename>P­HP½Œ¸þ‡É¸þ "ðp0yat ÑÂT Ó ÓH⇦<b}b¸þ]’¸þ "ðì,!ÌThe INCLUDE directive causes ASM to begin reading source text from the specified file. When that ⇦-`PÄ4=*¸þY¸þ "ðô3!Ìfile is exhausted, ASM will continue with the calling file.`-(Pýñ·þÝ ¸þ "ðì,!Ì(…0A½¹·þ‡è·þ "ðì,!ÌThe <filename> parameter must be specified as a quoted string. If no directory specification exists, ……Ì}}Ŵ·þ]°·þ "ðô3!ÌASM will look in subdirectory 'I' for the file. For compatibility with C, ASM will accept a filename of …-LPü=I·þx·þ "ðô3!Ìthe form "FRED.I" as meaning "I.FRED".L-(Pý·þÝ?·þ "ðì,!Ì(…Ì_½Ø¶þ‡·þ "ðì,!ÌThe -Include option on the ASM command allows the specification of a path list for the given file; if …“Ô›} ¶þ]϶þ "ðô3!Ìthe file is not found locally, then each path will be checked in order. Only if the file is not found on any “-DPÐ<=h¶þ–¶þ "ðô3!Ìpath will ASM report an error.D-(Pý/¶þÝ^¶þ "ðì,!Ì(-`P\x½÷µþ‡&¶þ "ðì,!ÌNB The use of INCLUDE is forbidden in a macro definition.`­HP}¿µþ]îµþ "ðì,!Ì ÓÂÇ3ÿÕÂÕH-PTøj=µþ¶µþ "ðèg¥Ïegex$INCLUDE¨G"UtilityHdr.I"P­HPýNµþÝ}µþ "ðèg¥Ï3ÿÕÂ3 × ×H­hPü´½µþ‡Eµþ "ðp0ySee Also: ×ÂÙÂÙ|ÚÂÙÚh ¨*ÂÙÚ ­¤T⇦OÌC¬þ¬r¬þ(#ð@†‡ÈyMACROÚÂÙÎPart of MACRO/ENDM macro definition structure.ÙÂLSE ܠܤ­HP… ¬þl:¬þ "ðì,!Ìco ÜÂemb Þ ÞH-dT°‹LÓ«þ,¬þ "ðp0yFormat:HŴMACROøl<macroname>[,<parameterlist>]d­HP œ«þìÉ«þ "ðp0y Þ à àH€…ýÌb«þ¬’«þ "ðì,!ÌMACRO begins the definition of a new macro. <macroname> can be any legal ASM identifier. €⇦Pu…*«þlY«þ "ðô3!Ì<parameterlist> is a comma-separated list of formal parameter names, which will be substituted when ⇦‘⇦pLòªþ,!«þ "ðô3!Ìthe macro is instantiated. The actual parameters may be of any type (string, integer, float etc). See the ‘-\PDo ºªþìèªþ "ðô3!Ìsection on Macros for details of the use of MACRO/ENDM.\­HPÌŴªþ¬°ªþ "ðì,!Ìe  àÂâÂâH­xT€…Iªþlxªþ "ðèg¥Ïegx$MACROtiERROR,errnum,errtextâ ä äx-(PLªþ,@ªþ "ðì,!Ì(…Èl Ù©þìªþ "ðì,!ÌA Macro is instantiated by using its name as if it were a mnemonic, and passing values for the formal …-0P\ÙÌ ©þ¬Ï©þ "ðô3!Ìparameters.0­HP…h©þl–©þ "ðì,!Ì äÂ\æÂæH-\T +L0©þ,_©þ "ðèg¥Ïegx$ERRORy&901,"This is an error" \­HP ø¨þì&©þ "ðèg¥ÏðæÂNDI è èH­xT¼flÌ¿¨þ¬î¨þ "ðp0ySee Also:heÀ`ENDMnd èÂêÂêëÂêëx D,Âêë ­¤TÔÜDflþûrflþ(#ð@†‡ÈyRESBëÂêHØ    Reserve a (zero-initialized) block of memory.ê­ÿ í í¤­HPÛ flþ»:flþ "ðì,!Ì íÂuÿ ï ïH-PT¨ØœÓfiþ{flþ "ðp0yFormat:HŴRESBas  £<length>P­HP[œfiþ;Êfiþ "ðp0y ï ñ ñH…¨tcfiþû’fiþ "ðì,!ÌThe RESB directive instructs ASM to increment the code pointer by the specified length; the block of ……hWÛ*fiþ»Yfiþ "ðô3!Ìmemory so reserved will be filled with zeros. Note that <length> is specified in bytes, and hence the …-pP´|œò‡þ{!fiþ "ðô3!Ìcode pointer may not be word-aligned after executing the RESB operation.p-(P[º‡þ;é‡þ "ðì,!Ì(-☓P—ŵ‡þû°‡þ "ðì,!ÌRESB is generally used where a large buffer is required, to save the use of many DC directives.☓­HPÛI‡þ»x‡þ "ðì,!Ì ñÂÂóÂóH-DT`¬œ‡þ{@‡þ "ðèg¥Ïegx$RESBH 128D­HP[Ù†þ;‡þ "ðèg¥ÏóÂH õ õH­\T†Î¡†þûφþ "ðp0ySee Also:À`DC, EQU õÂÂ\-(P a†þ»–†þÐ'ðx(yV4masking))
  41708.                         *crc ^= CRC16_POLYNOMIAL;
  41709.         }
  41710.         *crc &= 0xffff;
  41711. }
  41712.  
  41713. /*****************************************************************************
  41714. *
  41715. *  End of CRC error protection package
  41716. *
  41717. *****************************************************************************/
  41718.  
  41719.                             changing the buffer pointer                   */
  41720. /*put1bit(); write 1 bit from the bit stream  */
  41721. /*put1bit(); write 1 bit from the bit stream  */
  41722. /*putbits(); write N bits from the bit stream */
  41723. /*byte_ali_putbits(); write byte aligned the next N bits into the bit stream*/
  41724. /*unsigned long sstell(); return the current bit stream length (in bits)    */
  41725. /*int end_bs(); return 1 if the end of bit stream reached otherwise 0       */
  41726. /*int seek_sync(); return 1 if a sync word was found in the bit stream      */
  41727. /*                 otherwise returns 0                                      */
  41728.  
  41729. /* refill the buffer from the input device when the buffeINTRODUCTION
  41730. ~~~~~~~~~~~~
  41731.         ASM is a (mostly) full function assembler for the Archimedes and A3000 machines,
  41732. producing an AOF (Acorn Object Format) file suitable for use with the linker.
  41733.  
  41734.         To install ASM, simply move the file "ASM" into your Library directory.
  41735.  
  41736.         To assemble a file, use the command:
  41737.  
  41738.         ASM [options] <sourcefile>
  41739.  
  41740.         where <sourcefile> is the name of the file to be assembled. If no directory is specified,
  41741. ASM will look for the source file in sub-directory A. For compatibility with C, the filename
  41742. "SOURCE.A" is taken to refer to "A.SOURCE". The output will have the same leaf name as the
  41743. sourcefile, and be stored in sub-directory O.
  41744.  
  41745.         Options are used to modify the standard behaviour of the assembler, and are introduced by
  41746. a hyphen, the option name, and any allowed parameters. So long as enough letters of the option
  41747. name are given to preclude ambiguity, any number of letters may be given; all options are case-
  41748. insensitive. In the list of options below, the upper case part of the name indicates the minimum
  41749. that can be specified to preclude ambiguity.
  41750.  
  41751. Option  Effect
  41752.  
  41753. -Output <filename>      The assembled code is written to <filename> rather than the
  41754.                         default. If no directory is given, subdirectory O is assumed.
  41755.  
  41756. -List [<filename>]      An assembler listing is produced. If no filename is given, the
  41757.                         file is given the same name as the sourcefile. By default, the
  41758.                         file is produced in subdirectory L.
  41759.  
  41760. -Hex                    Include the generated hex code in the -List file. If -List is
  41761.                         not explicitly specified, this option implies it.
  41762.  
  41763. -Include <pathlist>     Specifies a search path for use in the 'INCLUDE' directive (qv).
  41764.                         <pathlist> is a comma-separated list of directories (or RISCOS
  41765.                         symbols) to be searched for the file.
  41766.  
  41767.                         This is a slight deviation from the method use by the C compiler,
  41768.                         which allows the -I option (which serves the same purpose) to be
  41769.                         specified several times, each of which extended the search list.
  41770.                         ASM only allows a single use of -Include, where all the paths are
  41771.                         specified at once.
  41772.  
  41773. -VErbose                Output informational messages describing the current phase of assembly.
  41774.  
  41775. -VAlidate               The List file produced contains a disassembly of the generated code
  41776.                         rather than the source code. It is not anticipated that users will
  41777.                         make much use of this. As for -Hex, -VAlidate implies -List.
  41778.  
  41779. -Flags <flaglist>       Defines a number of flags to be set before beginning the assembly, for
  41780.                         use in the IFDEF/IFNDEF directives. <flaglist> is a comma-separated
  41781.                         list of flag names. Note that these flags are NOT assembler symbols,
  41782.                         and cannot be used as such - they are only recognized by IFDEF and
  41783.                         IFNDEF.
  41784.  
  41785. -Nocase                 Forces ASM to use case-insensitive name matching for user-defined
  41786.                         symbols.
  41787.  
  41788. -Throwback              Enables the Acorn desktop throwback error-reporting mechanism.
  41789.  
  41790. -Processor <CPU>        Specifies the target processor. This constrains which of the extended
  41791.                         instruction set operations are available. Legal values for <CPU> are:
  41792.                                 ARM2, ARM3, ARM6 and ARM7.
  41793.                         (StrongARM will be coming when I discover what additional opcodes, if
  41794.                         any, are available).
  41795.  
  41796. -Help                   Produce brief help text for the ASM syntax and options.
  41797.  
  41798.  
  41799. Examples
  41800.  
  41801.         ASM tharg
  41802.  
  41803.         will assemble the code in A.tharg and produce an object file O.tharg
  41804.  
  41805.         ASM -hex -flags debug,check -include <C$UserLibRoot>,<ASM$MylibRoot> eric
  41806.  
  41807.         will assemble the file A.eric and produce an object file O.eric; a listing file called
  41808.         L.eric will be produced containing the hex code generated. Any 'INCLUDE' statements will
  41809.         look in directories <C$UserLibRoot> and <ASM$MylibRoot> for the include files. Finally,
  41810.         the conditional assembly flags debug and check will be treated as set.
  41811.  
  41812.  
  41813. SOURCE FORMAT
  41814. ~~~~~~~~~~~~~
  41815.         It is assumed that the user is fully familiar with ARM assembly language (what are you
  41816. doing with ASM if you aren't?) and therefore this note contains no tutorial-type introduction;
  41817. only the differences between the ASM format and that in use in the BASIC assembler are detailed.
  41818.  
  41819.         It is recommended that users of ASM be familiar with the "RISCOS Programmer's Reference
  41820. Manual" (especially those sections on the linker and Acorn Procedure Calling Standard) and Peter
  41821. Cockerell's "ARM Assembly Language Programming".
  41822.  
  41823.         Throughout, mnemonics and their options follow the de facto standard, that in Cockerell's
  41824. book. For certain FP coprocessor instructions this differs slightly from that used by the
  41825. disassembler (SWI "Debugger_Disassemble"), which seems to contain a bug anyway.
  41826.  
  41827.         The general format of a line is:
  41828.  
  41829.         [<label-part>]  [<mnemonic-part>]  [<comment-part>]
  41830.  
  41831.         Any or all of these parts are optional. Unlike the BASIC assembler, there is no facility
  41832. to put multiple mnemonics on a single line by separating them with a colon.
  41833.  
  41834. <label-part>    A label is any legal ASM Symbol (see below), terminated by a colon.
  41835.  
  41836. <mnemonic-part> This part is any ARM instruction mnemonic (eg ADDS, STMFD), generic coprocessor
  41837.                 mnemonic (eg MCR, CDPEQ), or any Floating Point coprocessor mnemonic (eg MUFD,
  41838.                 FIXS), plus any associated parameters.
  41839.                 Alternatively, this could be the ADR pseudo-operation, or any ASM directive
  41840.                 (eg IFDEF, MACRO).
  41841.  
  41842. <comment-part>  A comment is introduced by a semi-colon. Any text following a semi-colon on a
  41843.                 line is ignored.
  41844.  
  41845. In addition to the above format, ASM will also accept constant definitions of the form:
  41846.  
  41847.         <label> = <constant-expression>
  41848. and     <label> = <register-expression>
  41849.  
  41850. where <label> is a legal ASM identifier (without the colon this time),  <constant-expression>
  41851. evaluates to an integer, and <register-expression> is one of the built-in register symbols
  41852. (see “Symbols in ASM” below).
  41853.  
  41854. The following code fragment demonstrates both possible formats (it actually performs a 64-bit
  41855. integer addition):
  41856.  
  41857.         result = 0
  41858.         lhs = result + 1
  41859.         rhs = lhs + 2
  41860.         
  41861.                 EXPORT  Long_Add        ; Make the function external
  41862. Long_Add:       STMFD   sp!,{lhs ,lhs+1,link}
  41863.                 ADDS    lhs,lhs,rhs
  41864.                 ADCS    lhs+1,lhs+1,rhs+1
  41865.                 BVS     overflow
  41866.                 STMIA   result,{lhs ,lhs+1}
  41867.                 LDMFD   sp!,{lhs ,lhs+1,pc}^
  41868. overflow:       ADR     R0,oflerr
  41869.                 SWI     "OS_GenerateError"
  41870. oflerr:         DCD     &901
  41871.                 DCS     "Arithmetic overflow"
  41872.                 DCB     0
  41873.                 ALIGN
  41874.  
  41875.                 etc
  41876.  
  41877.  
  41878. Symbols in ASM
  41879. ~~~~~~~~~~~~~~
  41880.         Symbols (Identifier names) in ASM may contain the following characters: A-Z, a-z, 0-9,
  41881. underscore (_) and dollar ($). These may be in any order, with the exception that an identifier
  41882. cannot begin with a digit.
  41883.  
  41884.         There are several classes of identifiers in ASM :
  41885.  
  41886. Constants       Constants are defined by the use of the <constant> = <expression> format. The
  41887.                 expression must evaluate to an integer, and may contain other constants. For
  41888.                 example, the symbol "result" in the example above is a constant.
  41889.  
  41890. Local Symbols   A local symbol is a label. The symbols "overflow" and "oflerr" in the example
  41891.                 above are local symbols. Local symbols may be either "Close" or "Far": see below.
  41892.  
  41893. Global Symbols  A global symbol is similar to a local symbol, but one that has been made
  41894.                 externally visible at the link stage by the use of the EXPORT directive. Global
  41895.                 Symbols may be "Close" or "Far".
  41896.  
  41897. Externals       An external symbol is similar to a label, but is not defined within this assembly
  41898.                 unit. It is introduced by the IMPORT directive. References to External symbols
  41899.                 must be resolved by the linker. External Symbols are always "Far".
  41900.  
  41901. User-defined symbols are case-sensitive (ie "SYMBOL" is not the same as "symbol") unless the
  41902. -nocase qualifier has been specified on the command line.
  41903.  
  41904. In addition to the above user-defined symbols, ASM provides a set of built-in symbols of special
  41905. types, which are case-insensitive. These symbols refer specifically to registers, either in the
  41906. ARM itself or in the FP coprocessor.
  41907.  
  41908. These built-in symbols are:
  41909.  
  41910. r0-r15  ARM registers 0 to 15.
  41911. sp      Stack Pointer. Set to R13.
  41912. link    Link register (R14).
  41913. pc      Program Counter/Status register (R15).
  41914. f0-f7   FP Coprocessor register 0 to 7.
  41915.  
  41916. a1-a4   )
  41917. v1-v6   )
  41918. ip      )  These are defined as part of the Acorn Procedure Calling Standard.
  41919. fp      )  ASM binds them to their RISCOS values (APCS-R).
  41920. sp      )
  41921. lr      )
  41922. pc      )
  41923.  
  41924.         ASM tries to be as flexible as possible with its parsing: where a mnemonic requires an
  41925. ARM register name, ASM will accept any of the register constants above (except the FP register
  41926. f0-f7) OR an integer expression which evaluates to a number in the range 0-15. Where a FP
  41927. coprocessor register is required, ASM will accept the register symbols f0-f7, or an integer
  41928. expression which evaluates to a number in the range 0-7. However, if a constant is required, ASM
  41929. will reject the use of any of the register symbols.
  41930.  
  41931.  
  41932. Areas
  41933. ~~~~~
  41934.         When the linker is combining several AOF files, it does so on the basis of "Areas". An
  41935. area is a named chunk of contiguous memory with associated attributes (eg area contains code,
  41936. area contains data, area is readonly etc) (See the AREA directive). ASM allows multiple areas to
  41937. be created in a single source file, but the ordering of areas in the final executable image is
  41938. wholly the responsibility of the linker. This leads to the concept of Close and Far symbols.
  41939.  
  41940. Close and Far Symbols
  41941. ~~~~~~~~~~~~~~~~~~~~~
  41942.         While some ARM mnemonics allow access to the entire 26-bit address space (eg BL A_Sub)
  41943.         others allow only a restricted window into the address space (eg PC-relative addressing,
  41944.         such as LDR R0,Tharg). Where the entire address space is legal, ASM will accept either a
  41945.         symbol which is close to the the instruction or one that is far away. Where only a
  41946.         restricted address space is available, ASM will accept only a close symbol.
  41947.  
  41948.         ASM regards a symbol as "Close" if and only if it is a local or global symbol, AND ITS
  41949.         DEFINING POINT IS IN THE SAME AREA AS THE INSTRUCTION THAT REFERENCES IT. All other
  41950.         symbols are "Far".
  41951.  
  41952.         For example :
  41953.         AREA    ASM$$CodeA,Code
  41954. Y:      etc
  41955.         AREA    ASM$$CodeB,Code,ReadOnly
  41956.         etc
  41957.         BL      X       ; Legal.
  41958.         BL      Y       ; Legal. Y is Far, but allowed.
  41959.         ADR     R0,X    ; Legal. X is Close
  41960.         LDR     R0,Y    ; Illegal. Y is Far & address space not available
  41961.         etc
  41962. X:      MOV     r0,r1
  41963.         etc
  41964.  
  41965.         The user need not particularly worry about close and far symbols; ASM handles this
  41966. automatically. It is included in this documentation simply to explain the cause of the error
  41967. "Local Symbol Expected" that the above code fragment will generate, despite the fact the the
  41968. symbol 'Y' is defined locally.
  41969.  
  41970.  
  41971. Other Exotica
  41972. ~~~~~~~~~~~~~
  41973.         Where a PC-relative address is allowed, ASM supports an additional syntax, as in:
  41974.  
  41975.         B       *+12
  41976. or      LDR     R4,*+8
  41977.  
  41978.         In this notation, the asterisk * means "the address of the current instruction" (Not the
  41979. PC - allowing for pipelining, the PC will be at *+8). ASM resolves this as a PC-relative address.
  41980. Its use is not particularly recommended, as local code changes may require that the offset be
  41981. manually changed (whereas labels are self-adjusting). However, for short jumps it does negate the
  41982. need for a label, which is why it is provided.
  41983.  
  41984. STRINGS, CHARACTER CONSTANTS AND NUMERICS
  41985. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  41986.         ASM differentiates strongly between strings and character constants. A string is enclosed
  41987. in double quotation marks ("), and can be of any length. A character constant is enclosed in
  41988. single quotation marks (') and its maximum length depends on the current context:
  41989.  
  41990.         MOV     R0,'A'  ; Move ASCII 'A' (65) into R0
  41991.         MOV     R0,"A"  ; Will generate an assembly error.
  41992.         DCW     'AB'
  41993.  
  41994.         The last statement above will store two bytes, ASCII A followed by ASCII B.
  41995.  
  41996.         ASM, like C, uses the backslash (\) as an escape character to store odd values in
  41997. strings:
  41998.  
  41999.             \n      Newline
  42000.             \r      Carriage Return
  42001.             \t      Tab
  42002.             \'      Single Quote
  42003.             \"      Double Quote
  42004.             \\      Backslash
  42005.             \xhh    Hex code hh. eg \x0E is ASCII 14 (<CTRL>N).
  42006.  
  42007.         Integers may be specified in a number of ways: & treats the characters following as a
  42008. hexadecimal number, % treats it as binary, no character treats it as base 10.
  42009.  
  42010.         ADD     R0,R0,#&F0      ; Add F0 Hexadecimal (240 decimal) to R0
  42011.         SUB     R1,R1,#%1100    ; Subtract 1100 binary (12 decimal) from R1
  42012.         MOV     R2,#15          ; Move 15 decimal into R2
  42013.  
  42014.         Floating point numbers may only be specified in base 10. They may include both decimal
  42015. points and exponents. However, there must be at least one digit before either the decimal point
  42016. or the exponent.
  42017.  
  42018.         ADFD    f0,f0,#3.0      ; Add 3.0 to f0.
  42019.         DCFD    1.0654E-6       ; Store a double-precision constant.
  42020.         DCFE    .3421           ; Illegal - no digit before the decimal point.
  42021.  
  42022.         It should be remembered that there are only 8 floating point values that can be used as
  42023. immediate value constants: these are 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 0.5 and 10.0.
  42024.  
  42025.  
  42026. Arithmetic Expressions
  42027. ~~~~~~~~~~~~~~~~~~~~~~
  42028.         Wherever an integer or floating point number is required, ASM will accept an expression
  42029. that evaluates to the correct type (ie integer expressions must not contain any floating point
  42030. values). ASM recognizes the following operators:
  42031.  
  42032.             Operator                  Precedence
  42033.             Unary +                       1
  42034.             Unary -                       1
  42035.                *                          2
  42036.                /                          2
  42037.             % (remainder)                 2
  42038.             & (bitwise AND)               2
  42039.             +                             3
  42040.             -                             3
  42041.             | (bitwise OR)                3
  42042.             ^ (bitwise Exclusive OR)      3
  42043.             >>  (Arithmetic shift right)  4
  42044.             >>> (Logical shift right)     4
  42045.             <<  (Logical shift left)      4
  42046.  
  42047.         Sub-expressions in parentheses are allowed, and have the highest priority. They may be
  42048. nested to an arbitrary degree.
  42049.  
  42050.         Within a single level of priority, expressions are evaluated left to right.
  42051.  
  42052.         There are a number of constraints on the use of certain operators:
  42053.  
  42054. 1)      Only + and - operators that can be applied to non-constant symbols (ie addresses).
  42055.  
  42056.         Thus
  42057.                 BL Tharg+2*4
  42058.         is legal, but
  42059.                 BL Tharg*2
  42060.         is not.
  42061.  
  42062. 2)      Bit-based operators (&,  |, ^, >>, >>> and <<) may only be used in integer constant
  42063. expressions or sub-expressions.
  42064.  
  42065.         Thus
  42066.                 DCFE  12345.6 + (1<<12)
  42067.         is legal, but
  42068.                 DCFD  12345.6 >> 2
  42069.         is not.
  42070.  
  42071. Rule 1 is to ensure that addresses are always properly relocatable. Rule 2 is because it is not
  42072. very meaningful to apply bit operators to floating point values.
  42073.  
  42074. MACROS
  42075. ~~~~~~
  42076.         A Macro is a section of code defined in a single place, and then used in several places.
  42077. It differs from a Branch-with-link in that the macro is copied in whole wherever it is used; it
  42078. thus generates more code than a branch-with-link, but will usually process faster; in addition,
  42079. it does not make any use of the stack.
  42080.  
  42081.         Macros may be given any number of parameters, of any type (including labels - see below).
  42082. These are automatically substituted when the macro instruction is used. The handling of labels
  42083. within macros is quite straightforward: if the defining point of the label is within the limits
  42084. of the macro, it is regarded as a local label, and substituted; any labels referenced that are
  42085. not within the bounds of the array are not substituted. Local label names generated by ASM are of
  42086. the form $nnnnnn, where nnnnnn is 300000 plus a count of the number of labels generated. Thus,
  42087. the first label will be called $300001, the second $300002, etc. For obvious reasons, labels of
  42088. this form should be avoided by the user.
  42089.  
  42090.         A macro is defined with the MACRO directive, and terminated with the ENDM directive.
  42091.  
  42092.         A macro is used simply by giving its name as a standard mnemonic, followed by a list of
  42093. its parameters.
  42094.  
  42095.         As an example, consider a macro to take the absolute value of 64-bit integer held in two
  42096. consecutive registers. This will be defined as ABS64, and then used twice, once for register pair
  42097. R0,R1 and once for register pair R2,R3.
  42098.  
  42099.  
  42100.         MACRO   ABS64,regno
  42101.         CMP     regno+1,#0      ; Is the upper word negative?
  42102.         BPL     notneg
  42103.  
  42104.         ; It is negative. Subtract it from zero to get the abs value
  42105.  
  42106.         RSBS    regno,regno,#0
  42107.         RSC     regno+1,regno+1,#0
  42108.  
  42109. notneg: ENDM
  42110.  
  42111.         ; Now use the macro
  42112.         ABS64   R0      ; Ensure R0,R1 is positive
  42113.         ABS64   R2      ; Ensure R2,R3 is positive
  42114.  
  42115.         etc
  42116.  
  42117.         When expanded, this will be assembled as:
  42118.  
  42119.         ; ABS64 R0
  42120.         CMP     R0+1,#0 ; Is the upper word negative?
  42121.         BPL     $300001
  42122.  
  42123.         ; It is negative. Subtract it from zero to get the abs value
  42124.  
  42125.         RSBS    R0,R0,#0
  42126.         RSC     R0+1,R0+1,#0
  42127. $300001:
  42128.         ; ABS64 R2
  42129.         CMP     R2+1,#0 ; Is the upper word negative?
  42130.         BPL     $300002
  42131.  
  42132.         ; It is negative. Subtract it from zero to get the abs value
  42133.  
  42134.         RSBS    R2,R2,#0
  42135.         RSC     R2+1,R2+1,#0
  42136. $300002:
  42137.  
  42138.  
  42139. NB The use of the INCLUDE directive is specifically forbidden within a macro definition. It is
  42140. legal for the body of one macro to use another macro; however, it is illegal to nest the actual
  42141. definitions.
  42142.  
  42143.  
  42144. Labels as macro parameters
  42145. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  42146. As stated above, it is perfectly legal to pass a label into a macro. For example:
  42147.  
  42148.  
  42149.         MACRO   JMPZ,regno,a_label
  42150.         CMP     regno,#0
  42151.         BEQ     a_label
  42152.         ENDM
  42153.  
  42154.         JMPZ    R0,tharg
  42155.  
  42156.         etc
  42157.  
  42158. tharg:  do something
  42159.  
  42160.  
  42161. CONDITIONAL ASSEMBLY
  42162. ~~~~~~~~~~~~~~~~~~~~
  42163.         ASM gives simple support to conditional assembly: ie, the code produced can be made to
  42164. depend on the value of some flags defined by the assembly command.
  42165.  
  42166.         The directives involved in conditional assembly are IFDEF (a specified flag is defined),
  42167. IFNDEF (a specified flag is not defined), ELSE and ENDIF.
  42168.  
  42169.         As described above, the flags used by IFDEF/IFNDEF are set using the -flags assembly
  42170. options. Any flags not explicitly set are treated as unset.
  42171.  
  42172.         For example:
  42173.  
  42174.                   IFDEF   Debug
  42175.                   STMFD   sp!,{r0 }
  42176.                   ADR     R0,DebugMsg
  42177.                   SWI     "OS_Write0"
  42178.                   B       EndDBug
  42179. DebugMsg:       DCD     &902
  42180.                   DCS     "Hello there"
  42181.                   DCB     0
  42182.                   ALIGN
  42183. EndDBug:
  42184.                   ENDIF
  42185.  
  42186.         If the file was assembled using -flags debug, the code between the IFDEF and the ENDIF
  42187. will be included in the output AOF file; otherwise it will not.
  42188.  
  42189.         IFNDEF works in exactly the same way, except the code is included if the specified flag
  42190. is not set.
  42191.  
  42192.         ELSE works in the expected way.
  42193.  
  42194.         Any number of IFDEF/IFNDEFs may be nested, they may be nested inside MACRO definitions,
  42195. and vice versa.
  42196.  
  42197.  
  42198. NEW FEATURES
  42199. ~~~~~~~~~~~~
  42200. Version 3 has a number of new features:
  42201.  
  42202. a)      Throwback
  42203.         ASM now fully supports Acorn’s desktop throwback error-reporting mechanism. It is
  42204.         activated by the use of the ‘throwback’ qualifier on the command line.
  42205.  
  42206. b)      Case-insensitive symbol names
  42207.         User-defined symbols can now be (optionally) be made case-insensitive. This feature is
  42208.         activated by the ‘nocase’ qualifier on the command line.
  42209.  
  42210. c)      Extended ARM instruction set
  42211.         The additional instructions introduced by the ARM3, ARM6 and ARM7 series processors are
  42212.         now supported. ASM must be informed of the architecture for which the code is targetted,
  42213.         using the ‘processor <proc>’ qualifier. If this qualifier is not present, ASM assumes an
  42214.         ARM3 target. The use of an opcode that is not available on the specified target processor
  42215.         will generate an error. The extra instructions available are:
  42216.  
  42217.             Mnemonic        Earliest        Description
  42218.                              Target
  42219.             SWP               ARM3     Single data swap
  42220.             MRS               ARM6     Processor Status Register transfer (Register->PSR)
  42221.             MSR                        Processor Status Register transfer (PSR->Register)
  42222.             UMULL             ARM7     Unsigned 64-bit multiply
  42223.             SMULL                      Signed 64-bit multiply
  42224.             UMLAL                      Unsigned 64-bit multiply with accumulate
  42225.             SMLAL                      Signed 64-bit multiply with accumulate
  42226.  
  42227.         NB. The 64-bit multiply instructions only work in 32-bit modes, while RISCOS works in
  42228. 26-bit mode, which makes its use in ASM somewhat moot.
  42229.  
  42230.  
  42231. WARNING
  42232. ~~~~~~~
  42233. ASM uses the Debugger_Disassemble SWI to decode the generated opcodes for the ‘validate’ option.
  42234. Sadly, this SWI does not seem to recognise the SWP instruction, and they are all returned as
  42235. “Undefined Instruction”. Users should ignore these errors, as ASM has been tested fairly
  42236. extensively in this area, and the generated codes match with the Acorn documentation. Should you
  42237. be able to shed any definitive light on this situation (ie whether the SWI or the documentation
  42238. is at fault), please contact the author.
  42239.  
  42240.  
  42241. DIRECTIVES
  42242. ~~~~~~~~~~
  42243.         The rest of this documentation concentrates on the assembler directives provided by ASM.
  42244.  
  42245.  
  42246. =================================================================================================
  42247. ALIGN           Ensures that the code pointer is on a word boundary.
  42248.  
  42249. Format: ALIGN
  42250.  
  42251. Certain DC directives (DCB, DCW, DCS) store a number of bytes that is not an exact multiple of
  42252. four. RESB may also reserve less than a complete number of words. It is therefore possible for a
  42253. label to be given an address which is not that which is required. The use of ALIGN will bump the
  42254. pointer forward to ensure that it is correctly word-aligned.
  42255.  
  42256. NB All mnemonics and all other DC operations automatically carry out an align, and labels are
  42257. adjusted to allow for this. Thus the two code fragments below lead to different values for L1 and
  42258. L2 (L1 is NOT word-aligned, but L2 is aligned).
  42259.  
  42260. 1)              DCB     0
  42261.         L1:
  42262.                 B       Tharg
  42263.  
  42264. 2)              DCB     0
  42265.         L2:     B       Tharg
  42266.  
  42267. If code fragment 1 had an ALIGN directive after the DCB, L1 and L2 would have the same value.
  42268.  
  42269. eg      ALIGN
  42270.  
  42271. See Also:       DC, RESB
  42272.  
  42273.  
  42274.  
  42275. =================================================================================================
  42276. AREA    Instructs ASM to start a new area.
  42277.  
  42278. Format: AREA    <areaname>,<attributes>
  42279.  
  42280. The areaname parameter is any legal ASM identifier. The attributes parameter(s) must specify one
  42281. of CODE or DATA. READONLY may be specified.
  42282.  
  42283. eg      AREA    ASM$$Code,Code,ReadOnly
  42284.  
  42285. Note that an AREA statement must precede any mnemonics or directives that cause data to be
  42286. written to the area.
  42287.  
  42288. Later versions of ASM may support additional AOF area types (eg Zero-Initialized, Common Block,
  42289. Common Block Reference).
  42290.  
  42291. See Also:       
  42292.  
  42293.  
  42294.  
  42295. =================================================================================================
  42296. DC      Store a constant value.
  42297.  
  42298. Format: DC<type>        <value>[,<value>....]
  42299.  
  42300. The <type> is one or two characters that define the type of the constant being stored, and hence
  42301. the type expected of <value>
  42302.  
  42303.      <type>  Type of Value
  42304.         B       Byte
  42305.         W       Word. Actually this is a 16-bit value (ie a half-word). This letter is used for
  42306.                 consistency with the BASIC assembler and AASM.
  42307.         D       Double Word. Actually a 32-bit value. See above.
  42308.         Q       Quad Word. A 64-bit integer value.
  42309.         S       String. (NB C programmers: this is NOT zero-terminated - use DCSZ below).
  42310.         SZ      Zero-terminated string.
  42311.         FS      Single-precision floating point
  42312.         FD      Double-precision floating point
  42313.         FE      Extended-precision floating point
  42314.         FP      Packed floating point.
  42315.         
  42316. eg      DCB     &FF
  42317.         DCS     "Hello there"
  42318.         DCSZ    “Hello again”
  42319.         DCFE    12.32E12, 3.141592
  42320.  
  42321. The use of DCD allows addresses to be stored, and hence the address of Far symbols to be loaded
  42322. into registers:
  42323.  
  42324.         IMPORT  myaddress
  42325.         etc
  42326.         LDR     R1,addr
  42327.         etc
  42328. addr:   DCD     myaddress
  42329.  
  42330. Where a DCD is used that is interpreted as an address, ASM will automatically generate any
  42331. required relocations.
  42332.  
  42333. See Also:       EQU, RESB
  42334.  
  42335.  
  42336.  
  42337. =================================================================================================
  42338. ELSE    Part of IF/ELSE/ENDIF conditional assembly structure.
  42339.  
  42340. Format: ELSE
  42341.  
  42342. ELSE negates the current condition flag. See the section on Conditional Assembly for details of
  42343. the use of IFDEF/IFNDEF/ELSE/ENDIF.
  42344.  
  42345. eg      ELSE
  42346.  
  42347. See Also:       IFDEF, IFNDEF, ENDIF
  42348.  
  42349.  
  42350.  
  42351. =================================================================================================
  42352. ENDIF   Part of IF/ELSE/ENDIF conditional assembly structure.
  42353.  
  42354. Format: ENDIF
  42355.  
  42356. ENDIF terminates the current conditional assembly statement. See the section on Conditional
  42357. Assembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.
  42358.  
  42359. eg      ENDIF
  42360.  
  42361. See Also:       IFDEF, IFNDEF, ELSE
  42362.  
  42363.  
  42364.  
  42365. =================================================================================================
  42366. ENDM    Part of a MACRO/ENDM macro definition structure.
  42367.  
  42368. Format: ENDM
  42369.  
  42370. ENDM terminates the current macro definition. See the section on Macros for details of the use
  42371. of MACRO/ENDM.
  42372.  
  42373. eg      ENDM
  42374.  
  42375. See Also:       MACRO
  42376.  
  42377.  
  42378.  
  42379. =================================================================================================
  42380. ENTRY   Define the entry address for a program.
  42381.  
  42382. Format: ENTRY   <symbol>
  42383.  
  42384. The linker requires that one and only one of the object files given to it contain an entry
  42385. address; this is the location that will be called when the linked program is run. The ENTRY
  42386. directive specifies a (Local or Global) symbol which will be used for the entry point.
  42387.  
  42388. eg      ENTRY   Start
  42389.  
  42390. Note, however, that there is an extensive quantity of code required to set up application memory
  42391. constraints etc, during program initialization, which is outside the scope of this documentation;
  42392. for this reason, the author does not advocate the use of the ENTRY directive unless you know
  42393. exactly what you are doing; it is much easier to use C for the majority of an application, and
  42394. just program the time-critical parts in ASM.
  42395.  
  42396. See Also:
  42397.  
  42398.  
  42399.  
  42400. =================================================================================================
  42401. EQU     Store a constant value.
  42402.  
  42403. Format: EQU<type>       <value>[,<value>....]
  42404.  
  42405. EQU is a synonym for DC, and works in exactly the same way. It is supported simply for
  42406. consistency with the BASIC assembler.
  42407.  
  42408. eg      EQUB    12
  42409.  
  42410. See Also:       DC, RESB
  42411.  
  42412.  
  42413.  
  42414. =================================================================================================
  42415. EXPORT  Gives a local symbol global scope.
  42416.  
  42417. Format: EXPORT  <label>
  42418.  
  42419. By default, all labels used in an ASM source file are local, and hence other source files cannot
  42420. call locally-defined routines. The EXPORT directive gives the linker visibility over the
  42421. specified label.
  42422.  
  42423. Note that the EXPORT directive and the defining point of the label may appear in either order -
  42424. ASM will accept both.
  42425.  
  42426. eg      EXPORT  ADD_64
  42427.  
  42428. See Also:       IMPORT
  42429.  
  42430.  
  42431.  
  42432. =================================================================================================
  42433. IFDEF   Part of IF/ELSE/ENDIF conditional assembly structure.
  42434.  
  42435. Format: IFDEF   <flag>
  42436.  
  42437. The flag parameter is any legal ASM identifier. Note that although it follows the same naming
  42438. conventions, such a flag cannot be used in any expression evaluation, for example as an integer.
  42439. See the section on Conditional Assembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.
  42440.  
  42441. eg      IFDEF   Debug
  42442.  
  42443. See Also:       IFNDEF, ELSE, ENDIF
  42444.  
  42445.  
  42446.  
  42447. =================================================================================================
  42448. IFNDEF  Part of IF/ELSE/ENDIF conditional assembly structure.
  42449.  
  42450. Format: IFNDEF  <flag>
  42451.  
  42452. IFNDEF acts exactly as an IFDEF, but with the condition negated. See the section on Conditional
  42453. Assembly for details of the use of IFDEF/IFNDEF/ELSE/ENDIF.
  42454.  
  42455. eg      IFNDEF  Verbose
  42456.  
  42457. See Also:       IFDEF, ELSE, ENDIF
  42458.  
  42459.  
  42460.  
  42461. =================================================================================================
  42462. IMPORT  Declares the name of a symbol defined in a separate module.
  42463.  
  42464. Format: IMPORT  <symbol>
  42465.  
  42466. IMPORT informs ASM that the specified symbol needs to be visible to the current module (ie the
  42467. name is referenced somewhere in the current source file). The symbol can then be used as a (Far)
  42468. address, and any references to it will be handled by the linker. The IMPORT directive may be
  42469. placed before or after the symbol is first used (although it is normal to declare the symbol
  42470. before it is used).
  42471.  
  42472. eg      IMPORT  ErrorHandler
  42473.  
  42474.         B       ErrorHandler
  42475.  
  42476. See Also:       EXPORT
  42477.  
  42478.  
  42479.  
  42480. =================================================================================================
  42481. INCLUDE Directs ASM to include another file in the current module.
  42482.  
  42483. Format: INCLUDE <filename>
  42484.  
  42485. The INCLUDE directive causes ASM to begin reading source text from the specified file. When that
  42486. file is exhausted, ASM will continue with the calling file.
  42487.  
  42488. The <filename> parameter must be specified as a quoted string. If no directory specification
  42489. exists, ASM will look in subdirectory 'I' for the file. For compatibility with C, ASM will accept
  42490. a filename of the form "FRED.I" as meaning "I.FRED".
  42491.  
  42492. The -Include option on the ASM command allows the specification of a path list for the given file;
  42493. if the file is not found locally, then each path will be checked in order. Only if the file is not
  42494. found on any path will ASM report an error.
  42495.  
  42496. NB The use of INCLUDE is forbidden in a macro definition.
  42497.  
  42498. eg      INCLUDE "UtilityHdr.I"
  42499.  
  42500. See Also:
  42501.  
  42502.  
  42503.  
  42504. =================================================================================================
  42505. MACRO   Part of MACRO/ENDM macro definition structure.
  42506.  
  42507. Format: MACRO   <macroname>[,<parameterlist>]
  42508.  
  42509. MACRO begins the definition of a new macro. <macroname> can be any legal ASM identifier.
  42510. <parameterlist> is a comma-separated list of formal parameter names, which will be substituted
  42511. when the macro is instantiated. The actual parameters may be of any type (string, integer, float
  42512. etc). See the section on Macros for details of the use of MACRO/ENDM.
  42513.  
  42514. eg      MACRO   ERROR,errnum,errtext
  42515.  
  42516. A Macro is instantiated by using its name as if it were a mnemonic, and passing values for the
  42517. formal parameters.
  42518.  
  42519. eg      ERROR   &901,"This is an error" 
  42520.  
  42521. See Also:       ENDM
  42522.  
  42523.  
  42524.  
  42525. =================================================================================================
  42526. RESB    Reserve a (zero-initialized) block of memory.
  42527.  
  42528. Format: RESB    <length>
  42529.  
  42530. The RESB directive instructs ASM to increment the code pointer by the specified length; the
  42531. block of memory so reserved will be filled with zeros. Note that <length> is specified in bytes,
  42532. and hence the code pointer may not be word-aligned after executing the RESB operation.
  42533.  
  42534. RESB is generally used where a large buffer is required, to save the use of many DC directives.
  42535.  
  42536. eg      RESB    128
  42537.  
  42538. See Also:       DC, EQU
  42539.  
  42540.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!CMOSCtrlGýÿÿ¬‹Øàl!CMOSsaveGýÿÿ–Øào!CMOS FS²Gýÿÿ6–Øàq!CMOSCtrlGýÿÿ¬‹Øàl!CMOSsaveGýÿÿ–Øào!CMOS FS²Gýÿÿ6–ØàqCMOSCMOSNickàWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootDëÿÿp[âP7l!HelpDÿÿÿ‹DÀPôl!RunDëÿÿ)ZâP'
  42541. l!RunImageEûÿÿVðCt9m!SpritesDùÿÿ›«¼PÈ lCMOSDefsDÿÿÿèœõH)nMakeNosDûÿÿáRâPslTemplatesDìÿÿÞxÀPHl!BootDëÿÿp[âP7l!HelpDÿÿÿ‹DÀPôl!RunDëÿÿ)ZâP'
  42542. l!RunImageEûÿÿVðCt9m!SpritesDùÿÿ›«¼PÈ lCMOSDefsDÿÿÿèœõH)nMakeNosDûÿÿáRâPslTemplatesDìÿÿÞxÀPHlk!CMOSCtrl!CMOSCtrlNick¸Set CMOS$Dir <Obey$Dir>
  42543. Iconsprites <Obey$Dir>.!Spritesorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     !ReadMe File for !CMOSCtrl 1.05
  42544.  
  42545. By Andrew De Quincey (TheADQ)
  42546.  
  42547.       This program is Public Domain Software
  42548.  
  42549.  
  42550. 1) About the program
  42551.  
  42552.       This is a program to allow you to edit CMOS RAM easily. It provides comprehensive CMOS editing control.
  42553.       This program is designed to work under RISC OS 3.xx, but it will work  uder RISC OS 2.00, but many CMOS locations will be different. 
  42554.       If the program is used under RISC OS 3.10, you will get 3D icons, otherwise, you will just get icons with plain borders.
  42555.  
  42556.  
  42557. 2) Using the program
  42558.       
  42559.       Simply double-click on the !CMOSCtrl icon to load it. 
  42560.       Click on the icon on the icon bar to display the CMOS RAM locations in a window. To edit a location, simply click on it with select, and type in the new contents. This can either be binary, decmial, or hex. 
  42561.       To update the program FROM the CMOS memory, select 'Read CMOS' from theiconbar menu.
  42562.  
  42563. NOTE : Some locations are dealt with really weirdly. If you see the message  'Complicated - use configure' in the editing window, do so. For some unknown reason, Acorn have decided to make values in these locations behave oddly.   For example in some Font locations, a value of 32 in CMOS can mean 0 point   size.
  42564.  
  42565.  
  42566.  
  42567. 3) The 'CMOSDefs' file
  42568.  
  42569.       To change the infomation given about any location in CMOS, load the    'CMOSDefs' file into !Edit. (from inside the !CMOSCtrl  application) 
  42570.       Each entry starts with the number of the location which it is dealing  with. The first line is the information given in the general CMOSCtrl window.
  42571. It is a maximum of 50 characters long (including number)
  42572.       If you want to have aditional information displayed in the editing     window, put this in the next nine lines, also a maximum of 50 characters.
  42573.  
  42574.       Please note, each number MUST be four characters away from the general description. If it is not, fill up the space with spaces. To see what I mean, look at the CMOSDefs file.
  42575.  
  42576.       The last line of the file MUST be 'END', followed by a linefeed        character.
  42577.  
  42578.  
  42579.  
  42580.  
  42581.  
  42582.  
  42583. erWorks     Set CMOS$Dir <Obey$Dir>
  42584. | The following two lines are not needed if you have RISC OS 3.xx
  42585. RMEnsure ColourTrans 0.52 RMLoad System:Modules.Colours
  42586. RMEnsure ColourTrans 0.52 Error Please update your copy of !System to one containing ColourTrans
  42587.  
  42588. WimpSlot -min 48K -max 48K
  42589. Run <CMOS$Dir>.!RunImageorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Ì¼!cmosctrl ,ô qqqwqqwqwwwwwwwwqwwwwwwwwqqqwqqqqwqqqqqqUUUUUUUUUUuUwwwwwwwwwwwwwwwwwwwwwWwUuWUUuWUuUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwQWUwUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwUUuWUWUUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwUUUUUUUUUUUQQQQQQQQQQQQQQQQQQQQQQððÿÿððÿðÿÿððÿðÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðððÿððÿÿðððÿððÿÿððððÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððÿÿððððððððððððÿÿrks     WonderWorks     WonderWorks     WonderWorks     
  42590. Gñ "This will wipe the existing CMOSDefs file"'"Are you sure (Y/N)?"
  42591. key$=¾ç §"Nn",key$) … à(2!file%=® "<CMOS$Dir>.CMOSDefs"<ã loop=0 ¸ 239Fnum$=Ã(loop)Pnum$=num$+" "Z ç ©(num$)=2 … num$=num$+"  "dç ©(num$)=3 … num$=num$+" "nxã putloop=1 ¸ 4ŵchar$=Ánum$,putloop,1)…Õ#file%,–(char$)„í Õ#file%,10ª´í¾È Ù#file%ÒÿderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ\progInfoþþöwgLocations÷÷ÞjAlterùýýýýõŵ¸ðÿÿÿÿÿÿÿ☓  ðÿÿÿ¸þÿÿ⇩=0—ÿÿÿÿ
  42592. Hÿÿÿ„pÿÿÿ`Author:d>þŒÀÿÿÿhðÿÿÿ=a«¼Œ☓ÿÿÿj´ÿÿÿ=a¿Ü#ŒDÿÿÿlxÿÿÿ=aßñ(Œ ÿÿÿl8ÿÿÿ=aôù:Àÿÿÿ„èÿÿÿ`Name:led>þ
  42593. ☓ÿÿÿ„¬ÿÿÿ`Purpose:>þŒÌþÿÿjÿÿÿ=aü
  42594. ÿÿÿ„4ÿÿÿ`Version:>þðÿÿÿÐþÿÿ†øþÿÿ`PublisherþAbout this programEasy CMOS EditorR2Allows a mortal to edit CMOSR2Andrew De QuinceyR21.05R2DeQuincey Publishing (V)PLCR2´¬`4Ýÿÿÿÿÿÿ¿ ,Úÿÿ¤=0XÿÿÿÿCMOS Locations^PÔÿÿÿÿ¿ |üÿÿª=0Øÿÿÿÿ&†þÿÿŷÈÿÿÿaèé À¸þÿÿPÿÿÿ=aìó V ÿÿÿ²\ÿÿÿ=áöú¦`ÿÿÿâ€ÿÿÿ`Hexitled>Œ ÿÿÿî\ÿÿÿ=áF`ÿÿÿ€ÿÿÿ`Decimald>² ÿÿÿV\ÿÿÿ=á    Îdÿÿÿ:☓ÿÿÿ`Binaryed><¬ÿÿÿ Üÿÿÿ=a -$&“üÿÿŷ\þÿÿaÇ01 N@þÿÿþpþÿÿ=a4: >þÿÿj,þÿÿ1=ÿÿÿÿ3>Ôýÿÿjþÿÿ1Bÿÿÿÿ3>¨ýÿÿjÔýÿÿ1Gÿÿÿÿ3>|ýÿÿj¨ýÿÿ1Lÿÿÿÿ3>Pýÿÿj|ýÿÿ1Qÿÿÿÿ3>$ýÿÿjPýÿÿ1Vÿÿÿÿ3>øüÿÿj$ýÿÿ1[ÿÿÿÿ3>Ìüÿÿjøüÿÿ1`ÿÿÿÿ3> üÿÿjÌüÿÿ1eÿÿÿÿ3Location WindowR3UpdateR6167R7;A0-9D1R7;A0-9A-F00001111R7;A01CMOS byte XXR1R3NotesR1ADQ1ADQ2ADQ3ADQ4ADQ5ADQ6ADQ7ADQ8ADQ9rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  42595. ô >!RunImageô for !CMOSCtrl v1.05ô By Andrew De Quincey( error%=£2<3î Ŷ òerror(fl,ö$+" at line "+Ã(fi/10),1):error%=¹Fç error%=£ … òstartupPZõdç quit%=£ … òpollný quit%=¹x1ç workspace<>-1 … È− "OS_Module",7,,workspaceŵ+È− "Wimp_CloseDown",tskhndle%,&4B534154…à„: 
  42596. Ýòpollª0È− "Wimp_Poll",0,block% ¸ code%,point_block%´¾ȉ code% ÊÈÉ 1 : òredraw(point_block%)ÒÉ 2 : òopenÜ&É 3 : òclosewindow(point_block%!0)æ#É 4 : ô pointer entering windowð"É 5 : ô pointer leaving windowúÉ 6 : òmouseclickÉ 7 : ô PROCdragÉ 8 : òkeypressedÉ 9 : òmenuselect"É 17,18 : òmessage,Ë6@áJ:T
  42597. Ýòdrag^*È− "Wimp_GetPointerInfo",,actionblock%h(actionblock%!20=64:actionblock%!32=0r5actionblock%!36=1:actionblock%!40=actionblock%!12|#actionblock%!44=actionblock%!16ŷ"actionblock%!48=actionblock%!0‘"actionblock%!52=actionblock%!4Œactionblock%!60=filetype%¤?(actionblock%+64)=0®LÈ− "Wimp_SendMessage",17,actionblock%+20,actionblock%!12,actionblock%!16¸áÂ:Ìݤgeticonindir(w%,i%)Ö!actionblock%=w%àactionblock%!4=i%ê(È− "Wimp_GetIconState",,actionblock%ô=actionblock%!28þ:ݤgeticonvalid(w%,i%)!actionblock%=w%actionblock%!4=i%&(È− "Wimp_GetIconState",,actionblock%0=actionblock%!32::Dݤgeticontext(w%,i%)Nmloc=¤geticonindir(w%,i%)Xtxt$=¤gettext(mloc)b    =txt$l:vݤgettext(memloc)€ text$=""⇩pointer=0“È” memloc?pointer>31fi!text$=text$+½(memloc?pointer)¨pointer+=1²Î¼
  42598. =text$Æ:ÐÝòkeypressedÚwinhndl%=point_block%!0äichndl%=point_block%!4îkey%=point_block%!24ø5ç winhndl%=AlterWin% € key%=13 … òupdate_alterwin á :*Ýòupdate_alterwin4-È− "Wimp_SetCaretPosition",-1,-1,-1,-1,-1>(text$=¤geticontext(winhndl%,ichndl%)Hȉ ichndl% ÊRÉ 4 : text$="&"+text$\É 6 : text$="%"+text$fËpznumber= (text$)☓‰$È− "OS_Byte",162,cur_loc%,number—(È− "OS_Byte",161,cur_loc% ¸ ,,number¢&?(textlocs%+(cur_loc%*9)+8)=number¬Kòforceredraw(MainWin%,0,-100-((cur_loc%+1)*40),2000,-100-(cur_loc%*40))¶òclosewindow(AlterWin%)ÀáÊ:ÔÝòicbaric(sname$)ÞXicbaric%=¤createicon(-1,0,0,90,80,%00010111000000000011000000100010,"",sname$,1,1,1)è  ô &6002òáü:
  42599. Ýòopen&È− "Wimp_OpenWindow",,point_block%á$:.Ýòdeletewindow(winhndl%)8actionblock%!0=winhndl%B(È− "Wimp_DeleteWindow",,actionblock%LáV:`"Ýòdeleteicon(winhndl%,ichndl%)jactionblock%!0=winhndl%tactionblock%!4=ichndl%~&È− "Wimp_DeleteIcon",,actionblock%⇦á‹:†Ýòmessage¦mess_no%=point_block%!16°ȉ mess_no% ÊºÉ 0      : quit%=¹ÄÉ 2      : ô savedataÎÉ 3      : ô loaddataØÉ 5      : ô double_clickâÉ &400C0 : ô PROCmenumessìËöá:
  42600. ÝòacksaveEpoint_block%!12=point_block%!8:point_block%!16=3:!point_block%=64IÈ− "Wimp_SendMessage",17,point_block%,point_block%!20,point_block%!24(á2:<ÝòackloadFEpoint_block%!12=point_block%!8:point_block%!16=4:!point_block%=64P8È− "Wimp_SendMessage",17,point_block%,point_block%!4Zád:nÝòmenumessx>È− "Wimp_DecodeMenu",,funcmen%,point_block%+32,mstructblk%ŵmselect$=$mstructblk%…ȉ mselect$ Ê„Ë áª:´Ýòacknotify(mem_loc%)¾mem_loc%!12=mem_loc%!8È0È− "Wimp_SendMessage",19,mem_loc%,mem_loc%!4ÒáÜ:æÝòredraw(address%)ðwinhndl%=address%!0úactionblock%!0=winhndl%/È− "Wimp_RedrawWindow",,actionblock% ¸ flagÈ” flag<>0" òredvals,ȉ winhndl% Ê6@ É MainWin% : òredraw_mainwinJTË^/È− "Wimp_GetRectangle",,actionblock% ¸ flaghÎr|ŷá‘:ŒÝòredraw_mainwin¤®ç wminy>-100 … wminy=-100¸ç wmaxy>-100 … wmaxy=-100ÂÌòclipwindowÖòredrawlocationàòbriefredrawêï 26ôþá:Ýòbriefredraw minydat%=¨((“(wmaxy)-10)/40)& maxydat%=¨((“(wminy)-10)/40)01ç minydat%>(240*40)+10 … minydat%=(240*40)+10:1ç maxydat%>(240*40)+10 … maxydat%=(240*40)+10DNypos=-((minydat%*40)+10)Xdloc=minydat%-2blõv€ì 200,ypos⇩%ñ ¤gettext(!(textlocs%+(dloc*9)))“fi ypos-=40¨ dloc+=1²¼)ý ypos<-((maxydat%*40)+10) ☓ dloc=240ÆáÐ:ÚÝòredrawlocationäî minydat%=¨((“(wmaxy)-10)/40)ø maxydat%=¨((“(wminy)-10)/40)1ç minydat%>(240*40)+10 … minydat%=(240*40)+10 1ç maxydat%>(240*40)+10 … maxydat%=(240*40)+10 ypos=-((minydat%*40)+10)*dloc=minydat%-24>+È− "ColourTrans_ReturnGCOL",0 ¸ col_numHRæ 0,col_num\fõpì -100,yposz
  42601. ñ dloc☓‰ì -10,ypos—ñ ?(textlocs%+(dloc*9)+8)¢¬ ypos-=40¶ dloc+=1ÀÊ)ý ypos<-((maxydat%*40)+10) ☓ dloc>239ÔáÞ:èÝòredvalsòYgbx=actionblock%!28:gby=actionblock%!32:gbx2=actionblock%!36-2:gby2=actionblock%!40-4ü*origx=(actionblock%!4-actionblock%!20)    +origy=(actionblock%!16-actionblock%!24)    :wminx=actionblock%!28-(actionblock%!4-actionblock%!20)    :wmaxx=actionblock%!36-(actionblock%!4-actionblock%!20)    $;wminy=actionblock%!32-(actionblock%!16-actionblock%!24)    .;wmaxy=actionblock%!40-(actionblock%!16-actionblock%!24)    8á    B:    L8Ýòopenwindow(hndle%,vaminx%,vaminy%,vamaxx%,vamaxy%)    Vactionblock%!0=hndle%    `actionblock%!4=vaminx%    jactionblock%!8=vaminy%    tactionblock%!12=vamaxx%    ~actionblock%!16=vamaxy%    ⇦actionblock%!20=0    ‹actionblock%!24=0    †actionblock%!28=-1    ¦&È− "Wimp_OpenWindow",,actionblock%    °á    º:    Äݤloadtemplate(buffer%,id$)    ÎhÈ− "Wimp_LoadTemplate",,buffer%,buffpointer,buffpointer+(3*1024),-1,id$,0 ¸ ,,buffpointer,,,,status%    Ø    âç status%<>0 …    ì+È− "Wimp_CreateWindow",,buffer% ¸ hndl%    öÌ
  42602. templaterr%=¹
  42603.  
  42604. quit%=¹
  42605. =òerror(0,"Template not found (This is fatal by the way)")
  42606.  hndl%=-1
  42607. (Í
  42608. 2
  42609. <
  42610. =hndl%
  42611. F:
  42612. PÝòclosewindow(hndle%)
  42613. Zactionblock%!0=hndle%
  42614. d'È− "Wimp_CloseWindow",,actionblock%
  42615. ná
  42616. x:
  42617. ŵÝòmouseclick
  42618. …mousx%=point_block%!0
  42619. „mousy%=point_block%!4
  42620.  button%=point_block%!8
  42621. ªwinhndl%=point_block%!12
  42622. ´ichndl%=point_block%!16
  42623. ¾nbutt%=point_block%!8
  42624. Èȉ winhndl% Ê
  42625. Ò
  42626. ÜÉ -2
  42627. æJç button%=2 … òopenmenu(icbarmenu%,mousx%-56,104+(2*40)):menuhandle%=1
  42628. ð9ç button%=4 … òopenwindow(MainWin%,200,200,1100,1100)
  42629. ú É MainWin% (ç button%=1 ☓ button%=4 … òmainclick  "É AlterWin% ,4ç button%=4 € ichndl%=1 … òclick_update_alterwin 6 @Ë J Tá ^: hÝòclick_update_alterwin r$ic1= (¤geticontext(AlterWin%,2)) |(ic2= ("&"+¤geticontext(AlterWin%,4)) ŷ(ic3= ("%"+¤geticontext(AlterWin%,6)) ‘ Œ+È− "OS_Byte",161,cur_loc% ¸ ,,old_value ¤new_value=-1 ®$ç ic1<>old_value … new_value=ic1 ¸$ç ic2<>old_value … new_value=ic2 Â$ç ic3<>old_value … new_value=ic3 Ì(ç new_value=-1 … new_value=old_value Ö à'È− "OS_Byte",162,cur_loc%,new_value ê'È− "OS_Byte",161,cur_loc% ¸ ,,value ô%?(textlocs%+(cur_loc%*9)+8)=value þ Kòforceredraw(MainWin%,0,-100-((cur_loc%+1)*40),2000,-100-(cur_loc%*40)) òclosewindow(AlterWin%) á &: 0Ýòmainclick :!actionblock%=winhndl% D)È− "Wimp_GetWindowInfo",,actionblock% Nwindowy%=(actionblock%!16) Xvaminy%=(actionblock%!24) bmpos%=windowy%-mousy% lwamouspos%=vaminy%-mpos% vç wamouspos%>-100 … á € ⇩loc%=¨(-wamouspos%/40) “ fi loc%-=2 ¨cur_loc%=loc% ²$infoloc%=!(textlocs%+(loc%*9)+4) ¼+next_dataloc%=!(textlocs%+((loc%+1)*9)) Æ Ð,òopenwindow(AlterWin%,300,100,1300,1000) Ú@òaltericon(AlterWin%,8,"Current Value of location "+Ã(loc%)) ä î#È− "OS_Byte",161,loc% ¸ ,,cont% ø$òaltericon(AlterWin%,2,Ã(cont%))%òaltericon(AlterWin%,4,Ã~(cont%)) /òaltericon(AlterWin%,6,¤getbinary(cont%,8)) updated=0*õ4> text$=""H,ç infoloc%>=next_dataloc% ☓ infoloc%=0 …R text$=""\Ìftext$=¤gettext(infoloc%)pinfoloc%+=©(text$)+1z(ç infoloc%>=next_dataloc% … text$=""☓͉—*òaltericon(AlterWin%,updated+11,text$)¢¬updated+=1¶ý updated=9ÀÊáÔ:ޠݤgetbinary(number%,places%)ènumber$=""òã loop=places%-1 ¸ 0 ⇦ -1üHç(number% € (2^loop))<>0 … number$=number$+"1" ⇧ number$=number$+"0"í =number$:$Ýòredrawicon(w%,i%).!actionblock%=w%8actionblock%!4=i%B(È− "Wimp_GetIconState",,actionblock%LVSòforceredraw(w%,actionblock%!8,actionblock%!12,actionblock%!16,actionblock%!20)`áj:tÝòaltericon(w%,i%,number$)~memloc=¤geticonindir(w%,i%)⇦$memloc=number$‹òredrawicon(w%,i%)†á¦:°
  42630. Ýòvarsºworkspace=-1ÄÞ tempbuff 2048ÎÞ indirbuff% (3*1024)Øbuffpointer=indirbuff%âÞ icbarmenu% 255ìÞ block% 256öÞ actionblock% 1024Þ nameblock% 25
  42631. Þ mstructblk% 256Þ textlocs% 2160Þ indirlocs%(13)(nothing=-12 quit%=£<micfl=&7009031FáP:Z2Ýòopennewmenu(mtxt$,mem_pos%,ttl$,menx%,meny%)d+òcreatemenu(mem_pos%,ttl$,120,40,mtxt$)n#òopenmenu(mem_pos%,menx%,meny%)xáŵ:…zݤcreatewindow(title_flags%,win_flags%,wamaxx%,waminy%,sparea%,type_win$,title$,text_point%,valid_point%,text_length%)„actionblock%!0=0 actionblock%!4=0ªactionblock%!8=0´actionblock%!12=0¾actionblock%!16=0Èactionblock%!20=0Òactionblock%!24=-1Üactionblock%!28=win_flags%æactionblock%?32=7ðactionblock%?33=2úactionblock%?34=7actionblock%?35=1actionblock%?36=3actionblock%?37=1"actionblock%?38=12,actionblock%?39=06actionblock%!40=0@actionblock%!44=waminy%Jactionblock%!48=wamaxx%Tactionblock%!52=0^4actionblock%!56=title_flags%     :ô &3D normallyhactionblock%!60=-1 € &3000rJactionblock%!64=sparea%       :ô sprite area pointer (1 for WIMP area)|actionblock%!68=0ŷç type_win$="INDIRECT" …‘òindir_winŒÌ¤title$=Àtitle$,11)®$(actionblock%+72)=title$¸ÍÂactionblock%!84=0Ìactionblock%!88=0Ö1È− "Wimp_CreateWindow",,actionblock% ¸ hndle%à =hndle%ê:ôÝòstartupþic_line%=4090    òvars&$nameblock%="CMOS RAM Editor"+½(0)>È− "Wimp_Initialise",200,&4B534154,nameblock% ¸ ,tskhndle%&0ô ---Load templates---:Dtemplaterr%=£N2È− "Wimp_OpenTemplate",,"<CMOS$Dir>.Templates"Xb/InfoBox%=¤loadtemplate(tempbuff,"progInfo")l0MainWin%=¤loadtemplate(tempbuff,"Locations")v-AlterWin%=¤loadtemplate(tempbuff,"Alter")€⇩È− "Wimp_CloseTemplate"“fiç templaterr%=£ …¨'òopenwindow(InfoBox%,0,0,1000,1000)²òclosewindow(InfoBox%)¼5òsetupmenu(icbarmenu%,"CMOS RAM",150,40,ic_line%)Æòicbaric("!CMOSctrl")ÐÚ:È− "OS_File",5,"<CMOS$Dir>.CMOSDefs" ¸ ,,,,file_lengthäî9È− "XOS_Module",6,,,file_length+1 ¸ status,,workspaceøç status<>6 … @òerror(0,"Fatal error - Not enough memory in module area",1) quit%=¹ Ì*/ÿ "LOAD <CMOS$Dir>.CMOSDefs "+Ã~(workspace)4òget_locations>ÍHÍR\áf:pÝòget_locationsz☓È− "Hourglass_On"‰location=workspace+4—counter=0¢õ¬%!(textlocs%+(counter*9))=location¶%È− "OS_Byte",161,counter ¸ ,,contÀ#?(textlocs%+(counter*9)+8)=contÊònext_lineÔÞ2ç ¤checknumber=£ € ¤gettext(location)<>"END" …èò'!(textlocs%+(counter*9)+4)=locationüònextnumberÌ !(textlocs%+(counter*9)+4)=0location+=4$Í.8counter+=1B/È− "Hourglass_Percentage",(counter/240)*100Lý counter=240V`È− "Hourglass_Off"jtá~:⇦Ýònext_line‹õ†location+=1¦Dý ?location=10 ☓ ?location=13 ☓ location>(workspace+file_length)°Dç location>(workspace+file_length) … ?(workspace+file_length)=10ºlocation+=1ÄáÎ:ØÝònextnumberâõìònext_lineö7ý ¤checknumber=¹ ☓ location>(workspace+file_length)Dç location>(workspace+file_length) … ?(workspace+file_length)=10
  42632. location+=4á:(ݤchecknumber2 num$=""<
  42633. loop=0FõPchar=?(location+loop)Z"ç char<>32 … num$=num$+½(char)d loop+=1ný char=32 ☓ loop=3xŵ    ok%=¹…ã loop=1 ¸ 3„char$=Ánum$,loop,1) $ç §"0123456789",char$)=0 … ok%=£ªí´ç num$="" … ok%=£¾=ok%È:ÒÝòindir_winÜactionblock%!72=text_point%æ actionblock%!76=valid_point%ð actionblock%!80=text_length%úá:eݤcreateicon(winhndle%,icminx%,icminy%,icmaxx%,icmaxy%,icflags%,ic_type$,text$,var1%,var2%,var3%)>ô var1%=pointer to text buffer or sprite name (indirected)"Kô var2%=pointer to validation string, or sprite block (1 for WIMP area),9ô var3%=buffer length, sprite pointer, or sprite name6actionblock%!0=winhndle%@actionblock%!4=icminx%Jactionblock%!8=icminy%Tactionblock%!12=icmaxx%^actionblock%!16=icmaxy%hactionblock%!20=icflags%rç ic_type$="INDIRECT" …|òindir_icŷÌ‘text$=Àtext$,10)Œ$(actionblock%+24)=text$¤Í®0È− "Wimp_CreateIcon",,actionblock% ¸ ichndl%¸ =ichndl%Â:ÌÝòindir_icÖactionblock%!24=var1%àactionblock%!28=var2%êactionblock%!32=var3%ôáþ:.Ýòstartmenu(mblock%,title$,width%,height%)menu_pointer=1$(mblock%+0)=title$&mblock%?12=70mblock%?13=2:mblock%?14=7Dmblock%?15=0Nmblock%!16=width%Xmblock%!20=height%bmblock%!24=4láv:€FÝòcreatemenu(mblock%,text$,pointer%,micflags%,menflags%,last_item)⇩"ç last_item=¹ … menflags%+=2^7“,!(mblock%+(menu_pointer*24)+4)=menflags%fi+!(mblock%+(menu_pointer*24)+8)=pointer%¨-!(mblock%+(menu_pointer*24)+12)=micflags%²)$(mblock%+(menu_pointer*24)+16)=text$¼menu_pointer+=1ÆáÐ:Ú!Ýòopenmenu(mblock%,tlx%,tly%)ä*È− "Wimp_CreateMenu",,mblock%,tlx%,228îáø:Ýòmenuselect *È− "Wimp_GetPointerInfo",,actionblock%button%=actionblock%!8 *ȉ menuhandle% Ê4É 1 :òicbarmenu>ËHRá\:fÝòicbarmenup=È− "Wimp_DecodeMenu",,icbarmenu%,point_block%,mstructblk%zmselect$=$mstructblk%☓ç mselect$="Quit" … quit%=¹‰'ç mselect$="Read CMOS" … òread_cmos—<ç button%=1 … òopenmenu(icbarmenu%,mousx%-56,104+(2*40))¢á¬:¶Ýòread_cmosÀÈ− "Hourglass_On"Êã readloop=0 ¸ 239Ô'È− "OS_Byte",161,readloop ¸ ,,contsÞ%?(textlocs%+(readloop*9)+8)=contsè0È− "Hourglass_Percentage",(readloop/240)*100òíü*òforceredraw(MainWin%,0,-10000,2000,0)È− "Hourglass_Off"á:$Ýòerror(err%,errtxt$,flag).!actionblock%=err%8@$(actionblock%+4)=errtxt$+". Click 'Cancel' to quit program"Bç flag=1 …LDÈ− "Wimp_ReportError",actionblock%,3,"CMOS RAM Editor" ¸ ,statusVÌ`DÈ− "Wimp_ReportError",actionblock%,1,"CMOS RAM Editor" ¸ ,statusjÍtç status=2 … quit%=¹~á⇦:‹3Ýòforceredraw(winhndl%,minx%,miny%,maxx%,maxy%)†:È− "Wimp_ForceRedraw",winhndl%,minx%,miny%,maxx%,maxy%¦á°:ºÝòclipwindowÄï 26Îï 5Ø    æ 0,7âï 24,gbx;gby;gbx2;gby2;ìÈ’ origx,origyöá:
  42634. @Ýòsetupmenu(memloc%,title$,width_item%,height_item%,line_no)÷ line_no7òstartmenu(memloc%,title$,width_item%,height_item%)(ó no_items2pointer=0<    lst=£FõPpointer+=1Z ó text$dó win_to%nic_flags%=micflxitem_flags%=0ŵç pointer=no_items … lst=¹…@òcreatemenu(memloc%,text$,win_to%,ic_flags%,item_flags%,lst)„ý pointer=no_items áª:´ô data for icon bar menu¾*Ü 3,Info,InfoBox%,Read CMOS,-1,Quit,-1ÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     0   Econet Station number
  42635. Not directly configurable
  42636. 1   Econet file server id
  42637. If this is set to 0, then this means that the 
  42638. name of the file server is already configured
  42639. 2   Econet file server net number
  42640. or first character of name
  42641. 3   Econet printer server station id
  42642. If this is set to 0, then this means that the 
  42643. name of the printer server is already configured
  42644. 4   Econet printer sever net number
  42645. or first character of name
  42646. 5   Default filing system number
  42647. 6   *Unplug for ROM modules 41-48
  42648. 7   *Unplug for ROM modules 49-56
  42649. 8   Reserved for Acorn
  42650. 9   Reserved for Acorn
  42651. 10  Screen info
  42652. Bits 0-3 ?        
  42653.      4   TV Interlace (first *TV parameters)
  42654.      5-7 TV Vertical adjust (signed three-bit
  42655.          numbers)
  42656. 11  Shift,Caps mode
  42657. Bits 0-2 Reserved
  42658.      3-5 ShCaps(001), NoCaps(010), Caps(100)
  42659.      6-7 Reserved
  42660. 12  Keyboard auto repeat delay
  42661. Set to zero to disable autorepeat
  42662. 13  Keyboard auto repeat rate
  42663. 14  Printer ignore character
  42664. 15  Printer information
  42665. Bits 0   Reserved
  42666.      1   0-Ignore 1-NoIgnore
  42667.      2-4 Serial baud rate (0=75,...,7=19200)
  42668.      5-7 Printer type
  42669. 16  Micellaneous flags
  42670. Bits 0   Reserved
  42671.      1   0=Quiet, 1=Loud
  42672.      2   Reserved
  42673.      3   0=Scroll, 1=NoScroll
  42674.      4   0=NoBoot, 1=Boot
  42675.      5-7 Serial data format (0...7)
  42676. 17  Reserved for Acorn use
  42677. 18  *Unplug for ROM modules 81 to 87
  42678. 19  Reserved for Acorn use
  42679. 20  Reserved for Acorn use
  42680. 21  Reserved for Acorn use
  42681. 22  Double click cancel distance
  42682. Really complicated to do by hand- use configure
  42683. 23  Reserved for Acorn use
  42684. 24  Default territory number
  42685. 25  Printer Buffer size in pagesize units
  42686. 26  A4 Portable spindown delay 
  42687. Bits 0-4 Spindown delay time
  42688.      5-7 ?
  42689. 27  Reserved for Acorn use 
  42690. 28  Various RISC OS 3.xx flags
  42691. Bits 0   Filename trucation    
  42692.      1   'DragASprite' file drags
  42693.      2   Interactive file copying -set to turn off
  42694.      3-7 ?
  42695. 29  Reserved for Acorn use
  42696. 30  Reserved for the User
  42697. 31  Reserved for the User
  42698. 32  Reserved for the User
  42699. 33  Reserved for the User
  42700. 34  Reserved for the User
  42701. 35  Reserved for the User
  42702. 36  Reserved for the User
  42703. 37  Reserved for the User
  42704. 38  Reserved for the User
  42705. 39  Reserved for the User
  42706. 40  Reserved for the User
  42707. 41  Reserved for the User
  42708. 42  Reserved for the User
  42709. 43  Reserved for the User
  42710. 44  Reserved for the User
  42711. 45  Reserved for the User
  42712. 46  Reserved for Applications
  42713. 47  Reserved for Applications
  42714. 48  Reserved for Applications
  42715. 49  Reserved for Applications
  42716. 50  Reserved for Applications
  42717. 51  Reserved for Applications
  42718. 52  Reserved for Applications
  42719. 53  Reserved for Applications
  42720. 54  Reserved for Applications
  42721. 55  Reserved for Applications
  42722. 56  Reserved for Applications
  42723. 57  Reserved for Applications
  42724. 58  Reserved for Applications
  42725. 59  Reserved for Applications
  42726. 60  Reserved for Applications
  42727. 61  Reserved for Applications
  42728. 62  Reserved for Applications
  42729. 63  Reserved for Applications
  42730. 64  Reserved for Applications
  42731. 65  Reserved for Applications
  42732. 66  Reserved for Applications
  42733. 67  Reserved for Applications
  42734. 68  Reserved for Applications
  42735. 69  Reserved for Applications
  42736. 70  Reserved for Applications
  42737. 71  Reserved for Applications
  42738. 72  Reserved for Applications
  42739. 73  Reserved for Applications
  42740. 74  Reserved for Applications
  42741. 75  Reserved for Applications
  42742. 76  Reserved for Applications
  42743. 77  Reserved for Applications
  42744. 78  Reserved for Applications
  42745. 79  Reserved for Applications
  42746. 80  Reserved for Risc iX
  42747. 81  Reserved for Risc iX
  42748. 82  Reserved for Risc iX
  42749. 83  Reserved for Risc iX
  42750. 84  Reserved for Risc iX
  42751. 85  Reserved for Risc iX
  42752. 86  Reserved for Risc iX
  42753. 87  Reserved for Risc iX
  42754. 88  Reserved for Risc iX
  42755. 89  Reserved for Risc iX
  42756. 90  Reserved for Risc iX
  42757. 91  Reserved for Risc iX
  42758. 92  Reserved for Risc iX
  42759. 93  Reserved for Risc iX
  42760. 94  Reserved for Risc iX
  42761. 95  Reserved for Risc iX
  42762. 96  Reserved for Risc iX
  42763. 97  Reserved for Risc iX
  42764. 98  Reserved for Risc iX
  42765. 99  Reserved for Risc iX
  42766. 100 Reserved for Risc iX
  42767. 101 Reserved for Risc iX
  42768. 102 Reserved for Risc iX
  42769. 103 Reserved for Risc iX
  42770. 104 Reserved for Risc iX
  42771. 105 Reserved for Risc iX
  42772. 106 Reserved for Risc iX
  42773. 107 Reserved for Risc iX
  42774. 108 Reserved for Risc iX
  42775. 109 Reserved for Risc iX
  42776. 110 Reserved for Risc iX
  42777. 111 Reserved for Risc iX
  42778. 112 Reserved for Expansion card use
  42779. 113 Reserved for Expansion card use
  42780. 114 Reserved for Expansion card use
  42781. 115 Reserved for Expansion card use
  42782. 116 Reserved for Expansion card use
  42783. 117 Reserved for Expansion card use
  42784. 118 Reserved for Expansion card use
  42785. 119 Reserved for Expansion card use
  42786. 120 Reserved for Expansion card use
  42787. 121 Reserved for Expansion card use
  42788. 122 Reserved for Expansion card use
  42789. 123 Reserved for Expansion card use
  42790. 124 Reserved for Expansion card use
  42791. 125 Reserved for Expansion card use
  42792. 126 Reserved for Expansion card use
  42793. 127 Reserved for Expansion card use
  42794. 128 Current Year (Lo byte)
  42795. 129 Current Year (Hi Byte)
  42796. 130 Reserved for Acorn use
  42797. 131 Reserved for Acorn use
  42798. 132 DumpFormat
  42799. Bits 0,1 Control character print control
  42800.          00 = Print as GSTrans  01 = print as dot
  42801.          10 = Print decimal inside angle brackets
  42802.          11 = Print hex inside angle brackets
  42803.      2   Print top-bit-set charecters if set
  42804.      3   AND charecter with &7F in *Dump
  42805.      4   Treat TAB as print 8 Spaces
  42806.      5   Tube expansion card enable
  42807.      6,7 Tube expansion card slot (0-3)
  42808. 133 Sync, and Monitor type
  42809. Bits 0   SyncBit
  42810.      1   ?
  42811.      2-6 monitor type
  42812.          00000=Normal     00001=MultiScan  
  42813.          00011=VGA        00010=Hi-res mono   
  42814.          00100=Super VGA  00101=LCD                        11111=Automatic
  42815.      7   ?
  42816. 134 Font cache size in units of 4K
  42817. 135 Number of floppy/ST506/IDE discs
  42818. Bits 0-2 Number of floppy discs     (max 4)
  42819.      3-5 Number of ST506 Hard Discs (max 2)
  42820.      6-7 Number of IDE Hard Discs   (max 2)
  42821. It seems that this is an area of future expansion
  42822. i.e. there seems to be CMOS space to allow more
  42823. than the max. number of drives
  42824. 136 ADFS use
  42825. 137 Number of 1024 byte ADFS file buffers
  42826. 138 Set *Cat format
  42827. 139 Current time zone time offset             
  42828. 140 Set *Examine format
  42829. 141 Set *Examine format
  42830. 142 Twin's byte
  42831. 143 Screen size in pagesize units
  42832. 144 RAM disc size in pagesize units
  42833. 145 System heap size in pagesize
  42834. After initialisation
  42835. 146 RMA size in pagesize to add
  42836. After initialisation
  42837. 147 Sprite size in pagesize
  42838. 148 SoundDefault parameters
  42839. Bits 0-3 Channel 0 Default voice
  42840.      4-6 loudness (0-7=&01,13,25,37,49,5B,6D,7F)
  42841.      7   loudspeaker enable
  42842. 149 BASIC Editor
  42843. 150 BASIC Editor
  42844. 151 BASIC Editor
  42845. 152 BASIC Editor
  42846. 153 Printer server name
  42847. 154 Printer server name
  42848. 155 Printer server name
  42849. 156 Printer server name
  42850. 157 Printer server name
  42851. 158 File server name
  42852. 159 File server name
  42853. 160 File server name
  42854. 161 File server name
  42855. 162 File server name
  42856. 163 File server name
  42857. 164 File server name
  42858. 165 File server name
  42859. 166 File server name
  42860. 167 File server name
  42861. 168 File server name
  42862. 169 File server name
  42863. 170 File server name
  42864. 171 File server name
  42865. 172 File server name
  42866. 173 *Unplug for ROM modules 9  to 16
  42867. 174 *Unplug for ROM modules 17 to 24
  42868. 175 *Unplug for ROM modules 25 to 32
  42869. 176 *Unplug for ROM modules 33 to 40
  42870. 177 32 bits for unplugged modules in podules
  42871. 178 32 bits for unplugged modules in podules
  42872. 179 32 bits for unplugged modules in podules
  42873. 180 32 bits for unplugged modules in podules
  42874. 181 Wild card for BASIC editor
  42875. 182 Wild card for BASIC editor
  42876. 183 Wild card for BASIC editor
  42877. 184 Wild card for BASIC editor
  42878. 185 Configured language
  42879. 186 Configured country
  42880. 187 VFS
  42881. 188 ROMFS opt 4 State, Blank delay 
  42882. Bits 0,1 ROMFS opt 4 State
  42883.      2   ?
  42884.      3-6 Screenblank delay
  42885.      7   ?
  42886. 189 Winchester size
  42887. 190 Econet Protection state
  42888. Bits 0   Peek
  42889.      1   Poke 
  42890.      2   JSR
  42891.      3   User RPC
  42892.      4   OS RPC
  42893.      5   Halt
  42894.      6   GetRegs
  42895.      7   ?
  42896. Set these to 1 to protect against the operation
  42897. 191 Mouse multiplier
  42898. 192 System speed
  42899. Bits 0-3 RAM Speed
  42900.      4   ROM Speed
  42901.      5   Cache enable for ARM3
  42902.      6,7 ? 
  42903. 193 ?
  42904. 194 Mouse Speed
  42905. 195 Auto. mode selection
  42906. Bits 0-3 ? 
  42907.      4   Automatic mode selection
  42908.      5-7 ?
  42909. 196 Default Screen mode
  42910. 197 Window manager status
  42911. Bits 0   Instant dragging -moving windows
  42912.      1   Instant dragging -resizing windows
  42913.      2   Instant dragging -horiz. scroll
  42914.      3   Instant dragging -vert. scroll
  42915.      4   Beep on error -set this to turn beep off
  42916.      5   Windows off screen to bottom & right
  42917.      6   Windows off screen to top & left
  42918.      7   Open submenus automatically
  42919. 198 Filer state
  42920. Bits 0,1 Display mode 
  42921.        00=Large icons  01=Small icons 10=full info
  42922.        11=Full info style, without the full info
  42923.      2,3  Sorting mode
  42924.        00=by name 01=by type 10=by size 11=by date
  42925.      4   Confirm
  42926.      5   Verbose
  42927.      6   Force 
  42928.      7   Newer
  42929. 199 ADFSDirCache Size in K
  42930. 200 Font cache limit in units of 4K
  42931. FontMax
  42932. 201 Max point height of rescaled bitmaps
  42933. FontMax1
  42934. 202 Max point size for antialiasing
  42935. FontMax2
  42936. complicated - use configure
  42937. 203 Max point size for cached bitmaps
  42938. FontMax3
  42939. complicated - use configure
  42940. 204 Horizontal sub-pixel anti-aliasing max
  42941. FontMax4
  42942. 205 Vertical sub-pixel anti-aliasing max   
  42943. FontMax5
  42944. 206 Reserved for Risc iX
  42945. 207 Reserved for Risc iX
  42946. 208 Number of SCSI hard discs
  42947. Bits 0-2 Number of SCSI Hard Discs
  42948.      3-7 ?
  42949. 209 Reserved for Risc iX
  42950. 210 Reserved for Risc iX
  42951. 211 Reserved for Risc iX
  42952. 212 ?
  42953. 213 ?
  42954. 214 ?
  42955. 215 Application auto-start flags
  42956. Bits 0   !Alarm
  42957.      1   !Calc
  42958.      2   !Chars  
  42959.      3   !Configure   
  42960.      4   !Draw
  42961.      5   !Edit   
  42962.      6   !Help
  42963.      7   !Paint
  42964. 216 Application auto-start flags
  42965. Bits 0   Battery Manager
  42966.      1-7 ?
  42967.  
  42968.  
  42969. 217 *Unplug for ROM modules 57 to 64
  42970. 218 *Unplug for ROM modules 65 to 72
  42971. 219 *Unplug for ROM modules 73 to 80
  42972. 220 Select BST/GMT, !Alarm options
  42973. Bits 0-2 !Alarm Display format
  42974.        001 - Alog & secs  011 - HH:MM   010 - Alog no secs
  42975.        100 - HH:MM:SS     101 - User defined     
  42976.      3   !Alarm 'Confirm alarm deletions'
  42977.      4   !Alarm 'auto. update of alarm database'
  42978.      5   !Alarm 'Repeating alarms fit ... week'
  42979.      6   !Alarm 'alarms are silent unless urgent'
  42980.      7   BST/GMT toggle (alters !Alarm & RISC OS 3.xx)
  42981. 221 Drag Delay
  42982. Really complicated to do by hand- Use configure
  42983. 222 Drag Start Distance
  42984. Really complicated to do by hand- Use configure
  42985. 223 Double Click Delay
  42986. Really complicated to do by hand- Use configure
  42987. 224 Reserved for Risc iX
  42988. 225 Reserved for Risc iX
  42989. 226 Reserved for Risc iX
  42990. 227 Reserved for Risc iX
  42991. 228 Reserved for Risc iX
  42992. 229 Reserved for Risc iX
  42993. 230 Reserved for Risc iX
  42994. 231 Reserved for Risc iX
  42995. 232 Reserved for Risc iX
  42996. 233 Reserved for Risc iX
  42997. 234 Reserved for Risc iX
  42998. 235 Reserved for Risc iX
  42999. 236 Reserved for Risc iX
  43000. 237 Reserved for Risc iX
  43001. 238 Reserved for Risc iX
  43002. 239 CMOS RAM checksum
  43003. END
  43004. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootDëÿÿ»Ŷ㇠o!HelpDÿÿÿhÁí=o!RunDëÿÿ½ñ◰ãÁ
  43005. o!RunImageDûÿÿ0“Êìc o!SpritesDùÿÿ)¤éào!Sprites22Dùÿÿé#{ã\pTemplatesDìÿÿþ;½ìWoUserDýÿÿo·\ñp!BootDëÿÿ»Ŷ㇠o!HelpDÿÿÿhÁí=o!RunDëÿÿ½ñ◰ãÁ
  43006. o!RunImageDûÿÿ0“Êìc o!SpritesDùÿÿ)¤éào!Sprites22Dùÿÿé#{ã\pTemplatesDìÿÿþ;½ìWoUserDýÿÿo·\ñpk!CMOSsave!CMOSsaveNick¼IconSprites <Obey$Dir>.!Sprites
  43007. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     CMOSsave
  43008. --------
  43009.  
  43010. CMOSsave allows you to save all of the computers CMOS ram to disk. This means that ALL the configuration settings like CDROMDrives and ADFSbuffers get saved, not just some (as !Configure does).
  43011.  
  43012. Saving
  43013. ------
  43014. To save the settings, just click on the CMOSsave icon on the icon bar. This opens up a save box to allow you to set the name of the file you want. The hourglass will appear while it is saving because it takes a while to save it all.
  43015.  
  43016. Loading
  43017. -------
  43018. To load the settings, either drag the settings file to the CMOSsave icon or double click on the settings file. Again, the hourglass will appear because loading takes even longer (on an ARM 250 machine, anyway!)
  43019.  
  43020. Registration
  43021. CMOSsave is Shareware. This means that after a period of THIRTY days you must either register it or stop using it. To register it, fill in the registration form at the end of this document and send it with TWO pounds to the address on the registration form. The "Register as" section on the form is the name you want Protect to be registered to (e.g. your name or your companies name).
  43022.  
  43023. Any comments on CMOSsave are welcome (even if you don't register) and should be sent to the address on the registration form.
  43024.  
  43025. You may freely copy the unregistered version (this one) but not the full registered version. If you run a PD or Shareware library, you may distribute this as long as you do not remove or change any files, and contact me first to obtain the latest version
  43026.  
  43027. © Alastair Gilmour, October 1993.
  43028.  
  43029.  
  43030. Registration Document (CMOSsave)
  43031.  
  43032. Name:
  43033.  
  43034.  
  43035. Address:
  43036.  
  43037.  
  43038.  
  43039.  
  43040.  
  43041. Postcode:
  43042.  
  43043.  
  43044. Register as:
  43045.  
  43046.  
  43047.  
  43048. I enclose TWO pounds
  43049.     Signed:
  43050.  
  43051.  
  43052. Why did you register this programme?
  43053.  
  43054.  
  43055.  
  43056.  
  43057. How can this product be improved?
  43058.  
  43059.  
  43060.  
  43061. Any other comments?
  43062.  
  43063.  
  43064.  
  43065. Send this form or any comments, bugs etc. to:
  43066.         Alastair Gilmour,
  43067.         32 Kellwood Place,
  43068.         Dumfries,
  43069.         DG1 4HJ.
  43070.  
  43071.         (0387) 62533
  43072.    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     IconSprites <Obey$Dir>.!Sprites
  43073. Set CMOSsave$Dir <Obey$Dir>
  43074. Set File$Type_0FD CMOSsaved
  43075. *Set Alias$@RunType_0FD Run <Obey$Dir>.!Run %%*0
  43076. WimpSlot -min 16k -max 16k
  43077. Run <Obey$Dir>.!RunImage %*0
  43078. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  43079. ô >!RunImage!î Ŷ:ñ⇩0,0):ö:ñ" at line ";fi:à    òinit(õ2
  43080.  òpoll<ý quit%=¹FÈ− "Wimp_CloseDown"PàZ:d Ý òinitnHÞ block% 1000, ind% 1000, ind2% 1000, menu% 100, name% 11, indi% 255xÞ bufff% 20, bufff2% 20ŵ<È− "Wimp_Initialise",200,&4B534154,"CMOSsave" ¸ ,taskid%…òbar_icon„òtemplates 
  43081. òmenusª quit%=£´ òget_env¾òget_regs("CMOSsave$Dir")ÈáÒ:Ü Ý òpollæ"È− "Wimp_Poll",0,block% ¸ res%ðȉ res% Êú*  É 1,2 : È− "Wimp_OpenWindow",,block%)  É 3 : È− "Wimp_CloseWindow",,block%  É 6 : òclick  É 7 : òstartsave"  É 8 : òkey,!  É 9 : ç !block%=1 … quit%=¹6  É 17,18 : òmessage@   É 19 :JËTá^:hÝ òbar_iconr!block%=-1:block%!4=0|block%!8=0:block%!12=68ŷ block%!16=68:block%!20=&3002‘$(block%+24)="!cmossave"Œ'È− "Wimp_CreateIcon",,block% ¸ bar%¤á®:¸Ý òtemplatesÂ6È− "Wimp_OpenTemplate",,"<CMOSsave$Dir>.Templates"Ì$name%="ProgInfo"Ö<È− "Wimp_LoadTemplate",,block%,ind%,ind%+1000,-1,name%,0à-È− "Wimp_CreateWindow",,block% ¸ infobox%ê$name%="xfer_Send"ô>È− "Wimp_LoadTemplate",,block%,ind2%,ind2%+1000,-1,name%,0þ,È− "Wimp_CreateWindow",,block% ¸ savebo%È− "Wimp_CloseTemplate"!block%=savebo%:block%!4=1"È− "Wimp_GetIconState",,block%&indi%=block%!280á::D Ý òmenusN$menu%="CMOSsave"X/menu%!12=7:menu%?13=2:menu%?14=7:menu%?15=0b&menu%!16=96:menu%!20=44:menu%!24=0lEmenu%!28=0:menu%!32=infobox%:menu%!36=&7000021:$(menu%+40)="Info"v@menu%!52=&80:menu%!56=0:menu%!60=&7000021:$(menu%+64)="Quit"€á⇩:“Ý ¤str(ptr%)fi
  43082. ê str$¨È” ?ptr%<>0²str$+=½(?ptr%):ptr%+=1¼ÎÆ    =str$Ð:ÚÝ òerror(err$)ä#!block%=255:$(block%+4)=err$+½0î-È− "Wimp_ReportError",block%,1,"CMOSsave"øá:
  43083. Ý òkey
  43084. ȉ ¹ Ê /  É block%!24=13 € !block%=savebo% : òquick*(   : È− "Wimp_ProcessKey",block%!244Ë>áH:R Ý òclick\ȉ block%!12 Êf  É -2 : È‰ block%!8 ÊpB              É 2 : È− "Wimp_CreateMenu",,menu%,!block%-64,184z)              É 4,1 : !block%=savebo%☓=                         È− "Wimp_GetWindowState",,block%‰9                         È− "Wimp_OpenWindow",,block%—            Ë¢   É savebo% : È‰ block%!16 Ê¬1                 É 0 : ç block%!8=64 òdragbox¶.                 É 2 : ç block%!8=4 òquickÀ               ËÊËÔáÞ:èÝ òmessageòȉ block%!16 Êü  É 0 : quit%=¹  É 2 : òdata_save1  É 3 : òload_file(block%!40,¤str(block%+44))  É 5 : ç block%!40=&0FD …$!           block%!12=block%!8.           block%!16=487           È− "Wimp_SendMessage",17,block%,block%!4B/           òload_file(&0FD,¤str(block%+44))L           ÌV           Í`Ëját:~Ý òload_file(type%,file$)⇦ç type%<>&0FD … á‹F%=‰(file$)†È− "Hourglass_On"¦ã A=1 ¸ 240°'È− "Hourglass_Percentage",A/239*100º è#F%,B%ÄÈ− "OS_Byte",&A2,A-1,B%ÎíØÈ− "Hourglass_Off"âÙ#F%ìáö: Ý òquick
  43085. q%=£!block%=savebo%:block%!4=1"È− "Wimp_GetIconState",,block%(file$=$indi%2ç §file$,".") …<òsaveit(file$)FÌP?òerror("To save, drag the icon to a directory viewer"):q%=¹ZÍdç q%=£ … òclosenáx:ŵÝ òstartsave…!block%=savebo%:block%!4=1„"È− "Wimp_GetIconState",,block% file$=$(block%!28)ª$È− "Wimp_GetPointerInfo",,block%´+block%!20=block%!12:block%!24=block%!16¾(block%!28=!block%:block%!32=block%!4Èblock%!36=1200Ò!block%=64:block%!12=0Üblock%!16=1:block%!40=&0FDæ!$(block%+44)=¤get_leaf(file$)ð7È− "Wimp_SendMessage",18,block%,block%!20,block%!24úá:Ý ¤get_leaf(f$)È” §f$,".")"f$=Áf$,§f$,".")+1),Î6
  43086. =f$+½0@:JÝ òsaveit(file$)TF%=®(file$)^È− "Hourglass_On"hã A=1 ¸ 240rÈ− "OS_Byte",&A1,A-1 ¸ ,,B%| ñ#F%,B%ŷ'È− "Hourglass_Percentage",A/239*100‘íŒÈ− "Hourglass_Off"¤Ù#F%®ÿ("SetType "+file$+" 0FD")¸áÂ:ÌÝ òdragboxÖ!block%=savebo%à$È− "Wimp_GetWindowState",,block%êox%=block%!4-block%!20ôoy%=block%!16-block%!24þblock%!4=0"È− "Wimp_GetIconState",,block%$block%!4=5:block%!8=ox%+block%!8block%!12=oy%+block%!12&block%!16=ox%+block%!160block%!20=oy%+block%!20:block%!24=0:block%!28=0Dblock%!32=&7FFFFFFFNblock%!36=&7FFFFFFFXÈ− "Wimp_DragBox",,block%bál:vÝ òdata_save€$indi%=¤str(block%+44)⇩òsaveit($indi%)“block%!12=block%!8fiblock%!16=3:!block%=256¨7È− "Wimp_SendMessage",18,block%,block%!20,block%!24²
  43087. òclose¼áÆ:Ð Ý òcloseÚ!block%=savebo%ä!È− "Wimp_CloseWindow",,block%îáø:Ý òget_env È− "OS_GetEnv" ¸ com$com$=¤get_com(com$) ç com$="" … á*òload_file(&0FD,com$)4á>:HÝ ¤get_com(s$)Rê len%,c$,c%\len%=©(s$)f    c$=""p c%=len%zÈ” c$<>½34☓c$=Ás$,c%,1)‰    c%-=1—ôPRINTTAB(3,3)c$¢ά=Âs$,len%-c%-2)¶Ý òget_regs(path$)À    ê tu%Ê Þ tu% 50Ôfile%=‰("<"+path$+">.User")Þè#file%,reg$èè#file%,lic$ò Ù#file%ü!block%=infobox%:block%!4=9    "È− "Wimp_GetIconState",,block%    tu%=block%!28    $tu%=¤decode(reg$)    $ !block%=infobox%:block%!4=11    ."È− "Wimp_GetIconState",,block%    8tu%=block%!28    B$tu%=lic$    Lá    V:    `Ý ¤decode(a$)    jê c%,s$,a%    t    s$=""    ~ã a%=1 ¸ ©(a$)    ⇦c$=Áa$,a%,1)    ‹ c%=–(c$)    † c%=c%ŵ16    ¦s$+=½(c%)    °í    º=s$ÿderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!cmossave,€ """""""""DDtDDtDDwwwwwwwwwEGETtEwwwwwwwwwwwDEDEGDDD·GwwwwwwwfFfEfFfF»;fFfFfFfMÝMÝMÝMÝ»ÛMÝMÝMÝMÝÝÝÝÝÝÝ»»»;ÝÝÝÝÝÝÝÝÝÝ33±»»33ÝÝÝÝÝÝÝ⇦⇦""»⇧ŷ(⇦⇦ÝÝÝÝÝÝÝ⇦⇦""Bŵ⇦(⇦⇦ÝÝÝÝÝÝÝ⇦⇦DDDDDD⇦⇦ÝÝÝÝÝÝÝ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÝÝÝÝÝÝÝ⇦CCC0⇦ÝÝÝÝÝÝÝ⇦DDD@⇦ÝÝÝÝÝÝÝ⇦wwpwpw⇦ÝÝÝÝÝÝÝ⇦⇦ÝÝÝÝÝÝÝ3333333333ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððÿððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_0fd¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿgFfFfFfFfFfFfFfFvGDtDDtDDwwwwwwwwwGGDDtDwwwwwwwwwwwGTTTGTDD{KwwwwwwwgFf6fFfF»KV6V6V6vG@@@» @@@p»»»;p33±»»33p⇦⇦""»⇧ŷ(⇦⇦p⇦⇦""Bŵ⇦(⇦⇦p⇦⇦DDDDDD⇦⇦p⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦p⇦CCC0⇦p⇦DDD@⇦p⇦wwpwpw⇦p⇦⇦pGDDDxxxxxxxxxfDDtWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿDCProgInfoÐxfer_send‘Òzÿÿÿÿ☓ Xþÿÿp=0Øÿÿÿÿ ÿÿÿŒ,ÿÿÿ1User:n:>þŒÌÿÿÿfüÿÿÿ=aëÿÿÿÿŒ—ÿÿÿfÈÿÿÿ=aôÿÿÿÿŒdÿÿÿf“ÿÿÿ=aÿÿÿÿŒ0ÿÿÿf`ÿÿÿ=a(ÿÿÿÿ>ÐÿÿÿŒøÿÿÿ9;ÿÿÿÿ †ÿÿÿŒÄÿÿÿ9Purpose:>þhÿÿÿŒ‘ÿÿÿ9Author:d>þ8ÿÿÿŒ`ÿÿÿ9Version:>þŒ“þÿÿf,ÿÿÿ=aAÿÿÿÿ2hþÿÿŒ‘þÿÿ1Reg No:>þŒ`þÿÿf‘þÿÿ=aBÿÿÿÿ
  43088. About this ProgramCMOSsaveSave the CMOS ram settings© Alastair Gilmour, 19931.01 (09 Oct 1993)Name:Â☓¾0ÿÿÿÿŷüÿÿ=Save as:>N¤ÿÿÿ‹ìÿÿÿa׸¹ `ÿÿÿ¼‘ÿÿÿ=ñÃÌÂ`ÿÿÿô‘ÿÿÿ=‘ÇOKtitled>dSfile_0fdCMOSdataA~ orks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     `|!cmossave!,ÔDDDDDDDDDwwwwwwwwwwwwwwwwwqqwwwwwwwwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwww»wwwwwwwwwwwwwww»{wwwwwwwDDDD» DDDD@@@@» @@@@@@@@» @@@@»»»»»»» °»» ⇦⇦"²»»""⇦⇦⇦⇦""»⇧⇦(⇦⇦⇦⇦""»⇧⇦(⇦⇦⇦⇦""²ŵ⇦(⇦⇦⇦⇦"""ŵ⇦(⇦⇦⇦⇦""""""⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦wwwp⇦⇦wwwp⇦⇦⇦⇦wwpwpw⇦⇦wwpwpw⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððÿððððÿÿÿððððÿððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔfile_0fd!,,wwwwwwwwwwwwwwwwwGDDDDDDDtwwwwwwwwwwwwwwwwwqqwwwwwwwwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwww»wwwwwwwwwwwwwww»{wwwwwwwGDDD» DDDtG@@@» @@@pG@@@» @@@p»»»»p»»» p°»» p⇦⇦"²»»""⇦⇦p⇦⇦""»⇧⇦(⇦⇦p⇦⇦""»⇧⇦(⇦⇦p⇦⇦""²ŵ⇦(⇦⇦p⇦⇦"""ŵ⇦(⇦⇦p⇦⇦""""""⇦⇦p⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦p⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦p⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦p⇦⇦p⇦wwwp⇦p⇦wwwp⇦p⇦⇦p⇦wwpwpw⇦p⇦wwpwpw⇦p⇦⇦p⇦⇦p⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦pwwwwwwwwwwwwwwwww    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks      tubudcywuB~E1DAMCrWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BootFëÿÿ>§ÅÝÉq!HelpFëÿÿÌ™ÀÞ+q!Read AllGýÿÿD–Øàr!RunFëÿÿ£B£Þµq!RunImageFûÿÿí#Þ¸q!SpritesFùÿÿ«⇧ÃÝh&sBannerFûÿÿ'T£Þ6qCMOSFS²Fúÿÿf‘ÅÝgt!BootFëÿÿ>§ÅÝÉq!HelpFëÿÿÌ™ÀÞ+q!Read AllGýÿÿD–Øàr!RunFëÿÿ£B£Þµq!RunImageFûÿÿí#Þ¸q!SpritesFùÿÿ«⇧ÃÝh&sBannerFûÿÿ'T£Þ6qCMOSFS²Fúÿÿf‘ÅÝgtk!CMOS FS²!CMOS FS²Nick⇧| >!CMOS FS.!Boot
  43089.  
  43090. Set CMOSFS$Dir <Obey$Dir>
  43091. Set CMOSFS$Path <Obey$Dir>.,Resources:$.Resources.CMOSFS².
  43092.  
  43093. IconSprites CMOSFS:!Sprites
  43094.  
  43095. Set File$Type_3FA CMOS
  43096. Set Alias$@RunType_3FA Run CMOSFS:!Run %%*0
  43097. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Run <Obey$Dir>.!Boot
  43098.  
  43099. Run CMOSFS:!Read All
  43100.      WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | >!CMOS FS.!Run
  43101.  
  43102. Set CMOSFS$Dir <Obey$Dir>
  43103. Set CMOSFS$Path <Obey$Dir>.,Resources:$.Resources.CMOSFS².
  43104.  
  43105. IconSprites CMOSFS:!Sprites
  43106.  
  43107. RMEnsure UtilityModule 3.00 Error You need RISC OS 3 or later to run CMOSFS - ever considered upgrading to it?
  43108. RMEnsure CMOSFS 0.00 RMLoad CMOSFS:CMOSFS²
  43109.  
  43110. Set File$Type_3FA CMOS
  43111. Set Alias$@RunType_3FA Run CMOSFS:!Run %%*0
  43112.  
  43113. Run CMOSFS:Banner
  43114. WimpSlot -Min 16K -Max 16K
  43115. Run CMOSFS:!RunImage
  43116.  
  43117. RMKill CMOSFS²rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  43118. ô >!CMOS FS.!RunImage3ô © James Robinson, 1996 - All rights reserved.(!î Ŷ:ñ⇩0,0):ö:ñ" at line ";fi:à2    òinit<õF
  43119.  òpollPý quit%=¹ZÈ− "Wimp_CloseDown"dàn:x Ý òinitŵHÞ block% 1000, ind% 1000, ind2% 1000, menu% 100, name% 11, indi% 255…Þ bufff% 20, bufff2% 20„FÈ− "Wimp_Initialise",200,&4B534154,"CMOS Filing System" ¸ ,taskid% òbar_iconªòtemplates´
  43120. òmenus¾ quit%=£È òget_envÒòget_regs("CMOSFS:")Üáæ:ð Ý òpollú"È− "Wimp_Poll",0,block% ¸ res%ȉ res% Ê*  É 1,2 : È− "Wimp_OpenWindow",,block%)  É 3 : È− "Wimp_CloseWindow",,block%"  É 6 : òclick,  É 7 : òstartsave6  É 8 : òkey@!  É 9 : ç !block%=1 … quit%=¹J  É 17,18 : òmessageT   É 19 :^Ëhár:|Ý òbar_iconŷ!block%=-2:block%!4=0‘block%!8=0:block%!12=68Œ block%!16=68:block%!20=&3002¤$(block%+24)="!CMOS FS²"®'È− "Wimp_CreateIcon",,block% ¸ bar%¸áÂ:ÌÝ òtemplatesÖ.È− "Wimp_OpenTemplate",,"CMOSFS:Templates"à$name%="ProgInfo"ê<È− "Wimp_LoadTemplate",,block%,ind%,ind%+1000,-2,name%,0ô-È− "Wimp_CreateWindow",,block% ¸ infobox%þ$name%="Xfer_Send">È− "Wimp_LoadTemplate",,block%,ind2%,ind2%+1000,-2,name%,0,È− "Wimp_CreateWindow",,block% ¸ savebo%È− "Wimp_CloseTemplate"&!block%=savebo%:block%!4=10"È− "Wimp_GetIconState",,block%:indi%=block%!28DáN:X Ý òmenusb$menu%="CMOS FS²"l/menu%!12=7:menu%?13=2:menu%?14=7:menu%?15=0v&menu%!16=96:menu%!20=44:menu%!24=0€Emenu%!28=0:menu%!32=infobox%:menu%!36=&7000021:$(menu%+40)="Info"⇩@menu%!52=&80:menu%!56=0:menu%!60=&7000021:$(menu%+64)="Quit"“áfi:¨Ý ¤str(ptr%)²
  43121. ê str$¼È” ?ptr%<>0Æstr$+=½(?ptr%):ptr%+=1ÐÎÚ    =str$ä:îÝ òerror(err$)ø#!block%=255:$(block%+4)=err$+½07È− "Wimp_ReportError",block%,1,"CMOS Filing System" á: 
  43122. Ý òkey*
  43123. ȉ ¹ Ê4/  É block%!24=13 € !block%=savebo% : òquick>(   : È− "Wimp_ProcessKey",block%!24HËRá\:fÝ òcancelp
  43124. ȉ ¹ Êz
  43125. òclose☓& : È− "Wimp_ProcessKey",block%!24‰Ë—á¢:¬ Ý òclick¶ȉ block%!12 ÊÀ  É -2 : È‰ block%!8 ÊÊB              É 2 : È− "Wimp_CreateMenu",,menu%,!block%-64,184Ô)              É 4,1 : !block%=savebo%Þ=                         È− "Wimp_GetWindowState",,block%è9                         È− "Wimp_OpenWindow",,block%ò            Ëü   É savebo% : È‰ block%!16 Ê1                 É 0 : ç block%!8=64 òdragbox.                 É 2 : ç block%!8=4 òquick               Ë$Ë.á8:BÝ òmessageLȉ block%!16 ÊV  É 0 : quit%=¹`  É 2 : òdata_savej1  É 3 : òload_file(block%!40,¤str(block%+44))t  É 5 : ç block%!40=&3FA …~!           block%!12=block%!8⇦           block%!16=4‹7           È− "Wimp_SendMessage",17,block%,block%!4†/           òload_file(&3FA,¤str(block%+44))¦           Ì°           ÍºËÄáÎ:ØÝ òload_file(type%,file$)âç type%<>&3FA … áìF%=‰(file$)öÈ− "Hourglass_On"ã A=1 ¸ 240
  43126. 'È− "Hourglass_Percentage",A/239*100 è#F%,B%È− "OS_Byte",&A2,A-2,B%(í2È− "Hourglass_Off"<Ù#F%FáP:Z Ý òquickdq%=£n!block%=savebo%:block%!4=1x"È− "Wimp_GetIconState",,block%ŵfile$=$indi%…ç §file$,".") …„òsaveit(file$) Ìª^òerror("You must drag the icon to a filer window first or enter the full path name."):q%=¹´Í¾ç q%=£ … òcloseÈáÒ:ÜÝ òstartsaveæ!block%=savebo%:block%!4=1ð"È− "Wimp_GetIconState",,block%úfile$=$(block%!28)$È− "Wimp_GetPointerInfo",,block%+block%!20=block%!12:block%!24=block%!16(block%!28=!block%:block%!32=block%!4"block%!36=1200,!block%=64:block%!12=06block%!16=1:block%!40=&3FA@!$(block%+44)=¤get_leaf(file$)J7È− "Wimp_SendMessage",18,block%,block%!20,block%!24Tá^:hÝ ¤get_leaf(f$)rÈ” §f$,".")|f$=Áf$,§f$,".")+1)ŷΑ
  43127. =f$+½0Œ:¤Ý òsaveit(file$)®F%=®(file$)¸È− "Hourglass_On"Âã A=1 ¸ 240ÌÈ− "OS_Byte",&A1,A-2 ¸ ,,B%Ö ñ#F%,B%à'È− "Hourglass_Percentage",A/239*100êíôÈ− "Hourglass_Off"þÙ#F%ÿ("SetType "+file$+" 3FA")á:&Ý òdragbox0!block%=savebo%:$È− "Wimp_GetWindowState",,block%Dox%=block%!4-block%!20Noy%=block%!16-block%!24Xblock%!4=0b"È− "Wimp_GetIconState",,block%l$block%!4=5:block%!8=ox%+block%!8vblock%!12=oy%+block%!12€block%!16=ox%+block%!16⇩block%!20=oy%+block%!20“block%!24=0:block%!28=0fiblock%!32=&7FFFFFFF¨block%!36=&7FFFFFFF²È− "Wimp_DragBox",,block%¼áÆ:ÐÝ òdata_saveÚ$indi%=¤str(block%+44)äòsaveit($indi%)îblock%!12=block%!8øblock%!16=3:!block%=2567È− "Wimp_SendMessage",18,block%,block%!20,block%!24 ô PROCcloseá :* Ý òclose4!block%=savebo%>!È− "Wimp_CloseWindow",,block%HáR:\Ý òget_envfÈ− "OS_GetEnv" ¸ com$pcom$=¤get_com(com$)zç com$="" … á☓òload_file(&3FA,com$)‰á—:¢Ý ¤get_com(s$)¬ê len%,c$,c%¶len%=©(s$)À    c$=""Ê c%=len%ÔÈ” c$<>½34Þc$=Ás$,c%,1)è    c%-=1òô PRINTTAB(3,3)c$üΠ   =Âs$,len%-c%-2)    Ý òget_regs(path$)        ê tu%    $ Þ tu% 50    .!block%=infobox%:block%!4=9    8"È− "Wimp_GetIconState",,block%    Btu%=block%!28    L !block%=infobox%:block%!4=11    V"È− "Wimp_GetIconState",,block%    `tu%=block%!28    já    t:    ~Ý ¤decode(a$)    ⇦ê c%,s$,a%    ‹    s$=""    †ã a%=1 ¸ ©(a$)    ¦c$=Áa$,a%,1)    ° c%=–(c$)    º c%=c%ŵ16    Äs$+=½(c%)    Îí    Ø=s$ÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     
  43128. "ô Splash box display programmeÞ b% &200(9È− "Wimp_Initialise",200,&4B534154,"Read All Welcome"2<ô SYS "Hourglass_On"F,È− "OS_File",5,"CMOSFS:Sprites" ¸ ,,,,L%PÞ S% L%+16,PX% 16,TR% 16Z(!S%=L%+16: S%!4=0: S%!8=16: S%!12=16dÈ− "OS_SpriteOp",&109,S%n-È− "OS_SpriteOp",&10A,S%,"CMOSFS:Sprites"x:È− "Wimp_ReadPixTrans",&100,S%,"welcome",0,0,0,PX%,TR%ŵ/È− "OS_ReadModeVariable",-1,11 ¸ ,,screenx%…/È− "OS_ReadModeVariable",-1,12 ¸ ,,screeny%„+È− "OS_ReadModeVariable",-1,5 ¸ ,,yeig% +È− "OS_ReadModeVariable",-1,4 ¸ ,,xeig%ª9screenx%=screenx%*2*xeig%:screeny%=screeny%*(2*yeig%)´screenx%=(screenx% Ŵ 2)-268¾screeny%=(screeny% Ŵ 2)-170ÈDÈ−"OS_SpriteOp",&134,S%,"welcome",screenx%,screeny%+70,0,PX%,TR%Ò.È−"Wimp_ForceRedraw", -1,-1E6,-1E6,1E6,1E6ÜÈ−"Wimp_CloseDown"æÈ—ÿWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!HelpFÿÿÿ±>ß  r!RunFëÿÿ€GÀÞæ r!RunImageFøÿÿ§ÁfiÞ„ r!SpritesFùÿÿê§TÁàr!Sprites22Fùÿÿ⇨fiTÁ⇦rTemplatesFìÿÿT¬—×ôr!HelpFÿÿÿ±>ß  r!RunFëÿÿ€GÀÞæ r!RunImageFøÿÿ§ÁfiÞ„ r!SpritesFùÿÿê§TÁàr!Sprites22Fùÿÿ⇨fiTÁ⇦rTemplatesFìÿÿT¬—×ôrq!Read All!Read AllNickP   
  43129.             /--------     |\      /|     /-------\      /-------
  43130.            /              | \    / |    /         \    /
  43131.            |              |  \  /  |    |         |    |
  43132.            |              |   \/   |    |         |    |
  43133.            |              |        |    |         |    \-------\
  43134.            |              |        |    |         |            |
  43135.            |              |        |    |         |            |
  43136.            \              |        |    \         /            /
  43137.             \--------     |        |     \-------/     -------/
  43138.       ___ .     .                   __           
  43139.      |       |      ___    ___     |__           __   |      __
  43140.      |--  |  |  |  |   |  |   |       |  |   |  |__   |--   |__|  |\/|
  43141.      |    |  |  |  |   |  |___|     __|  |___|   __|  |___  |__   |  |
  43142.                               |              |                               
  43143.                             __|           ___|                              
  43144.  
  43145.  
  43146.                   ***   U  S  E  R     G  U  I  D  E  ***
  43147.  
  43148.  
  43149.  
  43150. CMOS FS isn't actually a filing system, but it's the only name I could think
  43151. of at the time so that is what I called it.
  43152.  
  43153. CMOS FS allows you to save and reload the entire CMOS RAM - unlike
  43154. Configure, which although saves all of the CMOS,  it will only load back
  43155. what it knows.
  43156.  
  43157.                 ---------------------------------------
  43158.  
  43159. To use, simply double-click on the !CMOS FS² icon. It will load onto the
  43160. left-hand side of the icon bar, right-most of all icons.
  43161.  
  43162. Click on the icon with select or adjust to bring up the "Save as:" dialogue
  43163. box.
  43164.  
  43165. Enter the full pathname and click OK, or drag the icon to a filer window.
  43166.  
  43167. That's it! You've saved all you CMOS to disc. To quit simply select 'quit'
  43168. from the iconbar menu.
  43169.  
  43170. Please note that the "Cancel icon" will not actually work at the moment - I
  43171. forgot to put the code in and now I can't be bothered. If anyone will be
  43172. bothered to put it in then please will you send me a copy. My address is at
  43173. the bottom. I will send you the disc back with loads of goodies if you send
  43174. an SAE as well.
  43175.  
  43176.                 ---------------------------------------
  43177.  
  43178. Boring Legal S**t.
  43179.  
  43180. CMOS FS is Postcardware. You must not hack it, or otherwise modify it
  43181. without sending me a copy with a postcard. Stupid I know, but I like the
  43182. idea.
  43183.  
  43184. I cannot be held responsible for any accident, injury (fat chance of those),
  43185. loss of data, or anything like that, whether caused directly or indirectly
  43186. by the use (or misuse) of CMOS FS. I cannot guarantee that this software is
  43187. fit for any particular purpose, but if you do have a problem, and if you ask
  43188. me very nicely on a good day, I may help you with any problems you might
  43189. have.
  43190.  
  43191.                 ---------------------------------------
  43192.  
  43193. If you want to send me a hacked copy, a donation for my PRM fund (unlikely
  43194. I'll get anything though), or anything like that, write to me at:
  43195.  
  43196. James Robinson,
  43197. Tŷ Gwyn,
  43198. 11 Lôn Gwynfryn,
  43199. Cwmgwyn,
  43200. Sketty,
  43201. Swansea,
  43202. W Glam,
  43203. SA2 0TZ.
  43204.  
  43205.  
  43206. WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | >!ReadAll.!Run
  43207. | © James Robinson, 1996 - All rights reserved.
  43208.  
  43209. Set ReadAllAboutIt$Dir <Obey$Dir>
  43210. Set ReadAllAboutIt$Path <ReadAllAboutIt$Dir>.
  43211.  
  43212. IconSprites ReadAllAboutIt:!Sprites
  43213.  
  43214. WimpSlot -Min 16k
  43215. Run ReadAllAboutIt:!RunImageWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     êt Àå À•àÛ…âÐMâ³ë½ëHë8flå  áŴåËïŒëxflå  áÇïàOâ •âñŵàð áð á’ê“êð áð á›êð áê.êð áð áð áð áð áð áð á•ê‰ê™êlflådflåÝïï±ü    @-é’åô flåPá   0 D
  43216. Ü flåPá  0à?
  43217. Ô flåPá   0 :
  43218. ¼ flåPá  0à5
  43219. ´ flåPá  0 ;
  43220. † flåPá  0 6
  43221. “ flåPá  0 1
  43222. | flåPá  0 ,
  43223. t flåPá  0 =
  43224. \ flåPá  0 8
  43225. T flåPá  0 3
  43226. < flåPá  0 .
  43227. Ü艕…™fifl†‡®¯¬­pflåŴåËï’ç€àŴçÅï ã ãèDflåŴåËïSã0’@’0Dïÿÿ
  43228. Sã0’@’0Cêÿÿ
  43229. Sã0’ @’0Dåÿÿ
  43230. 0’å @’å0CàáÿÿêSã 0flÛÿÿ
  43231. Sã0flØÿÿ
  43232. Sã0flÕÿÿ
  43233. 0flåÓÿÿêÿÿÿÿ@-éÅï◰j€½èÆïxÿÿê@-é ’å â€àãÒè@-é†åPãmÿÿ
  43234. €½è@-éÈ ãflå •âÀï •å€½èRAAITASK@-ép•âÙïej  á‘ •âK?•â@àã` ãhP•âÛïÁï•å@àã` ã\P•âÛïÁï•å_•â Ŵå ã •â<ëÚè1.10 (30 Jan 1990)<Obey$Dir>.TemplatesMain       Info       B-éd‘…â⇨å⇨å     áÎï’åÒäÁäPãûÿÿ     á’äŴåÉïPã
  43235.      áÊïúÿÿêŵ½è ãq/Oâßïóþÿê †å@ Bâ0†å•âÔèHelp☓,ÿÿÿÿ!Info€ÿÿÿÿ!Quit@-é †åRãÖþÿ
  43236. €½è@-é ão•âïPãq•Öÿÿ
  43237. ° á«…â@ ⇩â
  43238. ‘ á    Jâ€àà〠áìïXák•ÂÊÿÿÊ€ ãp ãF ãÃï…âLåŴå ãŴåÎï’äŴå` á,ŴâpåŴåÌï,’åŴå0’åŴå4’åŴå8’å Ŵåÿ ã•â
  43239.   á0 ãï°⇩àP ã@ áÚä Zá5
  43240. ÿUã ÃJÅ Pã ³JµPŶâPãóÿÿUá@ ÁXã      á„åÒäÁäPãûÿÿ ê á’å @âŴå’å @âŴå    JàYã
  43241. ‘ŴåÂï€⇦â
  43242. ‘ áP ãWã×ÿÿ
  43243. 0àã 
  43244. à( ⇩â,ŷâlå   ã—à0câ 0Câ0Ŵå  ã“à0Câ0Ŵå×ïÁèÚåPã
  43245. pÊäp ãÌÿÿê<Obey$Dir>.!Help Can't find '<ReadAllAboutIt$Dir>.!Help'Not enough memory availableThis is a James Robinson programmeWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     äÔ!read all,€ €⇦€⇦€⇦U€⇦Q€⇦UUU€⇦U€⇦Q€⇦U€⇦UQ€⇦U€⇦Q€⇦Q€⇦U€⇦U€⇦UUUU€⇦@DDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     …|!read all!,Ô⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦UQŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦XUQU⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦XUUUŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦U⇦QŶ⇦⇦⇦⇦⇦⇦QU⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦U⇦⇦⇦⇦⇦⇦⇦⇦⇦QŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦QU⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦UUUUŶ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦UUUU⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿDInfoZÝÝuÝ`“Main]wßZÝ”ò“\øÿÿÿÿÿÿÿ ☓ 0ÿÿÿ2øÿÿÿ=—ÿÿÿÿ
  43246. ¨¸ÿÿÿ$ðÿÿÿ­µ ¨xÿÿÿ&°ÿÿÿ¸Í¨8ÿÿÿ&pÿÿÿÐçDpþÿÿ°¨þÿÿaêëJÀÿÿÿ¦èÿÿÿName:led>þ☓ÿÿÿ¦¬ÿÿÿPurpose:>þDÿÿÿ¤lÿÿÿ Author:>þ  ýÿÿ`ìýÿÿaîÿÿÿÿ ¨øþÿÿ0ÿÿÿ=ør|þÿÿÀ¤þÿÿa ÿÿÿÿAbout this programmeReadAllr2Read all about it...r2© James Robinson, 1996r2r2!read all3.11 (DD-MM-YY)r21.05 (20-Feb-96)ÆðLÈÿÿÿÿÿäïÿÿ@=0xÿÿÿÿØÿÿÿÂa™‰ÿRead All About It...a~ -ÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     l&|!cmos fs²!,Ô`fffffffffffff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`fffffffffffff`fffffffffffffwpwpwwp⇦ŵ⇦€⇦!!!Ŵ⇦€⇦ŵ⇦⇦€⇦!!!Ŵ⇦⇦€⇦⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦€hffff6⇦€h⇦⇦⇦⇦8⇦€h⇦⇦⇦⇦8⇦€h⇦⇦⇦⇦8⇦€h⇦⇦⇦⇦8⇦€h⇦⇦⇦⇦8⇦€h⇦⇦⇦⇦8⇦h⇦⇦⇦⇦8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔfile_3fa!,,wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"&"ww"&"wwbfffffffffffff"wwbfffffffffffff"wwffffffffffffff&wwffffffffffffff&wwffffffffffffff&wwffffffffffffff&wwbfffffffffffff"wwbfffffffffffff"ww"&"ww"&"ww"!!!!!!!!!!!!!"ww"""""""""""""""ww"""""""""""""""ww"""""""""""""""ww"""""""""""""""ww"""""""""""""""ww""""⇦ŵ⇦"""""ww"""ŵ⇦!!!Ŵ⇦(""""ww"""ŵ⇦ŵ⇦⇦""""ww"""ŵ⇦!!!Ŵ⇦⇦""""ww"""ŵ⇦⇦⇦⇦⇦⇦⇦""""ww"""ŵ⇦⇦⇦⇦⇦⇦⇦""""ww"""ŵhffff6⇦""""ww"""ŵh⇦⇦⇦⇦8⇦""""ww"""ŵh⇦⇦⇦⇦8⇦""""ww"""ŵh⇦⇦⇦⇦8⇦""""ww"""ŵh⇦⇦⇦⇦8⇦""""ww"""ŵh⇦⇦⇦⇦8⇦""""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww´cmos->disch,ð@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@DpwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwptGDwDDDwDDGDtwwwwwwwwptGDwDDDwDDGDtwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwtDtGDtwwwwwwwwwwwwwwwtDtGDtwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwpGDDwDtDDDtwwwwwwwwwwwpGDDwDtDDDtwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwww@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@Dwwpwwwwwwpwwwwwwwwwwpwwwpwwwwwwwpwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww`fffffff`fff#"#fffff#f"fffff#f"fffff!ffffff!ffffff2f2fffff!"!ffffffffffffffffffffffffffffff """""ffffffffffff """""ffffFdfFdfffffffffff`fffffffff ðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿÿÿðÿÿðÿÿðÿÿÿÿÿÿðÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿðÿðÿÿÿÿÿÿÿÿðÿÿðÿÿÿðÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿÿÿÿÿÿððÿÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿXptr_write
  43247. ,,UU©©“ZP@@@P“Z©©UUrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     |…,4`CMOSFS²CMOSFS²_ResFS    1.00 (28 Jul 1992)    Code © BAUCMOSFS²†@-éS•â@è@-éO•âAèAdds files to the Resource filer on RiscOS 3 machines.Module created by !Resources application on Thu,13 Jun 1996!Resources application © J. Robbins (Feb 12 1993)Module code © BAU (28 Jul 1992)Information on files :-ADFS::James Misc.$.Programing.Apps.CMOSFS²     -> Resources:$.Resources     ->      ->      -> u `Fùÿÿî¾ÝØ_Resources.CMOSFS².SpritesÜ_Ü_Ì_welcome#©,,PUPU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU""""""""""""""""""TVBU%"""""SE!""eV"""1vV""""""TUUUU%"B#"1""C""""""""""""""""""""uV"""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""u%1uU!sg""""w$""vAw#"v6T#""""""Bw43S7"qBw#v!""""""""""""""""""tGS$""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""a7""2w!aw!"""Bw""r&""aW"2w!"B%"""""""g"""4""!"t#"!""""""""""""""""""w""2"""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""u$"""u!aw$"""aw"v"""w"RW""$"""""""g"""2""""s#""""""""""""""""""""2g!"""""""""""""3"""""""""""""""""""""""""""""""""""UU"""""""""""""""""w!"""Q!at"""bw"Bg""""u%RW""""""""""g""""""!"s#"""""""""""""""2w!""#!"""#"""G!"""1!"""!!"""""""""""""""""""""UU""""""""""""""""RW""""2!aR7"""4v"aG""""r2w"""""""""""g""""u%"s#Ag!R7sw""cU'!"""""""w$"""bw"R7"g3V"bw"dUW"2vCwW!vw#"""""""""""""""""""UU""""""""""""""""aG"""""a"g!""%v"r'""""a7vG""""""""""g"""s%"s#!g!Qg1W"2'"u"""""""tW"""W""B$a"Q!27""a"a"vVuVQ'"""""""""""""""""""UU""""""""""""""""q7""""""a"w#""v"s'""""RG"aw"""""""""g"A#""r%"s#f!27""u!R"s$"""""""Rw&"""t""a"r"2!27""t!""G"u""q""W"""""""""""""""""""UU""""""""""""""""r7""""""a"t%"Bv"s'""""RW"tw""""""""www#""r%"s#f!27""u"a"r%""""""""sw""r$"R"qW!""27"W!g!u""a""W"""""""""""""""""""UU""""""""""""""""r7""""""a"q'"Rv"s'""""RW""vg""""""""gb#""r%"s#f!27""u"R'"r#""""""""uw#"b&"5"2w6""27"2wwwwg!u""a""W"""""""""""""""""""UU""""""""""""""""q7""""""a"RW"Dv"r'""""R7"""2w'"""""""g""#""r%"s#f!27""u""W"c!""""""""""v7"BG""bw&"27"B7"""""u""a""W"""""""""""""""""""UU""""""""""""""""bW""""""a""wv"q7""""a'!""rW"""""""g"""""r%"s#f!27""u""sV"""""""!""ag!g2$"""tw"27"B7"""""u""a""W"""""""""""""""""""UU""""""""""""""""Bg!"""""a""vD#v"RW""""sB"""Bw!""""""g"""""r%"s#f!27""u"#""""""""2#"""w#"uR#"""v27"2W"""""u""a""W"""""""""""""""""""UU""""""""""""""""w#"""2"a""sg!v"2w!""v$R#""2w!""""""g"""""r%"s#f!27""u"2WUw&""""""B$""w#"rU!"1""q'27"w!"""u""a""W"""""""""""""""""""UU"""""""""""""""""t'"""4"a""aW"v""u""Rw!q""2g"""""""g"""""r%"s#f!27""u"vgUw""""""R"""w!"BG""Q!"a27"!t%""2"u""a""W"""""""""""""""""""UU"""""""""""""""""Bw#"R#"r"B'"w#"Qw"u&"Re!"q'""""""2w#""""r%"t$w!BG""u"Q#""a%"""""Qe""QG"""'""r"s%g2"RG!"v""q""W"""""""""""""""""""UU""""""""""""""""""Rwv7"Rvg#$"cwF!"cww7""#"eUw#"""""dw7"""2vGBwWbw5tw%Qw6d!""R#"""""2"eUw$""%""BceG!"s7""cWU!QwF"vg"cw""""""""""""""""""UU"""""""""""""""""""!#"""""""""""""""1"""!""2!""""""""""""""""""""""""""""t#"T""""""""2""B!2#""""""""""""!"""""""""""""""""""""""""""""UU""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""awUe#""""""""""""t6T"""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""BE"""""""""""""""U"""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""D$D$D$D$D$D$D$D$D$D$D$""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""D$D$D$D$D$D$D$D$D$D$D$""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""w'"w""""w"r""'"rwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""w'"w""""w"r""'"rwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""r'r""r""rwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""r'r""r""rwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""w'"r'"w"""""rwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""w'"r'"w"""""rwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""wwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""D$D$D$D$D$D$D$D$D$D$D$""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""D$D$D$D$D$D$D$D$D$D$D$""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""B"B"B"B"B"B"B"B"B"B"B"""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""B"B"B"B"B"B"B"B"B"B"B"""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""B"B"B"B"B"B"B"B"B"B"B"""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU""""""""""""""""""""""TU$""""""""""""""""""""""""""""RwwgE"""""""""""#""""B#"""""""""""""""""""""""""""""""""""bf"""fF!""""B$""""""""""""UU"""""""""""""T5!""""""Qw!"""""""""""""""""""""""""""""rwUuW""""""""2w%""""q"""""""""""""""""""""""""""""""B7""27f!"sa"""a&"""""""""""""UU""""""""""""V#Cf!"""""2W""""""""""""""""""""""""""""""aG"v$""""""""s%"""""!""""""""""""""""""""""""""""""2u7""q$"qG"g!"26""""""""""""""UU"""""""""""T!"""&"""""2W""""""""""""""""""""""""""""""a7""r&""""""""r%"""""""""""""""""""""""""""""""""""""27""s""R72'""u#"r%""""""""""""""UU""""""""""B"1#R!""""2W"""1"""!""""""""""1""""""a7""a7""""""r%!!"""!"!!!""#!"""""""!"""""""""""27""u""2WR'""s%f!""""""""""""""UU""""""""""R!B6Bf2$""""2W""cUw"t5vw#tw""2fe&"a6S""""a7""q'""2ve&""r5wG"u%"u3wg!"u4d""2ve&"u5vw"""""""""27""u"""gQ'""rB'"""""""""""""""UU""""""""""$"c!"R""""2W"B"q%sWrW1W""e!"u"u"%""""a7""t""t"s$"rW2v%s%uVs%BG"B#"t"s$sWr""""""""27""s#""w17""ra&S"""""""""""""UU""""""""""F"""!4""""2W"R"a"r%"BG""u!27""qv"""""""a7"Ag!"2W""B7"r%"a7"r%"s#"RRG"#2W""B7"r%"B7""""""""27""r%""w!W""rrgUw$""""""""""""UU"""""""""%'""""C""""2W"#"a"r%"27""u"bQv&""""""awww""b'"""g!r%""g!r%"s#"R'Bw#""b'"""g!r%"27""""""""27""R7"2g!u#"ss%"a7""""""""""""UU""""""""""$"'""""B""""2W"""3u"r%"27""u"qwwww'rw"""""aWdg!""q""v"r%""v"r%"s#"R'vG""q""v"r%"27""""""""27""vVfg!agevt#"W""""""""""""UU"""""""""7""""3""""2W""vFs"r%"27""u"s%""""ug"""""a7v#""s"""u#r%""u#r%"s#"R'"Bw7"s"""u#r%"27""""""""27"""1E"G"S$r$u"""u!"""""""""""UU"""""""""""V""""$""""2W"r&"a"r%"27""u"r%""""""v7""""a7"s""r"""u#r%""s#r%"s#"R'""bw%r"""u#r%"27""""""""27"""""B'""""t"u#""t""""""""""""UU""""""""""C"s#"2""""2W"u#"a"r%"27""u"q""""""Rw""""a7"RG""q""v"r%""t"r%"s#"R'"""r7q""v"r%"27""""""""27"""""q%"""W"s#""s!"""""""""""UU""""""""""Q""UDB#""""2Wv""a"r%"27""u"b7"""!""u#"""a7""w!"R'"""g!r%""u!r%"s#"R'"!"BWR'"""g!r%"27""""""""27"""""u""""R'"q%""e!"""""""""""UU"""""""""""6""""E"""227"u""a"r%"27""u""g!"$%""u#"""a7""u""W""R7"r%"G"r%"s#"R'2$"2G"W""R7"r%"27"""""""27""""R7""""u#"R"F""""""""""""UU"""""""""""A$"c#"""bGa"s%"s&#s%"BG""u""s%"Qf!"g!"""qG""rW""ru#"a"b"r%"t$"R'R'"a'"ru#"s%"BG"qg!""""QW""""e""""R&""V"2""""""""""""UU""""""""""""Rff$"""""vg#"BwgCG1vW"tw$Rw6""vV%4Uu"""Bvw"uw%"ew%""dV6"2vGBwWugCSUg""ew%"2vW"tw$Rw#"""2vw%"1U""SE!"""bwW!""""""""""""UU"""""""""""""""""""""!"""!"""""""""""""""""""""""""""""""""""""""""""""""""""!""""""""""""""Q""""""""""""""!""""""!"""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3"""""""""""""""""""""""""""""""""""""UU""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2#"""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU4Fìÿÿ‰DÅÝýResources.CMOSFS².Templatesÿÿÿÿ\    xfer_send"eüxfer_send2"a†ProgInfo""Tð☓¤ÿÿÿÿ☓ àþÿÿ(=0Save as:>er—ÿÿÿ¸ÜÿÿÿaØÿÿÿÿ &8ÿÿÿölÿÿÿ=ñáæ¦ìþÿÿ0ÿÿÿ=1õø ôþÿÿ—(ÿÿÿ=1ý file_3faCMOSpptr_write,4,4OKR6,3CancelR5,3¤r|ÿÿÿÿ (ÿÿÿd9׸ÿÿÿÿ‘—ÿÿÿÖÜÿÿÿaÁ Dÿÿÿàxÿÿÿ=ñÜáö8ÿÿÿL€ÿÿÿ=1ô÷ Save as:sfile_3fa;|ptr_drag,4,-10CMOSA~ ;pptr_write,4,4OKR6,3È0ø⇦ðÿÿÿÿÿÿÿ€ðÿÿÿ‘þÿÿF=0øÿÿÿÿÖ<÷ÿÿbd÷ÿÿ1bUser:n:>þŒ ÿÿÿfØÿÿÿa Œ`ÿÿÿf—ÿÿÿa#<Œ ÿÿÿfXÿÿÿa?VŒàþÿÿfÿÿÿaYj>¨ÿÿÿŒÐÿÿÿamÿÿÿÿ hÿÿÿŒ‘ÿÿÿ`Purpose:>þ(ÿÿÿŒPÿÿÿ`Author:d>þèþÿÿŒÿÿÿ`Version:>þràþÿÿðØÿÿÿast @÷ÿÿŒh÷ÿÿ1bReg No:>þÈþÿÿôÿÿÿa◰☓ àÿÿÿd9aÿÿÿÿAbout this ProgrammeCMOS filing systemR2To save the CMOS to discR2© James Robinson, 1996R22.01 (14-Jun-96)R2Name:Scmos->disc;R2R4About this programmeÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Nick!BCGýÿÿKœØàv8ManualEÿÿÿ☓½v^X◰3RiscOS3_1Dÿÿÿô鯀_u3v1_24Gýÿÿc¨Øà☓8!BCGýÿÿKœØàv8ManualEÿÿÿ☓½v^X◰3RiscOS3_1Dÿÿÿô鯀_u3v1_24Gýÿÿc¨Øà☓8ComplierComplierNickë
  43248. BasCompress v1.34 (and earlier?) appear to only work with RO3.1.
  43249. As an interim measure, the executables for v1.24 are included for RO3.0
  43250. and RO2.x owners.  This is what you must do:
  43251.  
  43252. 1.  Open a view inside !BC. (Shift double-click !BC)
  43253. 2.  "untick" the menu item Filer->Options->Newer
  43254. 3.  Copy the CONTENTS of v1_24 inside !BC
  43255.  
  43256. There have only been 2 changes to the actual compressor since v1.24,
  43257. and these are pretty minor for most registered users.  The main changes
  43258. have been to the wimp front end, which "spiff" it up for high-resolution
  43259. modes.
  43260.  
  43261. My advice is to update to RO3.1.
  43262.  
  43263. Cy Booker, 26.03.1993
  43264.  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     $Nick!BootCëÿÿg    ‘å…v3!feGýÿÿUœØàw8!HelpEÿÿÿ„„«v!v3!RunEëÿÿÎ,vÜv3!RunImageDøÿÿ¸j^ìq{3!SpritesEùÿÿµ­v¸|3!Sprites22Eùÿÿ*µ­vl|3!Sprites23Eùÿÿ@µ­vüv3CAssemblerEúÿÿH®àu´ï}3ExamplesGýÿÿ½£Øà~8FontWindowEúÿÿ“]|3MessagesGýÿÿ    ¤Øàŵ8!BootCëÿÿg    ‘å…v3!feGýÿÿUœØàw8!HelpEÿÿÿ„„«v!v3!RunEëÿÿÎ,vÜv3!RunImageDøÿÿ¸j^ìq{3!SpritesEùÿÿµ­v¸|3!Sprites22Eùÿÿ*µ­vl|3!Sprites23Eùÿÿ@µ­vüv3CAssemblerEúÿÿH®àu´ï}3ExamplesGýÿÿ½£Øà~8FontWindowEúÿÿ“]|3MessagesGýÿÿ    ¤Øàŵ8u!BC!BC$Nicku| Boot file for BasCompress
  43265. |
  43266. IconSprites <Obey$Dir>.!Sprites
  43267. Set BasCompress$Dir <Obey$Dir>
  43268. Set Alias$BasCompress /<BasCompress$Dir>.!Run 
  43269.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Help for BasCompress v1.40  17-Jul-1994
  43270.  
  43271. BasCompress compresses and cross-references Basic programs.
  43272.  
  43273. To use this *SHAREWARE* program you will be a Basic programmer.
  43274.  
  43275. ======================================================================
  43276. This program is supplied "as is".  No warranty, express or implied, of
  43277. the  merchantability of this program or its fitness for any particular
  43278. purpose is given.  In no circumstances shall the author, or any
  43279. provider or distributor of this program, be liable for any damage,
  43280. loss of profits, or any indirect or consequential loss arising out of
  43281. the use of this program.
  43282.  
  43283. Please note that this program is SHAREWARE, it is not free.  You may
  43284. use this software for a trial period.  If, after this  you decide you
  43285. would like to continue using it, then you are required to REGISTER.
  43286. Failing to register, you are obliged to destroy all copies of this
  43287. program. A trial period ends when you realise that this program could
  43288. be used on your latest master-piece!
  43289.  
  43290. Registration currently involves you sending a cheque for £10 sterling
  43291. to the author.  There is a form at the end of this document that
  43292. you can use to register.  Registration will encourage the author to 
  43293. continue to develop this program further.
  43294.  
  43295. For a further £5, regsitration will include a printed (600 d.p.i.
  43296. laser) copy of the documentation and the latest version.
  43297.  
  43298. Payment in other currencies accepted so long as at the end of the day
  43299. I end out with the same amount of money.  Credit cards not accepted.
  43300.  
  43301. ======================================================================
  43302.  
  43303. For those of you without Impression, here's a very brief guide
  43304.  
  43305. (use the interactive Help)
  43306.  
  43307. BasCompress is a BasicV (v1.04) compressor and cross-referencer, i.e.
  43308.  
  43309. o     Removes spaces and comments
  43310. o     Removes all unused routines, and the junk left between routines
  43311. o     Reduces all labels (shortens them)
  43312. o     Reduces numbers
  43313. o     Converts SWI strings to numbers
  43314. o     Loads in LIBRARYs
  43315. o     Handles line numbers
  43316. o     You can tell it which labels NOT to reduce (i.e. EVALuated vars)
  43317. o     Full cross-referencing
  43318. o     It is FAST
  43319.  
  43320. ======================================================================
  43321.  
  43322. Example usage
  43323.  
  43324. Drag the Log file icon from the control window to a Filer window
  43325.  
  43326. Now drag one of your Basic files onto the control window  (what do you
  43327. mean, I haven't got any?  did you read those two lines at the top)
  43328.  
  43329. The log file will appear (auto-loading Edit if need be).  Don't close
  43330. this window yet, though do resize/move it
  43331.  
  43332. Now drag the basic (output) file icon from the control window onto a
  43333. Filer window
  43334.  
  43335. Press ADJUST on the icon bar icon (re-load's last file using new
  43336. options)
  43337.  
  43338. And that's all there is to it, usually
  43339.  
  43340. Sometimes programmers end a routine like this:
  43341.   DEF FNmin(a,b)
  43342.   IF a<b THEN =a ELSE =b
  43343. and BasCompress gets confused.  Append a dummy "= 0" after it
  43344.  
  43345. If there are any EVAL's or DATA's then the resulting file may not
  43346. "work".  You can either disable all label reduction, or write a
  43347. Special file, that tells BasCompress the names of the labels not to
  43348. reduce.  See !BC.Examples for some, er..., examples.
  43349.  
  43350. Also, watch out for missing THEN statements.  See the
  43351. !BC.Examples.EVariable file for more information.  Thanks to David for
  43352. pointing this one out.
  43353.  
  43354.  
  43355.  
  43356. Don't make a fuss, just get on the bus
  43357.  
  43358. Ya Hozna!
  43359.  
  43360. =====================================================================
  43361. ======================================================================
  43362. Updates
  43363.  
  43364. v1.10 29-May-1992 ??
  43365. v1.20 11-Jul-1992 Can compress "library" files separately, ie don't assume a
  43366.                   "main program" exists, and dont complain of undefined
  43367.                   routines/variables
  43368.                   + assembler "B 0" compresses correctly
  43369. 1.25  07-Oct-1992 RO3 support (menu help, Sprites22, desktop save,
  43370.                   DragASprite)
  43371. 1.30  11-Oct-1992 Frontend to new backend features
  43372.                   Optionally saves full pathname for log/xref/output files
  43373.                   Pointer changes shape over writable icons
  43374. 1.31  18-Jan-1993 Anti-aliased fonts in templates
  43375. 1.32  28-Jan-1993 Dynamic font handling across screen resolution changes
  43376.                   removed all Interface code!!
  43377. 1.33  07-Feb-1993 hi-rez sprites
  43378. 1.33b 12-Feb-1993 registration form at end of this document
  43379. 1.34  27-Feb-1993 hi-rez menu items
  43380. 1.35  26-Mar-1993 internal update
  43381. 1.35b 10-Jun-1993 hi-rez menu items definable in Messages file
  43382. 1.36  18-Jul-1993 new FontWindow module to cope with new Wimps' menus
  43383. 1.36b 19-Sep-1993 hi-rez mono sprites added
  43384. 1.37  24-Feb-1994 newlook, loads sprites on mode change, drag proginfo
  43385. 1.40  17-Jul-1994 Choices dialogue box, works on Risc PC, no/font dboxes
  43386.  
  43387. Backend Updates
  43388. 1.23  23-Sep-1992 In assembler "SWI &7" was getting compressed to "SWI&7"
  43389.                   In assembler ".zappa FN(foo_bar)" wasn't recognising that
  43390.                     the FN() substitutes for a mnemonic, and so 'foo' was
  43391.                     the mnemonic!!!
  43392.                   Start of file consists of:
  43393.                     REM >fs::media.dir.file
  43394.                     REM produced by BasCompress vx.yy
  43395.                   this is so that BASIC V v1.05 library error messages are OK
  43396. 1.24  01-Oct-1992 If an error occured during file output, this is now reported
  43397.                   (eg file not having write access)
  43398. 1.30  11-Oct-1992 Corrupted basic error message now "correct" --- was saying
  43399.                     something different
  43400.                   Start of file consists of, as acorn guidelines suggest
  43401.                     (ta Jonathan) leaf name only
  43402.                   -EVariable option suppresses `E' variables being
  43403.                     produced (see example file)
  43404. 1.31  18-Jan-1993  assembler handles array labels (eg [OPT4:.x%(y%):]
  43405.                    regular expressions used on variable names not to squash
  43406.                    (but reference says from main program, not special)
  43407.                    (no support for regex routine names or libraries)
  43408.  
  43409.  
  43410. Bugs
  43411.  
  43412. There appears to be a bug if the same routine is defined many (> 2) times
  43413. in separate libraries - for now just delete the extra copies and then it
  43414. works.
  43415.  
  43416.  
  43417.  
  43418.  
  43419.  
  43420. Registration Form:
  43421.  
  43422.  
  43423.  
  43424.         I would like to register as a Single User of BasCompress v1.40
  43425.         
  43426.         and have enclosed __________.
  43427.         
  43428.         This DOES / NOT (delete as applicable) include a manual.
  43429.         
  43430.         
  43431.         Title:          ___________
  43432.  
  43433.         Name:           ____________________________
  43434.         
  43435.         Address:        ________________________________
  43436.         
  43437.                         ________________________________
  43438.         
  43439.                         ________________________________
  43440.         
  43441.                         ________________________________
  43442.         
  43443.                         ________________________________
  43444.         
  43445.         Postcode:       _______________
  43446.         
  43447.         Country:        _______________
  43448.         
  43449.         Where obtained
  43450.         BasCompress:    ____________________________
  43451.         
  43452.         Machine:        ___________________________________
  43453.  
  43454.         Possible
  43455.         improvements:   ___________________________________
  43456.         
  43457.                         ___________________________________
  43458.         
  43459.         Make cheques / postal orders payable to: Mr CY J. BOOKER
  43460.         
  43461.  
  43462.                         86 Church View,  Main Road,
  43463.                         Crockenhill,
  43464.                         Swanley,
  43465.                         Kent.
  43466.                         BR8 8JW.
  43467.                         U.K.
  43468.  
  43469. onderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | Run file for BasCompress
  43470. |
  43471. | Complicated because can call direct to back end if any parameters passed
  43472.  
  43473. IconSprites <Obey$Dir>.!Sprites
  43474. Set BasCompress$Dir <Obey$Dir>
  43475. Set Alias$BasCompress /<BasCompress$Dir>.!Run 
  43476.  
  43477. If "<System$Path>"="" Then Error System resources cannot be found
  43478.  
  43479. Set Old$CAsm 0
  43480. RMEnsure CAssembler 0    Set Old$CAsm 1
  43481. RMEnsure CAssembler 0.14 Set Old$CAsm 0
  43482. If <Old$CAsm> Then Error An old version of the CAssembler module is resident
  43483. UnSet Old$CAsm
  43484. Set BasCompressFE$Path <BasCompress$Dir>.,System:Modules.
  43485. RMEnsure CAssembler 0.14 RMLoad BasCompressFE:CAssembler
  43486. RMEnsure CAssembler 0.14 Error CAssembler module not found or too old
  43487.  
  43488. If "%0"="" Then RMEnsure FontWindow 1.40 RMLoad BasCompressFE:FontWindow
  43489. If "%0"="" Then RMEnsure FontWindow 1.40 Error FontWindow module not found or too old
  43490.  
  43491. UnSet BasCompressFE$Path
  43492.  
  43493. RMEnsure FPEmulator 2.70 RMLoad System:Modules.FPEmulator
  43494. RMEnsure FPEmulator 2.70 Error FPEmulator module not found or too old
  43495.  
  43496. WimpSlot -Min 128K -Max 128K
  43497. If "%0"<>"" Then WimpSlot -Min 96K -Max 96K
  43498. If "%0"<>"" Then /<BasCompress$Dir>.!RunImage %*0
  43499. If "%0"="" Then Set BasCompressFE$Dir <BasCompress$Dir>.!fe
  43500. If "%0"="" Then WimpSlot -Min 64K -Max 64K
  43501. If "%0"="" Then /<BasCompressFE$Dir>.!RunImage
  43502.     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     L!bc!,<ŵùñ÷Çûó÷ï30þ30|øññüøññþ30ï30Çó7ŵó7ÿÿÿÿ⇧“⇧“ÿÿßÑþÿ.Ñüÿüÿxúøÿ<éüÿfiÂþÿÿÿOŷÿÿcbÿÿÿÿŵùù÷ÿÿÿÿÇûû÷ÿÿÿÿï34þÿÿÿþ—3±üÿÿÿ|øññüÿÿÿ|øññüÿÿÿþ—3±üÿÿÿï34üÿÿÿÇû7üÿÿÿŵ—û7üÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿþÿüÿÿÿþÿüÿÿÿüÿüÿÿÿüÿüÿÿÿøÿüÿÿÿøÿüÿÿÿüÿüÿÿÿüÿüÿÿÿþÿüÿÿÿþÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿÿÿüÿÿÿ<ic_bascomp!,,ÿÿÿÿÃ%CÏçGÿÿÿÿ@À@@@@Ŵÿÿ@Ŵÿÿ@Ŵÿÿ@Ŵ'ñ@Ŵ'ñ@ÿ@fi4@fi4@ü@>9@>9@ÿ@Ŵÿÿ@Ŵ’ä@Ŵ’ä@Ŵÿÿ@Ŵÿÿ@@@À@À@ÿÿÿÿ<icon_bascomp!,,ÿÿÿÿÃ%CÏçGÿÿÿÿ@À@@@@Ŵÿÿ@Ŵÿÿ@Ŵÿÿ@Ŵ'ñ@Ŵ'ñ@ÿ@fi4@fi4@ü@>9@>9@ÿ@Ŵÿÿ@Ŵ’ä@Ŵ’ä@Ŵÿÿ@Ŵÿÿ@@@À@À@ÿÿÿÿxptr_write,,ç<<ç´sm!bc,pÿÿÿÿÿÿOâOâþÿ<i<iø?|r|rþÿÿÿ#É#Éÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿüþÿüþÿø?þÿüþÿüþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    Nick!RunDëÿÿ|<ç&w3!RunImageEûÿÿobfw¦…x3!SpritesEùÿÿUµ­vàw3MessagesGýÿÿ‡flØày8SpritesEùÿÿiµ­v(w3Sprites22Eùÿÿ}µ­v,     w3Sprites23Eùÿÿ‘µ­vlw3TemplatesEìÿÿÀ«vxz3TSystemEìÿÿIÝ«v8z3!RunDëÿÿ|<ç&w3!RunImageEûÿÿobfw¦…x3!SpritesEùÿÿUµ­vàw3MessagesGýÿÿ‡flØày8SpritesEùÿÿiµ­v(w3Sprites22Eùÿÿ}µ­v,     w3Sprites23Eùÿÿ‘µ­vlw3TemplatesEìÿÿÀ«vxz3TSystemEìÿÿIÝ«v8z3v!fe!feNickÁ/<Obey$Dir>.^.!RunnderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ä¼!fe¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−    îî    îî
  43503. Ì
  43504. Ì Ý Ý îî» îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ−−−−−−−−−−−−−w−|wwwÌÌÌÌÌÌ−ÿ−|wwwÌÌÌÌÌÌ−ÿ−wÌ|wÀÌÌÌÌÌ−ÿ−wÌÌÌÌwÌ|w‘ÿ−wÌÌÌÌwÌ|w‘−wÌÌÌÌwÌ|w‘−wÌÌÌÌwÌ|w‘−wÌÌÌÌwÌ|w‘−wÌ|wÀ|wwww‘−|wwwÌÌÌÌ|w‘−|wwwÌÌÌÌ|w‘−ÌÌÌÌÌÌ|www−−ÌÌÌÌÌÌÌÌÌÌÌ−−ÌÌÌÌÌÌÌÌÌÌÌ−−−−−−−−−−−−−−−−−−−−−−−−−−−sm!fe¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ−ww−−−−−pyÌwÀÌÌ̆pyÌÌ|Ìw‘pyÌÌ|Ìw‘pyÌÌ|Ìw‘pyÌwÀwww‘pÉwwÌÌÌw‘pÉÌÌÌÌww†p−−−−−−−−−ðWonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ,<divider<<ÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°optoff
  43505. ,, 1TTTTTTTTT1TUUUUUUUUU°opton
  43506. ,, UUUUUUUUUEEEQE1'E1fE4uEA&a7EdgEA6E$4radiooff
  43507. ,° ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿÿÿÿÿ1#ÿÿÿBôÿÿ!Eÿÿeÿÿ"!Gÿÿ?#rõÿÿÿC$bWÿÿÿÿÿRUef6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4radioon
  43508. ,° ÿÿÿÿÿÿÿÿÿÿÿÿÿÿcfVU%ÿÿÿÿÿu&B4ÿÿÿ_'!dwF2óÿÿtcwww6"ÿÿVuwwwW!ÿÿTcwww6ÿÿO$!dwFðÿÿÿ2ÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsm!help¬¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿ1⇦⇦⇦⇦⇦⇦8⇦⇦⇦⇦ff⇦⇦HD⇦⇦⇦fD⇦HD⇦⇦HDef⇦⇦HD⇦h@☓⇦⇦HD⇦hD⇦⇦⇦HD⇦f@D☓⇦⇦HD⇦f@☓⇦HD1⇦fffŷ⇦8ADÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     0    <divider<<ÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4optoff,, BTTTTTTTTTTTTTTTTTT DDDDDDDDDTBUUUUUUUUUU4opton,,UUUUUUUUUU$EDDDDDDDDDEEEEqEGEQEuEAGEr%ETwErAGEAGq7EuwEcWEQGE!%EE$<<radiooff,4»»»»»»»»»»»»»»»»»»»»»»»»»"»»»»»»»"3»»»»» 3#»»»»!D»»» B´»»1%»»!E»»U»»e»»e»»"V»»21F»»;Q'»»;#tµ»»»CAw»»»»K42u·»»»»»TUUfW»»»»»»+TfE²»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿ<radioon,4»»»»»»»»»»»»»»»»»»»»»»»»»+TfE²»»»»»»ufUUE»»»»»{W#!C´»»»»w!4»»»[GSw52³»»rQwww1³»»dswww7#»»euwwwW"»»Vwwwww!»»Vwwwww»»UuwwwW»»Tswww7»»RQwww»»K$Sw5°»»»D»»»»23°»»»»»3"»»»»»»»"±»»»»»»»»»»»»»»»»»»»»»»»»»ÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<sm!help,,1⇦⇦⇦⇦⇦⇦⇦◰⇦⇦⇦⇦⇦⇦8⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦8€⇦⇦⇦⇦⇦8€⇦⇦⇦⇦8⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦(€⇦⇦⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦(€⇦⇦⇦☓⇦⇦⇦⇦€⇦⇦⇦⇦⇦⇦⇦⇦◰⇦⇦⇦⇦⇦⇦⇦81⇦⇦⇦⇦⇦⇦⇦    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     p,divider,,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ☓optoff,,þÿ0                  0þÿ☓opton,,þÿ0  &9 'q…#áÌ!Áí Ŵa  ùÀ'ùÀ' Ŵa Áí áÌ!q…#9 ' & 0þÿÜradiooff,☓ ;€aÀÀ`€0 08 0`€ÀÀ€a7 ÀÿÀÿ?Àÿ€ÀÿÀÿÀÿàÿÁÿðÿÃÿøÿÇÿüÿÏÿþÿßÿÿÿÿÿÿÿÿÿþÿßÿüÿÏÿøÿÇÿðÿÃÿàÿÁÿÀÿÀÿ€Àÿ?ÀÿÀÿ ÀÿÜradioon,☓ 7€aÀÀ`€0  ? ŷÃÿ8Çÿ0ŷ ? 0 `€ÀÀ€a; ÀÿÀÿ?Àÿ€ÀÿÀÿÀÿàÿÁÿðÿÃÿøÿÇÿüÿÏÿþÿßÿÿÿÿÿÿÿÿÿþÿßÿüÿÏÿøÿÇÿðÿÃÿàÿÁÿÀÿÀÿ€Àÿ?ÀÿÀÿ Àÿtsm!help,,þÿ⇨ÿóÿá#"ÿáÿó⇧ÿÿø#"øü⇧?üþ#"þ⇧Ãà#"?ðÿÿ⇧þÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ô>!RunImage0ôProduced by BasCompress v1.31 (18 Jan 1993)îŶòYÞòly(20,12):ey%=-2:J_%=£:dy%=£:òM("<BasicV$Lib>.CAsm",1):òM("<BasicV$Lib>.Template",12):xJ%=J_%:Ay%=¹:j_%=15:LJ%=¹:eu%=0:k%=1:e%=2:Cy%=3:py%=4:h%=5:tJ%=6:Su%=7:oJ%=0:My%=1:fy%=2:Lu%=3:HJ%=4:JJ%=0:qJ%=1:QJ%=2:l_%=3:f_%=4−c_%=5:OJ%=6:k_%=0:zJ%=1:YJ%=2:Gy%=3:X_%=4:q_%=5:m_%=6:Ul%=0:sJ%=1:cJ%=2:KJ%=3:MJ%=4:eJ%=5:AJ%=6:b_%=0:i_%=1:DJ%=2:UJ%=0:Qy%=1:Pu%=2:wJ%=0:U_%=1:pJ%=2ÝòE_("stdio, stdlib, string, message, wimp"):òq_(2000,£,£):òM("<BasicV$Lib>.FileType",1):òM("<BasicV$Lib>.IntMath",4):òM("<BasicV$Lib>.ModeInfo",1):òM("<BasicV$Lib>.Wimp",35):p%=¤`("<BasCompressFE$Dir>",-1,z_%):çz_%>0…@Ŷ!p%,"BasCompressFE can't load its' message file: "+¤L(p%+4)²Í:uy%=3:Ly%=23:Hl%=8:x%=4:Mu%=0:ly%=1:lJ%=3:oy%=4:qu%=6:ny%=7:mu%=9:O_%=10:IJ%=0:`_%=1:rJ%=2:fJ%=3:CJ%=4:ZJ%=5:iJ%=7:Tu%=8:mJ%=9:gu%=10:Xu%=11:x=0:z=1:xy=2:Iy=3:hy=4:Vy=4:M=8     J=-1:I=0:ry=1:F_=2:G=1:N=2:W=3:r=4:p=0:Hy=11:wy=22:j$="":f$="":V_%=0:D_%=0:ÞM%(x%):ÞS%(x%):ÞZ%(x%):w_%=-1:r_%=-1:t$="":Z=G:u_%=-1:Y=p:Ll%=£:F_%=£:l%=¹:v_%=£
  43509. qL$="&502,1,2,3,&400C0,&400C1,8,&400CC,10":òHy("BasCompressFE",1,40,17,7,1994):dy%=J_%:òL_:Ö_y:Ö_y:òg:ç¤Zy(V%) îŶòY òR_:õòC_:ý£:àÝòxêW_,L:çS%€2…?M%=P%:Bu%=S%:O%=P%:P%=0:S%=S%☓4:[OPTS%:ALIGN:]:P%=M%:S%=Bu%—Í:[OPTS%:ALIGN:.D:.Qy DCD0:.Gy DCD0:.i DCD0:.P DCD0:DCD0:.Uy DCD0:DCD0:.n DCD0:.Jy DCD0:.Ey DCD0:.Fy DCD0:.Cy DCD0:DCD0:DCD0:DCD0:DCD0:DCD0:.Py DCD0î.g DCD0:DCD0:.Sy DCD0:.Ay DCD0:.u DCD0:.c DCD0:.h DCD0:.v DCD0:.b DCD0:.Xy DCD0:.t DCD0:.l DCD0:.f DCD0:DCD0:DCD0:DCD0:DCD0:DCD0:.m DCD0:.My DCD0:DCD0:.o DCD0:.e DCD0:.V DCD0:.q DCD0:.w DCD0:.O DCD0:.qy:ALIGN:.yy:¤E(k%,JJ%):¤E(k%,qJ%)ô¤E(k%,QJ%):¤E(k%,l_%):¤s(k%,f_%):¤E(k%,f_%):¤s(k%,c_%):¤E(k%,c_%):¤E(k%,OJ%):¤E(e%,zJ%):¤E(e%,YJ%):¤F(e%,Gy%,0):¤F(e%,Gy%,1):¤F(e%,Gy%,2):¤F(e%,Gy%,3):¤F(e%,Gy%,4):¤F(e%,Gy%,5):¤F(e%,Gy%,m_%):¤F(e%,X_%,0):¤F(e%,X_%,1):¤E(e%,q_%):¤E(Cy%,sJ%)̤E(Cy%,cJ%):¤E(Cy%,KJ%):¤E(Cy%,MJ%):¤E(Cy%,eJ%):¤E(Cy%,AJ%):¤E(py%,b_%):¤E(py%,i_%):¤Y(h%,My%,UJ%):¤J(h%,My%,Qy%,0):¤J(h%,My%,Qy%,1):¤J(h%,My%,Qy%,2):¤J(h%,My%,Qy%,3):¤J(h%,My%,Qy%,4):¤J(h%,My%,Qy%,5)o¤Y(h%,fy%,wJ%):¤J(h%,fy%,U_%,0):¤J(h%,fy%,U_%,1):¤E(h%,HJ%):DCB203:.W_:EQUS"[0,w>,m>,m>,m>,m>,m>,d>,>":DCB0öEQUS"[100,>,>,>,>,>,d>,>":DCB0:EQUS"[200,w>,>,>,m>,m>,m>":DCB0:EQUS"[300,>,>,>,>,>,>,>":DCB0:EQUS"[400,>,>":DCB0:EQUS"[250,i4":DCB0:EQUS"[500,w>,>,>,>,>,>,>":DCB0:EQUS"[600,>,>,i256":DCB0:EQUS"[700,w>,m>,m>,w>,>":DCB0:EQUS"[800,m>,m>,w>":DCB0ÈEQUS"[900,>,>,>,>,>":DCB0:EQUS"[300,>,>,>,>,>,>":DCB0:EQUS"[1000,m>,m>,w>":DCB0:EQUS"[900,>,>,>,>,>":DCB0:EQUS"[400,>,>":DCB0:ALIGN:.L DCD0:DCD0:DCD0:.jy EQUS"A0-9;":.Dy EQUS"Pptr_write"+½0:._y:¤X—STMFD(A)!,{4-9,E}:ADR1,L+4:¤k("",0,W_):BL dy:LDMvsFD(A)!,{4-9,pc}:STR0,L:ADR2,Dy:LDR1,[0,#¤U(e%)+4]:LDR1,[1,#¤U(q_%)+4]:ADR2,jy:STR2,[1,#¤U(0)+12+4]¢LDR1,[0,#¤U(py%)+4]:ADR2,Dy:STR2,[1,#¤U(DJ%)+12+4]:ADR0,L:LDMFD(A)!,{4-9,pc}:.E_:STMFD(A)!,{E}:ADR0,yy:ADR1,D:LDR2,L:BL cy:ADRvc0,L:LDMFD(A)!,{pc}:]:òjy:òQ_:áÝòjá]Ýòuy:K%=¤T("Order",t%):V%=¤O("Control",0,+1):w%=¤T("SaveAs",+1):X%=¤T("Choices",t%):òhy:áÝòoy(Q%,T%,I%,F%)ç(I%€1)…笤Z(t$)…Q%=¤v(t$)ÍÌÈ−&465c6,_%,V%:òH_(V%,-1)Í:á ÝòryÈ−&400c5,,W%:á!ÝòsyÈ−&400c6,,W%:á"*ÝòT_êGJ%:êŶ:È−&606c0:îŶê÷Ŷ:È−&606c1:òL#;È−&400c8,,W%¸GJ%:È”GJ%:È−&400ca,,W%¸GJ%:Î:÷Ŷ:È−&606c1:á$0Ýòs_êU%,F%,b%:U%=W%!0:F%=W%!4:b%=W%!24:ȉU%Ê%Éw%:òJ_(F%,b%)&ÉV%:òBy(F%,b%)'ÉX%:òx_(F%,b%)(È−&400dc,b%)Ë:á* ÝòmòF:á+9ÝòOyêZ$,U%,F%,A%,E%,Wy%:Z$="":U%=W%!32:F%=W%!36:ȉU%Ê,É-2:çF%=_J%…-Z$="IconBar".
  43510. ÌZ$=¤b/Í0Éf%:Z$="ProgInfo"1ÉK%:Z$="Order":ç¤e(F%)…2òk(F%,E%,Wy%):çWy%=M…3 Z$+=",R"4ÌZ$+=","+½(–("A")+Wy%)5Í6ÌZ$+=",_"7Í8ÉV%:Z$="Control":çF%=-1…9 Z$+=",_":ÌZ$+=","+Ã(F%);Í<"ÉX%:Z$="Choices":Z$+=","+Ã(F%)=&Éw%:òl("SaveAsType",Z):Z$="SaveAs">ç(W_%>218)€(W%!36<>-1)…?    Z$=¤b@ÍAË:çZ$<>""…Bòo("H"+Z$,W%+20):çW%?20…CNW%!16=1283:W%!12=W%!8:A%=W%+20:È”?A%:A%+=1:Î:çA%>=(W%+256)…A%=W%+255:?A%=0D)W%!0=(A%-W%+4)€-4:È−&400e7,17,W%,W%!4EÍFÍ:áG7ݤbêZ$,D%:D%=W%+40:È−&400f4,1,D%,W%!32,W%!36:ȉRy%ÊHÉsy%:Z$="I"IË:çZ$<>""…J7Z$="M"+Z$+Ã(!D%):È”D%!4<>-1:D%+=4:Z$+="_,"+Ã(!D%):ÎK    Í:=Z$L Ýòpòby(-1):È−&465c2,_%:òQy:áM)ÝòFîŶñ"Error in error handler: ";ö$:àNòny:òK_:ÖZy:È−&400dd:à:áONÝòRyêQ%,T%,I%,D%,F%,Y%,Wy%:Q%=W%!0:T%=W%!4:I%=W%!8:D%=W%!12:F%=W%!16:ȉI%ÊP É2:ȉD%ÊQ8É-2:ò_:T%=96+(44*Hu%)+(24*Wu%):È−&400d4,,c%,Q%-64,T%R ÉV%:ò_:È−&400d4,,c%,Q%-64,T%SËTÉ1*16,4*16:ȉD%ÊUÉV%:ȉF%ÊV,ÉlJ%:Z=G:òa(D%,F%,I%,"FileName_Control")W,Équ%:Z=N:òa(D%,F%,I%,"FileName_Control")X,ÉMu%:Z=W:òa(D%,F%,I%,"FileName_Control")YËZÉw%:ȉF%Ê[%É1:òa(D%,F%,I%,"FileName_SaveAs")\Ë]Éf%:òCy(Q%,T%,I%,F%)^Ë_
  43511. ȉD%Ê`É-2:òoy(Q%,T%,I%,F%)aÉh_%:òG_(Q%,T%,I%,F%)bÉw%:òGy(Q%,T%,I%,F%)cÉf%:òCy(Q%,T%,I%,F%)dÉK%:òO_(Q%,T%,I%,F%)eÉV%:òiy(Q%,T%,I%,F%)fÉX%:òPy(Q%,T%,I%,F%)gËhË:áiÝòky:Ry%=£:sy%=&1040a31+0:áj-Ýò_êA%:Hu%=8:Wu%=1:A%=º(E_):c%=!A%:ç¬v_%…k<òpy(c%,"1,2,23,24,25,3,4,5,51,510,511,52,520,521"):v_%=¹l4Í:D_%=A%!4:V_%=A%!8:$D_%=Ã(By):$V_%=V$:Ry%=sy%:ámWÝòqyêQ%,T%,R_%,`%,o%,m%:Q%=W%!24:T%=W%!28:R_%=W%!32:`%=W%!36:o%=W%!40:m%=by%:ȉRy%ÊnÉsy%:ȉR_%ÊoÉeu%:òn:È−&400e8,,f%,Q%,T%pÉe%:ȉ`%Êq"Ék_%:Z=W:òR:È−&400e8,,w%,Q%,T%rËsÉCy%:ȉ`%Êt"Ék_%:Z=G:òR:È−&400e8,,w%,Q%,T%uËvÉh%:ȉ`%Êw"ÉoJ%:Z=N:òR:È−&400e8,,w%,Q%,T%xÉMy%:ȉo%Êy)ÉPu%:Y=Hy:òd(S%()):È−&400e8,,K%,Q%,T%zË{Éfy%:ȉo%Ê|)ÉpJ%:Y=wy:òd(M%()):È−&400e8,,K%,Q%,T%}Ë~(ÉLu%:Y=p:òd(Z%()):È−&400e8,,K%,Q%,T%Ë€ËŴË:áŵ‘ÝòM_êR_%,Z%,nJ%,jJ%,Nu%,`%,A%,o%:êNy%:Z%=¤A(512):È−&400cf,,Z%:nJ%=Z%!0:jJ%=Z%!4:Nu%=Z%!8:òZ(Z%,512):R_%=!W%:`%=W%!4:o%=W%!8:Ny%=W%!12:ȉRy%Ê◰Ésy%:ȉR_%Ê☓Ék%:ȉ`%ÊŶÉJJ%:òE(Qy)ŷÉqJ%:òE(Gy)ÉQJ%:òE(i)⇦Él_%:òE(P):òE(P+4):òE(P+12)⇨Éf_%:òE(Uy)⇩Éc_%:òE(n)⇧ÉOJ%:òE(Jy)…Ë™Ée%:ȉ`%ʉÉzJ%:òE(Ey)•ÉYJ%:òE(Fy)‘ÉGy%:ȉo%Ê’Ém_%:òE(Py)‹É-1›òE(Cy+(o%<<2))“Ë”ÉX_%:ço%<>-1…„òE(g+(o%<<2))–Í—Éq_%:ȉo%Ê−É-1:òE(Sy)ŒÉ0:By=»($D_%)œˆˇÉCy%:ȉ`%ÊfiÉsJ%:òE(Ay)flÉcJ%:òE(u) ÉKJ%:òE(c)¡ÉMJ%:òE(h)¢ÉeJ%:òE(v)£ÉAJ%:òE(b)¤Ë¥Épy%:ȉ`%ʦÉDJ%:òs($V_%)§Éb_%:òE(Xy)¨Éi_%:òE(t)©˪Éh%:ȉ`%Ê«ÉMy%:ȉo%ʬÉUJ%:çNy%<>-1…­
  43512. !l=Ny%®ͯÉQy%:çNy%<>-1…°òE(f+(Ny%<<2))±Ͳ˳Éfy%:ȉo%Ê´ÉwJ%:çNy%<>-1…µ
  43513. !m=Ny%¶Í·ÉU_%:çNy%<>-1…¸òE(My+(Ny%<<2))¹ͺË»ÉHJ%:òE(o)¼˽ ÉtJ%:òV_¾ ÉSu%:òm¿ËÀË:çNu%=1…Á
  43514. ȉRy%Ê Ésy%:ò_ÃË:È−&400d4,,c%,nJ%,jJ%ÄÌòUÅÍ:áÆÝòUÈ−&400d4,,-1:Ry%=£:áÇÝòE(g%)!g%=(!g%=0):áÈÝòs(E$)çE$=""…É    E$=f$ÊÍ:V$=E$:òW(V%,O_%,V$):áËÝòAy(E$)çE$=""…Ì    E$=a$ÍÍ:F$=E$:òW(V%,ly%,E$):áÎÝòe_(E$)çE$=""…Ï    E$=_$ÐÍ:P$=E$:òW(V%,ny%,E$):áÑÝòYy(E$)çE$=""…Ò    E$=O$ÓÍ:C$=E$:òW(V%,oy%,E$):áÔ ÝòLçJ_%…ÕŶfl,ö$+" ["+Ã(fi)+"]"Ö
  43515. ÌŶfl,ö$×
  43516. Í:òF:áØVÝòL_êG%,q$,al%:òe:V$=f$:F$=a$:P$=_$:C$=O$:G%=‰("<BasCompressFE$Dir>.Choices"):çG%…ÙêŶ:îŶê÷Ŷ:Ù#G%:áÚvÈ−12,4,G%,D,qy-D:òr(G%,M%()):òr(G%,S%()):òr(G%,Z%()):è#G%,C$:O$=¤M(C$):è#G%,P$:_$=¤M(P$):è#G%,F$:a$=¤M(F$):÷Ŷ:Ù#G%ÛÍ:áÜ1Ýòr(G%,øE%())êE%:ãE%=0¸x%-1:è#G%,E%(E%):íE%:áÝ7ÝòO(_u)êG%:G%=®("<BasCompressFE$Dir>.Choices"):çG%…ÞêŶ:îŶê÷Ŷ:Ù#G%:òLß=È−12,2,G%,D,qy-D:òc(G%,M%()):òc(G%,S%()):òc(G%,Z%()):ç_u…àñ#G%,C$:ñ#G%,P$:ñ#G%,F$á(Ìñ#G%,¤M(C$):ñ#G%,¤M(P$):ñ#G%,¤M(F$)âÍ:÷Ŷ:Ù#G%ãÍ:áä0Ýòc(G%,E%())êE%:ãE%=0¸x%-1:ñ#G%,E%(E%):íE%:áåôÝòeêF:!Qy=£:!Gy=¹:!i=¹:!P=¹:P!4=(!P=0):P!12=(!P=0):!Uy=¹:!n=¹:!Jy=£:!Ey=¹:!Fy=¹:ãF=0¸5:Cy!(F<<2)=¹:íF:ãF=0¸1:g!(F<<2)=¹:íF:!Py=£:!Sy=£:By=16:!Ay=¹:!u=¹:!c=¹:!h=¹:!v=¹:!b=£:!Xy=£:!t=£:!l=3:ãF=0¸5:f!(F<<2)=¹:íF:!m=3:ãF=0¸1:My!(F<<2)=¹:íF:!o=£æp!e=£:!V=¹:!q=¹:!w=£:!O=£:M%()=J:S%()=J:Z%()=J:M%()=x,z:S%()=x,z:Z%()=x,z,Iy:O$="Log":a$="Output":_$="XRef":áç[ÝògÈ−&465c6,_%,V%:òz(V%,O_%,V$,f$):òz(V%,oy%,C$,O$):òz(V%,ny%,P$,_$):òz(V%,ly%,F$,a$):áèÝòiy(Q%,T%,I%,F%)áéÝòBy(F%,b%)ȉb%ÊêÉ13,398,399:ȉF%Êë Éoy%:Z=Gì Ény%:Z=Ní Ély%:Z=Wî ÉO_%:Z=rï&Ë:òK(¤C(V%,F%)):çb%=398…òyy(V%,F%)ðçb%=399…òzy(V%,F%)ñçb%=13…òwyò
  43517. É27:ògóÈ−&400dc,b%ôË:áõÝòV_òy:òWy(X%):òFy(X%,-1):áöÝòyç¤D("Choices",X%)…÷gÌÈ−&465c6,_%,X%:òA(X%,IJ%,!e):òA(X%,`_%,!V):òA(X%,rJ%,!q):òA(X%,fJ%,!w):òA(X%,CJ%,!O):òA(X%,ZJ%,¤z)øÍ:áù*ÝòPy(Q%,T%,I%,F%)ê_y%:òFy(X%,-1):ȉF%ÊúÉXu%:òQ:_y%=¹ûÉgu%:òy:_y%=¹üÉmJ%:òQ:òO(¹):_y%=¹ýÉTu%:òQ:òO(£):_y%=¹þÉiJ%:òe:òy:_y%=¹ÿ Ë:ç_y%…çI%€1092…òG(X%)Í:ásÝòQêo_%,s$,w$,R$:!e=¤W(X%,IJ%):!V=¤W(X%,`_%):!q=¤W(X%,rJ%):!w=¤W(X%,fJ%):!O=¤W(X%,CJ%):o_%=¤z:ço_%<>¤W(X%,ZJ%)…)s$="TFont":w$="TSystem":ç¬o_%…È“s$,w$[R$=¤P(S_%)+".":s$=R$+s$+½0:w$=R$+w$+½0:R$=R$+"Templates"+½0:È−41,25,R$,s$:È−41,25,w$,R$Í:áÝòx_(F%,b%)ȉb%ÊÉ13:òQ:òG(X%)É27:òG(X%)    É386:òe:òG(X%)
  43518. É387:òQ:òO(£):òG(X%) É388:òQ:òO(¹):òG(X%) É389:òG(X%)É390:òQ:òG(X%)È−&400dc,b%Ë:áݤzêWJ%,Z%,Py%,R%:Z%=¤A(128):Py%=0:õÈ−12,9,S_%,Z%,1,Py%,128,"TSystem"+½0¸,,,R%,Py%:WJ%=(R%=1):ý(Py%=-1)☓WJ%:òZ(Z%,128):=WJ%'Ýòd(E%())êE%,Y%,N%:ç¤D("Order",K%)…¼ÌÈ−&465c6,_%,K%:E%=0:È”E%<x%€E%(E%)<>J:Y%=E%(E%)€(¬M):ãN%=0¸Vy:òA(K%,¤Q(N%,E%),Y%=N%):íN%:òA(K%,Ly%+E%,E%(E%)€M):E%+=1:Î:È”E%<x%:ãN%=0¸Vy:òA(K%,¤Q(N%,E%),£):íN%:òA(K%,Ly%+E%,£):E%+=1:ÎÍ:áÝòO_(Q%,T%,I%,F%)ȉYÊÉp:òv(Z%(),I%,F%)Éwy:òv(M%(),I%,F%)ÉHy:òv(S%(),I%,F%)Ë:á.Ýòv(øE%(),I%,F%):êE%,N%,Wy%,d%,Y%:ç¤e(F%)…)òk(F%,E%,Wy%):Y%=¬M:ç(E%(E%)€Y%)=Wy%…ç¤W(K%,F%)=£…òSy(E%(),E%)Í ÌçWy%=M…çE%(E%)=J… òA(K%,F%,£)! ÌE%(E%)=E%(E%)ŵM:òu(E%(),E%)"Í#ÌçE%(E%)=J…$E%(E%)=Wy%%ÌE%(E%)=(E%(E%)€M)☓Wy%&%Í:òu(E%(),E%):N%=0:d%=£:õçN%<>E%…'d%=((E%(N%)€Y%)=Wy%):çd%…(òDy(E%(),E%))Í*Í:N%+=1:ýd%☓N%>=x%+Í,Í-Í:á.>Ýòu(øE%(),øE%):êd%:d%=(E%<=0):È”¬d%:d%=(E%(E%-1)<>J):ç¬d%…/!E%-=1:òSy(E%(),E%):d%=(E%<=0)0    Í:Î:á1UÝòSy(øE%(),E%):êN%,d%,Y_%:N%=E%:õE%(N%)=J:òA(K%,Ly%+N%,£):N%+=1:d%=(N%>=x%):ç¬d%…2d%=(E%(N%)=J):ç¬d%…3dE%(N%-1)=E%(N%):òA(K%,¤Q(E%(N%),N%-1),¹):òA(K%,¤Q(E%(N%),N%),£):Y_%=E%(N%)€M:òA(K%,Ly%+N%-1,Y_%)4Í5 Í:ýd%:á6ÝòDy(øE%(),N%):êE%,d%:E%=0:d%=£:È”¤Jy(E%(),E%):E%+=1:Î:òA(K%,¤Q(E%(N%),N%),£):E%(N%)=E%☓(E%(N%)€M):òA(K%,¤Q(E%(N%),N%),¹):á7WݤJy(E%(),E%):ês_%,N%:N%=0:s_%=£:È”N%<x%€(¬s_%):s_%=((E%(N%)€(¬M))=E%):N%+=1:Î:=s_%8#ݤe(F%)=(F%>=uy%)€(F%<(Ly%+x%))9Ýòk(F%,øgJ%,øaJ%)çF%>=Ly%…:    aJ%=M;ÌaJ%=(F%-uy%)Ŵx%<Í:gJ%=(F%-uy%)◰x%:á=*ݤQ(aJ%,gJ%)=(((aJ%€(¬M))*x%)+uy%)+gJ%>ÝòJ_(F%,b%)ȉb%Ê?É13,398:òK(¤C(w%,2)):òU@
  43519. É27:òUAÈ−&400dc,b%BË:áCÝòGy(Q%,T%,I%,F%)ȉF%ÊDÉ0:òK(¤C(w%,2)):çI%€1…Eò_:È−&400d4,,c%FÌòUGÍHË:áIÝòRç¤D("SaveAs",w%)…J%ÌÈ−&465c6,_%,w%:òW(w%,2,¤r):çZ=W…KòMy(w%,1,"file_"+Ã~(y))LÌòMy(w%,1,"file_"+Ã~(a))MÍNÍ:áOݤrêM$:ȉZÊP ÉG:M$=C$Q ÉN:M$=P$R ÉW:M$=F$S Ér:M$=V$T    Ë:=M$U"Ýòz(D%,E%,M$,Ay$)çM$=""…M$=Ay$VòW(D%,E%,M$):áW#ݤ_Dragged_FileName_ControlȉZÊXÉG:òI(¤C(V%,oy%))YÉN:òI(¤C(V%,ny%))ZÉW:òI(¤C(V%,ly%))[Ë:=0\-ݤ_Dragged_FileName_SaveAsòI(¤C(w%,2)):=0]XÝòI(S$)êD%,E%,Z%,Q%,T%:Z%=¤A(320):È−&400cf,,Z%:D%=Z%!12:E%=Z%!16:ç(D%<>-2)€(D%<>V%)…^ çS$=""…_ȉZÊ` ÉG:S$=O$a ÉN:S$=_$b ÉW:S$=a$cËdÌS$=¤M(S$)eŒÍ:Q%=!Z%:T%=Z%!4:!Z%=(©(S$)+48)€-4:Z%!12=0:Z%!16=1:Z%!20=D%:Z%!24=E%:Z%!28=Q%:Z%!32=T%:Z%!36=-1:Z%!40=a:$(Z%+44)=S$+½(0):È−&400e7,17,Z%,D%,E%:u_%=Z%!8fÍ:òZ(Z%,320):ágÝòK(S$)çS$<>¤r…hȉZÊiÉG:òYy(S$)jÉN:òe_(S$)kÉW:òAy(S$)lÉr:òs(S$)mËnÍ:òR:òg:áoÝòW_ȉW%!12ÊpÉ0:ȉW%!8ÊqÉw_%:È−&400de,"/"+C$:w_%=-1rÉr_%:È−&400de,"/"+P$:r_%=-1sËtË:áu]Ýò`yêB_%,p$,U%,F%,Q%,T%:p$=¤P(W%+44):B_%=W%!40:U%=W%!20:F%=W%!24:Q%=W%!28:T%=W%!32:ȉB_%Êv
  43520. Éy:òxywË:áx]ÝòB_êB_%,d$,U%,F%,Q%,T%:U%=W%!20:F%=W%!24:Q%=W%!28:T%=W%!32:B_%=W%!40:d$=¤L(W%+44):ȉB_%ÊyÉy:Q%=¤v(d$)zÉa:笤Z(d$)…{
  43521. òs(d$)|Í}òD(yy%,¤w(1))~Ë:áÝòa_êS$,Q_%:ç(W%!12)<>u_%…€
  43522. òP(10)Ŵ ÌQ_%=¹:S$=¤P(W%+44):ȉW%!40ÊŵÉa:òK(S$):Q_%=£◰òP(10):Q_%=£☓ Ë:çQ_%…Ŷ9W%!12=Gu%:W%!16=3:È−&400e7,18,W%,W%!20,W%!24:Ku%=W%!8ŷÍÍ:á⇦ݤ_(J$)êE%,M%:çJ$<>""…⇨ZãE%=1¸©(J$):M%=§"ABCDEFGHIJKLMNOPQRSTUVWXYZ",ÁJ$,E%,1)):çM%>0…ÁJ$,E%,1)=½(M%+–("a")-1)⇩íE%⇧    Í:=J$…0ݤZ(M$)=(¤M(M$)="")☓(¤_(M$)=j$)☓(§M$,".")<1)™ Ý¤v(Y$)êA$,E%:ç!O€(¬¤Z(F$))…‰E%=§Y$,"."):çE%>0…•*A$=ÀF$,©(F$)-©(¤M(F$)))+¤M(Y$):òAy(A$)‘Í’*Í:t$=Y$:A$="":ç!Qy<>0…A$+=" -MultiDEF"‹ç!Gy<>0…A$+=" -WEndRtn"›ç!i<>0…A$+=" -Number"“ç!P=0…A$+=" -SWI"”ç!Uy=0…A$+=" -SWIBad"„ç!n=0…A$+=" -SWIExist"–ç!Jy<>0…A$+=" -Library"—ç!Fy=0…A$+=" -Unused"−ç!Py<>0…A$+=" -EVariable"Œç¬¤Z(F$)…œç!Ey=0…A$+=" -Single"†UA$+=" -ReduceVar "+¤x(Cy):A$+=" -ReduceRtn "+¤c(g):ç!Sy<>0…A$+=" -ListOut "+Ã(By)‡Í:笤Z(C$)…fiç!Ay=0…A$+=" -Stats"flç!u=0…A$+=" -EVAL" ç!c=0…A$+=" -DATA"¡ç!h=0…A$+=" -READ"¢ç!v=0…A$+=" -GOTO"£ç!b<>0…A$+=" -List"¤Í:笤Z(V$)…¥ç!Xy<>0…A$+=" -UnusedS"¦ç!t<>0…A$+=" -WSpLabel"§Í:ç¤Z(P$)…¨A$+=" -XRef 0"©¶ÌA$+=" -XVar "+Ã(!l):A$+=" -XIncVar "+¤x(f):A$+=" -XRtn "+Ã(!m):A$+=" -XIncRtn "+¤c(My):A$+=" -SRef "+¤I(Z%()):A$+=" -SVar "+¤I(S%()):A$+=" -SRtn "+¤I(M%()):ç!o=0…A$+=" -Deleted"ª‘Í:òt("BasCompress$Options",A$):òq("BasCompress$Special",V$):òq("BasCompress$XRef",P$):òq("BasCompress$Out",F$):òq("BasCompress$Log",C$):ç!w…«òt("Main",Y$):Y$="<Main>"¬Í:êŶ:îŶê÷Ŷ:òX(I):òL­ ç¤Z(C$)…®4òX(F_):È−&400de,"BasCompress "+Y$+" { > null: }"¯&ÌòX(ry):È−&400de,"BasCompress "+Y$°$Í:÷Ŷ:òX(I):ç((!V)<>0)€(¬¤Z(C$))…±òi(w_%,C$)²Í:ç((!q)<>0)€(¬¤Z(P$))…³òi(r_%,P$)´Í:ç((!e)<>0)€(¬¤Z(F$))…µÈ−&400de,F$¶Í:=0·>Ýòi(ønu%,q$)êM%,Vy%,Py%,Vu%:È−8,5,q$¸Py%,,Vy%,,s%:çPy%<>0…¸¡M%=¤A(256):M%!20=-1:M%!28=0:M%!32=0:M%!36=s%:M%!40=(Vy%€&fff00)>>8:òV(M%+44,q$):M%!0=(©(q$)+1+3+44)€(¬3):M%!12=0:M%!16=5:È−&400e7,18,M%,0:nu%=M%!8:òZ(M%,256)¹Í:áºZÝòt(z$,r$)êM%:M%=¤A(512):òV(M%,z$):òV(M%+256,r$):È−36,M%,M%+256,©(r$),0,0:òZ(M%,512):á»Ýòq(z$,r$)ç¤Z(r$)…¼È−&20024,z$,0,-1,0,2½Ìòt(z$,r$)¾Í:á¿CݤI(E%())êE%,N%,E$,J$:E$="":E%=0:N%=¹:È”N%€E%<x%:ȉE%(E%)€(¬M)ÊÀÉx:J$="N"ÁÉhy:J$="D"ÂÉxy:J$="U"ÃÉz:J$="T"ÄÉIy:J$="P"Å    N%=£Æ
  43523. Ë:çN%…ÇçE%(E%)€M…ÈE$+=¤_(J$)É ÌE$+=J$Ê Í:E%+=1ËÍ:Î:ç©(E$)=0…E$=""""""Ì=E$͠ݤx(S)êE$:E$="":çS!0…E$+="i"ÎçS!4…E$+="r"ÏçS!8…E$+="s"ÐçS!12…E$+="I"ÑçS!16…E$+="R"ÒçS!20…E$+="S"Óç©(E$)=0…E$=""""""Ô=E$ՠݤc(S)êE$:E$="":çS!0…E$+="p"ÖçS!4…E$+="f"×ç©(E$)=0…E$=""""""Ø=E$ÙÝòZyȉW%!16ÊÚÉ1282:òOyÛ
  43524. É1:ò`yÜ
  43525. É2:òa_Ý
  43526. É3:òB_ÞÉ&400c0:òqyßÉ&400c1:òpà    É8:òmáÉ&400cc:òTyâ É10:òZ_ã    É0:òFäË:áåÝòTyêZ$:ȉW%!20ÊæÉX%:Z$="WinChoices"çÉV%:Z$="WinControl"èË:çZ$<>""…ésZ$=¤G(Z$):W%!16=&400cc:W%!12=W%!8:$(W%+28)="bascomp"+½0:$(W%+36)=Z$+½0:W%!0=(36+©(Z$)+4)€-4:È−&400e7,17,W%,W%!4êÍ:áë
  43527. ݤK=19ìÝòly(bJ%,Fl%)ç¤K<Fl%…íŶ1,"EIL1"îÍ:çbJ%<1…ïŶ1,"EIL2"ðiÍ:__%=bJ%:ÞA$(__%-1):ÞF%(__%-1):XJ%=0:Þvy%256:H_%=40:z%=0:ey%=12:Eu%=£:ÞE$(H_%-1):qy%=£:dy%=£:xJ%=¹:áñÝòM(N$,Ju%)òX_(N$,Ju%):áò_ÝòX_(N$,Ju%)êVy%,E%,K$,h$:E%=0:Vy%=¹:K$=ÁN$,1+§N$,".")):È”E%<XJ%€Vy%:Vy%=(K$<>A$(E%)):çVy%…ó    E%+=1ôÍ:Î:çVy%…õ çE%=__%…öŶ1,"EIL3"÷OÍ:A$(E%)=K$:h$="'"+N$+"' does not have a FN_":êŶ:îŶê÷Ŷ:òS(h$+K$+"_version")øRF%(E%)= ("FN_"+K$+"_version"):÷Ŷ:XJ%+=1:êŶ:îŶê÷Ŷ:òS(h$+"_hard_initialise_"+K$)ù!ç ("FN_hard_initialise_"+K$)…úŶ1,"EIL5 "+N$ûÍ:÷ŶüÍ:çJu%>F%(E%)…ýŶ1,"EIL4 "+N$þÍ:áÿݤS(u$)êŶ:îŶê÷Ŷ:òty
  43528. = (u$)ÝòtyçxJ%…-Ŷfl,ö$+" (evaluating `"+u$+"' ["+Ã(fi)+"])"
  43529. ÌŶfl,ö$Í:á+ݤL(A%)êH$:È”?A%:H$+=½(?A%):A%+=1:Î:=H$:ݤn(A%,B%)êH$:È”B%>=1€?A%:H$+=½(?A%):A%+=1:B%-=1:Î:=H$.ݤP(A%)êH$:È”?A%>31:H$+=½(?A%):A%+=1:Î:=H$!ÝòV(A%,H$)$A%=H$:A%?©(H$)=0:á    ÝòS(Q$)çqy%…
  43530.     çdy%… Ŷfl,ö$+" ["+Ãfi+"]."
  43531. ÌŶfl,ö$Í Ìç¬Eu%… çz%=H_%…&E(H_%-1)="Errors too deep!!!!!":òYÍ:çÂQ$,2)=": "…Q$=ÀQ$,©(Q$)-2) Í:çdy%…E$(z%)=ö$ Ìçz%=0…JE$(z%)="Error `"+ö$+"' (line ":E$(z%)+=Ã(fi)+") in ":E$(z%)+="`"+Q$+"'"ÌE$(z%)="`"+Q$+"'"ÍÍ:z%+=1:Ŷfl,""ÍÍ:áÝòYêSy%,Zy$:çqy%…    çdy%… òD(fl,ö$+" ["+Ã(fi)+"]."):òF:àÌòD(fl,ö$):çfl=by%… òF:à!Í"Í#Ìçey%=-2…$
  43532. çz%>0…%Ŷ¢fl,E$(0)& ÌŶ¢fl,ö$'Í:à(Í:çey%=-3…)8$vy%="TASK":È−&400c0,200,!vy%,"LibHandler"+½(0):çz%…*ãSy%=0¸z%-1:çSy%<(z%-1)…+òf(E$(Sy%)+" in"),Ìòf(E$(Sy%))-
  43533. Í:íSy%.Ìòf(ö$+" (line "+Ã(fi)+")")/Í:È−&600dd:à0Í:çey%>=0…1ëey%2'Í:ñ"An error has occured...":ñ:çz%…3:ãSy%=0¸z%-1:û((7-(Sy%<<1))€6)+1:ñE$(Sy%);:çSy%<(z%-1)…4 ñ" in ";5
  43534. Í:íSy%6Ìñö$;" (line ";Ã(fi);")"7 Í:ñ:û7:à8Í:á9fÝòf(g$)êIu%:Iu%=20+(©(g$)+5)€-4:!vy%=Iu%:vy%!16=&804c0:$(vy%+20)=g$+½(10)+½(0):È−&600e7,17,vy%,0:á:ݤ_CAsm_version=14;èݤ_hard_initialise_CAsmòM("<BasicV_Assembler$Lib>.Misc",27):È−5,"RMEnsure CAssembler 0.08 RMLoad System:Modules.CAssembler":È−5,"If ""<CAsm$Dir>""="""" Then Set CAsm$Dir <d>.Library.CAsm":CAsmLibrary_stdlib=1:CAsmLibrary_stdio=2<¯CAsmLibrary_string=3:XJ=4:gi=5:Pa=6:xl=7:CAsmLibrary_wimp=8:ua=9:CAsmLibrary_message=10:ql=11:Al=12:vl=13:_i=14:ju=15:il=16:_a=17:qu=18:Tl=19:dJ=20:h_=21:u_=22:bl=23:Bi=24=§o_=25:`a=26:`=26:LJ=0:_J=1:Lu=2:BJ=3:I_=4:Y_=5:a_=6:wi=7:Ha=8:ea=9:T=10:Q=11:j=12:A=13:E=14:SJ=15:ny=&6d734143:Fy%=0:Iy%=13:R=0:B=0:d=10*1024:M_=d+(1*1024):oy=£:=0>AÝòE_(I$)êM%,Zy%,q%,L%,O%,P%,S%,N$:êŶ:îŶê÷Ŷ:È−&400ec,zy%,-1:òL?Rzy%=›-32768:È−&400ec,zy%+32768,-1¸L%:L%+=32768:O%=zy%+32768:P%=0:S%=14:çO%=L%…@/Ŷ1,"Not enough memory to start application"AÍ:çFy%<>0…BŶ1,"EIC1"C Í:Þn_%`*8:ÞZ$(`):ç¤h_DEFAULTD3È”I$<>"":N$=ÀI$,§I$,",")-1):êŶ:îŶê÷Ŷ:òS("EIC2")EFZy%= ("CAsmLibrary_"+N$):÷Ŷ:q%=n_%:M%=q%+(Fy%*8):È”M%>q%:ç!q%=Zy%…F q%=M%+1G
  43535. Ìq%+=8HÍ:Î:çq%=M%…I çFy%>=`…JŶ1,"EIC3"K@Í:!M%=Zy%:Z$(Zy%)=N$:Fy%+=1:O%=zy%+32768:P%=0:ç¤S("FNh_"+N$)LGÍ:I$=ÁI$,©(N$)+2):È”–(I$)=–(" "):I$=ÁI$,2):Î:Î:È−&400ec,zy%,-1:÷Ŷ:áMÝò`êR%,M%,E%,Jy%:çFy%=0…Nç¤h_DEFAULTOÍ:Jy%=n_%:E%=Fy%:ç(S%€2)=0…P+ÞM%Fy%*4:È−79,Fy%,M%+&c0000000,3,,Jy%,8Q⇨Í:[OPTS%:.Ly DCDny:DCDty:]:È”E%>0:[OPTS%:DCD!Jy%:DCDJy%!4:]:Jy%+=8:E%-=1:Î:[OPTS%:DCD0:]:[OPTS%:ALIGN:.Wy:]:M%=P%:ç¤jumpblock_DEFAULTRJty=(P%-M%)>>2:E%=Fy%:Jy%=n_%:È”E%>0:M%=P%:ç¤S("FNjumpblock_"+Z$(!Jy%))S%Jy%!4=(P%-M%)>>2:Jy%+=8:E%-=1:Î:áT~ÝògyêX:[OPTS%:ALIGN:.Yy:STMFD(A)!,{4-5,E}:BL P%+(13<<2):.X DCDLy-X:DCDWy-X:DCDR-X:DCDB:DCDd:.U:DCD0:DCD0:DCD0:DCD0:LDR A,UU¼LDMFD(A)!,{T,Q,j,E}:MOVpc,E:BIC 5,E,#&fc000003:LDMIA5,{0-4}:ADD0,0,5:ADD1,1,5:ADD2,2,5:MOV5,#0:SWI &fcb80:STRvc0,U+(1<<2):STRvc1,U+(3<<2):LDMFD(A)!,{4-5,pc}:.Zy:¤X:MOV2,E:MOV1,A:MOV0,TVqSWI &fcb81:MOVvc1,#0:STRvc1,U+(3<<2):MOVpc,2:MOV13,12:]:R=P%:òJ:òj:B=(B+3)€-4:P%+=B-1:O%+=B-1:[OPTS%:DCB0:]:áWÝòw_çP%<>32768…Ŷ1,"EIC4"Xo[OPTS%:ADR4,_:MOV5,#ky:SWI &fcb80:¤f("vc",2,tu):Bvc G_:SWI 43:._:DCDLy-_:DCDWy-_:DCDR-_:DCDB:DCDd:DCDM_:]:áYsݤX[OPTS%:STMFD(A)!,{T,Q,j,E}:MOV Q,pc:¤f("",E,U):STR A,[E],#4:LDMIA(E)!,{T,j,A}:€ Q,Q,#&fc000003:☓R E,E,Q:]:=0Z_Ýòq_(A_%,Ky%,yJ%)òM("<BasicV$Lib>.Heap",8):òM("<BasicV$Lib>.Message",1):ç¤Ey(A_%,Ky%,yJ%,0)[ÖYy:îŶÖZy:òY\á]UݤEy(A_%,Ky%,yJ%,ay%)êL%,O%,P%,S%,sl%,H%:êmJ:êuJ,i_,cJ,kJ,EJ,vJ:ê`y,gy,Yi:çay%=0…^:òM("<BasicV$Lib>.Heap",8):òM("<BasicV$Lib>.Message",1)_~Í:Þu%A_%:mJ=A:uJ=1<<31:i_=1<<30:cJ=1<<29:kJ=1<<28:EJ=1<<27:vJ=1<<26:`y=1<<17:gy=256:Yi=gy+`y:È−&606c0:êŶ:îŶê÷Ŷ:È−&606c1:òL`"H%=A_%:L%=u%+A_%:çKy%<>0…Ky%=4a"ãS%=8+Ky%¸10+Ky%⇦2:ç(S%€4)<>0…bO%=u%:çay%=1…c P%=32768d    ÌP%=0eÍfÌO%=0:P%=u%g Í:ȉay%Êh/É1:òJ:òw_:òJ:òx:òJ:ò`:R=P%:òJ:òj:B=(B+3)€-4i'É0:òJ:òx:òJ:òU_:òJ:òN_:òJ:ò`:òJ:ògyj É2:òJ:òxkË:çS%€4…L%=O%⇧L%=P%lç(S%€2)=0…mÈ−&dcb93,0,u%,L%-u%n!Í:H%=L%-u%:íS%:È−&606c1:çKy%…o çay%=0…pYy+=u%:Zy+=u%qÍrÍ:çoy€ay%<>2…s    çKy%…tH%=Wy:çay%…H%-=32768uÌŶ1,"EIC9"vÍw Í:çyJ%…x`ñ"Assembled to &";~H%;" = ";((H%*10+512)Ŵ1024)/10;"K":ñ"Could assemble with ";A_%-H%;" less"y    Í:=H%zݤ_Template_version=20{cݤ_hard_initialise_Template:F_%=£:l%=£:Ay%=£:jy%=£:LJ%=£:ry%=-1:j_%=1:iy=7:Oy=16:A_=14:py=15:=0|ÝònyêE%:çl%<>-1…}    çAy%…~È−&665c1,_%,¹,£1ÌãE%=0¸255:È”l%?E%:È−&60082,E%:l%?E%-=1:Î:íE%€ÍŴÍ:áŵ/Ýòvyês%,v%,a%,Z%,G$,Jl%,Yy%,C_%,By%,R%:çl%…◰    çAy%…☓jy%=(Ay%=+1):çjy%…Ŷ    a%=+1ŷ    Ìa%=0Í:Yy%=140+(1<<21):çLJ%…⇦v$=¤G("MenuFont"):çv$<>""…⇨›Yy%+=(1<<18)+(1<<19):òN(C_%,8+©(v$)+1):$(C_%+8)=v$:C_%!0=16*»(¤G("MenuFontWidth")):C_%!4=16*»(¤G("MenuFontHeight")):ç¤G("MenuFontLowRez")="NO"…⇩Yy%+=(1<<17)⇧ÌYy%+=(1<<16)…͙͉*Í:È−&465c0,_%,0,0,a%,a%,0,0,Yy%,C_%¸l%•!ÌòN(l%,256):È−&dcb93,0,l%,256‘Í’
  43536. Ìl%=-1‹4Í:G$=¤d("<"+X$+"$Dir>.Sprites"):s%=¤g(G$):çs%>0…›pZ%=¤A(128):By%=0:õÈ−12,12,"<"++X$+"$Dir>",Z%,1,By%,128,"Sprites*"¸,,,R%,By%:çR%=1€Z%!20=4089€s%<Z%!8…s%=Z%!8“mýBy%<0:òZ(Z%,128):òN(t%,s%+16):t%!0=s%+16:t%!4=0:t%!8=16:t%!12=16:È−&2002e,522,t%,G$¸v%;a%:b$=G$:ç¤N(a%)…”*òC("Reason","Sprites"):òb(v%):òP(4):òF„Í–    Ìt%=0—Í:ò_y("Templates"):çt%>0…− òh("ProgInfo",t%,"ProgInfo")Œ!Ìòh("ProgInfo",+1,"ProgInfo")œÍ:f%=0:çF_%=0…†òn‡"Í:h_%=¤O("Query",Jl%,+1):òuy:áfi/ÝòQy:G$=¤d("<"+X$+"$Dir>.Sprites"):çG$<>b$…fl0t%!4=0:t%!8=16:t%!12=16:È−46,522,t%,G$:b$=G$ Í:á¡.ݤProgInfo(D%)òV(D%!(88+(iy<<5)+20),D$):=0¢ÝòCy(Q%,T%,I%,F%)ȉF%Ê£!ÉA_,py:Q%=¤p(1,¤w(0)):çI%<>1…¤òU¥Í¦çI%€240…§W%!0=f%:W%!4=1:È−&400d0,,W%¨Í©Ë:áªÝònçf%=0…«    çjy%…¬%Þiy%4:!iy%=0:ç¤i("ProgInfo",iy%)…­f%=!iy%:òW(f%,7,D$)®Í:f%=!iy%¯Ìç¤D("ProgInfo",f%)…°òW(f%,7,D$)±Í²Í³
  43537. ÌçAy%…´    çjy%…µÈ−&465c6,_%,iy%¶ÌÈ−&465c6,_%,f%·Í¸Í¹Í:áºXÝò_y(E$)êtu%,Zy%,s%,v%,a%,J%:ê_u%,G$,Dy%,ky%:G$="<"+X$+"$Dir>."+E$:s%=¤g(G$):çs%<=0…»2òC("Reason",E$):òC("Sys","Not found"):òP(4):òF¼NÍ:òN(Zy%,s%):òN(Dy%,s%+C):ky%=Dy%+Ty:_u%=Dy%+C:È−&600d9,,G$¸v%;a%:ç¤N(a%)…½5òC("Reason","Templates"):òb(v%):òP(4):È−&600da:òF¾Í:êŶ:îŶê÷Ŷ:òVy¿VBy%=0:õky%!0=–("*"):È−&600db,,_u%,Zy%,Zy%+s%,l%,ky%,By%¸v%,,tu%,,,,By%;a%:ç¤N(a%)…ÀòH(v%):È−&600da:òFÁ Í:çBy%…Â&ãa%=0¸11:çky%?a%=13…ky%?a%=0:a%=12Ã3ía%:Dy%!fy=tu%-Zy%:Dy%!Ny=Zy%:J%=¤h(Dy%):çJ%=0…ÄòP(16):È−&600da:òFÅÍ:J%!H=!`y%:!`y%=J%Æ*Í:ýBy%=0:÷Ŷ:È−&400da:òT(Dy%):òT(Zy%):áÇ!ÝòVyÈ−&600da:òS("Template"):áÈ%ݤO(B$,lu%,e_%)=¤m(B$,lu%,e_%,"")É1ݤm(B$,lu%,e_%,Q$)êJ%,Du%,G%:J%=¤B(B$):çJ%=0…ÊòFË"Í:Du%=J%+C:Du%!64=e_%:çQ$<>""…ÌG%=¤S("FN"+Q$)ÍÍ:ç¤t(J%,G%)…ÎòFÏÍ:òw(J%):=G%Ð)Ýòh(B$,e_%,Q$)êJ%,D%:J%=¤B(B$):çJ%=0…ÑòFÒ Í:D%=J%+C:D%!64=e_%:çQ$<>""…Ó D%=¤S("FN"+Q$+"("+Ã(D%)+")")ÔÍ:áÕ&ݤT(B$,e_%)êJ%,D%:J%=¤B(B$):çJ%=0…ÖòF×Í:D%=J%+C:D%!64=e_%:=0Ø"ݤD(B$,øXy%)êE%:=¤y(B$,Xy%,E%)Ù)ݤy(B$,øXy%,øCu%)êJ%,y%:y%=£:çXy%<=0…ÚJ%=¤B(B$):çJ%…Ûy%=¤t(J%,Xy%):çy%=£…ÜCu%=J%!Ny:òw(J%)ÝÍÞ    Ìy%=¹ßÍà
  43538. ÌçAy%…áÈ−&465c6,_%,Xy%âÍã    Í:=y%äHݤAy(B$)êJ%,E$,m%:J%=!`y%:m%=£:È”J%€(¬m%):m%=(¤n(J%+Ty,12)=B$):ç¬m%…å J%=J%!Hæ Í:Î:=J%ç Ý¤B(B$)êJ%:J%=¤Ay(B$):çJ%=0…èòC("Reason",B$):òP(3)é    Í:=J%êݤt(J%,øXy%)çAy%…ëÈ−&665c3,_%,J%+C,0¸Xy%;J%ìÌÈ−&600c1,,J%+C¸Xy%;J%íÍ:J%=¤N(J%):çJ%…îòH(Xy%):Xy%=0ï    Í:=J%ð:Ýòw(J%)êM%:M%=`y%:È”!M%<>0€!M%<>J%:M%=!M%+H:Î:ç!M%=J%…ñ!M%=J%!H:J%!H=0:òT(J%)òÍ:áóݤSy(A%)=º(by)ôݤh(A%)A%=¤Sy(A%):çA%=0…õ
  43539. òP(16)ö    Í:=A%÷!Ýòjyç(S%€2)=0…òLy("Template")ø [OPTS%:ALIGN:.by:¤X:B vy:]:áù}ݤ_Declare_Local_Variables_TemplateÞ`y%4:!`y%=0:P%=0:[OPTS%:.H DCD0:.Tu DCD0:.Ny DCD0:.fy DCD0:.Ty DCD0:DCD0:DCD0:.C:]:=0ú"ݤi(B$,Ty%)êE%:=¤By(B$,Ty%,E%)û*ݤBy(B$,Ty%,øCu%)êJ%,y%:y%=£:ç!Ty%<=0…üJ%=¤B(B$):çJ%…ýy%=¤My(J%,Ty%):çy%=£…þCu%=J%!Ny:òw(J%)ÿÍ    Ìy%=¹Í
  43540. ÌçAy%…È−&465c6,_%,Ty%Í    Í:=y%ݤMy(J%,Ty%)êv%:çAy%…È−&665c3,_%,J%+C,Ty%¸v%;J%ÌÈ−&600c1,,J%+C¸v%;J%    Í:!Ty%=v%:J%=¤N(J%):çJ%…
  43541. òH(v%):!Ty%=0     Í:=J% 6Ýòpy(c%,U$)êY%:òEy(c%):È”U$<>"":Y%=§U$,","):çY%>1…"òJy(c%,ÀU$,Y%-1)):U$=ÁU$,Y%+1)ÌòJy(c%,U$):U$=""    Í:Î:áVÝòJy(c%,U$)êE%:ãE%=1¸©(U$):c%+=28+(24*(–(ÁU$,E%,1))-–("0"))):c%=c%!4:íE%:òEy(c%):áÝòEy(c%)çry%=-1…ÞC%(j_%):ry%=0Í:çry%>=Þ(C%(),1)…Ŷ1,"ET1"&C%(ry%)=c%:ry%+=1:È−&465c7,_%,c%:á(ݤE(S,s)[OPTS%:DCBS:DCBs:DCB128:]:=01ݤF(S,s,ay)[OPTS%:DCBS:DCBs:DCBay:DCB128:]:=0:ݤJ(S,s,ay,OJ)[OPTS%:DCBS:DCBs:DCBay:DCBOJ:DCB128:]:=0(ݤs(S,s)[OPTS%:DCBS:DCBs:DCB130:]:=01ݤY(S,s,ay)[OPTS%:DCBS:DCBs:DCBay:DCB129:]:=0ݤU(K)çK>=0…K=(K*24)+28⇧K=0=K¼ÝòQ_êX,k,sy:[OPTS%:ALIGN:.cy:STMFD(A)!,{4-9,E}:MOV5,0:MOV6,1:MOV8,2:MOV7,#24:.k LDRB E,[5],#1:TEQ E,#203:LDMeqFD(A)!,{4-9,pc}:MOV4,8:.sy ADD4,4,#28:MLA 4,E,7,4:LDRB E,[5],#1:CMP E,#128·LDRlo4,[4,#4]:Blo sy:LDR0,[6],#4:Beq ey:CMP E,#130:Beq U_:.aa:LDR4,[4,#4]:ADD4,4,#28:MOV1,#0:.X TEQ0,1:LDR2,[4,#0]:☓Req2,2,#1:BICne 2,2,#1:STR2,[4],#24:TST2,#128:ADDeq1,1,#1:Beq X›B k:.U_:TEQ0,#0:LDR0,[4,#8]:BICeq 0,0,#1<<22:☓Rne0,0,#1<<22:STR0,[4,#8]:B k:.ey:TEQ0,#0:LDR0,[4,#0]:BICeq 0,0,#1:☓Rne0,0,#1:STR0,[4,#0]:B k:]:á)ݤh_DEFAULTêŶ:îŶê÷Ŷ:òS("@.h.DEFAULT") ndu=16:kl=1<<30:TJ=1<<29:Sl=0:pl=1:ga=2:Aa=3:za=4:q_=5:ca=6:JJ=7:qi=8:Pu=9:ta=10:ll=1<<0:ky=1<<1:Vi=1<<2:=0!1ݤjumpblock_DEFAULTêŶ:îŶê÷Ŷ:òS("@.h.DEFAULT")"m[OPTS%€Iy%:.Ga DCDd_:.Eu DCDuu:.`_ DCDx_:.T_ DCDci:.Ou DCDva:.WJ DCDou:.n_ DCDgl:.y_ DCDMl:.G_ DCDvu:]:=0#%ݤh_stdioêŶ:îŶê÷Ŷ:òS("@.h.stdio")$ZJ=0:Fi=17:Oi=34:=0%-ݤjumpblock_stdioêŶ:îŶê÷Ŷ:òS("@.h.stdio")&—[OPTS%€Iy%:.cl DCDli:.w_ DCDAi:.Da DCDLi:.ai DCDxi:.X_ DCDtJ:.iu%DCDju%:.Ml%DCDEl%:.Zl%DCDku%:.dl DCDYu:.Il DCDei:.zJ DCDIi:.ni DCDri:.El DCDCu:]:=0''ݤh_stdlibêŶ:îŶê÷Ŷ:òS("@.h.stdlib")(=0)/ݤjumpblock_stdlibêŶ:îŶê÷Ŷ:òS("@.h.stdlib")*³[OPTS%€Iy%:.uy DCDmu:.S_ DCDXl:.Ri DCDjl:.C_ DCDKu:.QJ DCDNu:.Ua DCDnJ:.rl DCDhl:.ra DCDpa:.ia DCDFl:.su DCDlJ:.Ja DCDNJ:.R_ DCDiJ:.Ya DCDV_:.iu DCDUu:.Qi DCDRl:.VJ DCDja:]:=0+'ݤh_stringêŶ:îŶê÷Ŷ:òS("@.h.string"),SP%=0:[OPTS%:.Ju DCB0:.f_ DCB0:.ml DCB0:.eJ DCB0:.gu DCB0:.Dl DCB0:.Ql DCB0:]:=0-/ݤjumpblock_stringêŶ:îŶê÷Ŷ:òS("@.h.string").Ì[OPTS%€Iy%:.MJ DCDqJ:.Wu DCDZi:.sJ DCDv_:.La DCDZa:.Jl DCDti:.di DCDwl:.Fa DCDfJ:.CJ DCDKi:.c_ DCDGu:.Ea DCDXu:.Qa DCDru:.KJ DCDQu:.RJ DCDRa:.wu DCDrJ:.na DCDK_:.jJ DCDUi:.Ma DCDe_:.m_ DCDaJ:.Na DCDD_/î.ji DCDz_:.bu DCDO_:.au DCDNi:.pu DCDLl:.Hi DCDt_:.Ul DCDFJ:.`l DCDk_:.fl DCDxJ:.sl DCDhi:.el DCDHJ:.Si DCDla:.Hl DCD__:.Yl DCDzu:.Kl DCDp_:.Hu DCDNl:.hu DCDb_:.Ru DCDr_:.H_ DCDpJ:.eu DCDIJ:.Mu DCDVu:.Ei DCDCa:.Su DCD`u:.fa DCDul:]:=00)ݤh_messageêŶ:îŶê÷Ŷ:òS("@.h.message")1=021ݤjumpblock_messageêŶ:îŶê÷Ŷ:òS("@.h.message")3E[OPTS%€Iy%:.B_ DCDoa:.L_ DCDl_:.yJ DCDku:.oi DCDGi:.Ta DCDlu:]:=04#ݤh_wimpêŶ:îŶê÷Ŷ:òS("@.h.wimp")5Êcu=12:Va=0:P%=0:[OPTS%:.zy DCB0:.Cl DCB0:.P_ DCB0:.s_ DCB0:.wJ DCB0:.Ky DCB0:.ka DCB0:.Q_ DCB0:.my DCB0:.Fu DCB0:.ya DCB0:.fi DCB0:.oJ DCB0:.nl DCB0:.j_ DCB0:.mi DCB0:.bJ DCB0:]:P%=0:[OPTS%:.N_ DCB06¦.al DCB0:.Z_ DCB0:.J_ DCB0:.fu DCB0:.YJ DCB0:.GJ DCB0:.bi DCB0:.En DCB0:.Pl DCB0:.Mi DCB0:.nu DCB0:]:P%=0:[OPTS%:.Wl DCB0:.Zu DCB0:.`i DCB0:.g_ DCB0:.xa DCB0:]:=07+ݤjumpblock_wimpêŶ:îŶê÷Ŷ:òS("@.h.wimp")8Ç[OPTS%€Iy%:.ma DCDGl:.Du DCDWi:.gJ DCDSa:.zl DCDsi:.dy DCD`J:.ki DCDDi:.Ka DCDUJ:.ol DCDWa:.vy DCDAu:.wa DCDIa:.ii DCDOl:.PJ DCDpi:.xu DCDZl:.Oa DCDVl:.Pi DCDha:.sa DCDJi:.yi DCDhJ:.vi DCDba:]:=09Ýòhyêj%,Y_%,W$:êÜ:÷+0:çF_%…:(j%=!(¤B("ProgInfo")+C+88+(Oy<<5)+20);Ìj%=¤Fy(f%,Oy)<LÍ:óW$:Y_%=–(W$):W$=ÁW$,2):È”W$<>"":?j%=–(W$)ŵY_%:W$=ÁW$,2):j%+=1:Î:?j%=0=8Ü"Óŷ½¡¶´º §¶¡¶·",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>á?ÐÝòUyêZ%:wy%=13:Þa_%wy%:Þ`J%© (X$)+2+1:Z%=¤A(512):Z%!0=-1:Z%!4=0:Z%!8=-16:Z%!12=68+(wy%-5)*8*2:Z%!16=84:Z%!20=&1700312b:Z%!24=a_%:$a_%="":$`J%="S!BC":Z%!28=`J%:Z%!32=wy%:È−&400c2,,Z%¸_J%:òZ(Z%,512):òX(I):á@ÝòX(Fu%)çFu%<>I…A2òl("IconBar",Fu%+1):$a_%=À¤G("IconBar"),wy%-1)B Ì$a_%=À"UnRegistered",wy%-1)CÍ:òcy(-1,_J%,0,0,0):áDݤ_FileType_version=10E¶Ý¤_hard_initialise_FileType:Xa=-1:Ba=8192:qa=4096:a=4095:AJ=4093:y=4091:_l=4089:Ci=4086:tl=4076:da=4075:DJ=3478:Bu=3388:Xi=3269:Bl=3254:yl=3253:Ti=2815:yu=2779:zi=1793:Iu=1296:=0Fݤ_IntMath_version=6G Ý¤_hard_initialise_IntMath=0Hݤ_ModeInfo_version=6I!ݤ_hard_initialise_ModeInfo=0JòÝòby(Ey%)È−53,Ey%,1¸,,TJ%:TJ%+=1:È−53,Ey%,2¸,,FJ%:FJ%+=1:È−53,Ey%,3¸,,Qu%:Qu%+=1:È−53,Ey%,4¸,,au%:È−53,Ey%,5¸,,zu%:È−53,Ey%,6¸,,Xl%:È−53,Ey%,7¸,,uu%:È−53,Ey%,9¸,,xu%:Ru%=1<<xu%:È−53,Ey%,11¸,,T_%:T_%+=1:È−53,Ey%,12¸,,P_%:P_%+=1:Rl%=T_%ŴTJ%K>Cl%=P_%ŴFJ%:x_%=(T_%<<au%)-1:d_%=(P_%<<zu%)-1:ou%=32ŴRu%:áLݤ_Wimp_version=50M/ݤ_hard_initialise_Wimpêv%:ç¤K<12…Ŷ1,"EIW1"NIÈ−&400f2,0¸v%:çv%=0…Ŷ1,"Application needs to be run from the desktop"O¦òM("<BasicV$Lib>.Heap",8):òM("<BasicV$Lib>.IntMath",5):òM("<BasicV$Lib>.Message",3):òM("<BasicV$Lib>.Template",7):òM("<BasicV$Lib>.NullReason",1):qy%=£:ty%=3*1024PflòN(E_%,ty%):ty%+=E_%:Hy%=E_%:òN(W%,512):k$="":e$="":SJ%=0:X$="Application":D$="0.00 (01-Jan-1900)":_%=-1:by%=2400:yy%=2401:Vl%=16*1024:L$="":Ou%=¹:hy%=0:=0Q:ݤd(y$)êj%,C%,W$,Q%,T%,vJ%:È−&600f2,2¸j%;C%:ç(C%€1)=0…RDÈ−53,-1,4¸,,Q%:È−53,-1,5¸,,T%:È−53,-1,10¸,,vJ%:çQ%<2€T%<2€vJ%=0…S W$="23"TÌW$=¤P(j%)UÍ:j%=‰(y$+W$):çj%…VÙ#j%:y$+=W$WÍX    Í:=y$YݤN(Yy%)=(Yy%€1)<>0ZÝòFy(U%,F%)çF%=-1…[È−&600d2,U%,-1,0,0,1<<25,-1\3ÌÈ−&600d2,U%,F%,,,-1,©(¤C(U%,F%)):È−&dcb8d,8,U%]Í:á^ÝòwyÈ−&400d2,-1,-1:á_ÝòG(U%)çU%>0…È−&dcb8d,J_,U%`áaÝòWy(U%)È−&dcb8d,N_,U%,-1:áb Ý¤Zy(U%)È−&dcb8d,Z_,U%,-1:=¹cZÝòH_(U%,Kl%)êM%:M%=¤A(128):!M%=U%:È−&400cb,,M%:M%!28=Kl%:È−&400e7,2,M%,U%:òZ(M%,128):ádnÝòcy(U%,F%,Zu%,Pl%,Nl%)êZ%:Z%=¤A(16):Z%!0=U%:Z%!4=F%:Z%!8=Pl%<<Zu%:Z%!12=Nl%<<Zu%:È−&400cd,,Z%:òZ(Z%,16):áe&ݤW(U%,F%)È−&dcb8c,my,U%,F%¸F%:=F%f)ÝòA(U%,F%,Gl%)È−&dcb8c,Q_,U%,F%,Gl%:ágfÝòMy(U%,F%,n$)êZ%,ql%,xl%,_l%,wl%,Ol%,Yl%:Z%=¤A(64):!Z%=U%:Z%!4=F%:È−&400ce,,Z%:ç((Z%!24)€259)<>2…h òB("Bad rename icon to "+n$)idÍ:È−&400c4,,Z%:$(Z%+28)=n$:Z%!4=U%:È−&400c2,,Z%+4:È−&400d1,U%,Z%!8,Z%!12,Z%!16,Z%!20:òZ(Z%,64):áj%Ýòyy(U%,E%)È−&dcb8c,Ky,U%,E%,+1:ák%Ýòzy(U%,E%)È−&dcb8c,Ky,U%,E%,-1:álJÝòD(Au%,Z$)êZ%:Z%=¤A(300):Z%!0=Au%:$(Z%+4)=Z$+½(0):òH(Z%):òZ(Z%,300):ámÝòB(Z$)Ŷby%,Z$:ánLÝòP(Au%)êZ%:Z%=¤A(300):Z%!0=yy%:òo("LE"+Ã(Au%),Z%+4):òH(Z%):òZ(Z%,300):áoÝòH(hu%)È−&400df,hu%,1,X$:ápgݤp(Yy%,Z$)êZ%,y%:òU:Z%=¤A(260):!Z%=0:$(Z%+4)=Z$+½(0):È−&400df,Z%,(16☓Yy%),¤H(0)¸,y%:òZ(Z%,260):=y%q−ÝòNyêZ%:Z%=¤A(256):Z%?0=1:Z%?1=0:Z%?2=0:Z%?3=0:Z%?4=0:Z%?5=x_%◰256:Z%?6=x_%Ŵ256:Z%?7=d_%◰256:Z%?8=d_%Ŵ256:È−7,21,Z%:!Z%=h_%:È−&400c6,,Z%:òZ(Z%,256):árFÝòG_(Q%,T%,I%,F%)òNy:Q%=¤S("FN_Stop_Action_"+l$+"("+Ã(F%=0)+")"):ás.ݤM(M$)È”§M$,"."):M$=ÁM$,§M$,".")+1):Î:=M$t'ÝòW(U%,F%,J$)È−&dcb8c,P_,U%,F%,J$:áu*ݤC(U%,E%)È−&dcb8c,zy,U%,E%¸U%:=¤P(U%)v'ݤFy(U%,E%)È−&dcb8c,zy,U%,E%¸U%:=U%w8ݤg(S$)êv%,s%,a%:È−&20008,17,S$¸v%,,,,s%;a%:ç¤N(a%)…x(òC("Reason",¤M(S$)):òb(v%):òB(¤H(4))yÍ:çv%<>1…z    s%=-1{    Í:=s%|ݤA(n%)êy%:ç(Hy%+n%)<ty%…}y%=Hy%:Hy%+=n%~ÌòB("Wimp Stack full")    Í:=y%€ÝòR_:Hy%=E_%:áŴ$ÝòZ(G_%,n%)ç(G_%<E_%)☓(G_%>ty%)…ŵ,òB("Release_Stack: Invalid stack chunk")◰Ìç(n%<0)☓((G_%+n%)>ty%)…☓+òB("Release_Stack: Invalid chunk size")ŶÌHy%-=n%:çHy%<>G_%…ŷ òB("Release_Stack: Bad pop")Í⇦Í⇨Í:á⇩>ÝòHy(q$,g%,cu%,VJ%,ru%,su%)òz_(q$,q$,g%,cu%,VJ%,ru%,su%):á⇧ãÝòz_(q$,m$,g%,cu%,VJ%,ru%,su%)D$=Ã(g%)+"."+Â"0"+Ã(cu%),2):D$+=" ("+Â"0"+Ã(VJ%),2)+"-":D$+=Á"CBJanFebMarAprMayJunJulAugSepOctNovDec",ru%*3,3):D$+="-"+Â"19"+Ã(su%),4)+")":X$=q$:òC("App",X$):òIy(S_%,X$+"$Dir"):çS_%=0…Ŷ1,"EIW5"… çL$<>""…™›VJ%=£:Z_%=W%:g%=§L$,","):È”g%<>0:Z_%!0=¤S(ÀL$,g%-1)):Z_%+=4:L$=ÁL$,g%+1):g%=§L$,","):Î:Z_%!0=¤S(L$):Z_%!4=0:È−&400c0,300,&4b534154,m$,W%¸W_%,_%‰%ÌÈ−&400c0,200,&4b534154,m$¸W_%,_%• Í:îŶò__‘È−&606c0:çW_%<200…’Ŷby%,¤H(5)‹*Í:qy%=¹:òvy:òky:qy%=-2:òUy:òmy:çF_%=0…›òW(f%,7,D$)“OÍ:Ku%=-1:Gu%=-1:uJ%=-1:Ql%=-1:Bl%=£:pu%=-1:Wl%=-1:i$="":`$="":òp:È−&606c1:á”Ýò__È−&606c1:çJ_%…„òD(yy%,ö$+" ["+Ãfi+"]")–ÌòD(yy%,ö$)— Í:òF:à:á−>ÝòIy(øN_%,z$)ên%,Vu%:È−&20023,z$,0,-1,0,1¸,,n%,,Vu%:çn%=0…Œ    N_%=0œÌçVu%=1…Ŷ1,"EIW4"†5n%=-n%:òN(N_%,n%):È−35,z$,N_%,n%,0,1:N_%?(n%-1)=0‡Í:áfi2ÝòC_êdu%,hJ%:hJ%=¹:õÈ−&400c7,cy%,W%¸du%:ȉdu%Êfl
  43542. É0:òY_ 
  43543. É1:òT_¡
  43544. É2:òry¢
  43545. É3:òsy£
  43546. É4:òey¤
  43547. É5:òD_¥
  43548. É6:òRy¦
  43549. É7:òA_§
  43550. É8:òs_¨
  43551. É9:òM_© É10:òF_ª É11:òP_« É12:òd_¬ É17:òZy­ É18:òI_® É19:òW_¯Ë:ý¬(hJ%):á°    Ýòeyá±    ÝòD_á²    ÝòF_á³    ÝòP_á´    Ýòd_áµ1ÝòA_êQ%:Q%=¤S("FN_Dragged_"+e$):çSJ%<>(1*16)…¶òU· Í:çhy%…¸ È−&42401¹ÌÈ−&400d0,,-1ºÍ:e$="":á»àÝòa(U%,F%,Il%,Q$)êM%,q%,t_%,g_%:êm%,p_%,dJ%:M%=¤A(64):q%=¤A(256):M%!0=U%:M%!4=F%:È−&400ce,,M%:q%!0=U%:È−&400cb,,q%:t_%=q%!20:g_%=q%!24:M%!0=U%:M%!4=5:M%!8+=q%!4-t_%:M%!12+=q%!16-g_%:M%!16+=q%!4-t_%:M%!20+=q%!16-g_%:çOu%…¼"È−6,161,28¸,,m%:hy%=((m%€2)=2)½
  43552. Ìhy%=£¾ Í:çhy%…¿ m%=M%!24:ç(m%€2)=0…Ŷ1,"EIW2"À çm%€256…Á(dJ%=M%!28:p_%=M%!32:çm%!36…Ŷ1,"EIW3"ÂÌdJ%=M%+28:p_%=1ÃÍ:È−&42400,133,p_%,dJ%,M%+8Ä5ÌM%!24=0:M%!28=0:M%!32=x_%:M%!36=d_%:È−&400d0,,M%Å*Í:òZ(q%,256):òZ(M%,64):e$=Q$:SJ%=Il%:áÆÝòI_òZy:áÇ ÝòZ_Õ#W%!20,"Run "+¤P(S_%):áÈ9Ýòxyêzl%:È−&20023,"Wimp$Scrap",0,-1,0,3¸,,fu%:çfu%=0…É    òP(8)ÊbÌ$(W%+44)="<Wimp$Scrap>"+½(0):W%!36=-1:W%!16=2:W%!12=W%!8:W%!0=60:È−&400e7,17,W%,W%!4:uJ%=W%!8ËÍ:áÌݤ_Misc_version=46Í5ݤ_hard_initialise_MiscêE%,Y%,R%:ç¤K<12…Ŷ1,"EIA1"ÎEy$="":Dl%=100:Þmy%16:=0Ï:ݤf(T$,Oy%,K_%)êM_%,NJ%,EJ%,PJ%,BJ%:r%=¤q(T$):çS%€2=0…Ð[OPTS%:DCD0:DCD0:]Ñ)ÌM_%=K_%-P%-8:ç“(M_%)>65535…Ŷ1,"EIA2"Ò,EJ%=“(M_%)€255:NJ%=“(M_%)€65280:çM_%>=0…ÓRPJ%=r%☓(&28f0000+(Oy%<<12)+EJ%):BJ%=r%☓(&2800c00+(Oy%<<16)+(Oy%<<12)+(NJ%>>8))ÔSÌPJ%=r%☓(&24f0000+(Oy%<<12)+EJ%):BJ%=r%☓(&2400c00+(Oy%<<16)+(Oy%<<12)+(NJ%>>8))ÕÍ:[OPTS%:DCDPJ%:DCDBJ%:]ÖÍ:=0×8ÝòLy(M$)êwu%,vu%,Yu%:wu%=P%:vu%=O%:Yu%=S%:ç(S%€4)=0…Ø    O%=P%ÙQÍ:P%=0:S%=S%☓6:P%=¤S("FN_Declare_Local_Variables_"+M$):P%=wu%:O%=vu%:S%=Yu%:áÚÝòS_(T$,R%)êM%,r%:çT$<>""…Û@r%=¤q(T$):M%=¤a(P%):ãE%=1¸R%:M%-=4:!M%=(!M%€&fffffff)+r%:íE%ÜÍ:áÝݤq(T$)êr%:ȉT$ÊÞÉ"","  ":r%=14ßÉ"lo":r%=3àÉ"hs":r%=2áDr%=§"eqnecsccmiplvsvchilsgeltgtlealnv",T$):ç(r%◰2)=0…Ŷ1,"EIA13"âr%=(r%-1)>>1ãË:=r%<<28äXݤWy(Q%,øA%())È−&dcb92,Q%,my%¸Q%:A%(0)=!my%:A%(1)=my%!4:A%(2)=my%!8:A%(3)=my%!12:=Q%åJݤu(T$,Y%,R%,Q%,Al%)êA%(),E%,N%:ÞA%(4):E%=¤Wy(“(Q%),A%()):N%=E%:çQ%<0…æMÈ”E%>1:E%-=1:[OPTS%:ADD Y%,R%,#A%(E%):]:R%=Y%:Î:[OPTS%:ADD Y%,R%,#A%(0):]çNÌÈ”E%>1:E%-=1:[OPTS%:SUB Y%,R%,#A%(E%):]:R%=Y%:Î:[OPTS%:SUB Y%,R%,#A%(0):]è Í:çAl%…éçS%€4…Y%=O%⇧Y%=P%êY%!-4+=1<<20ëÍ:òS_(T$,N%):=0ì/ݤk(T$,Oy%,K_%)K_%-=P%+8:çK_%>=0…Ŷ1,"EIA14"í=¤u(T$,Oy%,15,-K_%,£)îݤa(j%)ç(S%€4)…j%+=u%ï=j%ðÝòJêPy%:çS%€2…Py%=50⇧Py%=0ñ+È−&606c4,((¤a(P%)-u%)/(L%-u%)*50)+Py%:áòݤ_Heap_version=9óݤ_hard_initialise_Heap=0ô&ݤl(øgy%,A%)gy%=º(Uu%):ç!Uy%…gy%=0õ    =!Uy%öÝòN(øgy%,n%)ç¤l(gy%,n%)…÷gy%=!Uy%:Ŷ!gy%,¤L(gy%+4)øÍ:áùÝòT(øA%)ç¤j(A%)…úA%=!Uy%:Ŷ!A%,¤L(A%+4)ûÍ:áüݤj(øA%)ÖkJ%:A%=0:=!Uy%ýBÝòU_[OPTS%:¤V(Uu%,uy):¤V(kJ%,S_):¤V(`u%,C_):ALIGN:.Uy%DCD0:]:áþmݤV(øTl%,Sl%)[OPTS%:ALIGN:.Tl%:¤X:STMFD(A)!,{E}:MOV E,#0:STR E,Uy%:BL Sl%:STRvs0,Uy%:LDMFD(A)!,{pc}^:]:=0ÿݤ_Message_version=6oݤ_hard_initialise_Message:ui=31:È−5,"RMEnsure CAssembler 0.08 RMLoad System:Modules.CAssembler":Þly 256:=0Hݤ`(o$,yu%,øz_%)êA%:È−&fcb83,o$+".Messages.",yu%,0¸A%,z_%:çz_%=0…ÖRy=A%<ݤPy(G%,x$,y_%)È−&fcb85,x$,y_%,G%¸y_%;G%:=y_%€((G%€2)=2);ݤo(G%,x$,g$)êg%:È−&fcb85,x$,g$,G%¸g%;G%:=g%€((G%€2)=2)0ݤCy(G%)êg%:È−&fcb86,G%¸g%;G%:=g%€((G%€2)=2);ݤR(G%,x$)êg%:È−&fcb84,x$,ly,256,G%,0¸g%,G%:?G%=13:=$ly&Ýòfy(G%,x$,bu%)G%=¤Py(G%,x$,bu%):á#ÝòXy(G%,x$,g$)G%=¤o(G%,x$,g$):á    Ýòdy(G%)G%=¤Cy(G%):á
  43553. ݤw(R%)=¤R(p%,"E"+Ã(R%)) ݤG(c$)=¤R(p%,c$) Ýòl(c$,R%)òfy(p%,c$,R%):áÝòC(c$,U$)òXy(p%,c$,U$):á'Ýòo(c$,B%)È−&dcb84,c$,B%,256,p%,0:áÝòK_òdy(p%):áÝòb(I%)çI%<=0…òC("Sys",""):òC("SysN","")*ÌòC("Sys",¤P(I%+4)):òC("SysN",Ã~(!I%))Í:áݤH(R%)=¤R(p%,"LE"+Ã(R%))/ÝòN_[OPTS%:ALIGN:.Ry:¤X:B B_:]:çS%€4…Ry+=u%áݤ_NullReason_version=5#ݤ_hard_initialise_NullReason=0+ÝòmyÞI_%4:!I_%=0:xy%=0:L_%=£:cy%=6193:á ÝòKy(M%)êR%:çM%=0…òB("EIN6")R%=!M%:çR%=0…òB("EIN5") çR%=xy%…xy%=!R%:L_%=¹Í:!M%=!R%:òT(R%):òay:áÝòayç!I_%… cy%=cy%€(¬1)!Ìcy%=cy%☓1"Í:á#6ÝòY_êi%,M%,RJ%,A%:i%=!I_%:È”i%:xy%=i%:L_%=£:çi%!4…$6RJ%=¤S("FN_Null_Reason_"+$(i%+12)+"("+Ã(i%!8)+")")%'ÌRJ%=¤S("FN_Null_Reason_"+$(i%+12))& Í:çL_%…'
  43554. i%=xy%(Ìxy%=0:A%=!i%:çRJ%…),M%=I_%:È”!M%<>i%:M%=!M%:çM%=0…òB("EIN2")*Î:òKy(M%)+ Í:i%=A%,    Í:Î:á    8:    9:    ::    ;:    <:ÿWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickDefaultEÿÿÿ„«vy3DefaultEÿÿÿ„«vy3wMessagesMessagesNickY# Message file for BasCompress Front End
  43555. #
  43556. # For use with Cy Booker's CAssembler_Message SWI's
  43557.  
  43558. App:    %20
  43559. Sys:    %256
  43560. SysN:    %10
  43561. Reason:    %256
  43562.  
  43563. HMI0:    %RI get information abouth this version of BasCompress.
  43564. HMI1:    %RI set various options that affect the input file.
  43565. HMI2:    %RI set various options that affect the output file.
  43566. HMI3:    %RI set various options affecting the log file.
  43567. HMI4:    %RI set various options that affect the special file (if it exists).
  43568. HMI5:    %RI set various options that affect the cross-referencing.
  43569. HMI6:    %SE define miscellaneous choices.
  43570. HMI7:    %SE quit BasCompress.
  43571.  
  43572. HMI2_3_6:    When ticked, no compressed variable will start with an `E'.
  43573. HMI2_5:    %SE toggle a full-screen two-column listing of the output file as it is generated.|M%RI set the screen mode to use
  43574. HMI3_1:    %SE toggle the appearance of performance statistics in the log file.
  43575. HMI3_6:    %SE toggle the inclusion of the source code in the log file
  43576. HMI4_2:    Type in a full pathname.|MOr drag the special file to the main BasCompress window.
  43577. HMI5_4:    %SE toggle the inclusion of all variables only used inside deleted routines.
  43578.  
  43579. HIconBar:    This is the %App icon|MClick to show the control window|MDrag a Basic file here to compress it
  43580.  
  43581. HProgInfo:    Yep, this application provides help messages
  43582.  
  43583. HChoices:    This dialogue box sets global choices.
  43584. HChoices11:    %SE accept above choices.|MThe choices will NOT be saved permanently, use Save or Save full to do this.
  43585. HChoices10:    %SE ignore any changes made to the above choices.
  43586. HChoices9:    %SE save the current choices.  The full pathnames of the log, xref and output files will be saved.
  43587. HChoices8:    %SE save the current choices.  Only the leaf name of the log, xref and output files will be saved.
  43588. HChoices7:    %SE restore factory default values to all settings.
  43589. HChoices5:    This option only takes effect when next run BasCompress.  It is of use to Risc PC users and/or low-resolution monitors.
  43590. HChoices4:    Use with caution.  Mainly used when have two directories of the same files, one compressed and the other uncompressed.  Better to use a Make file, though!
  43591. HChoices3:    %SE toggle the use of the system variable "Main" instead of the full pathname.  When enabled it makes the log file easier to read.
  43592.  
  43593. HControl:    This is the main control dialogue box for %App
  43594. HControl_:    Drag a basic file in here to compress it|MDrag a text file here to define the special file
  43595. HControl0:    Drag this to define the output file|MThis will be a tokenised basic file
  43596. HControl1:    Type in the output file
  43597. HControl3:    Drag this to define the log file|MThis will show any error messages and any statistics
  43598. HControl4:    Type in the output file
  43599. HControl6:    Drag this to define the cross-reference file|MThis will contain the cross-reference listing
  43600. HControl7:    Type in the cross-reference file
  43601. HControl10:    Type in the name of the special file to load in|MThis is actually a comma separated list of file names
  43602.  
  43603. HOrder:        This dialogue box allows you to change the sorting order used
  43604. HOrder_:    First sort by left column, then sort "same" groups by second column...
  43605. HOrderA:    Sort by name (using ASCII)
  43606. HOrderB:    Sort by usage|MFor routines this is number of times called|MFor variables it is number of times used and assigned
  43607. HOrderC:    Sort by type|MRoutines in order Procedure, Function|MVariables in order int, real, str, int arr, real arr, str arr
  43608. HOrderD:    Sort by location (only has meaning for references)|MNominally the line number, but file used as well
  43609. HOrderE:    Sort by name (but order as in a dictionary)
  43610. HOrderR:    Reverse the order of sorting|MWhen selected, high values come first
  43611.  
  43612. SaveAsType:    %? Log, XRef, Output
  43613. HSaveAs:    This is the standard save dialogue box|MIn this program it is used to define the name of the %SaveAsType file
  43614.  
  43615. LE0:    Message from %App
  43616. LE1:    A system error has occured: (%SysN): %Reason: %Sys
  43617. LE2:    To save, drag the file icon to a directory display.
  43618. LE3:    Couldn't find `%Reason' window in Templates
  43619. LE4:    Couldn't load in %Reason file: (%SysN): %Sys
  43620. LE5:    %App requires a more recent version of the Window Manager
  43621. LE6:    %App has suffered an improbable error while loading this file
  43622. LE7:    %App has run out of memory trying to load this file
  43623. LE8:    Can't transfer file (use *Set Wimp$Scrap <filename>)
  43624. LE9:    Unexpected RAM_Fetch message received
  43625. LE10:    Unexpected DataSaveAck message received
  43626. LE11:    Data transfer failed: Receiver died
  43627. LE12:    `%Reason' is not a recognized file type.  Are you sure you want to load it?
  43628. LE13:    1 file edited but not saved in %App: are you sure you want to Quit?
  43629. LE14:    %Reason files edited but not saved in %App: are you sure you want to Quit?
  43630. LE15:    Data transfer failed: Sender died
  43631. LE16:    %App has run out of memory
  43632.  
  43633.  
  43634. M0:    BasCompress
  43635. M1:    Info
  43636. M2:    Input
  43637. M3:    Output
  43638. M4:    Log
  43639. M5:    Special
  43640. M6:    Xref
  43641. M7:    Choices…
  43642. M8:    Quit
  43643.  
  43644. M100:    Input
  43645. M101:    Allow multiply-defined routines
  43646. M102:    Report multiple exits from a routine
  43647. M103:    Parse numbers
  43648. M104:    Convert SWI's to numbers
  43649. M105:    Force malformed SWI's to generate error
  43650. M106:    Report unknown SWI's
  43651. M107:    Process as a library file
  43652.  
  43653. M200:    Output
  43654. M201:    Save as
  43655. M202:    Concatenate lines
  43656. M203:    Remove unused routines
  43657. M204:    Reduce variable names
  43658. M205:    Reduce routine names
  43659. M206:    List
  43660.  
  43661. M250:    Screen mode
  43662.  
  43663. M300:    Var. types
  43664. M301:    Integer
  43665. M302:    Real
  43666. M303:    String
  43667. M304:    Integer array
  43668. M305:    Real array
  43669. M306:    String array
  43670. M307:    `E' suppression
  43671.  
  43672. M400:    Rtn. types
  43673. M401:    Procedure
  43674. M402:    Function
  43675.  
  43676. M500:    Log
  43677. M501:    Save as
  43678. M502:    Statistics
  43679. M503:    EVAL keyword
  43680. M504:    DATA keyword
  43681. M505:    READ keyword
  43682. M506:    Line numbers
  43683. M507:    List input
  43684.  
  43685. M600:    Special
  43686. M601:    Warn undefined
  43687. M602:    Show expansion
  43688.  
  43689. M700:    XRef
  43690. M701:    Save as
  43691. M702:    Variables
  43692. M703:    Routines
  43693. M704:    Reference order
  43694. M705:    Include deleted
  43695.  
  43696. M800:    Variables
  43697. M801:    Verbosity
  43698. M802:    Types
  43699. M803:    Ordering
  43700.  
  43701. M900:    Level
  43702. M901:    None
  43703. M902:    Existence
  43704. M903:    Global
  43705. M904:    Routine
  43706. M905:    Line
  43707.  
  43708. M1000:    Routines
  43709. M1001:    Verbosity
  43710. M1002:    Types
  43711. M1003:    Ordering
  43712.  
  43713. E0:    This application displays helpful messages if Help, on the applications disc, is active
  43714. E1:    BasCompress only understands Basic files
  43715.  
  43716. IconBar:    %? BasCompress, Busy, Quiet
  43717.  
  43718. RI:        Move the pointer right to
  43719. SE:        Click SELECT to
  43720.  
  43721. WinChoices:    BasCompress choices
  43722. WinControl:    BasCompress control
  43723.  
  43724. # Change to alter appearance of menus
  43725. # use "MenuFont:" to disable font menus
  43726. #
  43727. MenuFont:Homerton.Medium
  43728. MenuFontWidth:14.0
  43729. MenuFontHeight:14.0
  43730. # if MenuFontLowRez == "NO" then use anti-aliased fonts in menus only when in
  43731. # a high-resolution screen mode (>= 90dpi)
  43732. #
  43733. MenuFontLowRez:NO
  43734. erWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ¤™Choices4ŵControl¸
  43735. ¢Order\iProgInfoȼQuery☓‹SaveAs¼Ð|ÿÿÿÿ  TþÿÿH=|⇩Øÿÿÿÿ
  43736. Èÿÿÿ*øÿÿÿÓ±ì'
  43737. “ÿÿÿ*ÄÿÿÿÓ±%C
  43738. `ÿÿÿ*‘ÿÿÿÓ±U*
  43739. ,ÿÿÿ*\ÿÿÿÓ±’´#
  43740. øþÿÿ*(ÿÿÿÓ±Æõ/
  43741. Äþÿÿ*ôþÿÿÓ±,%°þÿÿH¸þÿÿ`dividerhþÿÿ¨†þÿÿ}1>F®hþÿÿN†þÿÿ}1OTThþÿÿô†þÿÿ}1]g
  43742. úhþÿÿŒ†þÿÿ}1pw `þÿÿ@¤þÿÿ}1€☓BasCompress choices Run BasCompressed file when generatedSoptoff,opton;f17 Load log file when generatedSoptoff,opton;f17 Load cross-reference file when generatedSoptoff,opton;f17 Name output as <Main> in log fileSoptoff,opton;f17 Output file leaf name same as input leaf nameSoptoff,opton;f17 Use outline fonts in dialogue boxesSoptoff,opton;f17Defaultr5,3;f17Saver5,3;f17Save fullr5,3;f17Cancelr5,3;f17Setr6,3;f17ÿÿÿlLþ(ÿÿÿÿ $ÿÿÿ‹=|⇩øÿÿÿÿ<¦ÿÿÿ€êÿÿÿ`file_ffbPÿÿÿ´“ÿÿÿuó$$ÿÿÿ‘TÿÿÿY%.¦ÿÿÿrêÿÿÿ`file_fffúPÿÿÿ¦“ÿÿÿuó))"$ÿÿÿrTÿÿÿY7; ¦ÿÿÿdêÿÿÿ`file_fffìPÿÿÿ—“ÿÿÿuó??$ÿÿÿnTÿÿÿYMRêÄÿÿÿ☓øÿÿÿI3V[ÞPÿÿÿ⇩“ÿÿÿuó__ê$ÿÿÿzTÿÿÿYmuê“ÿÿÿ☓ÈÿÿÿI3y~Control for BasCompressA~ <;r7,0;f07Outputf17A~ <;r7,0;f07Logf17A~ <;r7,0;f07Xreff17Dragf17A~ <;r7,0;f07Specialf17Heref17ÿÿ⇩|X8ÿÿÿÿ☓ DþÿÿÎ=|⇩OrderÜPþÿÿÐôÿÿÿp¸ÅðPþÿÿäôÿÿÿpÊ× PþÿÿÂôÿÿÿpÜé$¬ÿÿÿîÜÿÿÿÓ±îô¬ÿÿÿÚÜÿÿÿÓ±    
  43743. ü¬ÿÿÿÆÜÿÿÿÓ±
  43744. &,è¬ÿÿÿ²ÜÿÿÿÓ± BH$lÿÿÿî†ÿÿÿÓ±^dlÿÿÿÚ†ÿÿÿÓ±    z€ülÿÿÿƆÿÿÿÓ±
  43745. „†èlÿÿÿ²†ÿÿÿÓ± ²¸$,ÿÿÿî\ÿÿÿÓ±ÎÕ,ÿÿÿÚ\ÿÿÿÓ±    ëòü(ÿÿÿÆXÿÿÿÓ±
  43746. è,ÿÿÿ²\ÿÿÿÓ± %,$ìþÿÿîÿÿÿÓ±BL
  43747. ìþÿÿÚÿÿÿÓ±    bl
  43748. üìþÿÿÆÿÿÿÓ±
  43749. ŵ…
  43750. èìþÿÿ²ÿÿÿÓ± ¢¬
  43751. $¬þÿÿîÜþÿÿÓ±ÂɬþÿÿÚÜþÿÿÓ±    ßæü¬þÿÿÆÜþÿÿÓ±
  43752. üè¬þÿÿ²ÜþÿÿÓ±  $lþÿÿî†þÿÿÓ±6?    lþÿÿÚ†þÿÿÓ±QZ    ülþÿÿƆþÿÿÓ±lu    èlþÿÿ²†þÿÿÓ±‘    r3,1r3,1r3,1 NameSradiooff,radioon;f17 NameSradiooff,radioon;f17 NameSradiooff,radioon;f17 NameSradiooff,radioon;f17 TypeSradiooff,radioon;f17 TypeSradiooff,radioon;f17 TypeSradiooff,radioon;f17 TypeSradiooff,radioon;f17 UsageSradiooff,radioon;f17 UsageSradiooff,radioon;f17 UsageSradiooff,radioon;f17 UsageSradiooff,radioon;f17 LocationSradiooff,radioon;f17 LocationSradiooff,radioon;f17 LocationSradiooff,radioon;f17 LocationSradiooff,radioon;f17 Dict.Sradiooff,radioon;f17 Dict.Sradiooff,radioon;f17 Dict.Sradiooff,radioon;f17 Dict.Sradiooff,radioon;f17 ReverseSoptoff,opton;f17 ReverseSoptoff,opton;f17 ReverseSoptoff,opton;f17 ReverseSoptoff,opton;f17 p¾XL|ÿÿÿÿ☓ Üþÿÿ‰=`|⇩xÿÿÿÿ¢Äÿÿÿŷøÿÿÿ]a⇧– ¢…ÿÿÿŷÀÿÿÿ]a ¾¢Tÿÿÿŷ⇦ÿÿÿ]aÇÞ  ÿÿÿ—LÿÿÿQcçð     ‘ÿÿÿ—¼ÿÿÿQcôý     Èÿÿÿ—ôÿÿÿQc Xÿÿÿ—☓ÿÿÿQc ¢ÿÿÿŷPÿÿÿ]a7 TÌýÿÿÚüýÿÿ1‰SwanleyT—ýÿÿ@Èýÿÿ1‰Kent.  BR8 8T—þÿÿðÈþÿÿ1‰Cy BookerThþÿÿ@—þÿÿ1‰86 Church ViT4þÿÿðdþÿÿ1‰Main RoadTþÿÿ0þÿÿ1‰Crockenhill®ÈÿÿÿÔôÿÿÿ`sm!helpXÈÿÿÿ~ôÿÿÿ`sm!help¢äþÿÿŷÿÿÿ]a@` About this programBasCompressr2,0;f17XRef and compress Basic filesr2,0;f17© Cy Booker, 1992-1994r2,0;f17Version:f17Purpose:f17Name:f17Author:f17<fill in later>r2,0;f17FRANK ZAPPA FRANKr2,0;f17***Ò¶,ÿÿÿÿ☓ ìþÿÿä=0|⇩BasCompress²öþÿÿú&ÿÿÿ=‘ÇYES0ÿÿÿÞüÿÿÿ¸¸âöþÿÿ*&ÿÿÿ=‘ÇNOno fonts!!!l40—,ÀÔÿÿÿÿ› Xÿÿÿ(=|⇩Save as:    È`ÿÿÿ"¤ÿÿÿ}1x{B°ÿÿÿŷôÿÿÿ`file_fff`ÿÿÿ¤ÿÿÿuó☓☓ôþÿÿÊ$ÿÿÿ1‰Cy BookerÄþÿÿôþÿÿ1‰86 Church Vi“þÿÿÊÄþÿÿ1‰Main RoaddþÿÿÖ“þÿÿ1‰Crockenhill4þÿÿÊdþÿÿ1‰Swanleyþÿÿ4þÿÿ1‰Kent.  BR8 8OKr6,3;f17A~< ;r7,0;f07)
  43753. ÐÐHomerton.MediumÐÐHomerton.Boldrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ÿÿÿÿ¤aChoicesZControld
  43754. BOrder¨EProgInfoð¼Query¬⇩SaveAs¼Ð|ÿÿÿÿ  TþÿÿH=⇦⇧Øÿÿÿÿ
  43755. Èÿÿÿ*øÿÿÿ›±ì'
  43756. “ÿÿÿ*Äÿÿÿ›±!?
  43757. `ÿÿÿ*‘ÿÿÿ›±Mw*
  43758. ,ÿÿÿ*\ÿÿÿ›±Ŷ¨#
  43759. øþÿÿ*(ÿÿÿ›±¶å/
  43760. Äþÿÿ*ôþÿÿ›±ó%°þÿÿH¸þÿÿ`dividerhþÿÿ¨†þÿÿ=1&.®hþÿÿN†þÿÿ=138Thþÿÿô†þÿÿ=1=G
  43761. úhþÿÿŒ†þÿÿ=1LS `þÿÿ@¤þÿÿ=1X\BasCompress choices Run BasCompressed file when generatedSoptoff,opton Load log file when generatedSoptoff,opton Load cross-reference file when generatedSoptoff,opton Name output as <Main> in log fileSoptoff,opton Output file leaf name same as input leaf nameSoptoff,opton Use outline fonts in dialogue boxesSoptoff,optonDefaultr5,3Saver5,3Save fullr5,3Cancelr5,3Setr6,3  ãlLþ(ÿÿÿÿ $ÿÿÿ‹=⇦⇧øÿÿÿÿ<¦ÿÿÿ€êÿÿÿ`file_ffbPÿÿÿ´“ÿÿÿ5ó$$ÿÿÿ‘Tÿÿÿÿÿÿÿ.¦ÿÿÿrêÿÿÿ`file_fffúPÿÿÿ¦“ÿÿÿ5ó!!"$ÿÿÿrTÿÿÿ+ÿÿÿÿ ¦ÿÿÿdêÿÿÿ`file_fffìPÿÿÿ—“ÿÿÿ5ó//$ÿÿÿnTÿÿÿ9ÿÿÿÿêÄÿÿÿ☓øÿÿÿ    3>ÿÿÿÿÞPÿÿÿ⇩“ÿÿÿ5óCCê$ÿÿÿzTÿÿÿMÿÿÿÿê“ÿÿÿ☓Èÿÿÿ    3UÿÿÿÿControl for BasCompressA~ <;r7,0OutputA~ <;r7,0LogA~ <;r7,0XrefDragA~ <;r7,0SpecialHere á⇩|X8ÿÿÿÿ☓ DþÿÿÎ=⇦⇧OrderÜPþÿÿÐôÿÿÿp¸ÅðPþÿÿäôÿÿÿpÊ× PþÿÿÂôÿÿÿpÜé$¬ÿÿÿîÜÿÿÿ›±îô¬ÿÿÿÚÜÿÿÿ›±     ü¬ÿÿÿÆÜÿÿÿ›±
  43762. $è¬ÿÿÿ²Üÿÿÿ›± 6<$lÿÿÿî†ÿÿÿ›±NTlÿÿÿÚ†ÿÿÿ›±    flülÿÿÿƆÿÿÿ›±
  43763. ~☓èlÿÿÿ²†ÿÿÿ›± „†$,ÿÿÿî\ÿÿÿ›±®µ,ÿÿÿÚ\ÿÿÿ›±    ÇÎü(ÿÿÿÆXÿÿÿ›±
  43764. àçè,ÿÿÿ²\ÿÿÿ›± ù$ìþÿÿîÿÿÿ›±
  43765. ìþÿÿÚÿÿÿ›±    .8
  43766. üìþÿÿÆÿÿÿ›±
  43767. JT
  43768. èìþÿÿ²ÿÿÿ›± fp
  43769. $¬þÿÿîÜþÿÿ›±ŵ⇨¬þÿÿÚÜþÿÿ›±    œ¢ü¬þÿÿÆÜþÿÿ›±
  43770. ´»è¬þÿÿ²Üþÿÿ›± ÍÔ$lþÿÿî†þÿÿ›±æï    lþÿÿÚ†þÿÿ›±ý    ülþÿÿƆþÿÿ›±    èlþÿÿ²†þÿÿ›±+4    r3,1r3,1r3,1 NameSradiooff,radioon NameSradiooff,radioon NameSradiooff,radioon NameSradiooff,radioon TypeSradiooff,radioon TypeSradiooff,radioon TypeSradiooff,radioon TypeSradiooff,radioon UsageSradiooff,radioon UsageSradiooff,radioon UsageSradiooff,radioon UsageSradiooff,radioon LocationSradiooff,radioon LocationSradiooff,radioon LocationSradiooff,radioon LocationSradiooff,radioon Dict.Sradiooff,radioon Dict.Sradiooff,radioon Dict.Sradiooff,radioon Dict.Sradiooff,radioon ReverseSoptoff,opton ReverseSoptoff,opton ReverseSoptoff,opton ReverseSoptoff,optonPã¾XL|ÿÿÿÿ☓ Üþÿÿ‰=`⇦⇧xÿÿÿÿ¢Äÿÿÿŷøÿÿÿa⇧– ¢…ÿÿÿŷÀÿÿÿa†º¢Tÿÿÿŷ⇦ÿÿÿa¿Ö  ÿÿÿ—LÿÿÿcÛÿÿÿÿ     ‘ÿÿÿ—¼ÿÿÿcäÿÿÿÿ     Èÿÿÿ—ôÿÿÿcíÿÿÿÿ Xÿÿÿ—☓ÿÿÿcóÿÿÿÿ¢ÿÿÿŷPÿÿÿaû TÌýÿÿÚüýÿÿ1‰SwanleyT—ýÿÿ@Èýÿÿ1‰Kent.  BR8 8T—þÿÿðÈþÿÿ1‰Cy BookerThþÿÿ@—þÿÿ1‰86 Church ViT4þÿÿðdþÿÿ1‰Main RoadTþÿÿ0þÿÿ1‰Crockenhill®ÈÿÿÿÔôÿÿÿ`sm!helpXÈÿÿÿ~ôÿÿÿ`sm!help¢äþÿÿŷÿÿÿa @ About this programBasCompressr2,0XRef and compress Basic filesr2,0© Cy Booker, 1992-1994r2,0Version:Purpose:Name:Author:<fill in later>r2,0FRANK ZAPPA FRANKr2,0☓»Ò¶,ÿÿÿÿ☓ ìþÿÿä=0⇦⇧BasCompress²öþÿÿú&ÿÿÿ=‘ÇYES0ÿÿÿÞüÿÿÿ¸¸âöþÿÿ*&ÿÿÿ=‘ÇNOno fonts!!!l40—,ÀÔÿÿÿÿ› Xÿÿÿ(=⇦⇧Save as:    È`ÿÿÿ"¤ÿÿÿ=1x{B°ÿÿÿŷôÿÿÿ`file_fff`ÿÿÿ¤ÿÿÿ5ó€€ôþÿÿÊ$ÿÿÿ1‰Cy BookerÄþÿÿôþÿÿ1‰86 Church Vi“þÿÿÊÄþÿÿ1‰Main RoaddþÿÿÖ“þÿÿ1‰Crockenhill4þÿÿÊdþÿÿ1‰Swanleyþÿÿ4þÿÿ1‰Kent.  BR8 8OKr6,3A~< ;r7,0‡írks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     @•âP ã€Ë鸞•r
  43771. ,ŵr|z+ï4qÐqdup(,Copyright © Cy Booker, 1992In/A,Out,Special,Log,XRefFile,XRef/E,Sort,SVar,SRtn,SRef,XVar/E,XRtn/E,Help/S,Stats/S,Goto/S,EVAL/S,MultiDEF/S,List/S,Unused/S,WEndRtn/S,ListOut/E,Single/S,ShortenVar/S,ShortenRtn/S,Deleted/S,UnusedS/S,Reduce,Number/S,SWI/S,Star/S,XInc,SWIExist/S,SWIBad/S,DATA/S,READ/S,ReduceVar,ReduceRtn,XIncVar,XIncRtn,WSpLabel/S,Library/S,EVariable/SBasCompress compresses, xref's and partially analyses tokenised basic files
  43772. Syntax: BasCompress [-In] <file> [Options]
  43773. Options:
  43774. DATA            log lines containing DATA (ON)
  43775. Deleted         xref includes deleted vars/rtns (OFF)
  43776. EVAL            log lines containing EVAL (ON)
  43777. EVariable       don't rename var to one starting with `E' (OFF)
  43778. Goto            log lines containing line numbers (ON)
  43779. Help            show this text (OFF)
  43780. Library         ignore undefined routines & main program (OFF)
  43781. List            echo input to log (OFF)
  43782. ListOut <mode>  echo output in screen mode <mode> (OFF)
  43783. MultiDEF        allow multiple definitions of the same routine (OFF)
  43784. Number          analyse numbers (needs FPEmulator) (ON)
  43785. Out <file>      output file
  43786. READ            log lines containing READ (ON)
  43787. Reduce <type>   reduce these types of labels (irsIRSpf)
  43788. Single          no concatenation of output lines (OFF)
  43789. Sort <sort>     order of all Var/Rtn/Ref sorting
  43790. Special <files> use comma list of <file> to resolve implicit usages
  43791. SRef <sort>     order of cross-references (NTP)
  43792. SRtn <sort>     order of routines (TN)
  43793. Stats           log program statistics (ON)
  43794. SVar <sort>     order of variables (TN)
  43795. SWI             convert SWI strings to numbers (ON)
  43796. SWIBad          fault malformed SWI names (OFF)
  43797. SWIExist        report unknown SWI strings (ON)
  43798. Unused          delete unused routines and variables (ON)
  43799. UnusedS         remove unused special routines (ON)
  43800. XInc <type>     xref these types of labels (irsIRSpf)
  43801. XRef <n>        level of xref detail for both routines and variables
  43802. XRtn <n>        level of xref detail for routines (0)
  43803. XVar <n>        level of xref detail for variables (0)
  43804. WEndRtn         allow conditional exit from routines (ON)
  43805. WSpLabel        show special labels found (OFF)
  43806.  
  43807. <sort> is a string of these letters:
  43808.     N sort by name
  43809.     T sort by type
  43810.     D sort by name (in dictionary sense)
  43811.     P sort by position in source
  43812.     U sort by usage
  43813.   e.g. to sort by usage, name, then type = "UNT"
  43814.   lower case letters order top to bottom
  43815. <type> is a string of these letters:
  43816.     p procedure
  43817.     f function
  43818.     r real variable
  43819.     i integer variable
  43820.     s string variable
  43821.   (capitalise for arrays of)
  43822. <n> evaluates to a number from 0 (no output) to 4 (very detailed)
  43823. SysError
  43824. An error occured (&%x): %s
  43825. 8ÀðC-éÜMâ¸À•âjÌ…â⇦ëjïÐä1ã 1ûÿÿ@âflOâ
  43826. @â ™â< ãIïj0‡åPãEë  q⇧{|…ux…uw{j‡å¼…åùëPã_ s z‘å7éAâ/í^â 
  43827.  €âÐâ†å^ãÜO⇨ËíOŴ ãÜ™âð◰ýè Oây@â⇨ËïêÿÿêBasCompress$OptionsBasCompress$XRefBasCompress$LogBasCompress$OutBasCompress$SpecialÄËInvalid option in system variable BasCompress$OptionsðC-éÜMâ⇦Qå⇦aå{Oâ á, ãMë:j: á®…â^ë5jÄOâ á, ãCë0j: á …âTë+jÛOâ á, ã9ë&j: á±…âJë!jãOâ á, ã/ëj: á­…â@ëjOâ á, ã%ëj: áxë ™à ŵâ Âã Oâ·@â á<™â0CàIïNOb q q{jP á` á q qÜ™âð◰½èðC-é@ áP á€ á—åPã®…ð◰½h—åPã­…ð◰½h —åPã±…ð◰½h—åPã … ð◰½h—åPãÄ@Äà@Ä$ ‘A$,—åPã½ @Ä‘A$(—åPã·  à@Ä‘A$h—åPãÅð◰½hÿD☓LÄ…—åPãÁð◰½h?D☓LÄ‘—åPã½ð◰½hA☓OÄx—åPã³ð◰½hÿK☓EÄ“—åPã¯ð◰½h?K☓EÄ——åPã«ð◰½hH☓HÄ`—å0ãL$<—å0ãF$8—å0ãF$D—å0ã@$@—å0ãE$T—å0ãG$4—å0ãG$d—å0ãE$L—å0ãL$l—å0ãP%t—å0ãP%p—å0ãP%€—å0ã P%|—å0ãP%H—å0ãP%☓—å0ã@P%⇦—å0ã€P%†—å0ã[% —å0ãZ%¤—å0ãZ%P—å0ã@$€gð…—åPã
  43828. 7…â\Ŷã.ë—uê…r[Ŷs*{—u>…r\Ŷs&{ð◰½h —åPã7…\Ŷ ð◰½h$—åPã>…\Ŷð◰½h—åPãê…[Ŷ q qð◰½èÃËInvalid sort character `%c'ÃËSort string too longNDTPUndtpup@-é,@ŴâP á` ãÕäQã
  43829.  Äp€½8Oâ…ëPã€OUZ p@½òfiXOâ@àÄç`ŷâ
  43830. Vãìÿÿº…Oâ_ãp€½è@-é€âëPã ³Pã Ã€ýèÃËInvalid type character `%c'irsIRSpfirsIRSOâêOâê"Oâÿÿÿêp@-é@ áP ã` áÔäQã p€ý áYë0ã@ P%ôÿÿ…OâTå#ëp@½èòfiã@-é àã0 ã@ ã#ïRã½è@½òÞ0 ã@ ã#hà ãàÁçTã@½èâÎãòÞRãòÞòfiã0@-é@ áP á<ë€â”ä    ëŶt q1{0€½è(8¨kkkkkkkkkkkkkkkkkkkkkkkkkk**kkkkkkkkkkkkkkkkkkkkkkkkkk€€€€€€€EAZMSFCJPWBGNQUXDLHVITRKYO_qazwsxedcrfvtgbyhnujmikolp`y_Julian`BOokerZAPpRQUIDWEXFbYGdVvfHgwThxKjzSmNqMsLt1704692358cCy_Julian`BOokerZAPpRQUIDWEXFbYGdVvfHgwThxKjzSmNqMsLt1704692358cCy_Julian`BOokerZAPpRQUIDWEXFbYGdVvfHgwThxKjzSmNqMsLt<BasCompress$Dir>.Messages.
  43831. 
  43832. 
  43833. CommaSemiColonNameDefined Calls    CalledByDeclare
  43834. AssignReferUndefinedDeleted NoneToMultipleMainProgramUnlinkedFunctionPrefixProcedurePrefix €€€€ Oâ@âàã  ã±êðC-é ã:€â0…å  áÇOâ, ã[ë|†å
  43835. ã#OE a@°f   €Q”OâOâ!Aâ}/Oâ<Oâ·0Câ½ï…â‰è¤•â €â¸•âŴâÌ •â,ŵâÜ0•â<◰âä@•âL☓âÒï…â®èø•â €â•âŴâ( •â,ŵâ80•â<◰â@@•âL☓â‰èP•â €âd•âŴâx •â,ŵâ40•â<◰â‘@•âL☓â2î…â®è¤•â €â¼•âŴâÔ •â,ŵâx0•â<◰âì@•âL☓â‰è|B†åÒ/…â>…â ã O2@,Ŵcë2.…âê…â ã OG@,Ŵ\ë2.…â7…â ã Of@,ŴUë ã8 ã  ã0 ã @•âL☓âF_…â` ãBë s  s  s0 s—@•rL☓r\…r` s9{ôuY{p…uôu8 sK{\…uu  sG{X…u$u  sC{`…u,u s?{d…u s s;{l…u s$ s7{t…uXu  s3{h…uð◰½hÎOOâÔäPãð◰½ á ã0 ãëP q qp†u4{ q  q0 s q{ð◰½hÔä1ãüÿÿÔä ÔäŴá…çæÿÿê@-é*ëЙb~€½hŶä`Vâ‡ÈøÿÿÊ@½èòÞã0@-éPŴâ,@Ŵâ0Ðä0Ää
  43836. 3㱋°à°Ŷäøÿÿ0€ýèÿ@-éÀ†åŵ ã  ãLëÌ…uĆuŵ s  sG{€½hÐ…åÀ†åPãD0€½hĆåPãX+€½è0@-é̆å:ëà ãÌâ…å@ áP áІå4ëà ãÐâ…å qð?q0€½è̆åІåÐ…åÌ…åð°á@-éøÿÿë½èå ë@ aôÿÿë a€½è̆å#êІå!ê  á á̆åê  á áІåê
  43837.  ã̆åê
  43838.  ãІåê̲†åêв†åÿÿÿêþC-é á  á ëþ◰½è̆åêІåÿÿÿê@-éÜMâ á, ã0 ãœë q‡uý{ܙ‽è̲†åêв†åÿÿÿê~@-éÜMâ @ á á, ã0 ã⇧ë° q™r~’x qÛÿÿ{Ü™â~€½èïð áFïð áïð á⇨Ëïð áïð á@-éÜMâ áSë q³ÿÿ{ܙ‽è@-éÜMâ áKë q­ÿÿ{ܙ‽è@-éÜMâ á9ë q£ÿÿ{ܙ‽è@-éÜMâ á1ë q‡ÿÿ{ܙ‽è@-éKßMâ  áèë q q„ÿÿ{Kߙ‽è@-éKßMâ  áßë q q’ÿÿ{Kߙ‽è@-é    ÜMâ á–ë q q¾ÿÿ{¿ÿÿ{    Ü™â€½è@-é    ÜMâ á™ë q q~ÿÿ{☓ÿÿ{    Ü™â€½è%$%()()$()%s%s0Ðå, Oâ1ŵà ‘å á$Oâ⇩Ëïð á%s%s0ãÁòÞ0‘å Óå2ã
  43839.  Ðå2ãX$†\$† ‘åpãP†HO à à à⇩Ëïð áT†åøÿÿê(RETURN , )p@-é(@“åÜMâ áàÿÿëj`™à4ã
  43840. `ŷâ áDOâ±ëÔåQãRO­P á“å áÆÿÿë
  43841. jŶà@“å4ãrOðÿÿwOâ©ë  á á8†å8ÿÿëÜ™âp€½è@-é\†å÷ë s8  s‹{€½è@-é\†åðë s8  s⇧{€½è`†åêêd†åèêh†åæê@-é8 ã`뀽h+.…â° ã0‹åSã°⇧( ◰úÿÿŵå [〽¸-é! ãÁ뀽h€½è@-éë €â‡äp†åÙë@½èòÞsòfiã@-é ☓â áp†åÑë q@½x×zÀ½è‘å’åH-é‘å’åcë⇦½è‘å’åH-é‘å’åaë⇦½è‘å’åÐåÑåPáð á‘å’åPáð á‘å’å‘å’åQáð á ãPáð á‘å’åH-é‘å’åBëpâ⇦½è‘å’åH-é‘å’å?ëpâ⇦½è‘å’åÐåÑåQáð á‘å’åQáð á‘å’å‘å’åPáð á ãPáð á°á ã€’1ûÿÿð°á0ã ð°  áŵä‘å0ãûÿÿŵä áBà! áð°áÐåãñÞñfiãÐåãñÞñfiãÐåãñfiñÞãÐåãñfiãñÞñfiã0@-é@ á“å☓å“åÓÿÿëP á “åÐÿÿëŶà☓å0@½èòÞã@-é@ á“å☓å4“åÆÿÿë☓å@½èòÞãðC-é8þÿë{{{:{x{3{Æ{Ý{{s
  43842. {{F{6{¿{+o sð◰ýè@-éà ã“â…å‘â…å—â…å†â…åà ã☓â…å@½èòÞãÀËError(s) during parsingParsedParsedErrorParesedWarning@-éÜMâPâ†å⇦â…å…â…å- O⑆å™â)ëI Or“†u ™r%{,™r™rhOrYþÿ{Ü™â1{t{◰{z{^{j“†åPã°O_€½èZeroOneManyQã0 Ŵ  Ŵ@-éÜMâ#Oŵ+O4O2 á, ã0 ãÒë q ™r‘x⇩Ëܙ‽è0@-éÜMâ@ áP á á á, ã0 ãÃë q q  qàÿÿ{Ü™â0€½èStatsLabelx†åãòÞðC-éÜMâÀãxŵ…å0OâþÿëjL…â` ã‘ ã“ç×ëPã
  43843. ‘⇨à6ãP
  43844. ã⇦p á†áýÿvOrŷrfi{ q q⇩ OrÌÿÿ{ qØýÿ{j`ŷâVãåÿÿºYã<†Ñýÿ Ýýÿ{⇦sxŵ…uÜ™âð◰½èGotox†åãòÞ@-éÜMâ$Oâ á, ã0 ãë †u s  q²ýÿ{Èýÿ{ܙ‽èEvalx†åãòÞOâ©…âêRead|†å€ãòÞOâ«…âêData|†å@ãòÞO⪅âÿÿÿê@-éÜMâ@ á á, ã0 ãYë q{“t s  q⇩ýÿ{ ýÿ{ܙ‽è0@-é@ áP“ä5ã0€ý”åàÐåãP”P☓@Ŷõÿÿê|†å
  43845. ãð°@-éF…â4•â  ã뀽èp@-é@ áP á` á“ä á\ëp€½h`VâùÿÿÊp€½è ‘å1ãÐòÞ@-é#ÞMâ@ á áþÿë j4“åPã
  43846. ‘åPã
  43847.  ã,™â®ë,™r q s{#ޙ‽èx†åã  õÔuŴsÄuôÿÿê‘å1ã ‘1ÐòÞ@-é#ÞMâ@ á áÔýÿë
  43848. j“å0ã“‘å ã,™â⇧ë,™r q     sö{#ޙ‽èUnusedRtns|†å
  43849. ãð°p@-馅âF…â  ãÌ0•â4@Oâ7^…â8`Oâ
  43850. lFâëp€½èøC-é|â†åàâ^ãø◰½@ áP á` áp“倠ᑠá—ä‡åüëø◰½h‘YâùÿÿÊ“åWáp óÿÿp°áø◰½ á á Oâ,Bâ8‡éŷëø◰½èÂËBasCompress (internal): 1.1ÂËBasCompress (internal): 1.24‘å1ãÐòÞ ‘å1ãqòÞ0@-é—†åŴâ—…åÐåŴãÀåP á0@”åTã
  43851. “å ‘å1ã
  43852. Ðåã°O0@½òfi4€â0‘å3ã¨O0@½òfi°›å;á◰öÿÿ0›å0€å@“åæÿÿêàÐåà‰ãàÀåùÿÿê á ãë q s { q  s{0€½èÂËBasCompress (internal): 2.10@-é €à0‹åSã0€½°›åà⇧à@fiå4ãLO0@½òfiP“å5áà☓öÿÿ@“å@‰å ◰âíÿÿêUnusedVars|†å
  43853. ãð°p@-駅â…â  ã0•â4@Oâê_…âH`Oâ lFâlÿÿëp€½è ‘å1ã‘1‘1ÐòÞ††åŴↅåÐåŴãÀåòÞãðC-é` áp á€ á‘ áPAâ@ ã„ç áfë@☓àPUâùÿÿ*Tãð◰½☓â á¼ëð◰½h     à    ‘ à     à◰üÿëj    @ á„ä á  áQëA☓àpWâøÿÿÊ    Dà  á     á ‡å’Ëï j@IâP‡å´å0ã
  43854.     Tá†Qüÿ“uà qð qõÿÿz@ á     áŒë qðC½èòfiã     á”ëQüÿ{ð◰½è@-éF…â ãà Oâ,Bâë …r s( Or    ,Br{€½èp@-é@ áP á` á“ä áëp€½hPUâùÿÿÊp€½èx†åãòÞ8†å0ãòÞ°†å0ãòÞðC-éKßMâP á ™â ã(  ã‰ë`Ŷâ‘ ã    q„ç7ã!
  43855. 0 ã–å™â,™âL ã­ë`j(™åÝå0ã
  43856.  …â    ‘ç™âðëa
  43857. € á—å0ã —0—Výÿ 0 …â    ‘ç—åíë(1‡å3ãàÿÿp–åÛÿÿê‘YâØÿÿ*`Ŷâ‘ ã    q„ç7ã
  43858. 0 ã–å™â,™âL ã☓ë7j(™åÝå0ã
  43859. F…â    ‘ç™âÇë8
  43860. € á —å0ãF…â    ‘ç—åÉë(1‡å3ãåÿÿp–åàÿÿê‘YâÝÿÿ*Fo…â(P”åUã
  43861. 4‘Õå    „ç,”å¯ë
  43862. € á4—å0ãóÿÿ —å0ãðÿÿ    „ç—å¯ëìÿÿêÂËBasCompress (internal): 9.1,”å,Oâýë_ãKß™âð◰½èÂËBasCompress (internal): 9.2™â,OâðÿÿêÂËBasCompress (internal): 8.1 %s %[0-9a-zA-Z`_](%[, 0-9)] %s %[]0-9a-zA-Z`_\,@»^$().[~|*+?`'<>@0-9{}«»\] library %s#include %sintegerrealstringinteger_arrayreal_arraystring_arrayprocedurefunctionSpecialTitleBasCompress$Path´†å0ãòÞ0@-éÜMâ@ á á, ã×ëP°á E  à àÀÅ ëÜ™b0€½hUã@ŶîÿÿÜ™â0€½èðC-é!ÞMâÿà ã<â…åà ãDâ…å´…å á­Oâlûÿë´†u s° Or<{½jPãÞ
  43863. AâÿQâÛ™å°r†åWã üÿë¬jp á‡å&ë¨j€°á¥
  43864. ŵ™å‡å"ëD…å á¨ë Pã¦*Øå0ã|0;0íÿÿ
  43865. ¾ë,
  43866.  áOâãAâ ™â<™â -é}ëЙâ‰jPã™âOâÇAâZë
  43867. P áÝå¥ë‹ ™âÄë‹îûÿë@ q ™rüÿ{{j☓å–ç☓åAçÊÿÿê áOâ7Aâ,™â-é]ëЙânjPãP êÿÿ
  43868. yê áOâ[Aâ,™â-éQëЙâbjPã ´†å™åD†å ™å ™â›ÿÿëâ‡å´â…å â‡åDâ…å©ÿÿzTê áOâ Aâ ™â<™âMï…â @-é9ë ЙâJjPãW™âOâ‡AâëR
  43869. P á ™âÝå`ëM°ûÿëp q ™rÀûÿ{9j,å4PÇå@ ãM•…âØä 0ãüÿÿ
  43870. )0ã☓ÿÿ
  43871. 0ãR
  43872. €Hâ‡ûÿë+j4ã0☓@ á ã☓åØä 0ãüÿÿ
  43873. 0ãD
  43874. ,0ã)0ààà☓)0ãnÿÿ
  43875. ,0ãêÿÿ
  43876. 0@â
  43877. Pã9*☓å0–å1á
  43878.  ’å2á5
  43879. ’å1ã÷ÿÿ OâL@âêØä 0ãüÿÿ
  43880. ,0ãÕÿÿ
  43881. )0ãUÿÿ
  43882. $ê_〠á‘ á‡åyë qð9s!Þ™âð◰½è ã-é‘ ã9ë½èEÿÿzðÿÿê‡å ãöÿÿê ™â8ë™ ñÿÿ
  43883. < ã½ë@ q☓r ™r  s*{àÿÿj8P☓å$–å☓å$@å/ÿÿê ãM…âáÿÿê ãûÿÿêPãR-é‘ s" s{½èÔÿÿê0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`_\,@»0@-é@ ãP áÕä1ã
  43884. hOâµë0ã
  43885. Uå\0ã@0,0»0òÿÿ,0ã»0@☓ÕäÈëìÿÿ@àã4ã4 à0@½èñfiñÞã°†å0ãòÞðC-é@ áP ã(@“åTãð◰½PŶâ4`ÔåFï…âfiç,“åÿëð◰½hPÀå`Àå à“å>ãàÐà‰àÀíÿÿêðC-éBßM†á™åp⇦â` ãQ–çUã:
  43886. 0 ã”å™â!‡åL ã−ë”j™åÝå0ã*
  43887.  …â‘ç™âÜë    @ á™âðúÿë q …r‘w  qÔ{◰j`Àå@ áÜMâ áwúÿë q s©{Ü™âyjÔå€ãÄåÃúÿë‘ q{⇨u@†u⇨uà“uà⇨u‘☓u¼úÿ{kj@€å@†å ’å €åŴå1‡å3ãÇÿÿP”åÂÿÿê`Vâ¿ÿÿ*p⇦â` ãQ–çUã<
  43888. 0 ã”å™â!‡åL ãWëSj™åÝå0ã,
  43889. F…â‘ç™âŒë    @ á™â®úÿë qF…r‘w  q‹{Aj`Àå@ áÜMâ á5úÿë q sg{Ü™â7jÔå€ãÄåŴúÿë‘ qÓ{⇨u@⇨u@†u0à’uà⇨u0‘Ŵu‘ qwúÿ{(j‘€å@†å€å4à“åà€å4☓å1‡å3ãÅÿÿP”åÀÿÿê`Vâ½ÿÿ* P—åUã
  43890. 0 ã”å™â!‡åL ãëj@ áÝå0ã
  43891. ™â ã8ë    j™â?ëj0°áìÿÿP”åçÿÿêBß™âðC½èòÞãBß™âðC½èòfiãðC-é‘ áP áp á` á@TâZºÙäÅä0ã\0,0@0»0õÿÿ0ãM
  43892. €Ùä0€Hâ
  43893. Xã‘I"îÿÿ*PEâ@☓âŴ–ç8ãéÿÿ
  43894. \0ã
  43895. ,0ã
  43896. »0ã,
  43897.  á. ãÊë0  á½ë@Tà7º á á«ëP áÕÿÿê6ã€ŷØä 0ãüÿÿ
  43898. €Hâ@Tâ*ºØäÜçâÅøÿÿÅå@☓â%0ãØ(0ãØä0ã
  43899. )0ãúÿÿØä,0ã0`°á`H¶ÿÿê6ã€ŷ á> ã⇧ë` á á: ãë0ã°ªÿÿ
  43900. 6ã` Pá` ±Ïÿÿê áðC½èòÞã  ãÌëð◰½è& ãûÿÿê á' ãøÿÿêCan't have routines as regular expressions8†å0ãòÞ°†å0ãòÞðC-éP á$`”å6ã
  43901. Øb…å8p„åWãpO"_# …r‘w•rÀ{ð◰½h`„åñÿÿê(P”åUãíÿÿð◰½èp@-éP á؆å€â”å àã0 ã@ ã™ëp€½hPãp€½¸Õå€ãÅå©ùÿë` qàsŷuÔ†uŷuà”uàŷu`Ŷu¢ùÿ{P€uÔ†u ’u €uŴup€½èp@-é@ áP á` ãÕä0ã
  43902.  áEâ=ë`ŷâEâ'ëPŶàóÿÿê áp@½èñÞãàãp@½èñfiã!main!<†åPãòÞ@-é−⇨ã„⇨ã☓†å0ã0Oâ0
  43903. ‘ùÿë q†uw{Ô…u@…uààs à€ucþÿ{€½h°†åPã
  43904. (ÐMâ á ã
  43905.   ãë°†å áOënþÿë(Й‽h|†å
  43906. ã−É8€½èÂËBasCompress (internal): 6.1ô>ôProduced by BasCompress v1.31 (18 Jan 1993) á†åEëdO@½òfi@…å−⇨ã„⇨ãè†å`OâÉë-鸆å. ãÛë0〸†½èÀëè…å’⇨ã&ëè†u−Orº{è…u’⇨s {€½h|â†å
  43907. ã−É€½è„ÉãòÞãòÞãÂËBasCompress (internal): 7.1ðC-éJßMâë@ áP á€ á™â ã
  43908.   ãºë°b†å@Tâº(`„åVãúÿÿhOâJß™âðC½èòfiã ã,„åçëøÿÿjJß™âðC½èòÞã ã÷ÿÿê0@„å4ã#
  43909. Õä(0ãðÿÿ(p™âUáíÿÿ*Õä 0ãúÿÿ
  43910. “åqã
  43911. "0ãìÿÿà™âq‰çUáèÿÿ*ÕäÇä"0âùÿÿGåUááÿÿ*Õä 0ãúÿÿ
  43912. @“å4ã
  43913. ,0ãÒÿÿáÿÿê)0ãÏÿÿ á™âÝýÿëÈÿÿjÎÿÿê ãPEâUáÆÿÿ*ÕäàÜç€ãŴ)0ã
  43914. "0ã
  43915. ,0ãóÿÿ1ãñÿÿáÿÿêQâîÿÿª@“å4ãäÿÿ
  43916. ³ÿÿêUá±ÿÿ*Õä"0ãúÿÿäÿÿê<†å°áD†€ÿ    Ŵð°áB-éÈ‹†åõÿÿëŵýèÂËBasCompress (internal): 10.1%s %d.%d%s %d%s %5d.%03d%s %5dpã0 ÂòÞ@-é€â†åàŴá° á áÿ[ã´"†%*8†å1ã
  43917.  ’å+ Rá’ùÿÿ ’å+4 áÿ8Ããã    ÿ@â—O›OãŴ  0 ⇩Ëèÿ@â±O©OôÿÿêðOâ@½èòfiã BßMâ@ áP áàÔåàÍå™âèë®ÿÿëp á ãä÷ÿëjwãWDOr÷ÿ q™r, s0 s,{ q™r|÷ÿ{ q™r, s0 s${™rB™r~’xs÷ÿ{m÷ÿ{Bß™âþ@½èòÞsòfiãþ@-é    0ã
  43918. 000     0ã00
  43919. ‘2†å0◰â‘2…å  ã$•âÉÿÿêx†å ãð°þ@½èòÞã|†å ãð°ùÿÿêWarningErrorþ@-é“2†å0◰â“2…å(  ã$OâµÿÿêB-éÈ‹†åØÿÿëB½èòÞsòfiãB-éÈ‹†åïÿÿëB½èòÞsòfiãÈ‹…åð°áReduceRtns¸†å0ãòÞ@-é$Oâ<÷ÿëF…r sx"†u"/ q{€½èReduceVars¸†å0ãòÞ@-é$Oâ-÷ÿë†u•rö{ …r sx"†u", q {€½è‘å Ñå2ãòÞ ÑåA0BâSãòÞ#ÐåŴãÀåòÞãp@-é@ áP á` á“äâ¦` áQã p€½hPUâ÷ÿÿÊp€½èðA-é@ á á×ëPãðŴ½€â á6ëðŴ½h` á á áРOâ,BâÐ0Oâ<CâÎëjëp á€–ä8ã
  43920. ë áÅ…â¼ëIøÿùÿÿp†åÅ…â#†å®ë⇦uðÿÿzP á áë qðA½èòfiã áëðŴ½è½¿…âœä ã  ã0 ã«è0 ã⇧èð°á†åÐä1ã…Ìð°Á/…âÅ?…â° ãåÐäŵäÃä‹å0ã³…Ðä1ãŵÃð°°⇧âðÿÿêCompressTitleý¸†å0ãòÞðC-éÐMâ°ë ã±ëà ã<â…åDâ…åTâ…å☓â…åLâ…å â†åà™å4†åPã ÃÊ>ã  ì…帆å€Oâ¬öÿ븆uŵ s  s‡{j™å¸†å“åë
  43921.  sP{jÜ…å*ëõ{új8†å ™åPãÃ
  43922. à‘å<â…åà ã@â…åDâ…åp‘åp™å‘ ãÉýÿëìj!ë0×åÿ3ã¬
  43923.  áXë,äj& *à‡åp™åàGàT†å€àT…åP†åpë0×åà×å4‰àD2…å`‡å6ã
  43924.  „åPá Êùº á’å1ã
  43925.  ’åPáùÿÿ
  43926. ñº™å¬ë¿{Äj€×å€àpâ—ë¿jVãñ•0ÔêÔêÓêÒêÑêÐêÏê;ê:êêêçêüêêjêjêp áë½ÿÿz©êä†åè"†åRáòÞÓâÎã0@-éà2†å°Aà[ã§Ûx†åãB°Bàãþ[ã:à ³à´ä"…µè"…µ0€ý¸à†åä†åAâ’ëà†uäB†uDrApŵar܆uÞ {èR†u{è†u q Ep0€p:à sàÃtè2…uä2…ue {◰{0€½èÿ[ãÚàB†å áä†åAâvëä†uèR†u EpŴrW {ä†u@rà…ur{è†uŴrj{ ŶrBpŵar܆u¹ {[{0€½èŵkâÜ†å´ ëà†åè†å]ëS{0€½èà†åäB†å DàRã%ÚŵbâŴâÜ†å¦ ëà†åDâOë0€½hèR†åPEàã @ëè†u q  q0€p:à sàÃtä2…uè2…u& {D{0€½è܆åŶ≠ëà…u€r q  q {:{€p@r2{({0€½èãxâ†:à è†àÀè…ä…0€ýà†åè†åAàŵaâ܆åu ëà†åè†åë{0€½è0@-éà†åèB†å DàRã܆堠  Úxâ†åã@D Bŵbâc ëà†å á ë0€½èŵ ã] ë0€½è@-é܆åŵ ãW ëà…u€rä…uè…u€½èAàÀå ãÀåkê@-éìâ†å>ãD↉ì…à†åàÀå.ä áàÀå€ýè%$%(($(†Éã
  43927. ãŒ⇨`Fâ …â‘ç á> ë
  43928. ‘åè†åÇ ëPOâŴàÄ ëè…åÿÿêÂËBasCompress (internal): 3.1(OâËê&%x%d†Éã !†å2ã J    RãjR$O²,O¢è†å⇩Ëïèâ†u€pè…uùþÿzºê€igÿ 0åRáTOÂ\OÒòÿÿê%G†Éãî…âHŴ†íŴ-íOâè†å◰ ëЙâªjèR†å@€àèB…å áE ã– ë0ãàþÿ
  43929. Pۉʇ
  43930.  ãl ëcPãc Ãcpãbà³ á} ë á ã⇦ ëè…åÑþÿê†Éã`FâF…â‘ç áí ë
  43931. ‘åè†å6ãò  ¤   Àär ëè…åÁþÿêÂËBasCompress (internal): 3.2(Oâyê`FâF…â‘ç áÔ ë-
  43932. àÐåãàÐåã−ɪþÿà‰ãàÀå@…å‘åè†åÝ  ã Àä6ãò  ¤   ÀäM ëè…å†þÿê−Éã$‘å  áÿÀãDâ†å0á©þÿ
  43933. p á×å ×å4ŵáSá×åpàøÿÿ:€ áflþÿêÂËBasCompress (internal): 3.3(OâCê†Éãè†å á °á& €è…åyþÿê ‡å8†å1á‘åD†Ŵì…9þÿêÿÿÿë܆uOr  sŶ {,j` ã ã܆å◰ ë
  43934. `ŷàP á  á á‡å» ë qôÿÿzêResultû…b…å܆åk ëjÜ…å‡å­ 븆u,u– {}{j⇦†åd ã„à+ ë  á á\Oâ©ôÿë⇧ôÿ{j ã– ë“ ëЙâðC½èòÞã@ á܆åO ë q@ á‡å’ ë q@ á ã⇦ ëŶ ë áЙâðC½èòfiãÂËBasCompress (internal): 3.4(Oâåÿÿê| ãï sýÿ{€•r( €rÞÿÿêÂËBasCompress (internal): 3.5(OâÔÿÿêx†åãòÞðC-éFN…â[…âhPŶâð†å?ïð◰½h#*ïð†uLOr  stôÿ{ð†u s5à sàÄuàÅuà sàÄuàÅuà sàÄuàÄuàÄuàÅuàÅuàÄuàÅu‡à s‹p.ä qàÅu ÅuàNràÄu s5àBràÄuàÅuð◰½èqã
  43935. ðâ†åð…å á ã¶üÿëð◰½hÒÿÿêð†å$ ãÎüÿëxâ†uàÎsxâ…uð◰½èx†åãòÞ ãGôÿêF…âê…âhŴâÿÿÿêx2†åãòÞ0@-éP á@ á á ã3ôÿë qkôÿ{ŷ sÄu Äu0€½èXRefTitlex†åãàòÞ@-é ë ã ë4O⼆å
  43936. ôÿëjxB†å_ãã$H i?•F/… 7…jxB†åàã$E @0•<◰,… ê… j ãç
  43937. ëä
  43938. ë@½èòÞã@ á ãá
  43939. ëÞ
  43940. ë á@½èòfiãðC-é@ áP á` áp á ãÖ
  43941. ë€Eâ‘ ã„ç‡å  ãáfi
  43942. ‘⇨€Xâ÷ÿÿ*9ã7
  43943. ⇨â áú    ë*j€ á‘ áPEâ„ç‡å  ãá     áx"†å,âРO+,B⇧
  43944. ë’€àPUâñÿÿ*Ià  á á  á 0 á’Ëïj‘ á−ä0ã
  43945. à áð á,j÷ÿÿ:| ãï sEüÿ{0•r% €r@ á áР   ë q@ á ã—
  43946. ë áðC½èòfiã áÇ    ëöÿÿj ã‘
  43947. ëðC½èòÞã@-é@ á%ôÿ뀽hÔåã0†hóÿ€½h “åPãL†cóÿ €½hx†åâP〽 “åpã
  43948. Pã
  43949. ,†åWóÿë “u sºóÿ{H†uRóÿ{$“u sµóÿ{x†å  á0“å$$†å,뀽h “åp〽x†å  á4“å $†å#뀽è@-é@ á0Ôåà Oâ0,Bâ!ŵà“å8†åIóÿ뀽hàÔåã0†2óÿ€½hx†åàâ P〽x†å  á“å($†å
  43950. ëx†u  q “u$†u{x†u  q“u@$†u{€½èðC-é‘ á`â@°
  43951.      áóÿëð◰½h ákôÿë€â áa    ëð◰½hP á á ájôÿëp á á á>.…â’Ëïj@ áàFâ^ãñ•0êêêê9ê áL    ëð◰½èVãð◰½¸     áõòÿë<†uóòÿ{ð◰½èÂËBasCompress (internal): 4.1(Oâ@ á á8    ë qðC½èòfiã%d áOâñòÿëáÿÿzóÿÿꀓåXãÝÿÿ
  43952. €—å°áóÿëìÿÿj ãp´å7ãp–WáŴùÿÿ
  43953. Qã4†ÞòÿáÿÿjWãÌÿÿ
  43954. †åÇòÿèÿÿzÛÿÿê†åÃòÿëØÿÿj€“åXãÂÿÿ
  43955. p—倗å áóÿë  sÆòÿ{Îÿÿj ã áóÿëÊÿÿj ã‘´å9ã − àRáŴøÿÿ
  43956. Qã4†»òÿ¾ÿÿjYã©ÿÿ
  43957. −å0áÝÿÿD†å¡òÿëp−u sæÿÿz³ÿÿêâÎã@-éã 0 ãWá*0×ä 3ãúÿÿ
  43958. PGâ    ãy
  43959.  àCâÞ^ãñ•0ÏêêÍêÜêËêÊê\ê9êÇêmê^êêÃêêoê–ê¿ê|ê{êzêyêxêwêvêuêtêsêêNê²êèê°ê¯êdê­ê¬ê«êªê©ê¨ê§ê¦ê¥ê¤ê£ê¢ê¡ê êflêfiê‡ê†êœêŒê−ê—ê–ê„ê”ê“êRê-ê]ê‘ê•ê‰ê™ê…ê⇧ê⇩ê⇨ê⇦êêŷêŶê☓ê◰êŵêŴê€êê~ê}ê|ê{êzêyêxêwêvêuêtêsêrêqêpêÀênêmêlêkêjêiêhêgêfêeêMêcêêdê`ê_ê^ê]ê\ê[êZêYêXêWêVêUêTêSêRêQêPêOê}êMêLêKê­êIêHê0êFêEêDêCêBêAê@ê?ê'ê=ê<ê;ê:ê9ê8ê7êËê5ê4ê3ê2ê1ê0ê/êêêê+êê)êêêêê$ê-êïê:ê>êêêêêêêêêêêêêê+ê^ê⇦êëêê4ê êTêäêãêêÝêê(ÿÿêŴêêÛêêŒêÿêþêýêcêê-êüêøê êwêõêôêóêòêêL"†åWá*0×ä:3ã
  43960. àÜç€ã ŵ)3ã
  43961. "3ãóÿÿWá%*0×ä"3ãúÿÿíÿÿê Râëÿÿª~êRã  L"…å 8úÿ€½h÷þÿêã‹ÉãM_…âPEPE@ ã` ã€ýèp á@ ã ` ã€ýè` ã@ ã ã€ýã€ýãHâ†å>ã☓â†å>ã­ùÿ@"†å$ŵàÒå>ã—⇨€ý ã1úÿ뀽h€ýè
  43962.  ãúÿ뀽h€ýèfiåë á ã    úÿ뀽h€ýè@ ã` ã    ã€ýLâ†å>ãŒ)€ýè ã¾þÿWáÌÿÿ*0×ä 3ãúÿÿ
  43963. ô3ãÇÿÿ
  43964. pGâ ã
  43965. @ ã` ã‘⇨âëã€ý—Éã  ãêùÿ뀽h€ýè;3ã\3ð°¥þÿê@-éL†åPã L… Ýùÿ€½h@½èã—É−Éÿ‘Éã’Éã›Éã†⇨ãœÉãŒÉã„Éã—Éã–Éã“Éã“Éã”Éã”Éã›Éã‹Éãð°á@Gà` ãLâ†åà^âLâ…åºã†⇨—É€ýè ã¼ùÿ뀽h€ýèLâ†åà‰âLâ…å@Gà` ã    ã›⇨€ýã›⇨ã€ýM_…â0Eä@ ã€ýè@Gà` ãWá€ý(0×ä%3ãpG@☓€ýè@ ã` ã†Éã ã†⇨â ã†⇨€ýè ã–ùÿ뀽h€ýè@ ã` ã†Éã ã
  43966. †Iâ€ýè ã…ùÿ뀽h€ýè ã
  43967.  ã.
  43968. Wá,
  43969. 0×åàÜçã(
  43970. œ⇨ã` ã@ ã€ýè  ãM_…â`Gâ0ÅäWá*0×ä0àCâ
  43971. ^ã ŵ1÷ÿÿ:E3ã0ÅäWá *0×ä+3ã-30ÅäWá*0×ä0àCâ
  43972. ^ã0Å4øÿÿ:pGâ2ãåM_…â0à ãàÅå@ ã` ã€ýè ãUùÿ뀽h@ ã` ã€ýèWá0*0×ä"3ãúÿÿ` ã@Gàã€ý“Éã|â†åã€ýŶâ Gà Râ'ÚWá*0×ä 3ãúÿÿ
  43973. pGâ ã,3ã:3¸3
  43974. ê;3ã\3:3M…âà ãàÀçøë á9ï …u
  43975. ` s€ýx|â†åã€ýM…â ã ùÿ뀽h€ýè ãùÿ뀽h ` ã@Gà€ýè|â†å ã ãùÿ뀽h€ýè# ã,ùÿ뀽h€ýè` ã ã@G€ý’⇨ã|â†åã@Hp €ýM_…â0ÅäWá*0×ä 3ã*3ùÿÿ
  43976. 0Åä|3ãÉþÿ
  43977. Wá0×40Å4ûÿÿ:Mï…â@EàP á€ýè”Éã` ã  ãWá*0×ä0àCâ
  43978. ^ã:aàCâ^ã 0C2AàCâ^ã*
  43979. à‰â
  43980. ` ã"‰àWáðÿÿ:pâã b !…åpGâ@Gà
  43981. 6ã€ý ãÒøÿ뀽h` ã@Gà€ýè”Éã` ã  ãWá*0×ä0àCâ^ã⇩
  43982. ` ã ¢àWá÷ÿÿ:pâã b !…åpGâ@Gà
  43983. 6ã€ý ã·øÿ뀽h` ã@Gà€ýè` ã@ ãWá€ý(”⇨ãà×ä&>ã»ÿÿ
  43984. %>ãÛÿÿ
  43985. pGâ.^ã0àN    ^€ý⇦ÿÿÿê`GâM_…â0ÅäWá&*0×ä0àCâ
  43986. ^ãøÿÿ:.3ãE3pGE3ã
  43987. 0ÅäWá*0×ä0àCâ
  43988. ^ãøÿÿ:E3ã0ÅäWá*0×ä+3ã-30ÅäWá    *0×ä0àCâ
  43989. ^ã*0ÅäWá0×4øÿÿ:êpGâà ãàÅå|â†åãMï…@EP ` €ýM…â!ëÐåPã høÿ€½hP á@Gàµëµ  …HŴ… ` 
  43990. ` €ýèpâ@Gà` ã4†åPã Wøÿt†uŷ{€½h@ áGâÁë*…â ’äRã 0‹Sŵ²ùÿÿº@Ŵä ☓å ☓å×÷ÿë☓å@†å☓å@ ã€ýèXÚXÚ@Gà` ã©…â☓â†å>ã€ý@â†å>ãàÞ>€ýP-é` áhðÿëP€½h@ á„ä☓å@ŷä¯÷ÿë☓å@†åPã†O☓åP€ýè@ ã` ã ã€ý
  43991.  ãøÿ뀽h€ýè@ ã` ã ã’⇨€ý ã    øÿ뀽h€ýè@ ã` ã ã’⇨€ý ãøÿ뀽h€ýè    ` ã ã†Éê` ãÿÿÿê†ÉãM_…âWá!*0×äàÜçã
  43992. 0ÅäWá*0×äàÜçãøÿÿpGâã
  43993. *0×ä:3ã‘⇨ 3øÿÿ
  43994. pGâ(3ãþÿàÜ‹⇨à ãàÅåMï…â@EàP á€ýèpGâ ãÐ÷ÿ뀽h@ ã` ã€ýè@Gà` ãã“⇨€ýè@Gà` ã’⇨ãWá€ý(à×ä >ãúÿÿ
  43995. Ŷ>ãpG€ýM_…â0ÅåàÅå@ ã›⇨ã†⇨ãWá€ý(0×ä 3ãúÿÿ
  43996. ê3ã0Å@ pG€ýè@Gà` ã†⇨ãWá*0×ä 3ãúÿÿ
  43997. ô3ãsýÿ
  43998. :3ãpG€ý‘⇨âWámýÿ*0×ä 3ãúÿÿ
  43999. óÿÿê ãT뀽h€ýè@Gà` ã ã†⇨ã€ýÿã€ý’⇨ã€ýè@Gà` ã’⇨ã€ýè@Gà` ãWá€ý(0×ä 3ãúÿÿ
  44000. pGâ™3ã€ýè ã–÷ÿë€ýh€ýèLâ†åà‰âLâ…å@Gà` ã€ýèpâ@Gà` ã€ýèpâ@Gà` ã€ýè0×ä@Gà` ã‰àCâ^ãñ•0êêêÜêêÚêêêôê ê◰ê
  44001. ê⇧ê—ê–êêêêêêêêqê€ýè` ã–⇨ã@ ã€ýèã@ ` €ýp á@Hà` ã’⇨㪅âÿÿê@Gà` ã«…â
  44002. ÿÿê@ ã` ã ã
  44003. ã€ýãHâ†å>ã☓â†å>ã½öÿ@"†å$ŵ0Òå3ã ã@…åŴ†Éã€ýè ã>÷ÿ뀽h€ýè     ã÷ÿ뀽h€ýèfiåë á ã÷ÿ뀽h€ýè@ ã` ã ã€ý    ãWá*à×ä >ãúÿÿ
  44004. ¤>ãò>pG¤>ã` ` —⇨ã−⇨ã’⇨ãÿÿê ãüöÿ뀽h€ýèã
  44005. „ÉãH†å1ãåÿÿ
  44006. ’åîë á% ã ÷ÿëßÿÿz€½è ãëöÿ뀽h€ýè` ã@ ãŒÉãŒ⇨ã€ýè` ã@ ã–⇨ã€ýè` ã@ ãã–⇨€ýè ãÙöÿ뀽h` ã@ ã€ýè0 áSá€ý(àÓä >ãúÿÿ
  44007. àÜçã„⇨€ýè”⇨ãWá¯ýÿ*à×ä >ãúÿÿ
  44008. pGâ">ã“⇨€ýàÜçã€ý¤ýÿê@Gà` ã|â†å
  44009. ã€ý☓â†å>ãaüÿ
  44010.  ã&
  44011. ã&@â†åàÞåãYüÿWá*0×ä 3ãúÿÿ
  44012. pGâ"3ãàâM/…â^á*0Þä0Âä"03âùÿÿ0Bå^á*0Þä 3ãúÿÿ
  44013. :3ãM…âÃöÿëÀ뀽h€ýè  ã‰öÿ뀽h€ýè ãúÿÿê ãøÿÿê ã <@Gà` ãWá€ý(0×ä 3ãúÿÿ
  44014. B3ãpG€ý7ápG€ý0×äY3ãpG€ý7á0×àÜpG€ýMï…â  á0Õä0Îä RâûÿÿB0 ã0ÎäY0 ã0Îä@☓âM_…â€ýè ãàÜçã¶Sã@ ã` 3€ý8` ã¸3ã€ý7á€ý0×åP3ã€ý0â3á0×0Ü@ p€ýè ã ­` ãàÜçã@ €ýAàCâ2^ãñ•0„ê0ê“ê›ê‹ê’ê‘ê•ê‰ê™ê…ê⇧ê%ê⇨ê⇦êê€êŶê3ê◰êŵêŴê€êê~ê}ê|ê{êzêyêxêwêvêêtêsêrêqêpêoênêmêlêkêêiêhêgê`êeêêàâ^áa*à×åS>ãs>]à×åL>ãR>l>r>Wà×åàÜçãSpâ@ ã€ýèWáN*à×å0 Nâ
  44015. Rã"*
  44016. ` ãàâ^á*0×å2ã0àCâ^ã*0âSá*0×å0Üçã8
  44017.  ‰â !…åM_…â1<◰ã0Ŷå@ ãpâ€ýèàÜçã- !…åM_…â00ŵâ0Åå@ ãpâ€ýèO>ão>
  44018. R>ãr>!àâ^á*à×åX>ãx>à×åàÜçãpâ@ ã€ýèàâ^á*à×åR>ãr> à×åàÜçãpâ@ ã€ýèWá*à×åC>ãc>ÿàâ>áà×àÜùM_…âpà ãcì‰ãàŶå@ ã` ãpâ€ýè ãœ⇨î
  44019. ãLâ†>êWáu*0×äàÜçãùÿÿpGâ@Gà 3ã=pâWá:*0×ä 3ãùÿÿ
  44020. àÜç@ã4
  44021. àâ^á0*R3ãr3
  44022. P3ãp3*0×åC3ãc3&àâ^á#*0×åàÜçã0ÕåC3ãc3T3t3ê0×å00Câ
  44023. Sã*àâ^á*à×å3ã0Üç
  44024.  
  44025. ê ã0àNâ^ãà2^1*à×åàÜçã
  44026. ‹⇨ã` ã†Éã0ÕåO3ão3+
  44027. S3ãs35
  44028. D3ãd3H
  44029. M3ãm3V
  44030. B3ãb3f
  44031. E3ãe3€ýTã€ý80ÕåQ3ãq3€ý0ÕåU3ãu3€ý0ÕåD3ãd3B3b3W3w3€ý8 áC<◰âD0◰âpŶâ‹Éã@ ãM_…â0Ŷå€ýè@GàÍÿÿêTã€ý8 ÕåP2ãp2€ý ÕåT2ãt2pŶ@ ‹É€ýèTã€ý8 ÕåW2ãw2€ý ÕåI2ãi2€ýWáäûÿ*à×å">ã“⇨‹⇨€ýàÜçã‹⇨€ýÚûÿêTã€ý8 ÕåC2ãc2€ý ÕåD2ãd2B2b2W2w2pŶ@ ‹É€ýèTã€ý8 ÕåU2ãu2 ÕåL2ãl2‹⇨€ýèL2ãl2€ý ÕåA2ãa2‹⇨€ýè0×å Üçã‹⇨(3ã_3`3‹⇨€ýè ã@ ` €ýWá’úÿ*0×ä:3ãúÿÿPGâ»úÿêÜ3ã
  44032. Ý3ã⇦úÿà áWáŶúÿ*0×ä 3ãúÿÿ
  44033. ¤3ãò3úÿp á–ýÿê☓â†å>ã¬â†>býÿwúÿê0WåM_…â0ÅäWá3*0×äàÜçàâøÿÿàÅåMï…â@EàP á%3ã
  44034. $3ã
  44035. (3ã` 
  44036. pGâ` ãWá€ý(0×ä 3ãúÿÿ
  44037. pGâàÜçã‹⇨€ý
  44038. ã€ýã‹⇨€ýè` ãWá€ý(0×å(3ã€ý` ãpâLâ†åà‰âLâ…å€ýè` ãWá€ý(0×å(3ã€ý` ãòÿÿêà ãàÅåMï…â@EàP á` ã€ýè ã@Gà` ã ë€½h€ýè ãøÿÿê ã@Gà` ã†⇨ã뀽h€ýè ã’⇨ã@Gà` ãã뀽h€ýè<ë á ãgôÿ뀽h€ýè ã’⇨ãïÿÿê ãíÿÿê ãëÿÿê@-é@ ál†ånëH†u€u@€uH…u€½èH†å1ã
  44039.  ’å0á’åH…ål†åâÎã_ê0@-é@ áëP á á#ë  á á0@½è ã?ôÿê@-éë á@½è ã9ôÿêENDIFUNTILENDWHILEENDCASE$$internal$$ á<Oâ êIFREPEATWHILECASE$$internal$$ á4Oâ Ðä2á2ð° Ðä2ãüÿÿ÷ÿÿêScanTitleðC-éÐMâië‰ï…âà™åà ã<â…å‘ ãôÿ뼆åëûj@‡å@“äTãì
  44040. à☓âà™å à“å<â…å“åhOâfëÿëïj‘ ãp“åà ã@â…åDâ…åp™å—òÿëçjðùÿë0×å3ãó0×åÿSãÈ
  44041. xâ†åã ¨ëÿ,ÚjÇöÿ*à‡åp™åàGàT†å€àT…åP†å:ë0×åà×åä‰àDâ…å€×å€àpâuøÿëÈjVãñ•0Óêêêê ê ê
  44042. êiêhêCêBê êflêê‡ê‡êp áÌÿÿê`Fâ …â‘ç áãë  á …â‘çÿëÿë©j`Àå` á @ ã ã†É@ ã
  44043. ãŒ⇨@ ÎëÿëŒjà„çà€åŷçP áóÿëŶå@†åŶåÆëÿë‘j@†å ’ç €åŴç`€åã¾ÿÿ
  44044. @ á¾ëÿëŷj(à“å>ã(☓,à“‰à ãà€å,☓å`€åçâà àÀå–Éã­ÿÿê`FâF…â‘ç á§ë  áF…â‘çÃëÿëmj`Àå` áÖåPã   €òÿ—ëÿ{@B†u0à“uà€u0☓u`€uP qÞòÿ{ŶuP q‰ëÿ{4à„uà€u4ŷuP€u@€u⇩ÿÿzTê_ãã`òÿPj`FâF…â‘ç áë  áF…â‘çœëÿëEj`Àå@ áÔåã €ãÄå@B…åÔåPã   Iòÿj¶òÿëÿÀã ☓åhÿÿê−Éã"ÞMâ á áëÿë “u s,™rÇòÿ{"Þ™b(j,™â áx†åã
  44045.  ãóÿë"Þ™âTÿÿzê ã(óÿë"Þ™âOÿÿzê†ÉãLÿÿê ã    ã@† ‘pÿÿ
  44046.  ãóÿëjÿÿê ãúÿÿê4â†å>ã€â†à‰€â…jëà ã<â…åЙâðC½èòÞã@ ácë áЙâðC½èòfiãÂËBasCompress (internal): 5.1(Oâïÿÿê ãùòÿëáÿÿzëÿÿêEscape| ãï  sðòÿ{$OrâÿÿêðC-é‰o…âp á€„ä8ã
  44047. —å á¦ë`⇦÷ÿÿà—åà‰âà⇦å,ê áëÿë+jp á4â†åà‰â4â…åÿ^ã3ª^ã€â†¥àΣ€â…¥ á ãïj0ãTã#ºà ãB~á" ãV뀀uŷtp€u€ q qN{⇦u@⇦uPâ†uà‰pPâ…u0 s q  qÿ sj4â†å à⇦åðC½èòÞãðC½èòfiã  á ãï€â ãµòÿëôÿÿzõÿÿê ãúÿÿê  ãøÿÿê ãöÿÿêCAsm    *
  44048.  
  44049.           WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ¼Ì!bc¬¼ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−    îî    îî
  44050. Ì
  44051. Ì Ý Ý îî» îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿPpwGPwWPwwWuwWPPÿpwGPwPwÿWuwWPPÿPpwwPwWPÿpwwwwwwwp⇦⇦⇦⇦⇦xp⇦€xw⇦⇦⇦⇦⇦wp€€xw⇦⇦⇦wpxw⇦⇦⇦⇦⇦wp€€xp⇦⇦⇦⇦⇦xpwwwwwwwððÿÿðÿÿðÿÿÿÿÿððÿðÿÿðÿðÿÿÿÿÿÿððÿððÿÿðÿÿððÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ€ic_bascomp,, wwwwwwwwwwwwwwwww'r"DDDDDD'rwwwwwwwwwwwwwwwww'rwwqwwwwwwwwqq⇦⇦⇦⇦⇦⇦x7sw⇦€@€w7swqH☓H☓x7sww⇦w7sqH☓H☓xqw⇦⇦@☓wqq⇦⇦⇦⇦⇦⇦xwwqwwwwwwww'rww'rwwwwwwwwwwwwwwwww€icon_bascomp,, wwwwwwwwwwwwwwwww'r"DDDDDD'rwwwwwwwwwwwwwwwww'rwwqwwwwwwwwqq⇦⇦⇦⇦⇦⇦x7sw⇦€@€w7swqH☓H☓x7sww⇦w7sqH☓H☓xqw⇦⇦@☓wqq⇦⇦⇦⇦⇦⇦xwwqwwwwwwww'rww'rwwwwwwwwwwwwwwwww\ptr_write ,,U€j*T¤T‘T‘T‘‘‘‘¤€j*@U☓sm!bc¬ ÿÿÿÿÿÿÝÝÝÝÝÝ»»»»»»−−−−−−wwwwwwUUUUUU333333D−D−îîîîÌÌÝÝîî»îî»U⇦U⇦ÿ»ÿ»»ÿ»ÿwwwwwwwwwpw⇦⇦⇦⇦⇦⇦⇦wpp⇦xpw⇦D⇦D⇦wpp€ppw⇦D⇦D⇦wpp€Dxpw⇦⇦⇦⇦⇦⇦⇦wpwwwwwwwwwðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     pü!bc!¬TððððððÐÐÐÐÐа°°°°°‘‘‘‘‘‘ppppppPPPPPP000000@‘@‘ààààÀÀÐÐàà°àà°P€P€ð°ð°°ð°ð@ppww@wwwwwwtwGpwww@wwwwwwwwpwpwww@pwGwppwww@wwpwwwwwwtwpwwwwwwpGwwppwww@wwpwpwwwtwpw@wwww@@p@w@wwwuwwwwwwwwwwwwwwwwwww⇦⇦⇦⇦⇦⇦⇦xw⇦⇦⇦⇦⇦⇦⇦xw⇦⇦€€xw⇦⇦⇦⇦⇦⇦⇦xp⇦⇦⇦⇦⇦⇦wp⇦⇦ww⇦⇦⇦⇦⇦xw⇦⇦⇦⇦⇦xp€€⇦wp⇦⇦⇦⇦ww⇦€€xw⇦⇦⇦⇦⇦xp€€⇦wp⇦⇦⇦⇦⇦⇦ww⇦⇦⇦⇦⇦⇦⇦xw⇦€€xw⇦⇦⇦⇦⇦⇦⇦xw⇦⇦⇦⇦⇦⇦⇦xwwwwwwwwwwwwwwwwwwðððÿÿðÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿðÿÿÿðÿÿÿðÿÿÿððÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿððÿÿÿðÿÿÿÿÿðÿðÿÿÿÿÿÿÿÿðÿðÿÿÿÿÿÿÿððððÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔic_bascomp!,,wwwwwwwwwwwwwwwww77wwqw7s77wwwwqww7swwwwwwwwwwwwwwwww7swwqqqqqwwwwwwww7sqwwwwwwww7sq⇦⇦⇦⇦⇦⇦w7sq€⇦w7sw⇦⇦⇦⇦⇦x'7sq€⇦w"7sq⇦⇦⇦⇦w7sw€x'7sw⇦⇦⇦x'7sq€€⇦w7sq⇦⇦⇦⇦w7sw⇦⇦⇦⇦⇦x'7sq€⇦⇦w7sq⇦⇦⇦⇦⇦⇦w7sq⇦⇦⇦⇦⇦⇦wqqwwwwwwwwqqwwwwwwwwq""""""""qqww7sww7swwwwwwwwwwwwwwwwwÔicon_bascomp!,,wwwwwwwwwwwwwwwww77wwqw7s77wwwwqww7swwwwwwwwwwwwwwwww7swwqqqqqwwwwwwww7sqwwwwwwww7sq⇦⇦⇦⇦⇦⇦w7sq€⇦w7sw⇦⇦⇦⇦⇦x'7sq€⇦w"7sq⇦⇦⇦⇦w7sw€x'7sw⇦⇦⇦x'7sq€€⇦w7sq⇦⇦⇦⇦w7sw⇦⇦⇦⇦⇦x'7sq€⇦⇦w7sq⇦⇦⇦⇦⇦⇦w7sq⇦⇦⇦⇦⇦⇦wqqwwwwwwwwqqwwwwwwwwq""""""""qqww7sww7swwwwwwwwwwwwwwwwwxptr_write,,UTi¥”YP@@@@@@@@@@@P”Yi¥UTDsm!bc¬xððððððÐÐÐÐÐа°°°°°‘‘‘‘‘‘ppppppPPPPPP000000@‘@‘ààààÀÀÐÐàà°àà°P€P€ð°ð°°ð°ðwwwwwwwwwwwwwwwww⇦⇦⇦⇦⇦⇦xw⇦€€xp⇦⇦⇦⇦⇦ww⇦⇦€xw⇦⇦⇦⇦xp€⇦wp⇦⇦⇦ww€xw⇦⇦⇦⇦xp⇦⇦⇦⇦⇦ww€€€xw⇦⇦⇦⇦⇦⇦xw⇦⇦⇦⇦⇦⇦xwwwwwwwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿðÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿðÿÿÿðÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ¼T L(3ËÀe¼QFontWindowFontWindow    1.40 (29 May 1994)FontWindowInitialiseCloseDownModeChangeCreateWindowDeleteWindowOpenWindowUpdateWindowRegisterMenuDeRegisterMenuFontWindowDesktop_FontWindowh}The FontWindow module manages anti-aliased font icons in windows and menus across screen resolution changes.Start a wimp module task that detects programs dieing and closes fonts/releases memory --- a debugging aid during program development.
  44052. Unknown FontWindow operationÀeUnknown FontWindow taskÄeFontWindow is currently activeÃeFontWindow: reserved flags not zeroÂeBad version number for FontWindowÀ†äâÎãð?ã    [ã ñ•0ê⇩êßêÙê¶ê¼êÈêÁê÷êêøOâòfiãWimp$FontFontWindow$TmpRMEnsure UtilityModule 3.50 SetEval FontWindow$Tmp 0ÿÿÿÿ` á †ä2ã    > ã ãïð a …ä ã0Sâŵ'üÿÿ⇩ÀŵåÀ†ä‰OâLOâ  ã0 ã@ ã$ï–Or®Or…r  s0 s@ s#! s0 s@ s$ò„c†å0ãòÖðOâ ã! ã0 ã@ ã#ï á…åòÖãÀ†ä\ãòÞÓ€O-é†å0ãyO_{   qÀ†uà sà…t s€•½è'1ãð @-éÀ†ä<〽 ã …å ëë€ýè@-é°†å;ã€ý ã ãëøÿÿê0œåä •â,ŵâ3á0•0⇧  á áœå0 áÁeïòÓsò›ãð°á@-é°†å[ãàœ0°œúÿÿ;ã0€½µOâ_〽è@-é'è°áç 
  44053. °Þãnè     
  44054. °Ûãç 
  44055. °Ûãŵè 
  44056.  °Ûã¶O#ç ã^á Oŵ⇩p ã6ã €Aëj° áp⇧â €à ãà å Páüÿÿ⇩‡è4p⇧åVëà†uà⇧u°…uЙr€ýx-é  á5ë½èЙâ@½èòfiã@-éÁÿÿë qu{Йr €ýxöÿÿê@-éºÿÿë q s¤{€ýxîÿÿê@-é³ÿÿë qÿ{€ýxèÿÿê@-é­ÿÿë qù{ãÿÿj0ã ‘‡åŴåÅï€ýxÚÿÿê@-éflÿÿë>{€ýxÕÿÿê@-éŒÿÿëÒÿÿj á áŒë™d…â’ä 0á€ûÿÿ ‘å Ŵäûë€ýxÄÿÿêÆeFontWindow: illegal attempt to de/register menu@-é|ÿÿë´ÿÿj4àœåãPO°ÿÿ
  44057.  áŒë€ýx¬ÿÿê@-éqÿÿë©ÿÿj4àœåã|O¥ÿÿ
  44058.  á áÆë€ýx ÿÿêÅeFontWindow: Window manager too old / not present@-éÀ†ä ãòïÀ½hPãXO
  44059.  ‡å à†å>ã OÞA OâY@â_ãÀ½èTASKABEXäþÿë+o À áÞ…â à†å^ã OÂe@Â+ÏK ã8å+Oâò/Bâ0•â<◰â@›äP áà3åà-å@Tâûÿÿ⇩0 áÀïjÈPãøO2:Рá …å1 ã…â  ãÇï{ùÿÿz ãë1ãõÿÿë¬å  ãï@-é0ã0
  44060. €½è@ áë áààã à…å+ï ã
  44061. ëëï@-é †åPãðþÿËà Ã à…ÅÅÝÏ€ýè@-é+O⬠Bâßï€ýèà’å•â °è2áð€2ãúÿÿ€ýèà Lÿÿÿ’åíþÿë€ýh0œåp@â 0á   ã×þÿ뀽èÁeUnknown FontWindow window@-éàã
  44062.  ã5ï-é s50 q s5´ s0 q0 q€½è  á⇧â’ä0ã0‘3€ùÿÿ0ãòÞ2ã4œ“Oòfi@-é áë@½è á ãòÞãp@-é0`œåàÖç^ãàNÂàÆÇŵÏ$@⇧r0“xŴàÖwà‰ràÆwp@½èòÞsòfiã\-éàœå@-é Àœåà á€½è†½è\-éàœå÷ÿÿê\-é àœåôÿÿê\-éàœåñÿÿê á0 á ãï qòÑsò’ã á °á ð°á‘äð°áð°á0 á  áÃïŴrÁ◰tArŴuòÒsò‹ãòÞãààHomerton.Medium@-é⇧å P⇧å4p⇧åà°ápà⇧0à⇧åà ãà⇧åà⇧å1ã´O2ã  OSã“0O‘0O2Tãà Ŵ—àOtàO2⇧â@€èã
  44063. °á⇦O ±è8 ⇧å<0⇧åH ⇧â'0 ãàÑä ^ãà ›àÂä0Sŵùÿÿ⇩ààã@à⇧årÿÿë$0⇧r◰x0œu@½èòÞsòfiã3@-é  á ã ã,ë#j@°á#
  44064. P á ã☓€àŶ€à›ÿÿ{j‡è€å@€å P€åT‹åXà ãŴâ‰àà€åP áŶâ☓€àë‡uÁj”å1ãŶœåŶåP⇧å ã<@½èòÞã@ á á~ÿÿë á6@½èòfiã‡åÁïúÿÿj6@½è ãòÞãðG-é$ÐMâ@ áP á` á  ã  ™å à ãà^â ™'üÿÿ⇩8‘ŷâ€àãëTp„åX`ŷâ€⇦âXá‘ŷ² » `ŷ²ùÿÿº ãà ã ‡ç¢ °áŴ"üÿÿà^âùÿÿ* ‡å$Йâð½è −ä@ãð°*¬ á  ‡å ŵâ  ™å 
  44065. â ã" áªÝçŴáªÍç5ãð°0œå3ã
  44066. 6Óå
  44067. 0á0›ùÿÿ7Óå
  44068. 0á   É5Óå¤èáÅ Åð°áöA-é8 ã*ÿÿëj€ á7 Èå6 Èå
  44069.  á ⇦â◰ïjà⇦â ‰è$`⇧âÀ„è4á5 ÿÿ
  44070. j7È0 á œå ◰å2ã5 Ò ŵ5 Ãå0⇧åöA½è×ÿÿê@ áÿÿë áöA½è$ЙâðG½èòfiãðC-éàþÿëj@°á
  44071. `“åP“åŶQ☓àPŶâ€Õäœå5àÑå8á’ûÿÿÕä7‘Ñå    Páj`VâòÿÿÊ qðC½èòÞsòfiã`@-é‘Eå`“åP☓âŵµèQá `€½h`VâùÿÿÊ`€½è@-éWã    º“åèþÿë á    , áÿ4 ã-é áÍïЙ‽è“å€âÓþÿëúÿÿjp á“åÙþÿë áŴåÌïr8’uÿÀs     €q8Ŵu“u qÑþÿ{j à–åãÊþÿ Å qÃþÿ{ãÿÿz-é á¿þÿë½èÞÿÿê0@-é€þÿë3j$P⇧â@”èŶèP0àP12ã>>D@œå4ã
  44072. @@œå4àœåã2ã
  44073. ã
  44074. ZPãZQ#*ñëê×ëj@œå0á
  44075. D@œå@œå“å  áîëj@“å4ã÷ÿÿ5ã
  44076. @œå4ã    
  44077. 7Ôå ☓âà☓â fièrþÿë7Äu@“uõÿÿz0@½èòfiã@œå4ã
  44078. “åŵþÿë$ÐMâ áŴåËï ’u$Йâñÿÿjã“eÿÿíÿÿj@“åîÿÿê0@½èòÞã@-éAþÿëjà‡å0ã
  44079.  ‘å Ŵä>ã@ “gþÿ™ aþÿë Ã@½èòÞsòfiã>ã™÷ÿÿê@-é ã ãTëœåP㑇ßÿÿùÿÿ@œå“â@“Kþÿûÿÿ@⇧å½è0ã    
  44080. 0@œåÿ ãÔçQâŵ/jûÿÿ⇩ÄPâ÷ÿÿ*@½èòÞã@½èòfiã†å1ãòÞ0@-é@ á ã*þÿë-jP áà ãàŶåà“å ã““☓    ãàÐç^ã ŵŵQŴúÿÿ⇩" á Ŷåà“å àŶå4àœåã$œåZPã(œ%ZP#:Kë q  qh{j@ŶåDàœåàŶåDP⇧å0@½èòÞã@ á áP”åþÿëUâP”ûÿÿ á0@½èòfiã †å2ãòÞ@-é0ãDœåP㑇jøÿÿê    ë@½èòÞsòfiãÇeUnknown FontWindow menup@-éDP⇧â@”ä4ãà“>P☓ùÿÿTãHO_p€½h1ã
  44081. àã“å  á,ë`“åVâ`„ÅÑýÿËûÿÿÊà“åàŶä áÌýÿëDœå0ã p€½èð@-é@œåPã ºH⇧â◰ïŷýÿ{j0á1@œå
  44082. ŵïjààã@à⇧åH⇧â8 œå<0œå$@⇧â0“èŴï@⇧uð€½è@œåPãòÞ³ áŵïàs@⇧uð áòC-éAßM①〠ãp á4`œåP á@ŴâUãTº“åã
  44083.  ã)
  44084. @€ãÿÀã €á☓åã‘⇨â“ä€ãðÿÿ
  44085. ã2Aß™âò◰½è ã ☓   ““  ã,ŵãQá Ŵ  áà ãàÂäPÂäQâàÐ$ ^#à 3àÂäùÿÿ* á-é–ï½èåÿÿjàCàXဠ1ÛÿÿêãÓÿÿ
  44086.  ãdýÿëÜÿÿjà–åà€åå‘€å ☓â’èà ã€â@€èàã  ã à☓â‰è“å €ãÀÿÿê á  ã⇦ï€Ŵràs s5Äÿÿjààãâàá€⇦à€Èáà–åXá‡Ŷ€ŴŶ»ÿÿê‘–åYâ−  ‹A! ’, Ŵ Ŵ ⇨ ‹ Ŵ‘−;ýÿñÿÿå –å å “åã@"
  44087.  ã ã
  44088. 0“åSãÚàÓä ^ãüÿÿ
  44089. :F>ãf>
  44090. àÓä ^ã:;>ãúÿÿòÿÿêàÓäA^ã7àN¢0àN²^ã*0ÓäASã70C¢00C²Sã◰1@ Âãÿ$Âã,ŵá ☓å“ä€ãÕÿÿ
  44091. ~ÿÿêerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     ]8]<(4(€ËTTCAssemblerCAssembler    0.14 (15 Jul 1994)CAssemblerClaimReleaseHeapMessageLoadMessageReadMessageSetMessageFreeDebugFPDebugCPrintfSPrintfWimpIconWindowSpriteSScanfSScanfIntMHeapSortARMImmediateMemoryAn adjunct to OS's Debugger. Dump registers using a printf() template:%R<n>    dump register Rn as 8-digit hexadecimal%<n>    dump register Rn as signed decimal%k    wait for a key after printing%b    enter OS's Debugger after printing%*    enter a system "*" loop, exit with "quit"%q    suppress screen output%v    print string to VDU 4 stream%w    echo string to Nick van Someren's wimp debug util%dR    dump all registers as 8-digit hexadecimal%dr    as %dR but use APCS registers bindingsTo show a register using a different printf() format use "%<n>/<format>", e.g. if R0 points to a string, could use "string = \"%0/s\"."Pressing "b" or "B" with the "%k" option will cause the OS's Debugger to be entered, this can be suppressed by using "%K" instead.An extended *DB, %F<n> displays floating point register <n>DB¸3ÿFDBH4ÿëÀ†ä[ã ñ•0êè8êp9êN+ê/êhêKêmê ê# êÛ)êä)êê    ê“êØê&ê&êxê>ê0.êæUnknown CAssembler operation,OâòfiãŶËStack overflowOâ+ï
  44092. åàã
  44093. åâ‰ãêåð°áåð°á
  44094. åð°á
  44095. åð°á~@-éë~€ýè@-éEJâ Ŵâú0ŵâ Ŵè, •â0™â€â6&ë ’u0 s0Ât‡t‘t¡u qЙâ€ýè Pã· 3 ’èRá$ “ Ŵ”òÞã@-é…â Ŵâú0ŵâ Ŵè< Oâ0™â€â&ë ’u0 s0Ât‡t‘t¡u qЙâ€ýèþ@-éëÿÿëþ€ýèåÈÜæÛÝÀÞÐßààðáâ‘ã ä°í@-éÏ?Jâ0°OâÛä0ã€ý ãÿ  ãïÃä÷ÿÿê@-é •â´*ë`°OâÛä0ã€ýÛä  ãïøÿÿê@-éÏ?Jâ⇦°OâÛä0ã€ýÓä  ãïøÿÿê  áРáÀ ã@ á…*ë/{Øÿÿ{âÿÿ{à qð qv*z@ á á
  44096.  áŴËï qï4‘èû ëà‘å>ã
  44097. ,ãå>ã’* <ëó ë€â     ã, ãq.ë á
  44098.  áŴËï     s+ïï4†è ãY*êÀ ãð°áð?ã á4†è ãR*ê 0ãð°H-é#ë†èŴËï⇦ýè+.Jâ4ŵè0@-éÔ ë0 á ã´Oâ@ áP á@ï$é  ã|Oâ  á@ï$é ãhOâ  á@ï$é     ã—Oâ  á@ï$é ã¤Oâ  á2>Jâ@ï$é0€ýè@-é+NJâ ã4é@ï  ã4é@ï ã4é@ï     ã4é@ï ã4é@ï€ýèF1ãð°ê ÿÿÿÿÀ†ä<ãð°@-é,Oâ…â1ï@’x0◰r0 qà‰râ qF…r@Ŵx s q" q@r Br…rŴx™d@½èòÞsòfiã  á(ÐMââÎãD-é ™â⇩èPãñ•0êêVêcê⇨ê«êÕê    ê@êQê&êêEêUê2ê)ê…ê—êæUnknown CAssembler_Icon operation0Oâ`‡èòfiã'ë Ýxúÿÿê−ËIcon %d is (unexpectedly) deleted−ËIcon %d is (unexpectedly) not indirected−ËIcon %d is (unexpectedly) not text onlyŒè-éêþÿëH½èòfiã@-é
  44099.  áÎhŴâ±è’èãÀOðÿÿ ã¤Oíÿÿ
  44100. ° â[〽⇦Oâèÿÿêë Ýx¿ÿÿê@-éèÿÿ뀽h  ã ã-ï c qŒè@½èòÞãë Ýx±ÿÿê@-éÚÿÿëj@ áP á á–3뀽 á ‡å Uâ⇦3«
  44101.  á ãŴå ŴåÍïŴrÓjo’è Œè0á1€½ á•3ë0ွP á⇩â’èÒï€ýèЙâ~€½èë Ýx⇩ÿÿê@-é ÐMâ á á».ë à™âfié0 áÏÿÿë Йâ™e€½è-é   ãÐMà á áìï0 qÄÿÿ{ Йâ ÝxЙâ½èqÿÿê-é   ãÐMà á áëïñÿÿê©ÿÿëhÿÿj-éà€à^áà Á^áà ±^á0 Ôÿÿ s Ýx½è[ÿÿê−Ë€Fatal error, WhichIcon caused buffer overflow−ËNo writable icons in window to move caret toá`á-é  á° á á…â$ Oâ ‹èÖï)jà…â fiärãtO$
  44102.  fiärãüÿÿ àNààNâB^ãÈOÂÊ á ãà…âàNâ ¾årã
  44103. Rûÿÿº[ã    ª0 ã°…â[á 
  44104.  ¾årãüÿÿ åê
  44105. Rá firã †0 0à…Ëï q Ýx½è
  44106. ÿÿêrã
  44107. ?-é1ÿÿëþ2{P q@àsŒxÒŒu s™Ëï? ÝxЙâ>½èúþÿê-é á áÒï ÝxЙâ½èòþÿê° ãæ ã-éH⇩é
  44108.  áÍï Ýxôÿÿ궠ãæ ã-éH⇩é
  44109.  áÍï Ýxìÿÿê° ãå ã-éH⇩é
  44110.  áÍï Ýxäÿÿêµ ãå ã-éH⇩é
  44111.  áÍï ÝxÜÿÿ갰ᶠæ ã-éH⇩é
  44112.  áÍï ÝxÓÿÿê°°áµ å ã-éH⇩é
  44113.  áÍï ÝxÊÿÿê-é
  44114.  áÎïÇÿÿjà’åâà Ýè-é
  44115.  áÎï¿ÿÿjà’åâà ÝèÿC-é° ápœäwã  P>ÚÁãOï2jàœå~ã:
  44116. À áŵÁã@â’⇦à    Xá4*—èà áð á€⇦øÿÿ —å` ã@Ià$A áVá
  44117.  ’—–à ’ð ’`ŷøÿÿ
  44118. ¦P áVá`☓ŵàFà^㌮@Ŷà
  44119.  á—çà áð áP ` ôÿÿêŶâ á   á 0 á@‡åã
  44120. Tã+’ËïŴ⇦pÓÿÿzЙâþC½èòfiãP‡å    Uãð°’`‡åŴãð°áÿC½èòÞãÿC½èQãòÞ3ÿ@-é` áp á–ä0á
  44121. à áfiä1áüÿÿå  áÜ6ë@☓à`VâòÿÿÊÿ@½èòÞãâÎãPãñ•0êrê-ê"ê ê‰êæUnknown CAssembler_Sprite operation0Oâòfiã@-éë@½hòfic5ã€4ã,€â€ý° á á%ë@½hòfic ã á áPã@ ◰€⇧à€ýè@-é° á áë q€r  qÀs›p€½è °’å,[ãRòÞþ@-éP⇧à,°Ŵâ  á(’åë6j ãb á ãF áTã@ #zã
  44122. zã
  44123. @TâŒ$À#€# !«(øÿÿ⇩[á 3¦J0ìÿÿ: ãþ€ýè ã ã/ïj «è€âPáùÿÿº[áàÿÿ:òÿÿêððð på ã ã/ïjààÿ â ŵá."ŵáààÿ0â0◰á.2◰á «è€âPáñÿÿº[áËÿÿ:Ýÿÿêþ@½èòfiã~@-é6 ã €ã.ï⇩ s.~@½hòfic á`‹å5ã
  44124. $P‹åPŵà¿ë  ã" á àã:¢àáà á”ä
  44125. Ŵz¢°áûÿÿ:Ŷäà^â÷ÿÿª@TâôÿÿÊ ã~€ýè~@-é° á6 ã €ã.ï⇩ s.~@½hòfic á`‹å`ŷâ P‹åPŵàflë ã á qâ± Rã«°⇧1+±⇧’Rã+²⇧1+´⇧’Rã+¸⇧1à áà^â°Ŷ$üÿÿ⇩@TâùÿÿÊ ã~€ýèâÎã@-é …â⇩å Pãñ•0êêê8ê'ê-êwêfiêáêëêê)ê©êæUnknown CAssembler_Window operation0Oâ@½èòfiã-é
  44126.  áËï ŴuÅ€ýxЙâ½èôÿÿê-é
  44127.  áËïààsàŴuÅ€ýxЙâ½èêÿÿê-é
  44128.  áÆï€ýxЙâ½èãÿÿê
  44129.  áËï’uŴr ’x
  44130. @p Ap€ýxÚÿÿê-é
  44131.  áËï’y@Dp JpFï…r    fix`0◰r@p
  44132. 0CpÀ qÃ0 qî…rHfix Àq0Ãq@€p
  44133.  ◰pŴy ŴuÅ€ýxЙâ½èÀÿÿêŒË€Fatal error, WindowInfo caused buffer overflow@-éÌhXà’å^ã@½èòÞÓXOâòfiãŒËWindow title is not indirectedŒËWindow title is not text only-é3ã4
  44134.  áÞÿÿëj<à’å ãtO
  44135. àâ>ã`O3ãL0’4ãT@’P á` á á áè0ë€ý á á TâÙ0[
  44136.  áàï’yàs@Dr$ DrÑ€ýxЙâ~½èpÿÿêÿ-é
  44137.  áî…â fiè
  44138.  ŵà
  44139.  Âá 0◰à 0ÃáËï6jð’é`FàPGàRáS¡(ªVá€RÃÆ@☓ÀÂ@DÀ
  44140. @ÄÁVá`☓À`☓ÐUá€SÃÅpGÀÃpÀ pÇÁUáPGÀPGÐðŴéÅïËjðH’épGà`Fà@⇧àTá@BÀ @ ÑTã@ ³P‰àUáPCÀP ÑUãP ³ TáUàŴ0‰Åj’åP ã@ á0câ  ã<Ŵè×ïÿ€ýxЙâþ½è,ÿÿê-é á ã  á4 ã@ áÑï€ýxЙâ½è!ÿÿêÿ-é° á
  44141.  áÓï$jð’èxãÿŴý{ã 4ÿŴýËïjÿ☓Èãÿ⇦Èã>@’é@Dà0Cà ‰à bâVáW¡º◰àpàVáW±ÿŴý¸pGàÃ`Và` CÄp–àp S…â’è`ÆápÇá⇩âÀŴè
  44142.  áÅïÿŴýxЙâþ½èôþÿê-é
  44143.  á=ÿÿë j'àÑåà.àÿã€ýÃïŴr# ÁuÁ!uÅt€ýx½èáþÿêÿ-é
  44144.  áTãUVWË%ÿÿ 2j,àŴðfiŒåJï…âñ‰èKŒéHàIà €Dà`Fà `Fà‘GàPŶàPEà@Bà`BàpCà    PCàé ãtá@n²uáPn²Vá`NÂWápN‰…â—è    pÇá@Äá`Æá    PÅáVá`☓°`ŷ²Wá    pŶ°p² ãªå á á € á ‘•â°•âà•âÿK⇩éJâÐïÿ◰ýxЙâþ½è¢þÿêòÞãPáQòÞÿG-é @à0AàJï…âñfiè…âŴåËïjG’é‘Ià€Hà`Fà    PŶà Jà0NàRá  ±Sá0 ÁRá  ÁSá0 ±
  44145. RáS…àŴ ‰ ’ çÿG½xòÞsЙâþG½èòfiãŴËBad pointer passed to Window_DragBoxScrollŒËBad drag type passed to Window_DragBoxScrollÿãpO]þÿà‹åàNâ^ãTOŵXþÿ⇩ÿ-é8ÐMâ  áà ã@ªèøC²é     ãsá0`²tá@`²UáP@ÂVá`@     ãwáp`²xá€`²Yá‘@Â^áà@Â…â‘è`Æá0ÃáPÅá@ÄáàÎápÇá‘Éá€ÈáøCªèx‹éSãTUV…zþÿ j,Ŵx’…â‘è`Æá0ÃáPÅá@Äá‡å påJï…ây‰è  á7ã@•< •À0•"O⇨/Oì0•⇩è áÐïËààsàŴuÅ8Йrÿ◰ýx<Йâþ½èþÿê@-é@Cà0Bà  á áD ãEï   s q sE  q s1 sE  scr1 sE dr s9 sE@½xòÞsЙâ@½èòfiãЙâþ_½èòfiãÿ_-éÛÿÿëùÿÿjPáQRS    0 Ñÿÿïÿÿjêÿ_-é…âÏïêÿÿjD’èJ…âñ‘èZá~ã)ª…âŴåËïßÿÿjG’é
  44146. ° áÀ áRá°⇧°°K°Rá°⇧À°KÀSáÀ…°ÀL°    SáÀ…À    ÀLÀ‘Ià€Hà`Fà    PŶà[á° ±\áÀ Á[á° Á\áÀ ±
  44147. [á\
  44148. 0‡åŴâàŴâ‰è ã ’åçï¹ÿÿjÿ_½èòÞãâÎã°PâC
  44149.     êæUnknown CAssembler_Icon operation0OâòfiãBad screen mode     ã@-é5ï@½è,O"_#òÞsòfiãÿÿÿÿÿÿ»»»wwwÿÿÿÝÝÝ»»»−−−wwwUUU333D−îîÌÝîî»U⇦ÿ»»ÿ"""333DUf""w33DU""f33wDDUUf"fw3whÿÿÿpÿÿÿ€ÿÿÿÀÿÿÿ@-é áÊÿÿë  á@½èòficZã4O2
  44150. ¡‘7
  44151. €0òÞ3Oâòfiã%5d ðA-é@ áP á` áÔåÔå$Ŵà,Oâ á⇩Ëï+jPŶàpÔåp☓à@☓â áTá*€Ôä"8ã
  44152. Xãøÿÿ: Dà Râ PŶ’( á á)ë@ á á áPŶà⇨(ëô8ãÜ8çÿÿ á Wà PŶŴ( ãÅåEàðA½èòÞãTáôÿÿ* Ôä"2ãúÿÿØÿÿêðA½èòfiãÑä  † ã@ ŵã)ŵã)ŵÑä?â ŵáÑä?âŵáð°á™Pã!
  44153. ¨ •âÆ0Pâ
  44154. Sã
  44155. :@âŴPã€0ò7Ò54◰1#ŵ0 2ð°1•â  ãð°áBadTokenÑä‰@âPãŴ€2ïÿÿêÑä‰@âPã☓€2êÿÿêÑä‰@â&Pã“€2åÿÿê@-éÉÿÿë@ á©Jâ•)ë  á©Jâ Bà á€ýèI³³ÃÓ‹Åô$CTt“¸Sd☓¥Õ%Scs☓£µãó◰ä%Rã5f£³ÂÃÓæ'rv³ÃÓãór#£4Tv¶õ't—C—xXt²WTu¨Sd☓¥Õe“´Õ5cs☓£³Ä³Ç s Ŷ ´ Ô bÕ !!Ô
  44156. $!D!b!c!t!”!Ô¤!Ã!Ö!"W"ŷ"Ã"Ô"ö"5#e#”#Å#ó#$
  44157. $D$f$“$´$Ô$ô$%3%C%X%´%Ô%µ%Ó!ä!☓ŷ%Ä%æ%”    &t&Ut&”&Ä&ã&÷&7'☓'§'õ'%(V(5(f(–(F☓¦Ôô 4 T s ◰ — ô !õ $OTHERWISEANDIVEORMODERRORLINEOFFSTEPSPCTAB(ELSETHENBadTokenOPENINPTRPAGETIMELOMEMHIMEMABSACSADVALASCASNATNBGETCOSCOUNTDEGERLEVALEXPEXTFALSEFNINKEYINSTR(INTLENLNLOGNOTOPENUPOPENOUTPIPOINT(POSRADRNDSGNSINSQRTANTRUEUSRVPOSCHR$GET$INKEY$LEFT$(MID$(RIGHT$(STR$STRING$(WHENDCASENDIFENDWHILESOUNDBPUTCALLCHAINCLEARCLOSECLGCLSDATADEFDIMDRAWENDPROCENVELOPEFORGOSUBGOTOGCOLINPUTLETLOCALMOVENEXTONVDUPLOTPRINTREADREMREPEATREPORTRESTORETURNRUNSTOPCOLOURTRACEUNTILWIDTHOSCLISUMBEATAPPENDAUTODELETEDITHELPLISTLOADLVARNEWOLDRENUMBERSAVETWINOCIRCLEFILLORIGINRECTANGLESWAPWAITMOUSEQUITSYSINSTALLIBRARYTINTELLIPSEBEATSTEMPOVOICESTEREOVERLAY åÑçâñfiàãñÞã åÑç âñfiàãñÞã åÑç€âñfiàãñÞã åÑçâàñfiñÞ åÑçNâñfiàãñÞã åÑçLâñfiàãñÞã åÑçâñfiàãñÞã åÑçã ñÞ ñfi åÑçâñfiàãñÞã åÑç0ãñfiâ0âñfiàãñÞã åÑç âñfiàãñÞã åÑçâñfiàãñÞã åÑçâñfiàãñÞãaPãa@"APã7@"0@2Pãà3ñÞ3 ãñfiã åÑçâ €ð°á å Ðä Ñçãûÿÿ@âð°á å Ðå2ãð° Ñçãð°€â÷ÿÿê åÑçâ @ð°á‘               ŵŵŵŵŵŵŵŵŵŵ       ☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓    à ⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦    Ŵ‘                               ☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓ ☓☓☓☓☓☓☓⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦⇦ ⇦⇦⇦⇦⇦⇦⇦⇦BOâ 
  44158. åòÞãEscape during debug| ãï(OâРáv@½è+ïРáv@½èòfiãâРáv@½èòÞãSáÃ4ð°1@ÐMâ-é ™â@€â ’ä €äQáûÿÿ:“å@@â☓å½è@0CâÃäð°á@-éÛä0ãéÿÿûÿÿ€ýèCåjêAâ0CâgêF0 = %l#14.7g F1 = %l#14.7g F2 = %l#14.7g F3 = %l#14.7g
  44159. F4 = %l#14.7g F5 = %l#14.7g F6 = %l#14.7g F7 = %l#14.7g
  44160. 08X08xdlglG, R0  = %08X R1  = %08X R2  = %08X R3  = %08X
  44161. R4  = %08X R5  = %08X R6  = %08X R7  = %08X
  44162. R8  = %08X R9  = %08X R10 = %08X R11 = %08X
  44163. R12 = %08X R13 = %08X R14 = %08X R15 = %08X
  44164. R0 = %08X R1 = %08X R2 = %08X R3 = %08X
  44165. R4 = %08X R5 = %08X R6 = %08X R7 = %08X
  44166. R8 = %08X R9 = %08X sl = %08X ip = %08X
  44167. fp = %08X sp = %08X lr = %08X pc = %08X
  44168. Ñå0à@â^ã
  44169. €2Ŵ21 #0@âc¿Oâ”ç-éÑä/0ãnÿÿàñå 0ã+0-000#0Tÿÿ ÷ÿÿ
  44170. h0ãl0ôÿÿ
  44171. 0à@â
  44172. ^ãMÿÿ;ñ5úÿÿ:.0ãIÿÿ ñöÿÿ
  44173. FÿÿëŴâÉê°Ñåa[ã!¾O"ŷ¿O2Ñäð°áøÿÿëp0ãP0  ×ÿÿ
  44174. 0à@â^ãPÿÿ*€ã ° à ‰à‰à‰áŶHfi-é-é@-éQåaP㜿O"œ¿O28ÿÿëÑä/0ã¨0CâÅÿÿê0Câ1¾Oâ0ÿÿëà ã° ã€â ‰”-é°⇧â[ãøÿÿºà‰â(^ãôÿÿº„êR0㱿OŶ¿O0Câÿÿëà ã”ç-éà‰â^ãúÿÿº⇩êWill execute if:  ð°ácccseq
  44175. ge gthile    ls ltmineplvcvsP°Oâ0CâÿÿëH`OâH¶èH-é@ ÂãÖäà‡åâÎãî‰áà™å<”åà áÃãââ€áð0ã ãà áð á0ã
  44176. @ãç¿OëþÿVå×þÿëVåÕþÿë@ ŵãÖäPãåÿÿ:ЙâTêÑäF0ãf0©ÿÿ
  44177. R0ãr0¶ÿÿ
  44178. V0ãv0Ñÿÿ
  44179. Þþÿê~ÿÿë1Pã0à@
  44180. ^0@2\ÿÿ:1PãÖþÿÑå0@âPã
  44181. €2Ŵ2 #Sÿÿêoÿÿëp0ãP0 Nÿÿ
  44182. l0ãL0
  44183.  Jÿÿ
  44184. Åþÿêeÿÿëp0ãP0  Dÿÿ
  44185. ¿þÿê_ÿÿër0ãR0 >ÿÿ
  44186. ¹þÿêYÿÿëc0ãC0 8ÿÿ
  44187. ³þÿê "âQåK0ã,"0Câê "âûÿÿê "âùÿÿê "â÷ÿÿê  "âõÿÿê "âóÿÿêv@-é@ áP áŴâàÑä>ãüÿÿAà€âÀãMà☓åРá0 á“åÑäxþÿë0ã%0úÿÿ0ã&
  44188. Ñäaà@â^ã @2*àPâÛÿÿ
  44189. à^âÿÿ
  44190. à^âÿþÿ:ÿÿ
  44191. à^âà^ÿÿŒ    à^â×ÿÿ
  44192. à^â’ÿÿ
  44193. à^â ÿÿ
  44194. à^â±ÿÿ
  44195. à^âÁÿÿ
  44196. à^â³ÿÿ
  44197. à^â·ÿÿ
  44198. à^âÇÿÿ:•ÿÿ
  44199. à^â†ÿÿ
  44200. à^â¼ÿÿ
  44201. à^â¾ÿÿ
  44202. eþÿêÀ“å0™âSá°35à5° 5à◰4ùÿÿ:ŴâÁã☓å` áã
  44203. 0 á† Oâ(,Bâ‘•âŴâŴâþàŴâ@Ŵè“åýë ’u0 s0Ât Bp Âs Ŵu☓ u Ŵu s  sç!þÿj ã_ãã“uà •rn,ŵr0 qç{þÿjРáã
  44204. ïþÿj
  44205. þÿ* ã
  44206. B0ãb0`&_ãã    qþÿzþÿêexitquitbye0Ñä3ãñfiñÞ㨕â Ðä Rã÷ÿÿ:A0BâSã  ŵ20Ñä2áñfi3ãôÿÿñfiãï€rê@-é_ã*T•r s  sÿ0 sÀ½h€ý(†Oâáÿÿë†Oßÿÿ †OÝÿÿ €ý•âàÐå>^㇕Nÿÿ áÿÿjçÿÿê@-é°€â@ÐMâ‘åÿ™è»è$™â è@»è@€è á  á  ãýþÿë0ã<à‡@‡ä€-    é
  44207.  @½èòÞã@-é  á`ÐMâqjíajíQjíAjí1jí!jíjíjí°€â@ÐMâ‘åÿ™è»è$™â è@»èàNâ@€è á  á€  ãÜþÿë0ã<à‡@‡äÝìÝì!Ýì1Ýì0Йâ€-    Ã
  44208.  @½èòÞã-é@ÐMâÿ™èX™â4™å á<à€å@ áÿÄã  ãÄþÿëÿãâà‰á@Йâ0ã½èð°­ê-éqmíamíQmíAmí1mí!mímímí@ÐMâÿ™è¸™â4™å á<à€å@ áÿÄ〠 ãªþÿëÿãâà‰á@ЙâÝìÝì!Ýì1Ýì0Йâ0ã½èð°‰ê-é@ÐMâÿ™è\™â4™å áX‡å8™å<à€å@ áÿÄã  ã’þÿëÿãâà‰áXà™å8à‡å@Йâ0ã⇦ý@-é€-é4à‡åwê@½è⇦ýè-éqmíamíQmíAmí1mí!mímímí@ÐMâÿ™è¼™â4™å á¸‡å8™å<à€å@ áÿÄ〠 ãoþÿëÿãâà‰á¸à™å8à‡å@ЙâÝìÝì!Ýì1Ýì0Йâ0ã⇦ý@-é€-é4à‡åPê@½è⇦ýèDebugger ã ãè@-é ã,Oâïöÿÿj4ãôÿÿ
  44209. —☓‽è€O-éôÿÿ뀕½hp ã` áP ã@ áàÒä ^ãóÿ
  44210. Р1€•ý8ÜMâ á BâàÒä ^ãàÁ$ûÿÿ*à ãàAä á á}"ë á á  á1þÿë7ã××!×1×Рပýx€•½è€O-éÐÿÿ뀕½h á`ÐMâqaíaaíQaíAaí1aí!aíaíaí@€âú0éú-éú0éú-é` á€P ã @™â@p™âËÿÿêBreakSet @-éOâ‘è-éÿÎã    ™â      ãÔï áïЙâ€ýè0 á á ãïà aôÿj0ãàòÓ0ãàòÓÿ ãŴã"*à2áà"òÓãý0 áqã  á á ãïòÓsà áèóÿê@-é àMâ
  44211. ^áâóÿ» ÐMâ@ ápãP  á ã)ï Йâ@½hÚóÿj  ã á @€è‹$ë@à ãÄç áÉ"ë Йâ@½èòÞã0 á á ã)ï qòÓsà áÆóÿê0 á á ãïòÓsà á¿óÿê0 á á€ ãïòÓsà á¸óÿê0 á áÄ ãïòÓsà á±óÿê° á á ã    ï qòÛs à á©óÿê0 á áþ ã    ïà a£óÿj â òÓã0 á á@ ãïòÓsà á−óÿê@-é0 á  á á ã° á ïKp@½èòÞs‰óÿê° á0 á áRã
  44212. "2ã      ï0◰p s  q     qòÛs à á}óÿêRãòÞÓ@-é0 á  á á ã° á ïKp@½èòÞspóÿê0 á áÿ ã    ïòÓsà áióÿê0@-é
  44213. ]ádóÿ»@ áP á á—$ë€âÀã$☓å á á{ë ãpãàãà ☓å á0@½èÿÿÿêð@-é àMâ
  44214. ^áMóÿ» ÐMâp á$à–å` áÐMà @–åtã
  44215.  á–å –å0 ã0Æç9"ë á á  ã&ë  ã á( â0 ã,P ã ïjtã
  44216. 3ã÷ÿÿ
  44217.  @åtã   Ðŷâð@½èòÞsòfiã0@-é àMâ
  44218. ^á$óÿ» ÐMâ@ áP á á   ã"ëE☓â™åS$ë™å á á  ãë Ð™â0€ýèq@-é
  44219. ]áóÿ»@ áP á` áã“1
  44220.  “å`€àv"ë:à ãàÆäã“1PÅ
  44221. PŶã:à ãàÆä  “å á`€àh"ëã“1PÅ
  44222. PŶãã.à àÆ “å á`€à["ëã“1
  44223. ã.à àÆ “å á`€àP"ë ãÆåq€ýè0@-é
  44224. ]áÛòÿ»P á@°á ã   ãq"ë ãK
  44225.   á0 á ã°Òä;ã,; ;1
  44226. .;ã
  44227. :;ãöÿÿ ã€<àBâ>á0 ã Ŷå€ãàŵâ°Òä;ã,; ;
  44228. .°;âøÿÿàBà àŶå0 ááÿÿêàBà àŶåê1ãàBàB á ^ãØÿÿÚ €ãê@Ŷå€ãàBààNâàŶå°Òä:;ã ŵÜÿÿ
  44229. ;ã ;,;Çÿÿ0 ã1ã 0 1ã
  44230. €ãŶåàBààNâ ^ã €ÃàŶå3ã€0ŶàAàNàŶ0€ýèEJâð°á@-é@Cå°á€ýë@“å@C
  44231. åùÿÿê0ãòÞ‘å ã €òÞ ãòÞ@-é‘åÿÿë‡u‘u©þÿë@½è sŴuòÞsòfi〠Áã€âŴãê‘å³þÿê‘åòþÿê‘å·þÿêrawvdu:ã òÞðC-é` áp á€ áMJâP“ä5ã
  44232. à”å>ã@Ŷøÿÿê  ãéëðC½hòficP á“äŶåP☓ä á°áàÐ>
  44233. ŴþÿëŶu{spŶu qðC½èòÞsòfiã¤OâxþÿëŶu|s€pÇspŶuôÿÿê‘å¢þÿêâÎã@-é‘è€ã0 á  á á0Sâ€ý¸Òä
  44234. Pã
  44235. ïøÿÿz  s ôÿÿzòÿë@½èòfiãRã€ýØ0 á  á á ã ï€ýxóÿÿê ï s òÓsò›ã0 á
  44236. 0ã÷ÿÿ
  44237. ïòÓsò›ãâÎãüC-é
  44238. ]áòÿ» ‘è€ã á áD Oâ0 áKëü◰ýxüC½èøñÿê á8ëü◰ýxüC½èòfiã0 á ïòÓsò›ãâÎã@-é ‘è€ã á á0™â† O8 O5ë€ýx@½èâñÿê0 á’èÿâ
  44239. P〠ï s òÓsà áÖñÿê’è€ã0 á  áÒäPã
  44240. 0
  44241. ïùÿÿzà áÉñÿê0ãòÓ ï s ñÿÿzöÿÿê  á@-éõ"ë °á@½è>þÿòÞãÿA-éàMâ
  44242. ^áµñÿ»ÐMâà−å>ã‘â −å0 á0²è0ã.
  44243. Táúÿÿ:PŶà@☓â áDë2jà−å⇨åà™åà™å>ã@⇨åP⇨å P−å(P⇨倠ã,€⇨å
  44244. ‡å@‘ä4ãüÿÿ
  44245. ™å“åà áð−å`−åaŷàp„å7ã
  44246. €⇦â–å“åà á ð−å`¢õÿÿª“åp☓å@ŷåPUâ
  44247. @°áéÿÿãÿÿêà ã,à⇨åê$€⇨å‡åPãjЙâÿA½èòÞãà−å>ãùÿÿÿÿÿêЙâЙâþ@½èòfiãH? ôÿ@ÿ€ÿÄÿÿD  ãÐä1ãâ"!ûÿÿŵ‹à¢±à  Ŵà áµŴà5‘à »«àº⇧à:›à ¶«à⇧kàBà Pãð°1 @âð°á  ãÐä1ãâ"!ûÿÿ‹à"±àŴ6‘à ±à #Ŵà4 ásá"¡àaàBà@Pãð°1@@âð°á  ãÐä1ãâ"!ûÿÿ" á áŴŴà€3‘à ¡àŴà›à#¡àŴaàBà€Pãð°1€@âð°á  ãÐä1ãâ"!ûÿÿ‹à"±àŴpá ±àaBà Pãð°1 @âð°á  ãÐä1ãâ"!ûÿÿŵ  á¢ á‘à"¡àŵ‘ࢱàŴaBà Pãð°1 @âð°á  ãÐä1ãâ"!ûÿÿ  á" á‘à"¡à‘à"±àaBà Pãð°1 @âð°á  ãÐä1ãâ"!ûÿÿŵ
  44248.  á¢ á‘à"±àŴaBà Pãð°1 @âð°á  ãÐä1ãâ"!ûÿÿ
  44249.  á" á‘à"±àaBà
  44250. Pãð°1
  44251. @âð°áðC-éàMâ
  44252. ^áÆðÿ»ÐMâ5ã@P•u\Ŷ5ãP P™å€°ál€•u…⇦p°áp•ŷ|`°áÐ`OlFPŴâPÅã@°á‘B0 ãNë‘ q@⇨uP⇨u`⇨u p⇨u€⇨uà‡uà⇨uíþÿ{ЙâðC½èòÞsòfiã0ãòÞB-é
  44253. ]áfiðÿ»‘ áë−u'{⇨u     q${B½èòÞsòfiã0ã‘1  −2òÞðB-é
  44254. ]á⇧ðÿ»‘ á@−åP áp á“ä0ãüÿÿ
  44255. `‘åà áð áj`å°áPE÷ÿÿPUâòÿÿ P⇨åðB½èòÞsòfiã0ã  ‘2òÞðB-é
  44256. ]áoðÿ»‘ áp áP á@−å`“ä6ãüÿÿ
  44257.  áà áð áj`„å6ãPE÷ÿÿPUâòÿÿðB½èòÞã áðB½èòfiã0ã 0‘3òÞðC-éàMâ
  44258. ^áQðÿ»‘ áp áP á@−å`“ä6ãüÿÿ
  44259. €Dâ áà áð áj0ã
  44260.  á`„å−åQãà ð j`⇦å −å@â ⇨å$−å@â$⇨å(−å@â(⇨å`Hâ€ŷâ`„å6ãPEâÿÿPUâÜÿÿðC½èòÞã áðC½èòfiãB-é
  44261. ]á"ðÿ»‘ áë ‘ Ŵ −@ ⇨ ŵýè0B-é
  44262. ]áðÿ»‘ áë
  44263. @‘åP á−åQãà ð @Ŷu −u@r ⇨u0B½èòÞsòfiã0B½èòÞãðB-é
  44264. ]áðÿ»‘ áP á(à−åà‰â(à⇨å áà áð−åp−åqà$@−å`–å6ã
  44265. „å áà á ð−å@☓pŷÂõÿÿʺ$@⇨å á áðB½èñÞã$@⇨å áðB½èñfiã0B-é
  44266. ]áßïÿ»‘ á@ áP á−åà áð−å0ŵ½hà”åà€åŶå@€å à−åà‰â à⇨å,−åQã −5R10B½(òÞ#þÿë0B½èòÞsòfiãðB-é
  44267. ]áÄïÿ»‘ áp á(à−åà‰â(à⇨å áà áð−å`−åaŷà$@−åP„å5ã
  44268. ”å áà á ð−å@☓`ŶÂõÿÿʺ$@⇨å áðB½èâÎãñfiã$@⇨å−åà áð−åðŵ½hP€åŷåp€å −åŴâ ⇨å,à−å^ã −5R1ßýÿ;ðB½èòÞsòfiã ‘åð°á0ã  ‘2ð°ðC-é
  44269. ]á™ïÿ»‘ á€ ãp áP á@−å`“ä6ãüÿÿ
  44270.  áà áð á€⇦`„å6ãPE÷ÿÿPUâòÿÿ áð◰ýè0ã 0‘3   ð°°‘å2ã
  44271. ðC-é‘ á@ á P áp á€ á`”ä6ãüÿÿ
  44272.  áà áð á`☓`„å6ã€H÷ÿÿ€Xâòÿÿ€☓ä     áDà! áð◰ýè0ã 0‘3   ð°°‘å á œä2ãüÿÿ
  44273.  Ŵä ‹å2ã0Cúÿÿ0Sâõÿÿ0ŴäAà! áð°á0ã °‘;   òÞ@-é
  44274. ]á6ïÿ»@ áÜÿÿë á “å •â 0“åOï!p!p!p@½èòÞsòfiã‘å’åH-éà á ð á⇦½è0ã °‘;   òÞ0@-é
  44275. ]áïÿ»@ áP á†ÿÿë à à à  árãh O 0“Oï!p!p!p0@½èòÞsòfiãÿ ã‘
  44276. åð°á@-éÀï$ãåà‰â$ã
  44277. å€ýè@-é$å@âPãº$
  44278. åÁï€ýèPã$
  44279. ¥Á¯$åë€ýè@-éâ$!$
  44280.  Å€ýè@-é$åôÿÿëà ã$ã
  44281. åÂï€ýèH-éPãd ³ºPád #  1d 3î;Äï⇦ýè@-é$ãå>ãÓÿÿûÿÿ€ýè @-é¿ë @½èòÞã@-éë q@½èòÞsòfiã °á°
  44282.  ãRá¨*‘à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA °à¡àQáA  àòÞã0 ã  ã ã ãñÞãùÿÿ
  44283. 0 á  á ã ãñÞã@-épÿÿë  á0 ã ã€ýèSãRñfiSáRíÿÿ*áÎã3ãðÿÿ
  44284. 0@-éà ã ‹à0£à@RàPÓà  !0 !à¾à÷ÿÿ: á ã0€ýè    òÞã! ã
  44285. åàã ãòfiãÀ0°á`B °á
  44286.  bB1#BRá* ã° áAÿÿëãa3ã`BòÛCPãòÛ3" ã
  44287. åàãòœã! ã
  44288. åÃàá âòfiã    ãa3ã`BòÞã@-éÙÿÿë@½è qòÞsòfiã@-éë q@½èòÞsòfiã1ã
  44289.   ã0 ã¹ ã á‘à0£àSá0C   ŵ ë°°áøÿÿ: á áð°á! ã
  44290. åÿ  ãÿ€ãòfiã@-éë q@½èòÞsòfiãÀ0°á`B1ã
  44291. aB1#BQáÇÿÿ*@-é  ãà ã¹ ã á‘àà®à^áàN   ŵ ë°°áøÿÿ:ãn 3ã@½èbBòÞC á    PãòÞ³" ã
  44292. å  ãÿ€ãòfiã! ã
  44293. å3ãà〠A  Qòfiã ã  ã0 ã‘à ¢à‘à ¢àŴà°Ŵà°⇧â RáŴ"  B 0Sâóÿÿ áð°áâÎãPãëÿÿÊð°’! ã
  44294. åàãòfiã@-é / á‘à ŵ"(ŵàè’à!(¢à$ŵàfià.,¢à"ŵàâ’à!.¢àŵŵà@àQã¢âA"€ýè@-é / á€‘à ŵ"(ŵàè’à!(¢à$ŵàfià.,¢à"ŵàâ’à!.¢àŵà@àQã¢âA"€ýèÿþýüüûúùøø÷öõôôóòñððïîíììëêéèèçæåääãâáààßÞÝÜÜÛÚÙØØ×ÖÕÔÔÓÒÑÐÐÏÎÍÌÌËÊÉÈÈÇÆÅÄÄÃÂÁÀÀ¿¾½¼¼»º¹¸¸·¶µ´´³²±°°¯®­¬¬«ª©¨¨§¦¥¤¤£¢¡  flfi‡††œŒ−——–„”““›‹’‘‘•‰™……⇧⇩⇨⇦⇦ŷŶ☓☓◰ŵŴ€€~}||{zyxxwvuttsrqpponmllkjihhgfeddcba``_^]\\[ZYXXWVUTTSRQPPONMLLKJIHHGFEDDCBA@@?>=<<;:9887654432100/.-,,+*)(('&%$$#"!  
  44295.      áOâ¡Pç€Aà€Aà
  44296. A"€"ð°á
  44297. Pãôÿÿ:@-é . á€‘à ŵ"(ŵàè’à!(¢à$ŵàfià.,¢à"ŵàâ’à!.¢à€^à  ÂàŵàŴà@à
  44298. Qã¢â
  44299. A"€ýè2ãÓþÿ
  44300. !8°á! ¸°á  @-é›à’àœà’ °œà@½è8◰" ‘à+£àQá*QãPþÿ⇩    òÞã! ã
  44301. åàã ãòfiã0°á`B1ãaB0àAÃ0 á2ãÉþÿ
  44302.  bB1#B@-éÔÿÿë½è¸þÿzòœã á@ •âÿâ! Ò°áð°ÿã!<Ò€°áð°ÿã!<Ò€°áð°!<Òç€àð°á  Ñç€âòÞã Ñç€âòÞã Ñç€âòÞã0•âÿãóÿÿÿãôÿÿÿ ãõÿÿÿãñòÞ! ã
  44303. åàãòfiãÿŴå ãð°á Pãúÿÿ:@-é0 ãà ã  ãpN áã$D  ŵ$A 4ãùÿÿ2ã
  44304. Rá0 1° 1à‰â^ãïÿÿ: à á  ãÿ0 ã ànâ° áráàNüÿÿ
  44305. sNà@⇧äsÐáàN÷ÿÿKà  á€ýèŴ-í ½èã ã°á2
  44306. " áAâ’â°q¢ñfiÓ◰µ°áŵ% £*ŵ1à3ñfi!ŵãaâ2 áàãñÞã!Âã" áAâ’âñfi³Qã
  44307. ª◰µ°áŵ% £*ŵ1à3ñfi!ŵãaâ2KààãñÞãñfiÃ3ãŵ3ñfi ãàãñÞãŴ-í ½è ããñfi°á2
  44308. " áAâ’â °q¢ñfiÓ◰µ°áŵ% £*ŵ1à3ñfi!ŵãaâ2 áàãñÞã@-é
  44309. ]áfiëÿ»Pã  Ó€â@Àã ☓â€â뀽h@€å €â¤ç  ã ☓å ☓å@€å€å@½èòÞã0ãð°‘å ’å2ã ûÿÿ€å’å€åð°á0ãòÞp@-é@ áP‘å`”åVã    
  44310. ”åëP qøÿÿzP☓åà ãàŶåà”åà☓åp€½èP☓å`Ŷåà”åà☓å áöëp@½èòÞsòfiã0ã
  44311. ‘è0‹å3ã ‹1 ñfiàãñÞã0ãòÞp@-é
  44312. ]áVëÿ»@ áP‘å”å0ã
  44313. `‘åÜë`Ŷuøÿÿzp@½èòfiã“å”å0á    `”å6ã
  44314. Ðëôÿÿjà ãàŷå`☓å `„å`☓åp@½èòÞã  á ãÿÿÿê‘è0◰à[á:0€åCàâÎã1ã)ð°á°œå;ã%‘è 0⇧åðA-é
  44315. ]á&ëÿ»@ á€ á` áP“åVápŷ¢pŶ²pÇãâ¡ë“u§wu ’upŴu u q  q0€p⇦☓xðA½xÜÿÿz‘åèAâËìNâ◰à^âðA½òfiWá¥P ÁäÿÿÊðA½èòfiã0œå0◰à[á€(Ìÿÿ*0‘åÓÿÿê‘è œå0CàRà0€” ’ð°’0œå3ã0€°  0œóÿÿ0œå€è ãð°áp-é ` á@ á á ápGàP áßë€à`„å„å FàWáöÿÿ*  á×ë áð€ýè0€å KàWáéÿÿ⇩ á á  á€@½èÌê1ã Ðÿÿ
  44316. €@-é
  44317. ]áÌêÿ»p á‘èàœå0Cà ^àêÿÿŒ0œå3ã0€°  0œõÿÿ0œå€èpGàáÿÿê0 á ›å° á1ã
  44318. ‹å0á ‹2úÿÿ°áñfi ‹å°áñfi 2á ‹›‹åQàñÞõÿÿê‹å0ã  ûÿÿ 2á ‹›‹åQàñÞ 2àñfi ‹åõÿÿê0ã   ð°@-é0‘å›å1ã
  44319.   á ã°‹å °Bà ŴàŴâ ‹å2ãøÿÿ  Ŵâ‘åà›å@ààCà ŵà ŵâ0›å3ãà› °›°K € C ŵ ŵõÿÿ€ýè•ËInternal error‰ËLabel `%s' selection out of range‰ËLabel `%s' not found‰ËBad label component‰ËCan't set label `%s'‰ËLabel too big‰ËMessage too long‘ËToo many labels defined in file (%d)‘ËNot enough labels defined in file (%d)‘ËUnexpected eof‘ËToo many selections `%s', line %d‘ËLabel `%s...' too long, line %d‘ËLabel `%s' already defined, line %d‰ËBad message handle‰ËBad pointer passed to CAssembler_Message@-é ã…ä ãO? ãï …t q s  q…{À€uÉêÿ{€½èÀ†ä<ãòÞ€C-é°†å[ã
  44320. “œålë    ° q°…uøÿÿz°…å€C½èòfiã ã   áÀ†åï s…u€◰½è@-éOâ]Aâ ãï™e@½èòfiã@-é<ã
  44321. ÿã
  44322. à†å>ã
  44323. ^ွ äfiåÿãøÿÿ
  44324. @½è-Oâòfiã@½èQOâòfiã£Oâ Ð™âò@½èòfiã”OâúÿÿêSOâøÿÿêò@-é° ááÿÿë ÐMâóÿÿjp á ` ãP á1ã!àRãïÿÿÚ ãÅå1ãÁ@Äãà×ä^ã Œë qk{àÿÿj÷ÿÿ
  44325. ãX@☓ã ‘å$ëñÿÿzØÿÿê Ð™â1ã!bãñ@½èâÎãòÞòfiã@½èÇOâòfiã@-éà×ä`VâøÿÿJ,^ã^àÅ☓øÿÿ⇩,>ãpGà ãàÅå`ŷâ€ýè`½è ÐMâ½èêÿÿê1ãà àA@½èÚOâòfiã@-éàÐä%^ã    
  44326.  RâòÿÿJ1ãàÁ>ãõÿÿ1ãA ŵâ€ýè-造áØäë
  44327.  ÐMâ`-é` ãP™âÅäØäë
  44328. `Vâ×ÿÿ
  44329. Åäøÿÿêà ãàÅå`½è áë Ð™â ‘×ÿÿHr½èÕÿÿz™å€½èHâ½èàÐäÓÿÿê1ã Bð°@-é RâÂÿÿJ|à ãàÁä Râ¾ÿÿJMà ãàÁäà ãàÁå€ýè>@-éP áà ã ÐäRãîâ"€ûÿÿ⇩., á~à B2(ŵàpá (¢à$ŵàNàAœç á4ã
  44330. “å ë >@½ñÞ@“åõÿÿê>@½èñfiã ã;ã ¤œ …—!ÇãЙâøC½èòfiã ãõÿÿê ãóÿÿê Oâü@âÇãCéÿë ãíÿÿê Oâè@âøÿÿê OâÈ@â÷ÿÿêOâ−å  áòÿÿê Oâ☓@âùÿÿê Oâ´@â ãáçôÿÿêDefaultúC-é° ãŵ á0 ã@ áÔç0◰âPãûÿÿ⇩0◰âA>◰â ãïÕÿÿj° á†å ⇧å°…å  ã¤⇧å  ã€ãà ãá⇧çPâüÿÿZA⇧âÔäPãÁ☓ûÿÿ⇩@ áð ã ãÿ  ãï¾ÿÿj0 áC ã  ã P ã0ï¸ÿÿj`°á ÄO   -¶½ ÄA⇧â ãï ÿÿj0ã¾☓â*ë¤ÿÿj` áÿ ãA⇧â  á0 ãï“ÿÿj ãÆ瀠ãÖä0ã
  44331. _ë"`Fâ€⇦âÖä
  44332. 0ãõÿÿ
  44333. 0ãúÿÿê ãFå€⇦âãíÿÿ
  44334. −å á-éŷë½èçÿÿêã − €!Çã‡åqã
  44335. QáŵÿÿÊ{ÿÿº ã  áЙâøC½èòÞã ãõëoÿÿj‘ ápâFâ⇨åàãŴâQã~ÿÿ*Öä0ãqÿÿ
  44336. :0â÷ÿÿFåÖä<ëüÿÿ`Fâ `⇨åënÿÿjà ãà⇨å%0ã
  44337. Öä%0ã
  44338. 0ãÎÿÿ
  44339.  
  44340. 0ãøÿÿÀÿÿêàÖå%>ã >óÿÿàFåà á`ŷâÖäÎä%0ã
  44341. 0ã¾ÿÿ
  44342.  
  44343. 0ã÷ÿÿ ãNå®ÿÿêÖå 0ãN%0`ŷîÿÿê`ŷâÖä0ã¯ÿÿ
  44344.  
  44345. 0ã¢ÿÿ
  44346. 0à@â
  44347. ^ã,:%0ã 0`FÚÿÿ
  44348. ?0ãÐÿÿ ãÉå ã    Éå  ã ŵâÖäüëüÿÿ2ã −⇨`FâÖäÁä0ã
  44349. 0
  44350. %0ã
  44351. ,0âöÿÿAåìÿÿêÖä%0ã 0,0A`Fíÿÿê Rãÿÿ*
  44352.  Éåà ãàAå0ãsÿÿ}ÿÿê0@â ã⇨åÖä0@â
  44353. PãŴà 1Ŵ‰0Ŵ0øÿÿ:⇨åŴâxëòþÿj ⇨åà ãàÀåvå
  44354. 0ã^ÿÿ
  44355. 0ãgÿÿ
  44356. Öäùÿÿê °á 6ã
  44357. ` ãA⇧â. ãçë0ãA⇧€BOâ   ãæë+ÿÿê ãïÍþÿêЙâ@½èòfiã Oâ”@âùÿÿê‘å Oâ}@âèÿëôÿÿê‘å Oâ−@âùÿÿê Oâ‹@â áõÿÿê@-é@ á° áüýÿëçÿÿj—þÿëôÿÿ
  44358. àÐå>ãèÿÿ
  44359. >ã
  44360. >ãáÿÿQãçÿÿº
  44361. àÐåQáäÿÿÊ ‘åQâ  €
  44362. àÒä>ãüÿÿøÿÿê ‘å ‘å»ë@½èòÞãЙâ@½èòfiãâÎã@-é°°á€ýØýÿëöÿÿj œå-ëóÿÿj …âà‹å >á+‰  ŵúÿÿŵå€ýè@-é
  44363. Pã
  44364.  ³ 0€â ãï
  44365. j:ã ⇩$⇧  á  ã⇩å0Cà0⇩å ã⇩å€ýè™å@½èòfiã@-é€âÀã:ã
  44366. àŒåà^àà⇩UàŒU‰P⇩U⇩P€ýXÜÿÿëõÿÿz€½èD-餜å:ã
  44367. ☓ý
  44368.   á Œå ãï÷ÿÿzЙâD½èòfiã¤⇧å   á ãï☓ýxöÿÿê?@-é−å  ãÐäQãâ"!€ûÿÿ⇩" áràA2Ŵàpá ¡àŴàBàQ⇧à@”å4ã@⇨‘Ŷ?€ý−å“åPëP☓ÂõÿÿÊ@⇨µ‘Ŷµ?€ý¸ ã⇨å?@½èòfiã@-é,àOâBìNâàÞç ã@½èñÞ_0ãñÞñfi@-éTàOâBìNâàÞçã@½èñÞ_0ãñÞñfi 0ã    0ñÞñfiã°á€å€
  44369. ð°á@-é◰Ëï€
  44370. u q@½èòÞs#çÿê@-é@ á€2å☓Ëï@½èòÞsçÿê@-é€"åŶËï@½èòÞsçÿê@-é€åPãŷË s€
  44371. u@½èòÞsçÿêL-é-ª á
  44372. ª áNë…ýèL-é-ª á
  44373. ª á»ë…ýèL-é-ª á
  44374. ª áõë…ýèL-é-ª á
  44375. ª áåë…½èL-é-ª á
  44376. ª á
  44377. ë…ýèòÞã@-é@ á ‘å á ã(øÿë‘""à‘å0‘å0◰àQá0€%0Ŵ% !⇦•2L €2@½èòÞ#òfiãp@-é
  44378. ]áÛæÿ»@ á P“å“å”à`ŷâ`ÆãŷâXë“u  ’u¦w  ŷuŷu `Ŵu`☓u “å”!àŷu€p☓up@½xòÞs‘åèAâËìNâ◰à^âp@½òfi¥P áUãâÿÿ*p@½èòfiãp@-é
  44379. ]á·æÿ»@ áP á”à`ŷâ`ŷâ`Æãŷâ4ë@€u P€u€r¦w€u  s ŷu  ŷu“!pŷu`€up@½èòÎsòfiã0ãð°‘å ’å2ã ûÿÿ€å’å€åð°áp@-é@ áP‘å`”åVã    
  44380.  áëP qøÿÿzP☓åà ã àŶåà”åà☓åp€½èP☓å áëp@½èòÞsòfiã0ã
  44381. ‘è0‹å3ã ‹1 ñfiàãñÞã0ãòÞp@-é
  44382. ]ápæÿ»@ áP‘å ”å0ã
  44383. `‘åöë `Ŷuøÿÿzp@½èòfiã“å”å0á
  44384. `”å6ã
  44385.  áéëóÿÿjà ã àŷå`☓å`„å`☓åp@½èòÞã‘è°Ŵà Rá°€% !òÞ#  ‹å2ãlÿÿ
  44386. ‹åŴà€èAàòÞã‘è°‹å QáA€€Ŷ Ŵð°Ŵ ‹å2ã €‹A€  ð°á1ãßÿÿ
  44387. âÎã ‘è  ŵàSá: €å Bà   á%ê 0›å3ã@-é@ áFÿÿë á@½èzòfiã ›å  ŵà €èîÿÿê1ãÔÿÿ
  44388. ‘è0›åRጠ Bà €å á á   á ê0‘å0›å3ã0€ ›  Bóÿÿ ãð°á1〠𰠑è›åRá B€ð°Ŵ0›å°á › Bð°áâ ‘Ŵ 0  a€‘ð°áã€À!$  À"$  À"$  Àð°áÐåÐå’á @ ð°áÀå!$ á Àåð°áÀå Bà Bâ ÀåB$ á Àåð°á3á°s°ÃûÿÿóÿÿêCorrupt regex program$Oâ+ï
  44389.  ã6ãÖ ×ç âŴá Çç2×å0ã 2ÇÐêÿà ãÖç 0á × Ŵ Çà^â÷ÿÿ*öê
  44390. ° ã6ãòÿÿ«×ç âá áààã0àã àãàã@ è@ èè«×ç âÀá«Ççãê0 ãÿà ã á6ãÖÙçá × Ŵ Çà^âôÿÿ*Õê0 ãðÿÿê0 ãîÿÿê0 ãìÿÿê0 ãêÿÿê0 ãèÿÿê0 ãæÿÿê0 ãäÿÿê0 ãâÿÿê0 ãÿà ã á6ãÖÙçá × Ŵ Çà^âôÿÿ*·ê0 ãðÿÿê0 ãîÿÿê0 ãìÿÿê0 ãêÿÿê0 ãèÿÿê0 ãæÿÿê°Ôä³ÿÿêÿà ã°Ôä⇧± á á6ãÖ Pá* Ôç âá × Ŵ Çà^âñÿÿ*«A☓à„êÿà ã°Ôä⇧± á á6ãÖ Pá* Ôç âá ×ç âŴá Ççà^âðÿÿ*«A☓àŵêà ã2àÇå
  44391. à ã6ãàÖ®×çâ€á®Çç@☓âwêàÔäÔæ ×ç âŴá Ççpê ã2ÇåÔäÔä áA€á@☓àPã7ÊÔå1ã4@☓âÔäÔä áA€á@☓à☓å ãÿÿë0ã)
  44392. ‘å0á☓Êþÿ $ê☓å¹þÿëYjÔä Ôä, áBŴá☓à€åê@☓âêðC-é
  44393. ]áåÿ»p á @–å(P–åPŶà,`–克倠ã á ã  ã0 ãà ã@ è@€è2Çå ã1Çå☓åPãKþÿÍ 7j4á+
  44394. Ôä(Pâñ•0ÿÿêøÿÿêÿÿêöÿÿêõÿÿêNÿÿêmÿÿêòÿÿê*ÿÿê<ÿÿêuÿÿêVÿÿêSÿÿêLÿÿêiÿÿênÿÿê„ÿÿê ÿÿê¦ÿÿêÁÿÿê¤ÿÿê£ÿÿê¢ÿÿêÇÿÿêÆÿÿê>ÿÿê;ÿÿêÞÿÿêÝÿÿêÜÿÿêÛÿÿêRÿÿê=ÿÿêØÿÿêê@ÿÿênÿÿêVÿÿêSÿÿêNÿÿê3ÿÿê ã2Çå☓årþÿë0ã@‘ÊÿÿÿÿÿêðC½èòÞãðC½èòfiã ŵâ@êÒä ŵà=ê ŵâ;êà ãàÅä8êà ãàÅä5êPBâ ŵâ2áõÿÿ
  44395. Òä0ã
  44396. 0ãóÿÿàÒå>ãðÿÿ
  44397. àŶâ`Þä°Þä ¼ áKhŷáàöç>ãèÿÿ0ã
  44398.  Òàöå>ã
  44399.     >ã#>ßÿÿ°Öå⇧Pá*`ŷâ áÖç°â áàvå
  44400. ^ãÑÿÿ*Óÿÿê^ãÎÿÿ:ÐÿÿêàÖå>áÊÿÿÌÿÿêp@-é@ á  “å(0“å0ŵà ã2áp€ýÒä    àPâ¹ÿÿ
  44401. à^âµÿÿ
  44402. à^â³ÿÿŒà^âà^µÿÿŒà^â»ÿÿ
  44403. à^â±ÿÿ:«ÿÿ
  44404. à^â©ÿÿ
  44405. à^â©ÿÿ
  44406. éÿÿê°áÑ0ñfi\0ã
  44407. ^0ã$0(0)0.0[0~0|0*0+0?0îÿÿ ãñÞãÑä0°@â
  44408. [ãùÿÿ:0ã`0'0<0>0@000{0}0W0S0«0»0y0s0Øÿÿèÿÿê@-é
  44409. ]á,äÿ»4 ãÈë@½è €u$ €u,0€uòÞsòfiã@-é
  44410.  ã ãeýÿë⇦
  44411. u€½è@-éP ã ã_ýÿë☓
  44412. u€½è0ãòÞ@-é
  44413. ]áäÿ»@ á0ÔåPã “œ s ☓u q–{@½èòÞsòfiã@-é⇦åPãlýÿj⇦
  44414. å☓åPãgýÿ☓
  44415. u@½èòÞsòfiãThis regular expression code is based on source that is CopyrightFree Software FoundationFor source code to THIS, send a disc to: Cy Booker, 86 Church View, Main Road, Crockenhill, Swanley, Kent. BR8 8JW.  United Kingdom.‡åÿ 0ãð°€à ã  áÝýÿê‹ËInvalid NOT operator in regex pattern‹ËNesting too deep in regex pattern‹ËUnmatched close bracket in regex pattern‹ËRegex is too complicated›ËOut of memory compiling a regex‹ËPremature end of regex pattern‹ËUnmatched open bracket in regex pattern‹ËIllegal \%c in regexOOâêFOâêøOâþêÐOâüê¸Oâúê†Oâøê€Oâöê á`Oâlãÿëòê ãã€Æäÿ  ã™åÿ“ ãNê ãöÿÿê ãôÿÿê ãòÿÿê ãðÿÿê ãîÿÿê ãìÿÿê  ãêÿÿê ãèÿÿê ãFà™åã€Æäÿ“ ã6ê ãöÿÿê ãôÿÿê ãòÿÿê
  44416.  ãðÿÿê  ãîÿÿêuåŶâ¹ë5áP ° a”åÉÿÿê…å  ã Öå0Ðäá  ŵ °⇧à [ãùÿÿ:° ã ÆäQâôÿÿÊ `FâIêÕä\0ã]0-0ð°w0ãà èÿÿ
  44417. y0ãà åÿÿ
  44418. s0ãà âÿÿ
  44419. ‡å1ãÖÿÿ
  44420.  !Ñç0âáÒÿÿ
  44421.  Ŵâ Ñä0áûÿÿ  ãÖç0Ñç‘áÆ Râùÿÿ*(ê-éuåŶâë5áP 0 ° ½è7”å™ÿÿê0Õä\3ã]3-30
  44422. w3ã Ŷÿÿ
  44423. ‡å1ãèÿÿ
  44424.  !Ñç0âáäÿÿ
  44425.  á|ÿÿêFà™å     ãã€Æä`ŷâ á ã   ãlë° ãÕä0ãhÿÿ
  44426. ]0ã
  44427. \0ã®ÿÿ
  44428. 7ã×àÕå->ã  Öç âŴá Æçîÿÿê0Õå]3ãð°PŶâ3ãTÿÿ
  44429. \3ãÉÿÿ
  44430. 7ã0×PáâÿÿÊ Öç âŴá Æç€â÷ÿÿê ãàÖç>ã@ûÿÿ
  44431. Pã ³€¢Få`ŷàÿ“ ãœêÿã0ÿÿFà™å ãÆä0@âÆäÿ“ ã’ê‘⇨âÿã‰$ÿÿêÿã"ÿÿ‡å€à ã ŷâ0 á´üÿë`ŷâÆþÿëFà™å`ŷâÿ ã™åFà™åÿ“ ãzêÿãÿÿ™å⇦å&üÿë j°‡å(°;â
  44432. °‡å°⇧â°™å
  44433. [ãà 3àÆ4°Æ4Fà ‡åà‡åH€è™åÿ ã™å™åÿ“ ã`ê)0ã^
  44434. øþÿêÿãòþÿ™å†þÿë⇦åüÿë0ãðþÿ
  44435. H‘èà™å™å™åÿ“ ã;ã‡åìÿÿ
  44436. }0ãæþÿ ãÆä°ÆäGê ãÆäÆäÿ“ ãBêFà™åãöÿÿ  ã ÆäFàÿ‘    â—⇨á ãÆäÆä5ê7ã×ÿYã)Ø7ÿQ3ìÿÿ* Õå7ã ×*2ã+2?2åÿÿ
  44437. ããÿÿÆäŴâ)Èç"êÿã‘IPE~ éÿÿ‡åÿ 1ãæÿÿ
  44438.  ã ÍåÍå+0â Í?0âÍÕå0ã
  44439. \0ãŶâц 7ã×?0ã+0*0P íÿÿ
  44440. Ýå1ã   ‡ ŵ B%üÿ`ŷ‡å€à ã ŷâ0 á%üÿë`ŷâ Ýå1㇀  €0 üÿ `ŷÿ“ ãÿ ã™åèê á áuëP á­ÿÿê0Pâ1QQQQQQQQðÿÿ
  44441. }þÿº‡å1ãñÿÿ
  44442. ° ã !Ñç0âáìÿÿ
  44443.  Ŵâ Ñä0áûÿÿFà™å     ãã€Æä`ŷâ á á   ãÁëÿÿêÕä$ @â—Râñ•0âÿÿê☓ÿÿêàÿÿêßÿÿêlþÿê€ÿÿêÿÿê~ÿÿê}ÿÿêÙÿÿêØÿÿêzÿÿêÖÿÿêÕÿÿêÿÿêÿÿêÿÿêÿÿêÿÿê ÿÿê ÿÿê
  44444. ÿÿê    ÿÿêÿÿêÊÿÿêYþÿêÈÿÿêYþÿêiÿÿêYþÿêÄÿÿêÃÿÿêÂÿÿêÁÿÿêÀÿÿê¿ÿÿê¾ÿÿê½ÿÿê¼ÿÿê»ÿÿêºÿÿê¹ÿÿê¸ÿÿê·ÿÿê¶ÿÿêµÿÿê´ÿÿê³ÿÿêXþÿê±ÿÿê°ÿÿê¯ÿÿêRþÿê­ÿÿê¬ÿÿê«ÿÿêMÿÿêLÿÿê¨ÿÿêJÿÿê¦ÿÿê1þÿê¤ÿÿê£ÿÿê¢ÿÿê¡ÿÿê ÿÿêflÿÿêfiÿÿê‡ÿÿê†ÿÿêœÿÿêŒÿÿê−ÿÿê—ÿÿê–ÿÿê„ÿÿê”ÿÿê“ÿÿê›ÿÿê<þÿê’ÿÿê‘ÿÿê•ÿÿê0þÿê™ÿÿê4þÿê⇧ÿÿêèþÿê,ÿÿêÿÿê*ÿÿêŷÿÿêŶÿÿê☓ÿÿê◰ÿÿêŵÿÿêŴÿÿê€ÿÿêÿÿê~ÿÿê}ÿÿê|ÿÿê{ÿÿêzÿÿêyÿÿêxÿÿêwÿÿêvÿÿêuÿÿêtÿÿêsÿÿêrÿÿêqÿÿêpÿÿêoÿÿênÿÿêmÿÿêlÿÿêkÿÿêjÿÿêiÿÿêhÿÿêgÿÿêfÿÿêeÿÿêdÿÿêcÿÿêbÿÿêaÿÿê`ÿÿê_ÿÿê^ÿÿê]ÿÿê\ÿÿê[ÿÿêðýÿêYÿÿêXÿÿêWÿÿêVÿÿêUÿÿêTÿÿêSÿÿêRÿÿêQÿÿêPÿÿêOÿÿêNÿÿêMÿÿêLÿÿêKÿÿêâýÿêðC-é àMâ
  44445. ^á%áÿ» ÐMâP á@ á ™å €“å,p“åà ã1àÄå$à“å>ãÈ ã$☓å†ë§j€ áà ã0àÄå` áÿ“ ãÿì ãà™åà™åàFàà™åà ãà™å⇦åPãeúÿáüÿ „jÕä0ãg
  44446. $“å"AâàFà^á~*\0ã4ÿÿ
  44447. 7ã×$ @â[Râñ•0»þÿêflýÿê¹þÿê¸þÿê·þÿêoþÿê⇧þÿêÅþÿêÄþÿê²þÿê±þÿê¥ýÿê¯þÿê®þÿê­þÿê¬þÿê«þÿêªþÿê©þÿê¨þÿê§þÿê¦þÿê¥þÿê¤þÿê£þÿê¢þÿê¡þÿê þÿê°þÿêfiþÿê‡þÿê†þÿêœþÿêŒþÿê−þÿê—þÿê–þÿê„þÿê”þÿê“þÿê›þÿê‹þÿê’þÿê‘þÿê•þÿê‰þÿê™þÿê…þÿê⇧þÿê⇩þÿê⇨þÿê⇦þÿêþÿêŷþÿêŶþÿê☓þÿêàýÿêŵþÿêŴþÿê]ýÿêþÿê~þÿê}þÿê|þÿê{þÿêzþÿêyþÿêxþÿêwþÿêvþÿêuþÿêtþÿêsþÿêrþÿêqþÿêpþÿêoþÿênþÿêmþÿêlþÿêkþÿêjþÿêiþÿêhþÿêgþÿêfþÿêeþÿêdþÿêcþÿêþÿêaþÿêþÿêÖüÿëÿã‘I~ PEZþÿ⇦åúÿë.ýÿ
  44448. Fà(☓å0Ôå0ã
  44449.  á$☓åëj ☓å á€ûÿëj áüÿë á Ð™âðC½èòÞã0àÔå>ãýÿ
  44450. $“åÈŴâÿ Qãýÿ*$☓å á`Fàë ☓u€ q`ŷpUupÿÿzà‘äèNâËìNâ◰à^âýÿ
  44451.  Ð™âðC½èòfiãàãXЙâðC½èòÞãXЙâðC½èòfiã☓åúÿë0ãôÿÿ
  44452. `‘è5ã§÷ÿÿêP‡åT‡åŴåFà(Ŵåëÿÿê4áfi
  44453. Vå9ãÙ
  44454. 0ã−
  44455. éÿÿê4áçÿÿ
  44456. Vå9ãÙ
  44457. 0ã’áÿÿê6á‰
  44458. Öå9ãÙ
  44459. 0ã⇨
  44460. Ùÿÿê6á×ÿÿ
  44461. Öå9ãÙ
  44462. 0ãŴÑÿÿê6á~
  44463. Îÿÿê6á{Ëÿÿê6áx
  44464. Èÿÿê6áuÅÿÿê  ãà ãVáÁÿÿ*…åÖå9ãÙÐçáºÿÿ
  44465. 6ág
  44466. Vå9ãÙÐçáa
  44467. ±ÿÿê  ãà ã6á\
  44468. …åÖå9ãÙÐçáU
  44469. 6á¤ÿÿ
  44470. Vå9ãÙÐçáM‡ÿÿê  ãà ãÖÿÿê  ãà ãçÿÿê  ã6á“ÿÿ
  44471. …åVå9ãÙÐçá™ÿÿ
  44472. 6á:
  44473. Öå9ãÙÐçá4
  44474. ☓ÿÿê  ã6á0
  44475. …åVå9ãÙÐçá)
  44476. 6áxÿÿ
  44477. Öå9ãÙÐçá!qÿÿê  ãØÿÿê  ãéÿÿê6á
  44478. Vå9ãÙÐçã
  44479. dÿÿê6ábÿÿ
  44480. Vå9ãÙÐçã [ÿÿê…å6áóÿÿ
  44481. Öå9ãÙÐçãäÿÿ6áÿ
  44482. Vå9ãÙÐçãùIÿÿê6áGÿÿ
  44483. Vå9ãÙÐçãð@ÿÿê6áí
  44484. Vå9ãÙÐçãç
  44485. 7ÿÿê…å6áóÿÿ
  44486. Öå9ãÙÐçãäÿÿ6áÛ
  44487. Vå9ãÙÐçãÕ
  44488. %ÿÿêVá#ÿÿ*Öä9ãÙ
  44489. 0ãÍÿÿêVáÿÿ*Öä9ãÙ
  44490. 0ãÅ
  44491. ÿÿê  ãVáÿÿ*…åÖä9ãÙÐçáº
  44492. ÿÿê  ãóÿÿê  ãñÿÿê  ã6áÿÿ
  44493. …åÖä9ãÙÐçá«
  44494. ûþÿê  ãóÿÿê  ãñÿÿê6áõþÿ
  44495. ÕäÖä9ãÙ0áfiîþÿê`ŷâ6áŒ
  44496. Öå9ãÙÐçáöÿÿ›ê  ãà ã6áàþÿ
  44497. …åÖå9ãÙÐçáÙþÿ
  44498. 6áèÿÿ
  44499. Vå9ãÙÐçáâÿÿ
  44500. Ðþÿê  ãà ãêÿÿê6áËþÿ
  44501. Öä9ãÙÕä€QáÅþÿ*° ã¡!ÕçàâáPŶn¾þÿê6á¼þÿ
  44502. Öä9ãÙÕä€Qáe*° ã¡!ÕçàâáPŶ_
  44503. ¯þÿêÕäGàQá«þÿ:Öä9ãÙ Õä1á¥þÿPâ÷ÿÿÊQêÕäP‡å!±ç(’åGàPáœþÿºQãHÚÒäàÖä9ãÙàÙ0á‹þÿQâöÿÿÊ>ê☓å¦øÿëÕäÕä áA€áPŶà6ê☓å‘øÿëŴþÿjÕä Õä, áBŴáŶàB€è,ê☓åŷøÿëà sà€uêÿÿztþÿêÕäP‡åaŴç"êÕäP‡å±çFà(ŴåêðC-éXàMâ
  44504. ^áÉÞÿ»XÐMâ4ã@™P@™å@ á`☓àT`™å P‘å(€‘å€Ŷà,‘‘årãp☓ ò pŷP‡å ãP  ãPë☓åPãøÿ‹úÿ MþÿjVáNþÿ⇩5áTþÿ
  44505. Õä(Pâñ•0Ë    êUþÿêdþÿêsþÿêxþÿê}þÿêªþÿêåþÿêÿÿê)ÿÿêpÿÿê2ÿÿê3ÿÿê‡þÿêÈþÿêAÿÿê”ÿÿêÿÿê¨ÿÿê­ÿÿê¤ÿÿê¥ÿÿê´ÿÿê¹ÿÿê¼ÿÿê^ÿÿêIÿÿêCþÿêRþÿê\þÿêaþÿêwþÿê£þÿêïþÿêÿÿêÿÿêeÿÿê'ÿÿê(ÿÿêŷþÿê°þÿê ЙâðC½èòfiãðC-é àMâ
  44506. ^áyÞÿ» ÐMâ@ á€ á‘ áp á™è,P–åxã § € €™(–åPãÚ –åÐå0ã ‡è0 ã”ÿÿëáÿÿjP㠣ೠЙâðC½èòÞãàãúÿÿê` ãVáúÿÿª2à×å>ã
  44507. ° ãÙç5ãÕ ×ç âá`ŷâVáõÿÿº>ãêÿÿ
  44508. ‡è0 ávÿÿëÂÿÿjPã`ŷÒæÿÿÚ áÞÿÿê á1ã•Ŵ…å1ã…
  44509. ð°áBOâ…
  44510. åòÞã@-é@ á€ât
  44511. ëà sà€u @€u@€uà☓pà€u€½è0ã‘A€ €ð°ám
  44512. êPã‘ÅPàÃñfiÃàãñÞã0ãòÞ‘å ‘åQáòÞÓ@-é
  44513. ]áÐÝÿ»d
  44514. ë‘u€u s€u€½è  á ãÿÿÿêâÎã‘è0Sະ⇧à€è1ãK€ð°@-é
  44515. ]áºÝÿ»@ á €à@à° ë á á€ýèð@-é
  44516. ]á°Ýÿ»P á` á  ‘åpRà*@ á á ãäîÿë‘""à ápBà‘åŴà@ á5
  44517. ëð@½hòfic@€å‘è0◰àà⇧à@€è°á €ð€ý@ á ☓à  á… ë á áð€ýè‘è°Kà[ã0◰ €¨ð°¡°⇧àKâ0◰à° ã€è ãð°á‘è°Kà[ãº0◰à€è °€à°á  r   áð°á°⇧à Kâ0◰à° ã€è °€à°á ð°@-é
  44518. ]ájÝÿ»  áb ë ã€ýèŴà€âð°áAà@âð°á‘è  Ŵà BàKâð°áð€è ãð°áœËAttempt to longjmp() out of an atexit() routine,#å2ãDO+ð‘è°á ð°á@-é
  44519. ]á@Ýÿ»@™â(0•â  •âQë@½èòÞs;Ýÿê0 áïò›còÓ3àãòÓã0 á  á ã⇩ ãïð á 0Oâ< OâÿÎãàÑä>ãüÿÿŴâÿÁãÿÎãÿãâà‰á@-é
  44520. ]áÝÿ»@™â2ë@½èòÞsÝÿê@-é
  44521. ]áÝÿ»@™â@0•â •â!à!à!à%ë@½èòÞsÝÿêÑäòÞã–Ë_scanf() internal error qå0áòÞ0Oâòfiã@-é
  44522. ]áüÜÿ»@™â,0•â •â!à!à!à
  44523. ë@½èòÞsôÜÿê  á
  44524. ïòÒsò‹ã  á ïòÒsò‹ãðC-é<ÐMâ$ ™å 0™å(@™å@ á8™å‘ ã€ÔäXãÁ
  44525. à á$ð‡åÓj‘⇨âP ãP㲺%8ã£p ã`àãÿPÅã€ôåyàXâñ•0Áê™ê¿ê¾ê½ê¼ê»êºê¹ê¸ê·ê¶êµê´ê³ê²ê±ê°ê¯ê®ê­ê¬ê«êªê©ê¨ê§ê¦ê¥ê¤ê£ê¢ê¡ê êflêfiê‡ê†êhêŒê−ê—ê–ê`ê”ê“ê›ê‹ê’êHêGêFêEêDêCêBêAê@ê?êŷêŶê☓ê◰êŵêŴê€êê~ê}ê|ê{êzêyêxêwêvêuêtêsêrêqêpêoênêmêlêkêjêiêhêgêfêùêdêcêbêaê`ê_ê^êÚê~êdêcêbêê*êVêUêêSê êXêPêOêNêêLê~êJêIêQêŒ−−°ãE€PŶã0`Hâàå€ôå0 Hâ
  44526. Rãyÿÿ*Váaŷ0ŷ`‹0÷ÿÿ:9êPŶãqÿÿê PŶãoÿÿê±ãPŶlÿÿ
  44527. 1ê(0‡å ›ä(0™å‘ŵåê Pã    à@^⇩à á$ð‡å*j‘⇨âPãõÿÿª    ê-0ãPŶ+0’
  44528.  
  44529. € ã00ã[à á$ð‡åj‘⇨â`VâPtÚx0ãX0€ b€ áà á$ð‡åj‘⇨â0 áaSã 0C"ASã7 C"$  300Câ
  44530. Sã  1`VâS€ 3K:à á ð‡åÿj áYꀠã*ê Pã    à@^⇩à á$ð‡åôj‘⇨âPãõÿÿªÓꀠã00ã)à á$ð‡åêj‘⇨â`VâPBÚx0ãX0?Íÿÿê Pã    à@^⇩à á$ð‡åÛj‘⇨âPãõÿÿªºê
  44531. € ã-0ãPŶ-07ê
  44532. € ã Pã    à@^⇩à á$ð‡åÉj‘⇨âPãõÿÿª¨ê+0ã)
  44533. 0 Pâ¤:Rá
  44534. R3:
  44535. Rãfl:aPã  B¢ BâRãŒ*
  44536.  ŵâ—''àà á$ð‡å²j‘⇨â`Vâ
  44537. 0 PâRá
  44538. R3ôÿÿ:
  44539. Rã:aPã  B¢ BâRã
  44540.  ŵ2ìÿÿ:ãŴãpg(0‡å ›ä(0™åpŵä\Ŷâyêà á$ð‡å„j‘⇨âPãvº`VâÍÿÿsêà á$ð‡å™j‘⇨âPãmº`Vâeÿÿjêã(0‡ ›(0™€ã` Vã_
  44541. ` ³p áãÇà á$ð‡åxj‘⇨â`VâPöÿÿÊ6ã\ŶQ
  44542. Sê0àãpàã€àãààã ™â⇦Aŵè⇦Aé€ôå^8ãPŶ€ô8ã^
  44543. PÅã0 ã¨!Ýçàâ.Âá¨!Íç€ôå]8ã
  44544. 8ãS
  44545. -8ãPÅãòÿÿpôå7ãL
  44546. PŶã€TåXáïÿÿª€⇦â¨!Ýçàâ.Âá¨!ÍçXáøÿÿºçÿÿê\Åãã$
  44547.  ™â⇦A‹è0àápàá€àáààá⇦Aŵè⇦Aé0àápàá€àáààá⇦Aéê Pã    à@^⇩à á$ð‡å-j‘⇨âPãõÿÿª ê ã    0 ãp ã€ ãà ã ™â⇦Aŵè>< ãp ã⇦Aé\Ŷãã(0‡ ›(0™p á€ ã☓⇦ãh⇦⇦á6ã
  44548. P㺠1ÝçsáãÇà á$ð‡å    j‘⇨â`VâPÚ 1Ýçsáóÿÿ
  44549. €â€Ç\ŶÞê€â€ÇÞê Pã    à@^⇩à á$ð‡åôj‘⇨âPãõÿÿªÓê0 ãp ã€ ã,à™â-0ã1◰⇦‰è+0à á$ð‡åäj‘⇨â`VâPÃÚp ã€àã0°@â
  44550. [ã¾*;ã
  44551. §á á,0™âá³çâ `âà‰áà◰åpâ@ã€⇦à á$ð‡åËj‘⇨â`Vâj
  44552. .0ã
  44553. E0ãe0>
  44554. 0°@â
  44555. [ãb*Wãäÿÿºìÿÿê@ã@PŶëÿÿ
  44556. [êà á$ð‡å¶j‘⇨â`VâU
  44557. 0°Pâ÷ÿÿ
  44558.  
  44559. [ãÕÿÿ:e0ãE0'
  44560. .0ãLà á$ð‡å§j‘⇨â`VâF
  44561. 0°Pâ€Höÿÿ
  44562. e0ãE0
  44563.  
  44564. [ã>*§á á,0™âá³çâ `âà‰áà◰åpâà á$ð‡å‘j‘⇨â`Vâ/
  44565. E0ãe0
  44566. 0°@â
  44567. [ã)*Wãèÿÿºðÿÿêp ãà á$ð‡å€j‘⇨â`VâP_Ú-0ãPŶ+0à á$ð‡åuj‘⇨â`VâPTÚ0p@â
  44568. WãQ*à á$ð‡åkj‘⇨â`Vâ0°@
  44569. [*qàp⇧àºGâq¾[âòÿÿ:Cêã€⇦€H,p‡åXãq³€h²êHâqî^â9ªã4 ã
  44570. ú•Xât"üÿÿ⇩ú•⇦2d€Xâv"üÿÿ⇩d€⇦2
  44571. €Xâx"üÿÿ⇩
  44572. €⇦2€Xâz"üÿÿ⇩,p™å\Ŷâ(0‡å ›ä(0™å ŴÝí0àâ^ãŴŵ=ŵ™ê±ã
  44573. /ê Pã    à@^⇩à á$ð‡å-j‘⇨âPãõÿÿª ê Pã    à@^ôÿÿŒ0áà á$ð‡å j‘⇨â€ôå8ãJýÿP㪥4°áà
  44574. à á ð‡åj¥ á<ЙâðC½èòÞã„ËInvalid template passed to _scanf(): `%s'8Oâ8à‡å@-éÚÿëЙâ<ЙâðC½èòfiã@-é@ á 0Oâ <Câ8 Oâ ,Bâ!à!à!àýÿë@½èòÞsòfiã@-é° ãÐMâЙä°[âûÿÿÊ@ áT0Oâ <C†Oâ ,Bâ!à!à!àþüÿëþA½èòÞsòfiã0 á@-é  •â4ë@½èòÞsáÙÿê0 á
  44575. 0ãòÓsò›ã0 á$ OâÿÎãÑä0ãüÿÿÿÎãŴâÁãÿãâà‰á@-éë@½èòÞsËÙÿê@-é0™â  •â!à!à!àëà sàÁt@½èòÞs¿ÙÿêÁäòÞã@-é0™â •â!à!à!àë@½èòÞs³Ùÿê0 á ïòÓsò›ãð_-éLÐMâ@ áP á` áp ãH@™åÔä0ã%0
  44576. à áð ápr÷ÿÿz»ê%0ãµÀ ã0 ã ° ã€àã@@™å ™â  ãÔä à@âY^ãñ•0eêêcêbê†ê`êeê^ê]ê\ê[ê€êzêXêvêŴêUê^ê]ê\ê[êZêYêXêWêVêUêJêIêHêGêFêEêDêCêBêAê@ê⇩ê>êdê<ê;ê:ê9ê8ê7ê6ê5êÌê3ê2ê1ê0ê/ê.ê-ê±ê+ê*ê)ê(ê'ê&ê%ê$ê#êfêAêÙêkê»êEêYêÔêêêWêêWêiê›êêê5êê¬êêêyê—ËInvalid template passed to _printf(): `%s'ÍÌÌ <OâHà‡å@-é7ÙÿëЙâAê3ã2}ÿÿ
  44577. õÿÿê@ãóÿÿ<àåRáðÿÿ*0à@â!ŵàŵ fiàìÿÿjã€0◰$ ™}ÿÿ€ã00 ;€0◰€ wÿÿ0° ãtÿÿê0◰ãrÿÿêÀ ápÿÿê+<ãÀ mÿÿê€ãÀ0◰€„iÿÿ
  44578. ÔÿÿêãÒÿÿŴ0◰ãÔä*0ã
  44579. 0à@â
  44580. ^ã@0Ã3  3Óÿÿ:Èÿÿê@0◰ã „ä$ ™åXÿÿê0◰ãVÿÿê0◰ãTÿÿê 0◰ãRÿÿê„äp€ä>ÿÿê0Ãã„ä0ãV
  44581. !  ã‘à Bâüÿÿ:‘ á0à 31à #àÊä RâŴ
  44582. ‘àøÿÿê„ä0ãG
  44583. <◰ã(™å   ã0 ãã  á〠 Bâûÿÿ
  44584. ‘ á îŴààÊä R†úÿÿiê ïŴààÊä áôÿÿê„ä0ã.
  44585.       ã` áàâ Bâûÿÿ
  44586. ‘ á
  44587. ^ã0à‰2Wà‰"àÊä Râ` à÷ÿÿTê0Ãã„ä` áàâ  ãïÿÿê„ä0ã
  44588.       ã` áàâ Bâûÿÿ
  44589. ‘ á0◰ãàâ
  44590. ^ã0à‰27à‰"àÊä Râ` ÷ÿÿ;ê0Ãã„ä` á  ãïÿÿê„äê0à ãàÊä‘ ã0ê©CJB    
  44591. cdçè''flŷ ŷ?B@B„—€„—ÿàõáõÿÉŒ;ÊŒ;ÿÿÿÿ„äPã-À ³`²0Ãã0ãÞÿÿ
  44592. (™åtOâà’äPáüÿÿ⇩ à1å1  ã@àPà ŵ"üÿÿ*€à Êäà1å>ã0  öÿÿ‘™â    ‘Jà(‡åã$ ‡ à
  44593. 0;ã °      Zà    ⇩À     Ñ<ã€ã€ @Ä…ápà€XàÚpàãÿâ
  44594. 0;ãà áð áVjÿÀÌã  áà áð áQj€XâùÿÿÊÿâ
  44595. à áð áJj ã
  44596. 0 ãà áð áDjã
  44597.  ãX x à áð á<jê0 ãà áð á7j Zâùÿÿª ™âÚäà áð á0j‘YâùÿÿÊ€Xâgþÿºÿ âà áð áùÿÿz'êÖäÊä‘ ã ê „ä
  44598. ‘ áàÙä>ãüÿÿ
  44599. ‘Ià‘Iâã
  44600. $à‡åYá~Ñ Á    pà    €XàÚpàã  áà áð á j€XâùÿÿÊ‘YâÙÿÿºÚäà áð áùÿÿzê áLЙâð_½èòÞãLЙâð_½èòfiã0◰ã%ë@ë    pà    €XàÚpà80‡åã °á
  44601. 0;ãà áð áëÿÿjÀ ã  áà áð áæÿÿj€XâùÿÿÊ °á
  44602. à áð áßÿÿj,‘‡åi“ á    â0€âà áð áØÿÿjZã
  44603. Ú. ãà áð áÒÿÿjÀ ãë0‘‡
  44604. ‘‡‡åãE e à áð áÄÿÿj,‘‡åã+ - à áð á½ÿÿji† á  ãöëD°Ýå⇨ÿÿê‘⇨âã$ ‡  Zã
  44605.   ³
  44606. ‘⇨à0⇩âÿêã ⇩‘IøÿÿêÔëXë    pà    €XàÚÿ° âpà80‡åã °á
  44607. 0;ãà áð á−ÿÿjÀ ã  áà áð á“ÿÿj€XâùÿÿÊ °á
  44608. à áð á™ÿÿjÀ ã,‘™âZã'Ú¬1 á−ç0â1    á0€âà áð áÿÿjÀ…â ZâÚ\ãðÿÿºÂë$ ‡åZã»ÿÿÚ. ãà áð árÿÿj\㹫´ÿÿª¬1 á−ç0â1    á0€âà áð áeÿÿjÀ…â Zâïÿÿʦÿÿê0 ãà áð á]ÿÿj zâ$‡Pfiÿÿ
  44609. . ãà áð áUÿÿjZã†Ë$ ‡åZãÝÿÿÊ“ÿÿêã$ ‡ àZã&
  44610. ‘⇨  ³$ ™å
  44611. ‘⇨à,0‡åã; áâ€ã> á â
  44612. €‘à€c> á â
  44613. €‘à€c> á â
  44614. €ã$0‡å±⇧ã    
  44615. ‘⇨â@âPá `² c¢0C°0 £$0™åyÚð°á €â
  44616. ‘⇨à0⇩àtêã  Õÿÿê0◰ãIëã$0‡0 Sã0 ³0 $0™ågë80‡åãà $0‡å0◰âàSâà ³0 Ã3ã    
  44617. , ™â£ áŒç â
  44618. ¡ 
  44619.  ãà‰0Cóÿÿ
  44620. ,0‡åã; áâ€ã> á â
  44621. €‘à€c> á â
  44622. €‘à€c> á â
  44623. €ã$0‡åPá0Cઠ€â
  44624. 0Sà0 ³$0™å‘⇨À‘⇨Â
  44625. ‘⇨à9ÿÿê$0™å‘⇨â‘⇨à‘⇨à `â3ÿÿê0CàPãöÿÿÚ‘⇨à Sâ‘⇨â‘⇨Úþÿê0âPã áŴ„<„ Ö…,‘™âŴÉíà á80™å,‡åã-À  ‘°‘ D°Íåð°áÀ ã° á) á0€âà áð á¼þÿj Zâ ð À\âifi õÿÿñÛã° á0 ãà áð á±þÿj ZâùÿÿÊ ð°áSãð°Á<‘™å,‘™â ◰⢠á¹ç0â1  0cp PãC:Àãã⇨9` á BâR㺠   Pãõÿÿ*€â0â1 p ⇨å3ê` á0 ã00™å40™åã    
  44626. ã ⇩â<0‡0◰<0™
  44627. Zã$0‡µ0◰²$0™µÿÀã Àã €ãã :â    
  44628. 3ã
  44629. €
  44630. €â8â
  44631. 3ã€â6â
  44632. 3ã€ê:â
  44633. @
  44634.     
  44635. €ã8â@    €ã6â@    €ã4â@ÿ
  44636. ãÿÀ,™å<‘‡åð°á @-éþ-é— Oâ,Bâ0 á⇨üÿë$Йâ @½èòÞsòfiã@-éü-é à à àD Oâ,Bâ0 á|üÿëà sàÁu Ð™â@½èòÞsòfiãŷËCALL cprintf%, <string>, ...⇩ËUnexpected array parameter⇧ËUnnown parameter type…ËNo roomp á` áP–åP—ç ŶâPá,O¢ª
  44637. @ áTã†O²º@Tâ©Ëüÿÿʧë€3ãŴ3¼O‡ä´ Oâ,Bâ0 áBüÿëРqò×sРáò–ãËCALL sprintf%, <string>, <string>, ...⇦ËString too longp á` áP–åP—ç ŶâPáàO¢åÿÿª
  44638. @ á@TâpOÒáÿÿÚ@Tâ|ËüÿÿÊzë€3ãŴ3‘OÙÿÿ −è€3ãŴ3¤OÔÿÿPŶâPÅãBŶâ €âPáO¢Íÿÿª‡äŴ3ã
  44639. 0Ŷâ◰â
  44640. Ŷè áP •â0 áüÿë ”u0Ŷr@−tРqâÇs8ðr¼ÿÿêŵâŶè á •â0 á÷ûÿë ’uà sàÂtРqò×s°ÿÿê ’èÃäSá0Ŵ5òÞ3IOâòfiã⇨ËCALL uprintf%, <fh>, <string>, ...p á` áP–åP—ç ŶâPáŷO¢–ÿÿª
  44641. @ á@TâXOÒ›ÿÿÚ@Tâ.ËüÿÿÊ,ë€3ãŴ3xO⇧ÿÿ −è3ã33‘OŶÿÿŶâQá'O¢Ŵÿÿª3ã
  44642. Òå3ãÒŴÒŴÒŴ‡ä8 Oâ,Bâ0 á³ûÿëРqò×soÿÿê á‘ áà á0ðâjÿÿjà-é@ áP ãà á4ðâ½èëÿÿzbÿÿê ¹è Câ0ãA33ÑO[ÿÿ
  44643. 3ã33€3Ŵ3OTÿÿÒå3ãÒ€Ò€Ò €3-ð°3ã
  44644. Ŵ3ã  áÒä1ãüÿÿBàÒ Ŷà,ŵâRáãO¢:ÿÿªP-åQâ Ð¤ Å¤ûÿÿÊ ãÅäð°á Òå0ã°
  44645. € áÀ°áÀCÀCŵ Bâ+ŵâ
  44646. €á-éð°á@ á&ë áÿÿÿê@ áÎÕÿë á
  44647.  áŴËï  qflu•rïABEX@-éë@½èòÞs‘åAâËAâ◰Qâ@• €òfiã@-é ã ã:îÿë(
  44648. u€½è@-é@ á(åŒîÿë@€u@½èòÞsòfiã@-éà ã,ã
  44649. å(åflîÿë0〽à áð‘åøÿÿê“ËProgram aborted°å0ã$O+–Õÿë á
  44650.  áŴËï<Or+ïïÿã"âÎã  á Pãñ•0ê,êPêkêxêêYê”ê⇨ê¥êµêºêæUnknown CAssembler_Heap operation0Oâòfiã☓ËBad heap info pointer$OâòfiãŵËNot enough memory to start application4Oâ>@½èòfiã>@-é°Œå;㌠@>€ý° áQï r€q ⇩uðÿÿjã²ËãP‡P P⇩å Ŷà    @âàãìïæÿÿjEâPáâÿÿÚ)€â ⇩å0Bà á ãïŴp⇩uAp>€ýxØÿÿê@-é0 áŒå ãï q€ýx¾ëùÿÿz@½èòfiã@-éôÿÿê@-é0 áŒå ãïz²ëúÿÿz@½èòfiã á ã  á÷ë€ýè°áð°@-éŒå ãïj àŒåã¹  s€ýx@½èòfiã
  44651. @-é°á
  44652. €ýŒå ãï q
  44653. €½è
  44654. @-éŒå ãï q
  44655. €½è á àŒå㣠€ýx@½èòfiã2ã  ½ÿÿ
  44656. @-éŒå ãïðÿÿz~ëúÿÿzòÿÿê2ã¾ÿÿ
  44657. SãÍÿÿÚ@-é° áŒå ãïèÿÿj0Câ0Kà ãïÞÿÿzlëúÿÿzàÿÿê@-éPŒå5ã€ý`Œå    EâàãìïЙb~€½hZá
  44658. V!
  44659.  1 3  3¦;€ýè@-épë€ýx@½èòfiãHeap@-é@Œå“èàå0á  <ÿãÿ 7Sã 34:RãS! 30:1ã
  44660. àŴâã * QãR! ›&Œ°☓àHœéã !;ã Ŵïÿÿ ãQá €ý ◰⇩ ãà☓ààfiå>ã
  44661. €àà€â1á÷ÿÿà☓ààfiåŴàíÿÿêà“ç^ã
  44662.  3:ã     àŴà^á ’âÿÿŒ  ã€ýè◰ËOut of memoryŒå ãï°⇧p°⇩u@½xòÞsЙâ@½èòfiã@-éà‘äa^ãøÿÿŒå°Œå @à Qã0 ÁëÿÿÊ @ŒåBÄãSá0 ±    @â€ààãìïéÿÿj€â⇩å 0QàÞÿÿÊ OâãÿÿêâÎã@-éŒå ãïj @ŒåBÄãRá€ý80ŵà0câ ãïSã€ý0cÂŒå€à⇩å    @âàãìï    €r⇩u€ýxЙâ@½èòfiãD-é!®Jâ  á_ãýþÿëD½èòÞstÓÿêD-é!®Jâ  á_ãÿÿëD½èòÞslÓÿêD-é!®Jâ  á0 á_ã6ÿÿëD½èòÞscÓÿêD-é!®Jâ  á_ãñþÿëD½èòÞs[ÓÿêD-é!®Jâ_ãPÿÿëD½èòÞsTÓÿê
  44663. åð°áåâŴàà!à
  44664. åÀãð°á@-é5ë`€ýè@-é1ë
  44665. j
  44666. Pã€ý8àã"à ãâ
  44667. å€ýèpâ€ýH ãøÿÿê à€ýè€VUUU@4333«ªª*%I‹$ ÇqŒ−−uÑEVUU;±›$I•ã8_CyÍÌÌ Ã0 »è¢ -d! «ªª
  44668. ¤p=
  44669. ⇩‡Ø    ^B{    J‹$    ±ÜÓ⇨⇦⇦ŶB}ðÁ⇦uPÈq@-é@ á+Ûÿë@â ñå-°2â+2 ñTã$0t"*02ã
  44670. @ ¨0  ñåx2ãX2 @ 2 $ ñåaRã  B"ARã7B"$ 30 Bâ
  44671. Rã 1PãA" #6*@ ã2 ãêM?Oâ1›ç4ã02 ñåx2ãX2æÿÿ
  44672.     êaRã  B"ARã7B"$ 30 Bâ
  44673. Rã 1Pá!* ñåaRã  B"0Rã[ ŵ2:Rã0 B2AR#7 B"Rá*Pá“0‘0ðÿÿ: ñåaRã  B"ARã7°B"$° 30 Bâ
  44674. Rã° 1[áôÿÿ:" ã
  44675. åàã_ã;〽è[〽è ãP〽è4yH›vW1bD“☓EVATFF#@e%8Oâê&@cF#(—Ŷ(Ŷ-@CF—qpŴ$„uGd%98OâêDSI1–h#WWŵYv−%„r#AB$ŷp!R'8OâÿÿÿêðC-é àMâ
  44676. ^á☓Òÿ» ÐMâ@ áfiÚÿë°Ðä ã` ãp ã™èp™â0 ã àã-;ãŴ+;⇦
  44677. .;ã'
  44678. 0PKâ
  44679. Uã*5ã
  44680. °â``– ± °kâkŷá0◰âã ŵ°ðå.;ã
  44681. E;ãe;-
  44682. 0PKâ
  44683. Uã?*SãëÿÿºñÿÿêãŴðÿÿ
  44684. 8ê°ðå0P[âüÿÿ
  44685.  
  44686. Uãáÿÿ:e;ãE;
  44687. .;ã.°ðå0P[â Bûÿÿ
  44688. e;ãE;
  44689.  
  44690. Uã%*°â``– ± °kâkŷá0◰â°ðåE;ãe;
  44691. 0PKâ
  44692. Uã*SãïÿÿºõÿÿêP á0 ã°ðå-;ãŴ+;°ð00Kâ
  44693. Sã8*°ðå0PKâ
  44694. Uã*
  44695. Sã1◰0◰0Ŷ0÷ÿÿêã ŵ B`äC‡è ã'
  44696. Rã b²Ŵ³@☓²ð“èRáXY^⇩ú/Râ☓⇦"üÿÿ⇩ú/ŵ2d Râŷ⇦"üÿÿ⇩d ŵ2
  44697.  Râ⇦⇦"üÿÿ⇩
  44698.  ŵ2 Râ⇩⇦"üÿÿ⇩ãŴ⇦ãŴ⇦€™åŴÝí Йâð◰ýè"à ãâ
  44699. åã  € À™    áÿÿ
  44700. Ŵîôÿÿê áÏÿÿê°ðå.;ã‡ÿÿ
  44701. 0P[â’ÿÿ
  44702.  
  44703. Uãvÿÿ:@âòÿÿê0 áBï•á
  44704. åòÓãâÎã@-é  á á á  á0 ádà•âû3âà‰áZã
  44705. ñ•0êêjêµêÇê;êÚêåêæUnknown CAssembler_Memory operation0OâЙâ@½èòfiã€ýè  á ãSê@-é
  44706. ]áµÑÿ»@ áÑä\0ãÑ: Ää0ãøÿÿ€ýè  ãð°á     ãð°á ãð°á
  44707.  ãð°á  ãð°á ãð°á ãð°á" ãð°á' ãð°áAâð°á0@â°Ñå0°Kâ[ãð°!€⇧à°ñå0°Kâ[ãð°!€⇧à PãŴ2ð°1Òä áð°á°Ñäa[ã °K"A[ã0K27K"Pãôÿÿ*°Ñäa[ã °K"A[ã0°K27°K"[ã⇧0A"ð°á Aâ00Pâº0S×ÿÿŒ70Sâ    ºÆÿÿ
  44708. 0SâÂÿÿ
  44709. 0Sâ¾ÿÿ
  44710. 0Sâºÿÿ
  44711. 0SâÝÿÿ
  44712. Ùÿÿê0›â¶ÿÿ
  44713. 0Sâ¿ÿÿ
  44714. 0Sâ»ÿÿ
  44715. 0Sâ·ÿÿ
  44716. Ðÿÿê70›â¾ÿÿ
  44717. "0Sâ¸ÿÿ
  44718. 0Sâ¸ÿÿ
  44719. ÉÿÿêàÑäàÀä Râúÿÿ2ãñ–ý0âL
  44720. !à◰1 á @câP’ä5S á Râ%º RâºÀ_±èTŶá6c ádŷá7s átá8◰ á☓⇦á9› á“⇨á:£ á¤⇩á;³ á´⇧á<àáÄ…áà è>S á  Râëÿÿª rãñ–ý ‹â ºÀ±èTŶá6c ádŷá7s átá8◰ á☓⇦áà èñ–ý Bâ9S á ‹âºÀ±èTŶá6c ádŷá` èñ–ý Bâ7S á ‹â ŵ²º`’äTŶáP€äñ–ý6S á`’æTŶá RâPÀ¤%T ÁûÿÿÊñ–ýèRãð°ÑñW-éPâ«ÿÿ0â²ÿÿ Râ º Râºà±èà è  Râûÿÿª rãñ–ý ‹â౨ࠨñ–ý B¢ ‹â`±¨` ¨ñ–ý B¢ ‹âP’¤P€¤ñ–ý ŵ²P’ä RâPÀ¤%T ÁûÿÿÊñ–ýèàqåà`å Râúÿÿ2ãñ–ý0âR
  44721. !à◰1 á @câà’ää á Râ%º Râºà1é<ã‰áÄ á;Ã…á´ á:³⇧ᤠá9£⇩á“ á8›⇨á☓ á7◰⇦át á6sád á5cŷáÀ_ éä á  Râëÿÿª rãñ–ý ‹â º1é<ã‰áÄ á;Ã…á´ á:³⇧ᤠá9£⇩á\ éñ–ýä á Bâ ‹âº1é<ã‰áÄ á;Ã…áP éñ–ý Bâä á ‹âºÀ1å<ã‰áà åñ–ýä á ŵ²À1å<ã‰á Rânì ¡à`¥ûÿÿÊñ–ýèRãð°ÑñW-éQáàŴ0P1ŷÿÿ*Ŵà€ààâ¥ÿÿ0â¬ÿÿ Râ º RâºÀ_1éÀ_ é  Râûÿÿª rãñ–ý ‹â\1©\ ©ñ–ý B¢ ‹âP1©P ©ñ–ý B¢ ‹âà1¥à ¥ñ–ý ŵ²àå Rânì ¡à`¥ûÿÿÊñ–ýè R㪠RâÀ§üÿÿÊð°á0 á°â°k  Bð[üÿÿÿâŴŴ° á Râ-º RâºðA-é à á€ áp á` áP á@ áòI£è  Râüÿÿª rãðŴý ‹âI£¨ðŴý B¢ ‹â£¨ðŴý B¢ ‹â◰¤ðŴý ŵ²Ãä RâüÿÿÊðŴýè£è£èrã𰠋⣨ð° B¢ ‹â◰¤ð° ŵ²Ãä RâüÿÿÊð°á£èrãð° ‹â◰¤ð° ŵ²Ãä RâüÿÿÊð°á0 á° á RâºA-é à á€ á Râºð-ép á` áP á@ áòI£è RâüÿÿªrãðŴý ‹âI£¨ðŴý B¢ ‹â£¨◰ðŴýèI£è ‹âŴý ‹â£¨◰Ŵý蠋⣨ð°rã◰¤ð°áRãÚ0Ðä3á Rûÿÿ3á @ð°á ãð°áRãÚ0Ðä°Ñä 3á Râùÿÿ Sàð á ãPãð áRãð°Ñ@-é0 àã
  44722.  Râ0ѧàЧ0À§àÁ§ùÿÿÊ€ýè° áã
  44723. 0ÑåàÛå0ËäàÁä Râ÷ÿÿ€ýè Râ0’åàœå0⇧¤àŴ¤ùÿÿÊ€ý ŵâ0ËäàÁä Râ#4 Á.ä ÁùÿÿÊ€ýèPãª-  ã Áä`âê
  44724. dè' ŷ@B€„—áõÊŒ;0  ã ÁåÁåð°á0ãùÿÿ
  44725. $0Oâ äPáüÿÿ:1° ã@àPà°⇧"üÿÿ*€à°Áä ä2ã0° öÿÿ ÁäAâð°á Ðä2ãüÿÿ@â Ñä àå2ãûÿÿð°á@â Ñä àå2ãûÿÿð°á0 á Óä2ãüÿÿ0Câ Ñä Ãä2ãûÿÿð°á0 ã3á°Ð;0◰úÿÿ3á°Ñ;°À0◰ùÿÿ° ã°Àçð°á@-éàMâ
  44726. ^á\Ïÿ»ÐMâ@ á á¦ÿÿë á áåÿÿëЙâ€ýè0 á Óä2ãüÿÿCå Ãåð°á° ã 2á 0Ð3°⇧úÿÿ 2á À°⇧ 0Àð°á Ðä1á2ûÿÿ1á@ ð°á Ðä0Ñä3ã
  44727. 2áùÿÿ
  44728. Ràð á  á0"àã
  44729. 0Ñä0Âä3ãûÿÿð°áã
  44730. 0Ñä0Âä3ãúÿÿ3ãð°@-é4 ã<◰ãc4◰á°’äàKà àÎáãá°ŵùÿÿ
  44731. °Âäÿã€ý+´ á°Âäÿã€ý+´ á°Âäÿã€ý+´ á °Âæ€ýè0 ã3á°Ñ;°À0◰ùÿÿ° ã°Àçð°á á Ðä2ãüÿÿ aà á@-é
  44732. ]áôÎÿ»xûÿë@½èâÎsêýÿzòfiã Ðä0Ñä2á3ãùÿÿàãñÞã ãñfiã0Ñä°Ðä;ã
  44733. a CâRã 0C2a KâRã °K2[áóÿÿ
  44734. [àð á0Ñä°Ðä;ã    
  44735. a CâRã 0C2a KâRã °K2[áóÿÿ
  44736.  ãñfiãàãñÞã €âã
  44737. Ðä1ãûÿÿ1ã@ð°4 ã<◰ãc4◰á‘ä°Aà°Ëáãáúÿÿ
  44738. @àÿã
  44739. ÿ ã
  44740. ÿã@ð°á@âð°á@âð°á á Ñä2ãð°A BâRãa ŵ2 A5÷ÿÿêRãð°Ñ0 á°Óä;ãüÿÿ0Câ°Ñä°Ãä;ã Rúÿÿ;ã Ãð°áSãð°Ñ@-é° ã;á àÐ>°⇧úÿÿRãÚ;áàÑ> àÀ°⇧ Røÿÿà ã àÀç€ýèRãÚ0Ðä°Ñä Râ;
  44741. 3áøÿÿ
  44742. Sàð á°ãð áRãð°Ñ0 ã°Ñç°Àç0◰â;ã°2ùÿÿ3á°À0◰ûÿÿð°áRãíÿÿÚ@-é0Ðä°ÑäaàCâ^ã 0C2aàKâ^ã °K2 Râ;
  44743. 3áòÿÿ
  44744. Sà€½èRãð°Ñ0 á°Óä;ãàRúÿÿð°á0 ã Ðä2á0@2ãúÿÿ áð°á@â ñå2ãüÿÿAâQáð°Ñ  á0Ñä°Òä0Âä°AäQáùÿÿÊð°á@-é0Ñä3ã€ý@Ðä3á
  44745. 4ãúÿÿ ã€ýèà€â°Ŵâ0Ûä3ã€ý@Þä3áùÿÿ
  44746. 0Ñå€âíÿÿê á Ñä2ãð°A BâRãa ŵ2 A5÷ÿÿê0@-é àMâ
  44747. ^á Îÿ»P á á ã  ã0 ã@ ã-é ãhë ãÕç¡!Ýçâá€ùÿÿ
  44748.  Ð™â0€ýè0@-é àMâ
  44749. ^áöÍÿ»P á á ã  ã0 ã@ ã-éSëÕä°á
  44750. ¡!Ýçâáøÿÿ
  44751. Eâ Ð™â0€ýè0@-é àMâ
  44752. ^áàÍÿ»P á á ã  ã0 ã@ ã-é=ë ãÕç¡!Ýçâá€ùÿÿ Ð™â0€ýè0@-é àMâ
  44753. ^áËÍÿ»P á á ã  ã0 ã@ ã-é(ë á0ã$
  44754. P $RÕå0ã
  44755.  ãÕç¡!Ýçâá€ùÿÿ@Ŷà‡å€ã™å ãÔç¡!Ýçâá€ùÿÿ
  44756. P☓à$R
  44757. å4á
  44758. Õå0ã Å$R
  44759.  á Ð™â0€ýè ã Ð™â0€ýè-é° ã0ãÐ1¡1Ý ◰¡1Íøÿÿð°á0ã‘0@ð°á(‘åØÙÿê‘é*ã ð° ã0‘ð°ã Qâ‹'Q#$‘”0‘åCà00‘åCàð°á°á—å—
  44760. ð°á2ã! !Â!ŵê2ã! !Â!ŵ
  44761. êÿlûÌãÿ 0 á  ãüC-é
  44762. ]áZÍÿ»€âp á4 ãôùÿë?j` á“åŷå“b
  44763. å á@€Èã‡åAÀãXàOâ Þçï.j0ã *j† ãÿ‘⇨ã"
  44764. 9á‘à"“    㬑㇠°H²3
  44765. 9áúÿÿêÔOâ  áH²è3ã
  44766. 9áúÿÿ °€à,°ŷåàŷå IâûPâ€È ‡å@ ã"€á!Âãïj(ŷu…⇦s €ŷu q     qüC½xòÞsêÍÿëp á á£ùÿë qüC½èòfiã ã     áüC½èòÞãoÙÿëêÿÿêðA-é
  44767. Íÿ»@ á¥_Jâ”å0áP€ûÿÿ(“å=Ùÿë` áp á€“å á⇩ùÿë qð?q s€ŶuðA½èòÞsòfiã@-é“åPã€ýãÿÿë“å‘e“
  44768. eøÿÿê‘é:ãSQâ9:!‹çRã€Ŷ ŴòÞ◰A
  44769.  ã'p@-é
  44770. ]áÝÌÿ»` á„å$„å „åPRà@„å@Dà  CüÿPŶà(„å á  á7Ùÿëj0à„åà‰à0àŷå áPŶàPŷåPá „å €3 ŷ5 „åQá
  44771. €0„å@„åà á,ð„å$ŷ áp@½èËÿÿ 0‘å;Ãã<◰ã 0€å ãòÞã à„å€à‰ã àŷåp@½èòfiãp@-é
  44772. ]á«Ìÿ»` á á$„å „å 0„å0ŷåà„åà‰ààŷåP„åßÿÿêp@-é
  44773. ]á‡Ìÿ»` á á0Ŵâ$„å „åP„åÕÿÿêã òÞp@-é
  44774. ]á‘Ìÿ»` áëÜÿÿj(„å„å „åP áðØÿëÓÿÿj0ŷåPá „åPŵàPŷå „å €3 ŷ5 0„å0ŷå0ŷå á¹ÿÿêp@-é
  44775. ]áwÌÿ»@ á(“åÄØÿë0€½h—åQá` 1`€ŵ†Rå P☓å Vãl 3`☓åŷà“å€àëøÿë☓u€p☓u€p$☓u☓u à“uìÎsë‰s à☓up€½x‘åèAâËìNâ◰à^âp@½òfi¦` á Vãäÿÿ⇩p@½èòfiã
  44776.  
  44777.  
  44778.  
  44779. €€€€áÎãÍC-é`OâÀ„è
  44780. ã
  44781. 0Câ!☓ç êQáŵ*Ñä0ãúÿÿ
  44782. àAâ0Sâ☓:á☓ç
  44783. à0â
  44784. Qád*ãB
  44785. Ñä
  44786. à0âøÿÿàAåëÿÿêAâàAåèÿÿêAâàAååÿÿêAâàAåâÿÿêAâàAåßÿÿê AâàAåÜÿÿê
  44787. AâàAåÙÿÿêAâàAåÖÿÿêAâàAåÓÿÿêÿàâëÿÿ
  44788. ÿìâìÿÿ
  44789. ÿèâAAâà ãàAåÉÿÿêÿàâçÿÿ
  44790. ÿìâèÿÿ
  44791. ÿèâAAâà ãàAå¿ÿÿêÿàâãÿÿ
  44792. ÿìâäÿÿ
  44793. ÿèâA Aâà ãàAåµÿÿêAâQá$*Ñä
  44794. à0âúÿÿàAå­ÿÿê
  44795. ±èQáôÿÿ⇩ àà@ààÎááåÿÿ "ààBààÎááÖÿÿ‘)ààIà    àÎááÇÿÿ°+ààKà àÎááèÿÿ
  44796. ÿàâ¨ÿÿ
  44797. ÿìâ©ÿÿ
  44798. ÿèâAà ãàAå™ÿÿê“ç@‡è ã2áàNâà>àà ãàÅå0Sâ 1Î◰ý8 áà ãá☓ç áÎ◰ýèà‡å>á0Cà á☓Î◰ýÎC½èñfiã áÎ◰ýèáÎãã&@-é
  44799. ã àŴâ^á*àÑåÿà>â
  44800. àŴâ^á°Ñ” àŴ‘^’
  44801. ⇩0Sâ:àŴâá☓çà ã àáçìÿÿê0Sâá☓' á€ýè ã2á
  44802. 0Sâà #á☓' á€ýè@½èñfiã á€ýè@@-é
  44803. ]á⇦Ëÿ»
  44804. ã 0CâàŴâ^á*àÑåÿà>â
  44805. àŴâ^á`Ñ”`Ŵ‘V’ ⇩àŶâá☓ç0Sâà #á☓' á á½Ñÿë á@€ýèá☓ç á@€ýè ã2á
  44806. à ãá☓ç á@€ýè@@½èñfiã     ã—
  44807. 倠ã†
  44808. åð°áðC-é
  44809. ]áZËÿ»@ áp“åt ãŴ€àP áÙ÷ÿë cð◰ýh  áP á áHúÿë ãŶåŶåŶå “åPã ð◰ýÊ÷ÿëjŶå“å  “倠ᑠá8úÿëdŶâ’èT”åëd0Ŷâ◰èp`”åtpŶâ`Vâ ±ð◰ý¸â‘èë0â◰è pâõÿÿê á·÷ÿë ãð◰ýè@-é ã€ý0ã
  44810.  áë™å½èë€ýè3ã ™€ýè@à    Qá ”5Ŵ0ð°á Ðä0Ñä2á Rãùÿÿ* sâÐàð á Rã S3  1Ràð á0 ãRá°Ñ☓[◰°À0◰ŵùÿÿ⇩° ã°Àçð°á Ðä0Ñä2á Rãùÿÿ*ñÞã Rã S3ñÞ3 ãñfiã €âÐä Qãüÿÿ*@àð°áRãð°Ñ0 ã°Ñç°Àç[ã0◰ŵRŴùÿÿ⇩° ãRá°À0◰ŵûÿÿ⇩ð°áððð 0‘å,0Sâ'Úp@-é` á,@€â 2ãM☓(‘åÙÐÿëp@½hÎÊÿj ã áQ á UãP £ áJ÷ÿëp@½hòficEâ0 ãŴ!“ç Âã0◰á!€çQâùÿÿ*€ å"á6p@½òÞEâ1‘çàà.2◰1€çQâùÿÿ*p@½èòÞã1ã òÞ(‘å  á ã⇧Ëï sòÒsà á¤Êÿê™ËMenu header too long™ËUnknown menu header implicit flag `%c'™ËMenu flag `%c' expected a number to follow™ËMenu item with no text™ËNo menu items defined™ËBad menu colour specified™ËBad menu escape character™ËMenu flag `%c's number out of range™ËUnknown menu item implicit flag `%c'™ËUnknown menu item flag `%c'™ËUnknown menu header flag `%c'™ËBad menu message prefix@-é°á  C,
  44811. å(åÇöÿë(
  44812. u@½èòÞsòfiã° á€C-éàMâ
  44813. ^á)Êÿ»ÐMâ°™å™åp á&JâÇìÿë‡å4
  44814. å‡å0
  44815. å(åPãâÿÿ (ŵu,‹u    ‘⇦p{Йâ€C½èòÞsòfiãp@-é àMâ
  44816. ^áÊÿ» ÐM’åà⇦â    ^áÊ ã €ã€ã,  ã0 ã €⇦â¨èààãà™åà™åà™åä ã!à‰ã à™å×ä<0ãñ
  44817. t0ãî
  44818. h0ãì
  44819. s0ãÜ
  44820. c0ãÚ
  44821. b0ãã
  44822. aà@â^ã 1^O2: 0ãpGâëüjQã¿O¢ýª™å@ á   ã áHâmûÿë áûÿëpàpâP á áKëëj` á ã„€(à    XáÝÊ ã™å6ã € à‡å0áŴŶå ‡åà‡å0á!à‡å^ãàÞÇÿÁÃnŴÁŶåààãàŶåÔä<0ãz
  44823. b0ã T
  44824. c0ã M
  44825. d0ã E
  44826. f0ã K
  44827. g0ã ?
  44828. h0ã9
  44829. i0ãP
  44830. m0ã-
  44831. t0ã 6
  44832. s0ã8
  44833. w0ã!
  44834.  0ã@☓Dâ´ë­j@ áà‡åQá™Åà”åìâì>â0 á á ” ”    Ŷ SbÊûÿëPŶâ`Vâ‡Å€Â²ÿÿʇå áŴâ‡å€å Ð™âp@½èòÞã”å€ãË ãŶè¹ÿÿê€Ŷå|âåà™å\ÿÿëà‡u|â
  44835. u²ÿÿz◰êà”åâ.âàŶå ãà”åà.ààŶå©ÿÿê ãà”åà.ààŶå¤ÿÿê ãà”åàÎáÔäaQã A"AQã7A"0A2à‰áàŶå—ÿÿê á ãöÿë@ á‘Ià    XáZÊ ‘Ŷå0å‘Ŵä0
  44836. åàãŶåŶå ãÉäà”åì‰ãàŶåà”åà‰ãàŶåŴÿÿê4âåfiä4â
  44837. åàÔäi>ãæÿÿ
  44838. t>ã    
  44839. s>ã
  44840. f>ãà”åâÎî‰äÎì‰àŶåoÿÿê0ãmÿÿ
  44841. ½ÿÿê0ãjÿÿ
  44842. ¿ÿÿêà”åì‰ãàŶå0Ŷå‘Ià‘Iâ    Xá*Ê ‘Ŷå     áèùÿëàãŶå•ÿÿê à‡ås0ãå.à. à™åÿÿê'0@P`p€–§°ÇÐç÷àOâà™å ÿÿêpGâ4åà‘ä4
  44843. å×ät0ãà™ÿÿ
  44844. h0ãà™ÿÿ
  44845. b0ãà™ýþÿ
  44846. s0ã iO>ã à‡å‰ à™ôþÿê(å,åŴâ,
  44847. åŵõÿë(
  44848. u s&Jr‡ëÿz Ð™âp@½èòfiãôÈÿëæÈÿëùÿÿêðA-éàMâ
  44849. ^áßÈÿ»ÐM†áŒOJâ0“èp á` áTá*×ä>0ã1
  44850. [0ã*
  44851. ]0ã
  44852. ,0ã \0ã×Ää0ãîÿÿhåDàAâ  áЙâðA½èòÞãhåEàŴâP áRõÿë@ qP☓pŒJr0€xÜÿÿzЙâðA½èòfiã‡_JâxR
  44853. å×äÅä×ä◰Ðÿë×ÅäúÿÿdRå ã|
  44854. åêM á ãZõÿë|
  44855. åp á áxå1ã,Oùÿë á|åà€â|â
  44856. åæøÿë á ãsáÿëÛÿÿjà☓à^áÎÿÿ⇩ á á Eà@Nâjáÿë°ÿÿzÑÿÿêðA-é
  44857. ]áÈÿ»4ŵå@ áp ãP ãÔä<0ãX
  44858. aà@â^ã*t0ãd0s0c0g0w0m0ñÿÿ
  44859. f0ãb0&
  44860. i0ã7
  44861.  áyOâê 0ãÔ`àã>0ãY
  44862. ]0ãZ
  44863. [0ãc
  44864. `ŷâ\0ã!
  44865. 0ã,0Ôòÿÿ6ã5 O¬@
  44866. pâ0ãÐÿÿ°áðA½òÞ Oâ´@âQÈÿëðA½èòfiã[ÈÿëúÿÿêÔäaà@â^ã @2APã0@27@"Pã¾ÿÿ: OâØ@âîÿÿêÔä PãÔ$Ðÿÿ* OâÔ@âçÿÿê á ãëôÿë1áT O_@âÿÿ
  44867.  Pãp‹TŶ Oŵì@ŵÜÿÿ⇩@ áP ã£ÿÿêà—äÔäi0ã    
  44868. f0ãb0
  44869. t0ãs0−ÿÿ
  44870.  á OâB@âËÿÿê ^ãà~‹‹ÿÿŒ á OâS@âÄÿÿê^ã…ÿÿ:ŒOâ½ÿÿê` ãÔä ÿÿê á ã¾ôÿë1áT£O¶ÿÿ
  44871. @ á` ãÔä”ÿÿêÔäØÏÿë’O«ÿÿÔäÎÏÿëüÿÿTå 0ãÔ` ã⇨ÿÿê@-é0〠üéÿë@½hòficD
  44872. å½è0ã  õéÿëH
  44873. u@½èòÞsòfiã@-éDå á  ãêÿëD
  44874. u@½èòÞsòfiã@-éùÿë  áDå½èêÿëD
  44875. u@½èòÞsòfiã@-éÜMâ á, ã0 ãªàÿë qíÿÿ{Ü™â@½èòÞsòfiã@-éÜMâ á, ã0 ãfiàÿë q™r( •rŴ?™rîÿ{™r  s Áw qÙÿÿ{Ü™â@½èòÞsòfiãÁäòÞãþA-éÜMâ á, ã0 ã⇦àÿë ™r q,™rü‹x⇩Ë ™rÆÿÿ{◰ß™âðA½èòÞsòfiã@-éHå á  ãÒéÿëH
  44876. u@½èòÞsòfiã@-éDåªéÿëHå¨éÿë€ýèp@-é` áHCå á*êÿëP áÐMà á á  áêÿëDå ãŴà€â áPýÿëЙàp@½èòÞsòfiãThis module is © Copyright Cy Booker, 1992ŴËBad pointer€ËBad CAssembler library table€ËBad CAssembler library table, no such library€ËBad CAssembler library table, routine count OâðC½èòfiã“Oâ5 @âúÿÿê¨Oâøÿÿê…Oâöÿÿê`OâôÿÿêЙâòÿÿêÀOâ5 @âïÿÿêðC-éã“€Ŵ ŵ@“ÿãÿÿÿÿáÿÿPáQ1¹r2Ýÿÿ*$°•â¼⇧â``OâèlFâ`Fà`FâFa áP á€µè‘œå    7á
  44877. ÖÿÿꀵèWã
  44878. Ôÿÿº‘œå    WáÑÿÿ: ‘œä    °⇧ùÿÿYã:‘Iâ€Xâ œ$ ⇩ ÿ¤Ê#ê¤⇩# Ŵ$`F"ôÿÿ⇩8ã    °⇧çÿÿ
  44879. ÁÿÿêP€â á ãà‡åã6‘€à3ã
  44880.   áï¬ÿÿjYá    Œ‡åã´ÿÿ
  44881.     Iâàãìï£ÿÿj    €â    Pá­ÿÿ:  á ã
  44882.  áŴöÿë TãK ›ÐMâ á ã  ãzöÿë á ã°™âHœèã    0  œ!ŵ+☓ŵËï s%.☓rŵË‹ÿÿj%®€â¬⇩âP€à ã%. ãföÿë!Jâ á  ãÁõÿëЙâê-ª á
  44883. ª á¬⇩â
  44884. ]áxÿÿ:P á    ê|`•âlŷ‶èYãnÿÿj`ŷà€¶èWãøÿÿª
  44885.  á áð◰ýèð⇨àQãòÞÓ@-é-º á º á¼⇧â;á€ý  á¯ùÿëÔÿëÌ×ÿë‰ßÿë!Jâ ãŵËï@½èòÞsòfiã$CAsm=?DHFJOL¦@¬ÒÿÿÂ-Ê-Û-Ò-ê-ì-`,÷-ó-„.².¤.(,,,I,ã-4V's'Ŵ'c'•'3+`+®+ù#"$=$$R$¨Ç/☓/⇧1L1X170¬0Ø0e1´1½1Ã1Í1Ü1é1ð1û12 2,3?2M2W2u2›2†2«2À2Í2Û2í2B3ö2þ2X33m3#3 152$1e2HÈ:ÿÿùÿ                     #    *    0    9    ?    E    K    U    Z    a    j    Xuuo--Q]]Wxxr³¢€Ü-»Î:Rqá#ñ#H*6B6N6T677d686ß5H9W9`9j9v9…9‡9¦9¬9    µ
  44886. |ÿÿ"(  Ðflÿÿ o"¿"$äþ"5 ,l ‡ ~ · 0I#T#[#\#c#r#­#Ù#Ö#Ü#u#º#(ŵœ¦¼Çèö4,œ°»Öá>j¤€@“Zÿÿr¨−Æ8Zu¦åüãè#R◰$ÌèÿÿÝ3O4/4­3Æ3²3´3Ï3Ê3Lfiŷx¥Á°”™Õë^(8LVpÎ ⇨ÂÒBUK[7=eKZS0ßÓ¿\hO7 Û×ÙÿÿÿÿÿÿÿÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickChangeFSIGýÿÿÁ£Øà8EVariableDûÿÿ9ö^*~3LibHandlerGýÿÿÙ£Øà€8Log_FrontEÿÿÿW'ewµ~3WimpGýÿÿñ£ØàŴ8ChangeFSIGýÿÿÁ£Øà8EVariableDûÿÿ9ö^*~3LibHandlerGýÿÿÙ£Øà€8Log_FrontEÿÿÿW'ewµ~3WimpGýÿÿñ£ØàŴ8vExamplesExamplesNickjKô  Compressing this file without `E' suppression will produce bad BASIC.ô  This is because there is a THEN missingHô  If you are in the habit of omitting THEN statements then use thisOô  safeguard (Output->Reduce variable names->`E' suppression, or -EVariableô  if calling from CLI)Jô  Proper programmers (!), who always put in the THEN's, can enjoy the7ô  benefits of slightly better compressed variables:    
  44887. a% = 1
  44888. ç a%<>0 a% = 2 ñ a% :Nô  BASIC doesn't mind if "IFE%=0E%=2"!  Why?  What's different about "<>"?ÿs     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     Scanning special file <In$Dir>.Special
  44889. Scanning special file Assembler
  44890. Scanning special file LibHandler
  44891. Scanning special file Wimp
  44892. Scanning special file CAssembler
  44893. Scanning <In$Dir>.RiscOS
  44894. Scanning <BasicV$Lib>.LibHandler
  44895. <BasicV$Lib>.LibHandler 16.2 warning 12: Expecting a string after LIBRARY/INSTALL
  44896. Scanning <BasicV$Lib>.CAsm
  44897. Scanning <BasicV$Lib>.Template
  44898. Scanning <CAsm$Dir>.hc.DEFAULT
  44899. Scanning <CAsm$Dir>.hc.stdio
  44900. Scanning <CAsm$Dir>.hc.stdlib
  44901. Scanning <CAsm$Dir>.hc.string
  44902. Scanning <CAsm$Dir>.hc.message
  44903. Scanning <CAsm$Dir>.hc.wimp
  44904. Scanning <BasCompressFE$Dir>.InfoDBox
  44905. Scanning <BasCompressFE$Dir>.IconBar
  44906. Scanning <BasicV$Lib>.FileType
  44907. Scanning <BasicV$Lib>.IntMath
  44908. Scanning <BasicV$Lib>.ModeInfo
  44909. Scanning <BasicV$Lib>.Wimp
  44910. <BasicV$Lib>.Wimp 100.1 warning 21: Routine PROC_Icon_Bar_Icon already defined at <BasCompressFE$Dir>.IconBar 90
  44911. <BasicV$Lib>.Wimp 201.1 warning 21: Routine PROC_User_Message_Acknowledge already defined at <In$Dir>.RiscOS 1458
  44912. <BasicV$Lib>.Wimp 232.1 warning 21: Routine PROC_User_Message already defined at <In$Dir>.RiscOS 1729
  44913. Scanning <BasicV_Assembler$Lib>.Misc
  44914. Scanning <BasicV$Lib>.Heap
  44915. Scanning <BasicV$Lib>.Message
  44916. Scanning <BasicV$Lib>.NullReason
  44917. Unused routine(s):    PROCMsg2, PROCMsgC, PROC_Align_Pane, PROC_Align_Pane_Aux, PROC_BSSalign, PROC_BorderIcon, PROC_Bring_Window_To_Front, PROC_Bump_Icon, PROC_Change_Icon, PROC_Check_Icon_In_Range, PROC_Claim_Null_Reason, PROC_Claim_Null_ReasonP, PROC_Claim_Null_Reason_P, PROC_Claim_RAM_Load, PROC_Claim_RAM_Save, PROC_Clone_TemplateI_Pointer, PROC_Clone_TemplateI_Titled_Pointer, PROC_Clone_Template_Pointer, PROC_Clone_Template_Titled_Pointer, PROC_Confirm, PROC_Confirm2, PROC_Confirm_Aux, PROC_Delete_Confirm, PROC_Delete_FontWindow, PROC_Delete_Window, PROC_DragBoxScrollWindow, PROC_DragScrollWindow, PROC_Extend_Heap_Block, PROC_Finalise_Message_DataLoad, PROC_Find_ESG, PROC_ForceRedraw, PROC_Generic_Wimp_CloseDown, PROC_GetCaretIcon, PROC_GetPointerInfo, PROC_Get_Window_Origin, PROC_Key_Pressed_Confirm, PROC_Load_Confirm, PROC_Message_Pallette, PROC_Message_RAM_Fetch, PROC_Message_RAM_Transmit, PROC_Message_SetSlot, PROC_Mouse_Click_Confirm, PROC_Open_Pane_Underneath, PROC_Open_Window, PROC_Query_Wimp_Global_Error, PROC_RAM_Load, PROC_RAM_WimpScrap_Load, PROC_Realloc_Heap_Block, PROC_Release_Null_Reason, PROC_Release_Null_ReasonP, PROC_Release_Null_Reason_P, PROC_Release_RAM_Load, PROC_Release_RAM_Save, PROC_RemoveWorkareaPointer, PROC_Remove_Null_Reason, PROC_Remove_Null_ReasonP, PROC_Remove_Null_Reason_P, PROC_Report_Bad_SaveAs, PROC_Send_Save, PROC_SetWorkareaPointer, PROC_Set_Default_Choices, PROC_Set_Icon_Background, PROC_Set_Icon_Foreground, PROC_Set_Shade_Icon, PROC_Set_Title, PROC_Set_Window_BackCol, PROC_Set_Window_Extent, PROC_Stop_Action, PROC_Template_CloneI_Pointer, PROC_Template_CloneI_Titled_Pointer, PROC_Template_Clone_PositionX, PROC_Template_Clone_PositionY, PROC_Template_Clone_Titled_Pointer, PROC_Template_Create, PROC_Template_Create_Pointer, PROC_Template_Delete, PROC_UpdateText, PROC_UpdateTextFileSize, PROC_UpdateTextFixedFileSize, PROC_UpdateTextInt, PROC_add_local_label, PROC_alter_bit, PROC_assemble_CAsm_Application, PROC_assemble_CAsm_Module, PROC_assemble_library, PROC_debug_assemble_library, PROC_debug_assemble_library_show, PROC_declare_local_label, PROC_dim_array, PROC_get_screen_y_shifts, PROC_hard_init_assemble_library, PROC_initialise_local_labels, PROC_load_ARM_Object_library, PROC_load_assemble_library, PROC_menuitem_disable, PROC_menuitem_enable, PROC_menuitem_text, PROC_menuitem_tick, PROC_menuitem_toggletick, PROC_menuitem_untick, PROC_select_icon, PROC_test_CAsm_Application, PROC_unselect_icon, PROCcalloc, PROCderegistermenus, PROCdragpushscrollwindow, PROCdump, PROCmemcpy, PROCmemset, PROCout, PROCpushscrollwindow, PROCputzn, PROCsetflag, FN16bit, FNAddI, FNAddIS, FNAddImmediate, FNError, FNErrorBlock, FNMsgN, FNStackOverflow, FNStackOverflowN, FN_BSSa, FN_BSSd, FN_BSSn, FN_Claim_Heap_Block, FN_Clone_Template, FN_Clone_TemplateI, FN_Clone_TemplateI_Titled, FN_Clone_Template_Titled, FN_Date, FN_Dragged_, FN_Dragged_BoxScrollWindow, FN_Dragged_ScrollWindow, FN_Dragged_pushscrollwindow, FN_FileSize, FN_FixedFileSize, FN_Icon_To_Key, FN_Message_Read, FN_Message_Read_2, FN_Null_Reason_, FN_Null_Reason_dragpushscrollwindow, FN_Open_Window_Horz_Centered, FN_PSR_V_set, FN_Query_Icon_BackCol, FN_Query_Icon_BackCol_And_Delete, FN_Query_Icon_ForeCol, FN_Query_Icon_Shaded, FN_RAM_Load_, FN_RAM_Load_Completed_, FN_RAM_Load_Failed_, FN_RAM_Save_, FN_RAM_Save_Failed_, FN_ReadTextInt, FN_Read_String_Val, FN_Stop_Action_, FN_Template_CloneI_Titled, FN_Window_Open_P, FN_XExtend_Heap_Block, FN_XRealloc_Heap_Block, FN_define_local_label, FN_div_times, FN_find_local_label, FN_highest_mode_available, FN_int_log_10_int, FN_int_log_2_int, FN_local_label, FN_logical_screen_base, FN_max_int, FN_min_int, FN_physical_screen_base, FN_read_vdu_variable, FN_rol, FN_ror, FN_screen_base, FN_screen_y_addr, FNabort_dragpushscrollwindow, FNadd3, FNadrL, FNaoff, FNceiling, FNcescape, FNcmp, FNdate, FNdivrem, FNfadeitem3, FNfadeitem4, FNfloor, FNgb, FNgetsn, FNiprintf, FNldhw, FNldhwq, FNlduhw, FNlduhwq, FNlog2, FNmax, FNmin, FNmov, FNmov3, FNo, FNp_uxb, FNr, FNsetPSR_V, FNsthw, FNtickitem1, FNtolower, FNunion, FNunion_end, FNunion_start, FNuxb
  44918. Unused variable(s):    Buffer_Length%, Confirm_W%, Confirm_WPtr%, DragPushScrollW%, DragPushScrollX%, DragPushScrollY%, RAM_Load_Buffer_Length%, RAM_Load_Offset%, RAM_Load_Size%, RAM_Save_Length%, RAM_Save_Offset%, RAM_length%, RAM_start%, Wxmax%, Wxmin%, Wymax%, Wymin%, Xmax%, Xmin%, Ymax%, Ymin%, __union_P%, __union_max%, actual_i%, address%, align%, backcol%, bit%, buf%, byte%, cd%, child%, colour%, count%, ctable%, d%, d_size%, delta%, dest%, down_i%, dx%, dy%, e%, eigfactor%, esg%, file_length%, handle%, handle_p%, height%, in%, index%, max%, max_length%, max_library_assembler%, max_local_labels%, max_routines%, max_x%, max_y%, maxi%, min_x%, min_y%, mini%, num_local_labels%, num_screen_y_shifts%, out%, p1%, p2%, parent%, pass_1_library_assembler%, pass_2_library_assembler%, pmax%, pmin%, power%, predicate%, pressed_YES%, ra%, rb%, rd%, resize%, rn%, root_index%, rt%, rtemp%, scr_x%, scr_y%, selected%, shift%, source%, table%, taskhand%, taskid%, text%, total_size%, up_i%, width%, word%, x0%, x1%, xalign%, xextent%, y0%, y1%, yalign%, yextent%, Ra, Rd, Ri, Rt, Ru, Rx, addr, address, gb, global_error_block, l_R0, l_lr, label, length, sizeof_G, start, x, y, ConfirmHandle$, ConfirmMessage$, DragPushScrollD$, DragPushScrollN$, done$, dragged_BoxScrollWindow$, dragged_ScrollWindow$, handle$, l2$, label_1$, label_2$, local$, null$, prefix$, ptr$, reason$, result$, string$, template$, b%(), in%(), local_label_values%(), n%(), out%(), screen_y_shifts%(), library_assembler$(), local_label_strings$()
  44919.  
  44920. Parsing completed with 4 warnings, and no errors
  44921. Statistics:    407 integers, 457 reals, 76 strings, 13 integer arrays, one real array, 5 string arrays, 256 procedures, 199 functions
  44922. EVALs found at:    PROC_aux_load_library <BasicV$Lib>.LibHandler 17; 18, FNeval <BasicV$Lib>.LibHandler 48
  44923. DATAs found at:    PROC_Protect <BasCompressFE$Dir>.InfoDBox 20
  44924. READs found at:    PROC_Protect <BasCompressFE$Dir>.InfoDBox 12
  44925. Line numbers found at:    (none)
  44926. Creating <d>.Tmp.Basic
  44927. Output file size is 65632 bytes, = 50% of original file
  44928. rWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickLogCÿÿÿÎ&]àI3SpecialCÿÿÿÑè_àÌ3LogCÿÿÿÎ&]àI3SpecialCÿÿÿÑè_àÌ3~ChangeFSIChangeFSINickÉScanning special file adfs::HardDisc4.$.Temp.bc.Sp_ChFSI
  44929. Scanning <Main>
  44930. <Main> 2020.1 warning 27: Special variable sinfo% has been used
  44931. <Main> 2020.1 warning 27: Special variable srcinfo% has been used
  44932. <Main> 2020.1 warning 27: Special variable raninfo% has been used
  44933. <Main> 2020.1 warning 27: Special variable zoom% has been used
  44934. <Main> 2020.1 warning 27: Special variable save% has been used
  44935. <Main> 2030.1 warning 27: Special variable infow% has been used
  44936. <Main> 2030.1 warning 27: Special variable scalew% has been used
  44937. <Main> 2030.1 warning 27: Special variable proc% has been used
  44938. <Main> 2030.1 warning 27: Special variable output% has been used
  44939. <Main> 2030.1 warning 27: Special variable fast% has been used
  44940.  
  44941. Parsing completed with 10 warnings, and no errors
  44942. Statistics:    269 integers, 143 reals, 22 strings, 23 integer arrays, one string array, 45 procedures, 15 functions
  44943. EVALs found at:    PROCmenuitem 2880; 2910
  44944. DATAs found at:    (none)
  44945. READs found at:    (none)
  44946. Line numbers found at:    (none)
  44947. Creating adfs::HardDisc4.$.Temp.bc.ChangeFSI
  44948. Output file size is 75698 bytes, = 70% of original file
  44949. ks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | Special file for ChangeFSI, a big (100K) image manipulator from Acorn
  44950. | This demonstrates BasCompress'es ability to extract variables from wimp menu strings
  44951. | Note you also need to amend the source because there is a DEF FNversion right at the start
  44952. | and BasCompress thinks everything after this isn't the main program!
  44953. | Note that there aren't any unused routines!!
  44954. | Also note that the EVAL isn't actually inside domenu
  44955.  
  44956. procedure domenu(,3,)
  44957.   integer >3    WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickLibHandlerCûÿÿd|^à´€3SpecialCÿÿÿ‘ü_àø€3LibHandlerCûÿÿd|^à´€3SpecialCÿÿÿ‘ü_àø€3~LibHandlerLibHandlerNick
  44958. ô  >LibHandlerH Example library file used to control the running of other libraries And error handler(K Note that error handler calls Wimp_CloseDown, and so non-wimp programs2@ may have to include a dummy version of this routine to keep< bascompress happyF :P  USAGE:ZB  This should be the first library file to be loaded, and its'dG  hard initialisation called.  From then on just use _load_library.nx:ŵ$Ý ¤_LibHandler_version  :  = 013…:„<Ý ò_hard_initialise_LibHandler(max_libs%, need_version%) ê Ŷª4   î Ŷ ê ÷ Ŷ:ò_e("%LibHandler: hard_initialise")´-   ç ¤_LibHandler_version<need_version% …¾#      Ŷ 0, "LibHandler too old"È   ÍÒ   ç max_libs%<1 …Ü7      Ŷ 0, "LibHandler: bad max librarys parameter"æ   Íð%   max_library_files% = max_libs%ú-   Þ library_names$(max_library_files%-1)0   Þ library_versions%(max_library_files%-1)   num_library_files% = 0   :"=   : ô  This is used so can indent nested error handlers.,   :6"   Num_Lib_Error_Levels%  = 40@!   Lib_Error_Level%       = 0JE   On_Lib_Error_MODE%     = 12          :  ô  A 16-colour screen.T!   On_Lib_Error_Continue% = £^-   Þ Lib_Errors$(Num_Lib_Error_Levels%-1)h   :r   Wimp_Active% = £|   Debug_Wimp%  = £ŷá‘:ŒKô *********************************************************************¤Jô * Load a library file, check it's a new enough version  and then, if®Eô * it hasn't already been loaded, call its' hard initialisation.¸/ô * This procedure could well be recursive.Â/ô * IN:   library$ == file name of library.Ì=ô *       version% == earliest possible version required.Ö?ô * OUT:  ERROR 0 if bad versions / too many library files.à(Ý ò_load_library(library$, version%)êê load%, i%, leaf$, e$ôê Ŷþ4   î Ŷ ê ÷ Ŷ : ò_e("%.LibHandler: load_library")   i%    = 0   load% = ¹.   leaf$ = Álibrary$, 1 + §library$, "."))&'   È” i%<num_library_files% € load%0-      load% = (leaf$<>library_names$(i%)):      ç load% …D         i% += 1N       ÍX   Îb   ç load% …l#      ç i%=max_library_files% …v9         Ŷ 0,"LibHandler: Too many librarys to load!"€       Í⇩$      library_names$(i%) = leaf$“      Èœ library$fi7      e$ = "'" + library$ + "' does not have a FN_"¨      ê Ŷ²4      î Ŷ ê ÷ Ŷ  :  ò_e(e$ + leaf$ + "_version")¼?      library_versions%(i%) =  ("FN_" + leaf$ + "_version")Æ      ÷ ŶÐ&      num_library_files%      += 1Ú%      ô  This could be recursive.ä      ê Ŷî=      î Ŷ ê ÷ Ŷ  :  ò_e(e$ + "_hard_initialise_" + leaf$)ø.      ç  ("FN_hard_initialise_" + leaf$) …I         Ŷ 1, "Library file '" + library$ + "'s hard init'ion failed"       Í      ÷ Ŷ    Í*)   ç version%>library_versions%(i%) …48      Ŷ 1, "Library file '" + library$ + "' too old">   ÍHáR:\:fKô *********************************************************************pIô * This is so can have error back-tracking, so can find out completezJô * calling hierarchy when an error occurs deep down - and this is how☓ô * to use it...‰,ô *   ON ERROR PROC_handle_library_error—ô *   ...¢ô *   DEF PROC_my_proc(...)¬ô *   LOCAL ...¶ô *   LOCAL ERRORÀFô *      ON ERROR LOCAL RESTORE ERROR  :  PROC_e("%.Lib: my_proc")Êô *      ...Ôô *   ENDPROCÞ5ô * NB  Need this other level, since if just keepèIô *     'ERROR ERR, routine$ + REPORT$', then BASIC will quickly haveò1ô *     to chop the string to 255 characters.üGô *     So storing in an array - then print out the error messages.ô *Ý ò_e(routine$)  ç Wimp_Active% …$1  : ô  Pass error onto next level of handler..  :8    ç Debug_Wimp% …B-    : ô  Might be useful while debugging.L        :V!      Ŷ fl, ö$+ " ["+ Ãfi+ "]."`        Ìj      Ŷ fl, ö$t        Í~  Ì⇦$    ç ¬ On_Lib_Error_Continue% …‹4      ç Lib_Error_Level%=Num_Lib_Error_Levels% …†H        Lib_Errors(Num_Lib_Error_Levels%-1) = "Errors too deep!!!!!"¦"        ò_handle_library_error°       Íº       ç Âroutine$, 2)=": " …Ä0        routine$ = Àroutine$, ©(routine$)-2)Î       ÍØ      ç Debug_Wimp% …â.        Lib_Errors$(Lib_Error_Level%) = ö$ì       Ìö"        ç Lib_Error_Level%=0 …G          Lib_Errors$(Lib_Error_Level%) = "Error `"+ ö$+ "' (line "
  44959. =          Lib_Errors$(Lib_Error_Level%) += Ã(fi) + ") in "A          Lib_Errors$(Lib_Error_Level%) += "`"+ routine$+ "'"        Ì(@          Lib_Errors$(Lib_Error_Level%) = "`"+ routine$+ "'"2        Í<       ÍF      Lib_Error_Level% += 1P      Ŷ fl, ""Z        Íd  Ínáx:ŵÝ ò_handle_library_error…ê iii%, eee$„  ç Wimp_Active% …     ç Debug_Wimp% …ª/      ò_Wimp_Error(fl, ö$+ " ["+ Ã(fi)+ "].")´      ò_Wimp_CloseDown¾       àÈ        ÌÒ      ò_Wimp_Error(fl, ö$)Ü!      ç fl=Wimp_Error_Fatal% …æ        ò_Wimp_CloseDownð        àú       Í        Í  Ì!    ç On_Lib_Error_MODE%=-2 …"       ç Lib_Error_Level%>0 …,!        Ŷ ¢ fl, Lib_Errors$(0)6       Ì@        Ŷ ¢ fl, ö$J       ÍT       à^        Íh!    ç On_Lib_Error_MODE%>=0 …r3      ë On_Lib_Error_MODE%  :  ô  Reset screen.|        Íŷ#    ñ "An error has occured..."‘        ñŒ    ç Lib_Error_Level% …¤(      ã iii%= 0 ¸ Lib_Error_Level%-1®)        û ((7 - (iii% << 1)) € 6) + 1¸         ñ Lib_Errors$(iii%);Â)        ç iii%<(Lib_Error_Level%-1) …Ì          ñ " in ";Ö        Íà      í iii%ê        Ìô$      ñ ö$; " (line "; Ã(fi); ")"þ        Í        ñ     û 7        à&  Í0áÿerWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     | List of "special" Basic routine in <BasicV$Lib>.LibHandler
  44960. | Example of leaf name extraction
  44961.  
  44962. procedure _assemble_library(0)
  44963.   function _assemble_\0
  44964.  
  44965. procedure _load_library(0,)
  44966.   library  \0
  44967.   function _@0_version
  44968.   function _hard_initialise_@0
  44969. rks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickSpecialCÿÿÿØ`ààŴ3WimpCûÿÿóÀ_à¾Ŵ3SpecialCÿÿÿØ`ààŴ3WimpCûÿÿóÀ_à¾Ŵ3~WimpWimpNickó| List of all "special" Basic routines in <BasicV$Lib>.Wimp
  44970. | Various "real" examples
  44971.  
  44972. procedure _Claim_RAM_Load(0)
  44973.   function _RAM_Load_\0
  44974.   function _RAM_Load_Completed_\0
  44975.   function _RAM_Load_Failed_\0
  44976.   function _RAM_Load_
  44977.   function _RAM_Load_Completed_
  44978.   function _RAM_Load_Failed_
  44979.  
  44980. procedure _Claim_RAM_Save(0)
  44981.   function _RAM_Save_\0
  44982.   function _RAM_Save_Failed_\0
  44983.   function _RAM_Save_
  44984.   function _RAM_Save_Failed_
  44985.  
  44986. procedure _Claim_Null_Reason(0)
  44987.   function _Null_Reason_\0
  44988.   function _Null_Reason_
  44989.  
  44990. procedure _DragScrollWindow(,,,,,,,,0)
  44991.   function _Dragged_\0
  44992.   function _Dragged_ScrollWindow
  44993.  
  44994. procedure _DragBoxScrollWindow(,,,,,,,,,,,,,,,0)
  44995.   function _Dragged_\0
  44996.   function _Dragged_BoxScrollWindow
  44997.  
  44998. procedure _Initiate_Drag(,,,0)
  44999.   function _Dragged_\0
  45000.  
  45001. function  _Load_Template_Extra(,,,0)
  45002.   function \0
  45003.  
  45004. procedure _Message_RAM_Fetch()
  45005.   integer RAM_start
  45006.   integer RAM_length
  45007.  
  45008. procedure _RAM_Load()
  45009.   integer RAM_start
  45010.  
  45011. procedure _Stop_Action(,0)
  45012.   function _Stop_Action_\0
  45013. WonderWorks     WonderWorks     
  45014. ô  >Wimp: Typical wimp library routine examples for BasCompressC Note that use ¤eval() rather than  .  This is a simple routine(? that, depending on a debugging variable, traps any errors.2 :<:FL: ô  Query ONLY brought up by PROC_Stop_Action, this routine called whenPG: ô  main wimp poll detected a mouse click inside the Query window.Z:d,Ý ò_Mouse_Click_Query(x%, y%, b%, icon%)nê Ŷx2î Ŷ ê ÷ Ŷ  :  ò_e("%.Wimp: Mouse_Click_Query")ŵ  ò_Cancel_Stop…H  x% = ¤eval("FN_Stop_Action_"+ query_action$+ "("+ Ã(icon%=0)+ ")")„á :ª"Ý ¤_Stop_Action_(pressed_YES%)´P  ò_Wimp_Error(Wimp_Error_Fatal%, "Illegal click in unclaimed query window")¾= £È:Ò:ÜBÝ ¤_Load_Template_Extra(id$, rove%, sprite_pointer%, routine$)æê result%, r0%, C%ð&  $template_name% = id$+ "*"+ ½(0)úo  È− "XWimp_LoadTemplate",, template_file%, rove%, inddata_end%, -1, template_name%, 0 ¸ r0%,, indrove%; C%  ç ¤_PSR_V_Set(C%) …    ò_Wimp_Error_Block(r0%)    ò_Wimp_CloseDown"  Í,'  ç ¤getname(template_name%)<>id$ …6+    ò_Set_Message_String("Reason", id$)@2    ò_Wimp_Error(Wimp_Error_Fatal%, ¤LEMsg(3))J    ò_Wimp_CloseDownT  Í^)  template_file%!64 = sprite_pointer%h.  ç routine$<>"" … ç ¤eval("FN"+ routine$)r7  È− "Wimp_CreateWindow",, template_file% ¸ result%|= result%ŷ:‘(: ô  Called from main wimp poll loopŒ : ô  Allow multiple routines¤:®Ý ò_Null_Reason_Code¸ ê n%, r$Âê ŶÌ/î Ŷ ê ÷ Ŷ : ò_e("%.Wimp: Null_Reason_Code")Ö  n% = n_null%à  È” n%>0ê    n% -= 1ô    r$ = null_q$(n%)þ    ç r$<>Null$ …*      ç ¤eval("FN_Null_Reason_"+ r$) …"        ç null_q$(n%)<>Null$ …          n_null% -= 1&        Í0       Í:        ÍD  ÎNáX:b:lÝ ò_User_Drag_Boxvê x%€ê Ŷ⇩(î Ŷ ê ÷ Ŷ : ò_e("%.Wimp: User_Drag")“)  x% = ¤eval("FN_Dragged_"+ dragged$)fi!  ç dragged_button%<>(1*16) …¨    ò_Close_All_Menus²  Í¼,  È− "Wimp_DragBox",, -1 : dragged$ = ""ÆáÐ:ÚKô *********************************************************************ä'ô This can be used to drag anythingîEô When the pointer leaves the window the window's scrolled in theøô opposite direction:  ô w%                  window/ô b%                  current mouse buttons >ô type%               type of drag to perform (5, 6, or 7)*.ô xmin...ymax%        box to drag (screen)4-ô Xmin...Ymax%        parent box (screen)>Bô Wxmin..Wxmax%       windows' work area extent, (0=>find out)H;ô routine$            call FN_Dragged_<routine$> at endR:\…Ý ò_DragBoxScrollWindow(w%, b%, type%, xmin%, ymin%, xmax%, ymax%, Xmin%, Ymin%, Xmax%, Ymax%, Wxmin%, Wymin%, Wxmax%, Wymax%, routine$)f ê P%, l%p  l% = 64z  P% = ¤_Claim_Stack(l%)☓  P%!00 = type%‰  P%!04 = xmin%—  P%!08 = ymin%¢  P%!12 = xmax%¬  P%!16 = ymax%¶  P%!20 = Xmin%À  P%!24 = Ymin%Ê  P%!28 = Xmax%Ô  P%!32 = Ymax%Þ  P%!36 = Wxmin%è  P%!40 = Wymin%ò  P%!44 = Wxmax%ü  P%!48 = Wymax%:  È− "CAssembler_Window", Window_DragBoxScroll, w%, P%)  dragged_BoxScrollWindow$ = routine$2  dragged$                 = "BoxScrollWindow"$#  dragged_button%          = b%.  ò_Release_Stack(P%, l%)8áB:LÝ ¤_Dragged_BoxScrollWindowV4= ¤eval("FN_Dragged_"+ dragged_BoxScrollWindow$)`:jKô *********************************************************************tLô This can be used to drag a window about, usually dragging "background"~8ô It will scroll in the direction the mouse moves in⇦:‹ ô w%                  window†/ô b%                  current mouse buttons¦,ô x%, y%              current mouse x, y°Bô xmin..ymax%         windows' work area extent, (0=>find out)º;ô routine$            call FN_Dragged_<routine$> at endÄ:ÎIÝ ò_DragScrollWindow(w%,b%, x%,y%, xmin%,ymin%,xmax%,ymax%, routine$)ØMÈ− "CAssembler_Window",Window_DragScroll,w%,x%,y%,xmin%,ymin%,xmax%,ymax%â'  dragged_ScrollWindow$  = routine$ì-  dragged$               = "ScrollWindow"ö!  dragged_button%        = b%á
  45015. :Ý ¤_Dragged_ScrollWindow#  ç dragged_ScrollWindow$<>"" …(5    ç ¤eval("FN_Dragged_"+ dragged_ScrollWindow$)2  Í<= 0F:P:ZÝ ò_Message_RAM_Transmitdê Ŷn-î Ŷ ê ÷ Ŷ : ò_e("Message_RAM_Transmit: ")x ç W%!12<>RAM_Load_Ref% …ŵC   ò_Wimp_Error(Wimp_Error%, "Unexpected RAM_Transmit message")… Ì„H   RAM_Load_Size% += W%!24                      :ô #bytes transfered *   ç (W%!24)=RAM_Load_Buffer_Length% …ª@     ò_RAM_Load                              :ô Ask for more´   Ì¾
  45016.      :ÈA     : ô  Buffer not full, so all loaded - end communicationsÒ
  45017.      :ÜZ     ç ¤eval("FN_RAM_Load_Completed_"+ RAM_Load_Routine$+ "("+Ã(RAM_Load_Size%)+")") …æ       ò_Wimp_LError(6)ð
  45018.      Íú   Í Íá:"L: ô  Called to request that the application reserve some memory for more,=: ô  of a file to be loaded via the RAM transfer protocol6:@Ý ò_RAM_LoadJê RAM_start%Ty  ç ¤eval("FN_RAM_Load_"+ RAM_Load_Routine$+ "("+Ã(RAM_Load_Size%)+", "+Ã(RAM_Load_Buffer_Length%)+", RAM_start%)") …^    ç RAM_Load_Size%<>0 …h      ò_Wimp_LError(7)r        Ì|;      ç ¤eval("FN_RAM_Load_Failed_"+ RAM_Load_Routine$)ŷ@      ò_RAM_WimpScrap_Load                   :ô Try this way‘        ÍŒ  Ì¤    W%!12 = W%!8®E    W%!16 = 6                                   :ô Send RAM_Fetch¸    W%!20 = RAM_start%Â'    W%!24 = RAM_Load_Buffer_Length%ÌC    È− "Wimp_SendMessage", 18, W%, W%!4        :ô Send recordedÖ    RAM_Load_Ref% = W%!8à  Íêáô:þ:Ý ò_Message_RAM_Fetch ê x, RAM_start%, RAM_length%ê Ŷ&*î Ŷ ê ÷ Ŷ : ò_e("Message_RAM_Fetch: ")0 ç W%!12<>save_ref% …:   ò_Wimp_LError(9)D ÌN   ç RAM_Save_Routine$="" …X
  45019.      :bL     : ô  Application won't handle RAM transfer - the external task willlI     : ô  notice this when don't reply here - and initiate the normalv#     : ô  <Wimp$Scrap> protocol€
  45020.      :⇩   Ì“y     ç ¤eval("FN_RAM_Save_"+ RAM_Save_Routine$+ "("+Ã(RAM_Save_Offset%)+", "+Ã(W%!24)+", RAM_start%, RAM_length%)") …fiB       ô  If no response, then other program will report error¨
  45021.      Ì²*       RAM_Save_Offset% += RAM_length%¼V       È− "Wimp_TransferBlock", Task_Handle%, RAM_start%, W%!4, W%!20, RAM_length%Æ       W%!12 = W%!8Ð@       W%!16 = 7                        :ô Send RAM_TransmitÚ       W%!24 = RAM_length%äF       È− "Wimp_SendMessage", 17 - (RAM_length%=(W%!24)), W%, W%!4î=       save_ref% = W%!8                 :ô Multi-messagesø
  45022.      Í   Í  Íá :ÿ  WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     NickDefaultCÿÿÿòÌ àjŵ3DefaultCÿÿÿòÌ àjŵ3vMessagesMessagesNickÀ#
  45023. # Messages for BasCompress
  45024.  
  45025. Warning:    warning %d:% 
  45026. W1:    Expecting PROC or FN after DEF
  45027. W2:    DEF inside a routine
  45028. W3:    Unexpected period `.'
  45029. W4:    Mismatched quotes `""'
  45030. W5:    Malformed hexadecimal number
  45031. W6:    Malformed binary number
  45032. W7:    Line number reference found
  45033. W8:    Expecting routine name after PROC or FN
  45034. W9:    ENDPROC not at end of procedure
  45035. W10:    = not at end of function
  45036. W11:    Code found on last line of function
  45037. W12:    Expecting a string after LIBRARY/INSTALL
  45038. W13:    OVERLAY file(s) not scanned
  45039. W14:    Unexpected `['
  45040. W15:    Unexpected `]'
  45041. W16:    ENDPROC inside a %s structure
  45042. W17:    = inside a %s structure
  45043. W18:    Conditional %s
  45044. W19:    Too many `(' found
  45045. W20:    Unexpected `)' found
  45046. W21:    Routine %s already defined at %s
  45047. W22:    Malformed decimal number
  45048. W23:    The (global) special routine %s is not defined anywhere
  45049. W24:    SWI name missing, or not simple
  45050. W25:    SWI `%s' is unknown
  45051. W26:    Can't change to screen mode %d
  45052. W27:    Special variable %s has been used
  45053. W28:    Special routine %s has been used
  45054. W29:    Special library %s has been used
  45055.  
  45056. Error:        error %d:% 
  45057. E1:    Expecting R0..R15
  45058. E2:    ENDPROC found in a function
  45059. E3:    = found in a procedure
  45060. E4:    Routine %s already defined at %s
  45061. E5:    File error: %s
  45062. E6:    End of file in middle of routine
  45063. E7:    Too many files (>254)
  45064. E8:    Undefined routine: %s (used %s)
  45065. E9:    Undefined variable: %s (used %s)
  45066. E10:    FOR not at start of statement
  45067. E11:    Escape pressed, parsing aborted
  45068. E12:    File %s does not have a Basic file type
  45069. E13:    File %s is too small to be a Basic type
  45070. E14:    File is corrupted/not basic
  45071. E15:    Escape pressed, xref aborted
  45072. E16:    Escape pressed, compression aborted
  45073. E17:    Unexpected %s in a %s structure
  45074. E18:    Unexpected %s
  45075. E19:    End of file in middle of assembler
  45076. E20:    OTHERWISE not at start of line
  45077. E21:    WHEN not at start of line
  45078. E22:    Computed GOTO/GOSUB found
  45079. E23:    INSTALL/LIBRARY not at start of line
  45080. E24:    INSTALL/LIBRARY can not be on a conditional line
  45081. E25:    The special routine `%s' was declared as having different parameters from those found here
  45082. E26:    The special routine `%s' wants a string constant for one of its' parameters
  45083. E27:    Line too long (max 256)
  45084. E28:    Line `%s' is not of a recognised form
  45085. E29:    Label `%s' is invalid
  45086. E30:    Parameter list `%s' is invalid
  45087. E31:    Parameter list `%s' contains a duplicate
  45088. E32:    Implicit label substitution overflowed
  45089. E33:    Too many special routines (max 255)
  45090. E34:    Unable to load special file (not Text?)
  45091. E35:    SWI name missing, or not simple
  45092. E36:    Illegal screen mode
  45093. E37:    Bad main program, unterminated %s structure
  45094. E38:    Can't find closing ellipsis in special routine parameter
  45095. E39:    Bad char `%c' following > or : in special routine parameter
  45096.  
  45097. # These are for the xref (and stats of label refs)
  45098. #
  45099. Comma:        ,% 
  45100. SemiColon:    ;% 
  45101. Name:        \n%s%s
  45102. Defined:    \n  Defined:\t
  45103. Calls:    \n  Calls:\t
  45104. CalledBy:    \n  Called by:\t
  45105. Declare:    \n  Declared:\t
  45106. Assign:        \n  Assigned:\t
  45107. Refer:        \n  Referenced:\t
  45108. Undefined:    % UNDEFINED
  45109. Deleted:    % DELETED
  45110. To:        % to% 
  45111. None:        (none)
  45112. Multiple:    % (%d)
  45113. UnusedRtns:    Unused routine(s):\t
  45114. UnusedVars:    Unused variable(s):\t
  45115. MainProgram:    main program
  45116. Unlinked:    {unlinked}
  45117. ProcedurePrefix:    PROC
  45118. FunctionPrefix:    FN
  45119.  
  45120. # These are log stuff
  45121. #
  45122. SpecialTitle:    Scanning special file %s\n
  45123. ScanTitle:    Scanning %s\n
  45124. XRefTitle:    Cross reference of %s\n
  45125. CompressTitle:    Creating %s\n
  45126. Result:    Output file size is %d bytes, = %d%%%% of original file
  45127. Goto:        Line numbers found at:\t
  45128. Eval:        EVALs found at:\t
  45129. Data:        DATAs found at:\t
  45130. Read:        READs found at:\t
  45131. Stats:        Statistics:\t
  45132. Parsed:        \nParsing completed with %s, and %s\n
  45133. ParsedError:    error
  45134. ParesedWarning:    warning
  45135. Zero:        no %ss
  45136. One:        one %s
  45137. Many:        %d %ss
  45138. Label:        %? integer, real, string, integer array, real array, string array, procedure, function
  45139.  
  45140. SysError:        A system error was detected (&%x): %ss     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     WonderWorks     A BasicV compressor and
  45141. cross-referencer for RISC OS
  45142. v1.40 17th July 1993
  45143. Copyright © Cy Booker, 1992−1994
  45144.  
  45145.  
  45146.  
  45147.  
  45148.  
  45149.  
  45150.  
  45151.  
  45152.  
  45153.  
  45154.  
  45155.  
  45156.  
  45157.  
  45158.  
  45159.  
  45160.  
  45161.  
  45162. Program
  45163. and
  45164. Documentation
  45165.  
  45166.  
  45167.  
  45168. by
  45169.  
  45170.  
  45171.  
  45172. Cy Booker
  45173.  
  45174. 86 Church View
  45175.  
  45176. Main Road
  45177.  
  45178. Crockenhill
  45179.  
  45180. Swanley
  45181.  
  45182. Kent
  45183.  
  45184. BR8 8JW
  45185.  
  45186. U.K.
  45187.  
  45188.  
  45189.  
  45190. “Typeset” using Impression v2.14 and Publisher v4.01
  45191.  
  45192. Menus grabbed by GrabMenu
  45193.  
  45194. Musical entertainment provided by Frank Zappa
  45195.  
  45196.  
  45197.  
  45198. 1 Overview    1
  45199.  
  45200. 1.1 Disclaimer    1
  45201.  
  45202. 1.2 Synopsis    1
  45203.  
  45204. 1.3 Features    1
  45205.  
  45206. 1.4 Documentation    2
  45207.  
  45208. 1.5 Compressing your first file    3
  45209.  
  45210. 1.6 Example speed    3
  45211.  
  45212. 1.7 Example compression    4
  45213.  
  45214. 2 BasCompress    5
  45215.  
  45216. 2.1 Overview    5
  45217.  
  45218. 2.2 Jargon    5
  45219.  
  45220. 2.3 Basic    5
  45221.  
  45222. 2.4 Numbers    6
  45223.  
  45224. 2.5 SWI's    6
  45225.  
  45226. 2.6 Star commands    7
  45227.  
  45228. 2.7 Assembler    7
  45229.  
  45230. 2.8 Routines    7
  45231.  
  45232. 2.8.1 Main program    8
  45233.  
  45234. 2.8.2 Start and end    8
  45235.  
  45236. 2.8.3 Conditional routine end    8
  45237.  
  45238. 2.8.4 END and ERROR    9
  45239.  
  45240. 2.8.5 LOCAL ERROR    9
  45241.  
  45242. 2.9 Multi-line structures    10
  45243.  
  45244. 2.10 Libraries    11
  45245.  
  45246. 2.10.1 Multiply-defined routines in libraries    11
  45247.  
  45248. 2.11 Label reduction    12
  45249.  
  45250. 2.12 Line numbers    13
  45251.  
  45252. 2.12.1 Output line numbers    14
  45253.  
  45254. 2.13 Multi-line output    14
  45255.  
  45256. 2.14 DATA    14
  45257.  
  45258. 2.15 Re-compressing    15
  45259.  
  45260. 3 Cross-referencing    17
  45261.  
  45262. 3.1 Overview    17
  45263.  
  45264. 3.1.1 What's cross-referenced    17
  45265.  
  45266. 3.1.2 What's output    17
  45267.  
  45268. 3.1.3 Messages    17
  45269.  
  45270. 3.2 Level of detail    18
  45271.  
  45272. 3.2.1 Routine definition    18
  45273.  
  45274. 3.2.2 Routine calls    19
  45275.  
  45276. 3.2.3 Routine called by    19
  45277.  
  45278. 3.2.4 Variable declaration    19
  45279.  
  45280. 3.2.5 Variable assignment    19
  45281.  
  45282. 3.2.6 Variable reference    19
  45283.  
  45284. 3.3 Order    20
  45285.  
  45286. 4 The front end    21
  45287.  
  45288. 4.1 Starting    21
  45289.  
  45290. 4.2 Overview    21
  45291.  
  45292. 4.2.1 Icon bar icon    21
  45293.  
  45294. 4.3 Control window    22
  45295.  
  45296. 4.4 Main menu    23
  45297.  
  45298. 4.5 Input    24
  45299.  
  45300. 4.6 Output    26
  45301.  
  45302. 4.7 Log    29
  45303.  
  45304. 4.8 Special files    31
  45305.  
  45306. 4.9 Cross-reference    32
  45307.  
  45308. 4.10 Choices Dialogue Box    36
  45309.  
  45310. 5 The back end    39
  45311.  
  45312. 5.1 Invoking    39
  45313.  
  45314. 5.2 Installing    39
  45315.  
  45316. 5.3 Environment variables    40
  45317.  
  45318. 5.4 The CLI parameters    41
  45319.  
  45320. 5.4.1 Input    41
  45321.  
  45322. 5.4.2 Output    42
  45323.  
  45324. 5.4.2.1 Output listing    42
  45325.  
  45326. 5.4.3 Log    43
  45327.  
  45328. 5.4.4 Special    43
  45329.  
  45330. 5.4.5 Cross-reference    43
  45331.  
  45332. 5.4.5.1 What    44
  45333.  
  45334. 5.4.5.2 How much    44
  45335.  
  45336. 5.4.5.3 Order    45
  45337.  
  45338. 5.5 Error handling    46
  45339.  
  45340. 5.6 Escape handling    46
  45341.  
  45342. 5.7 Hourglass    46
  45343.  
  45344. 6 Special files    47
  45345.  
  45346. 6.1 Why    47
  45347.  
  45348. 6.2 Files    47
  45349.  
  45350. 6.3 Format    48
  45351.  
  45352. 6.3.1 Routines    48
  45353.  
  45354. 6.3.2 Globals    48
  45355.  
  45356. 6.3.3 Labels    49
  45357.  
  45358. 6.3.3.1 Verbatim    50
  45359.  
  45360. 6.3.3.2 Comma separated    50
  45361.  
  45362. 6.3.3.3 Full pathname    51
  45363.  
  45364. 6.3.3.4 Wimp menu    51
  45365.  
  45366. 6.3.4 Variables as regular expressions    51
  45367.  
  45368. 6.3.4.1 Example patterns    52
  45369.  
  45370. 6.3.4.2 Limitations    53
  45371.  
  45372. 6.3.5 Libraries    53
  45373.  
  45374. 6.3.6 Include files    54
  45375.  
  45376. 6.4 Limitations    54
  45377.  
  45378. 7 Errors    57
  45379.  
  45380. 7.1 Overview    57
  45381.  
  45382. 7.2 Warnings    57
  45383.  
  45384. 7.3 Errors    63
  45385.  
  45386. 7.4 Run-time errors    69
  45387.  
  45388. 7.4.1 Unknown or missing variable    69
  45389.  
  45390. 7.4.2 No such function/procedure    69
  45391.  
  45392. 7.4.3 Missing ENDIF    69
  45393.  
  45394. 7.4.4 Logical errors    70
  45395.  
  45396. 7.5 Internal errors    70
  45397.  
  45398. 8 Loose ends    73
  45399.  
  45400. 8.1 Memory usage    73
  45401.  
  45402. 8.2 Missing THEN    73
  45403.  
  45404. 8.3 Cross-reference    74
  45405.  
  45406. 8.4 Statistics    75
  45407.  
  45408. 8.5 Uncompressed output    75
  45409.  
  45410. 8.6 Label reduction    76
  45411.  
  45412. 8.7 Executable    76
  45413.  
  45414. Appendix A: Messages    77
  45415.  
  45416. A.1 Internationalism united    77
  45417.  
  45418. A.2 Format    77
  45419.  
  45420. Appendix B: Regular expressions    79
  45421.  
  45422. B.1 Definition    79
  45423.  
  45424.  
  45425.  
  45426.  
  45427.  
  45428. 1 Overview
  45429.  
  45430. 1.1 Disclaimer
  45431.  
  45432. This program is supplied “as is”.  No warranty, express or implied, of the  merchantability of this program or its fitness for any particular purpose is given.  In no circumstances shall the author, or any provider or distributor of this program, be liable for any damage, loss of profits, or any indirect or consequential loss arising out of the use of this program.
  45433.  
  45434. 1.2 Synopsis
  45435.  
  45436. BasCompress takes as input a tokenised basic file, analyses it on a routine-by-routine basis, and outputs a cross-reference and a compressed tokenised basic file.
  45437.  
  45438. (It was written because none of the currently available Basic squashers handled the side effects of EVAL, removed unused routines, or discarded the junk inbetween routines, and they were all far too slow).
  45439.  
  45440. It consists of two programs, a Wimp-based front end, and a CLI-based back end.  The former is ideal for occasional use, while the later is better for scripts, make files, etc..
  45441.  
  45442. 1.3 Features
  45443.  
  45444. The main features of BasCompress can be summarised as follows:
  45445.  
  45446.     •    Checks all multi-line IFs have a matching ENDIF
  45447.  
  45448.     •    Checks all CASE's have a matching ENDCASE
  45449.  
  45450.     •    Checks all WHILE's have a matching ENDWHILE
  45451.  
  45452.     •    Checks the ellipsis/quotes/brackets on each statement
  45453.  
  45454.     •    It doesn't balk at the use of line numbers (too much)
  45455.  
  45456.     •    Loads in explicit LIBRARY files
  45457.  
  45458.     •    Checks every routine exits cleanly
  45459.  
  45460.     •    Checks for multiply-defined routines
  45461.  
  45462.     •    Produces a full cross-reference on all variables and routines, with four levels of detail, and user-definable ordering
  45463.  
  45464.     •    Variable/routine name reduction, targetting the most used to be the shortest
  45465.  
  45466.     •    Remove all redundant spaces and REMarks
  45467.  
  45468.     •    Remove all between-routine junk
  45469.  
  45470.     •    Concatenation of output lines
  45471.  
  45472.     •    Remove unused code
  45473.  
  45474.     •    Reduces numbers to their shortest form
  45475.  
  45476.     •    Converts SYS and SWI strings to numbers
  45477.  
  45478.     •    Optional “special” file to handle EVALuated variables/functions, and implicitly loaded library files
  45479.  
  45480.     •    "special" file allows variables to be defined as regular expressions
  45481.  
  45482.     •     It is fast
  45483.  
  45484.  
  45485.  
  45486. In other words it does all you would expect, a bit more, and all at a very respectable speed.
  45487.  
  45488. All those syntax checks may seem superfluous until you realise that most error handling code isn't always as fully debugged as it should be.
  45489.  
  45490. 1.4 Documentation
  45491.  
  45492. This document is split into several sections.  First a full description of exactly what this program does to, and expects of, the input.  This is followed by §3, a chapter on the powerful cross-referencing available.  Not until §4 is the program itself described, the Wimp front end application.  The back end application, accessible from the CLI is §5.  Special files, their format and use are detailed in §6.  §7 is what this author wishes every program documentation had, a complete list of errors and reasons why they occurred, and more importantly - some hints on how to get rid of them.  Finally, §8 contains miscellanea, the junk that doesn't categorise too easily.
  45493.  
  45494. 1.5 Compressing your first file
  45495.  
  45496. Run the application.  This will install the Wimp front end onto the icon bar icon and open the control window to the center of the screen.
  45497.  
  45498. First of all drag the Log file icon to a Filer window (not another application, sorry).  This file will contain information about the actions of the compression process.  Now drag a Basic file onto the control window, to compress it.
  45499.  
  45500. With the default options this Basic file will be analysed, the log file created and then automatically loaded into your resident text editor.  If this is Edit, then don't close the Log window for now.
  45501.  
  45502. Even if the Basic file was analysed without error, no output file was produced because none was defined.  Just drag the output file icon from the control window onto a Filer window and start again.
  45503.  
  45504. Now, because Edit still had a view of the Log file, this was automatically updated, using the current window size.  This gives an extremely usable environment :-)
  45505.  
  45506. Voila, a compressed basic file has been produced.
  45507.  
  45508. If the log file reports any EVAL or DATA statements were found, it is possible that the program may not run.  See the chapter on Special files for a way to handle this.  (The quick way is to disable all variable and routine label reduction).
  45509.  
  45510. Now read §2.
  45511.  
  45512. 1.6 Example speed
  45513.  
  45514. It takes BasCompress less than 20s to compress itself.  This needs 4 special files, contains 40-odd source files (including libraries) totalling just over 450K, and compresses it down to 100K.  And all this on an Arm2 off of the standard 440 hard-disc, with all the I/O overhead that that involves.
  45515.  
  45516. 1.7 Example compression
  45517.  
  45518. Here's how well BasCompress handles compressing an early version of the Wimp front end application:
  45519.  
  45520.     192742    Total input size
  45521.  
  45522.     29659    Maximum compression
  45523.  
  45524.     29706    No decimal number analysis
  45525.  
  45526.     31129    No SWI name analysis
  45527.  
  45528.     35103    No concatenation of output lines
  45529.  
  45530.     47421    No removal of unused code
  45531.  
  45532.     51950    No reduction of labels
  45533.  
  45534. The later ones are not accumulative, the non-reduction of labels (only) really does add on 57% to the output program size!
  45535.  
  45536.  
  45537.  
  45538. 2 BasCompress
  45539.  
  45540. 2.1 Overview
  45541.  
  45542. This chapter concerns itself with Basic, and what BasCompress expects (and does) to it.
  45543.  
  45544. 2.2 Jargon
  45545.  
  45546. The following terms will be used quite frequently, so I'll explain what is meant by them:
  45547.  
  45548.     routine    a procedure or function
  45549.  
  45550.     variable    an (integer | real | string)[array]
  45551.  
  45552.     label        the name of a routine or variable
  45553.  
  45554.     name    a label with its (pre | post)fix
  45555.  
  45556.  
  45557.  
  45558. E.g. the following table might help
  45559.  
  45560.     name    label
  45561.  
  45562.     PROC_Zappa    _Zappa
  45563.  
  45564.     Frank%    Frank
  45565.  
  45566.     Cy$()    Cy
  45567.  
  45568. 2.3 Basic
  45569.  
  45570. BasCompress will only except fully tokenised basic files, it does not accept text files.  This program only knows about the tokens present in Basic V, v1.04.  The behaviour of this program on Basic files on a version greater than this is undefined.
  45571.  
  45572. Only one Basic file is parsed (but see §2.10).
  45573.  
  45574. 2.4 Numbers
  45575.  
  45576. BasCompress will interpret all numbers and try to output them in as compact a form as possible.  This is most effective on long binary numbers, but can shorten many large decimal values as well.
  45577.  
  45578. The analysis and output of (decimal) numbers requires the floating point emulator.  For this reason this can be turned off, just in case you are very short on memory.
  45579.  
  45580. Analysis of hexadecimal and binary numbers is always done, as this does not require any floating point math.
  45581.  
  45582. 2.5 SWI's
  45583.  
  45584. Acorn's interface to the operating system, the SWI is an elegant self-documenting system.  However, for interpreted languages like Basic, the translation of a SWI name to a SWI number is relatively time-consuming.
  45585.  
  45586. BasCompress will try to do this translation, leaving just a number.  This provides both large space and large execution savings, particularly for Wimp programs that use SWI's during screen redraw (that's all of them!)
  45587.  
  45588. In order for BasCompress to translate the SWI name, it must be a simple constant string expression.  If it isn't, or it can't translate it, then it is left as it is - thus providing an (almost) fool-proof conversion.  (A possible case of a complex string constant would be SYS "X"+ "OS_ReadC").
  45589.  
  45590. Both SYS calls (in Basic) and SWI calls (in assembler) are converted.
  45591.  
  45592. Note also that the any modules used by the program should be resident at the time of compression, otherwise the SWI's will be unknown and thus BasCompress will leave them as strings.  This is an easy mistake to make, and results in slower and longer compacted files being produced.  This cases ud detected, and generates a suitable warning.
  45593.  
  45594. 2.6 Star commands
  45595.  
  45596. A backward compatibility feature of Basic V is it's allowance of *Commands anywhere in Basic.  Modern programs should really put this in an OSCLI("..."), or better yet a SYS "OS_CLI", "...".
  45597.  
  45598. However, since this is allowed, some programmers use it to introduce comments in programs by using the *| comment construct.  BasCompress will remove these lines completely.  It will also remove all unnecessary *'s and spaces.
  45599.  
  45600. If this results in a complete removal of the statement, BasCompress may produce incorrect code if (and only if) this *command was just after an (explicit) THEN.  Since this is extremely bad programming practised, this author felt the benefits gained far outweigh the possible side-effects.
  45601.  
  45602. 2.7 Assembler
  45603.  
  45604. BasCompress fully understands and compacts assembler statements.  As part of this process, BasCompress also checks that the square bracket “[]” count on each statement is valid - which may be useful for detecting bugs in conditionally assembled code.
  45605.  
  45606. All R0..R15 registers get translated to 0..15, this saves a lot of space.  Also the integer EQU's can be renamed to DC's.
  45607.  
  45608. Note that the single space left after some mnemonics is necessary, without it the Basic assembler will refuse to work.
  45609.  
  45610. 2.8 Routines
  45611.  
  45612. It is important to understand that BasCompress treats a program as a group of routines.  Because of this it can remove any junk inbetween routines, i.e. comments not explicitly starting with a REM, that other squashers leave behind (and even try to analyse - producing many, many errors).
  45613.  
  45614. Because a record is kept of what happens inside a routine, it is possible to conclude that a routine isn't actually needed in the output file - and so none of the routines that it calls are needed that bit less as well.  Thus BasCompress can remove ALL unused routines from the output file.  This is a very powerful feature.
  45615.  
  45616. 2.8.1 Main program
  45617.  
  45618. BasicV does not provide a clearly defined method for distinguishing the end of the main program, and the start of the subroutines.  BasCompress treats everything from the start of the first file to the first routine definition (DEF PROC or DEF FN) to be the main program.  This isn't ideal, as many main programs consists of an infinite loop followed by junk - however there is no easy way of recognising the true end of the main program, so you have to live with it as it is.
  45619.  
  45620. If you wish to compress library files separately, i.e. files that do not contain a main routine at the start of a file, then this is easily accommodated.
  45621.  
  45622. 2.8.2 Start and end
  45623.  
  45624. The start of a Basic routine is very easily detected, it is a line that starts with DEF FN or DEF PROC.
  45625.  
  45626. However, the end of a routine isn't so easy to detect.  In the ideal world, every routine will have one, and only one exit that is a simple ENDPROC, or = <expr> on a line of its' own.  However, we all live in the real world, and things are more complicated than that.
  45627.  
  45628. 2.8.3 Conditional routine end
  45629.  
  45630. For example, consider the following function:
  45631.  
  45632.     DEF FNmin(a, b)
  45633.  
  45634.       IF a>b THEN =b ELSE =a
  45635.  
  45636. Now, the only way for BasCompress to recognise this construct is if it kept track of all branches of a conditional.  This would involve a major upgrade, and would make the program just a code-generation pass away from a true compiler.
  45637.  
  45638. So what BasCompress does is to ignore exits from a routine that occur on the same line as an IF.
  45639.  
  45640. But, in the above example, the next line will be thought to be inside the function min.  This usually results in a cascade of warning/error messages being generated.  The only cure for it is to amend the offending function.  The simplest way is to just put a dummy terminator in, e.g.
  45641.  
  45642.     DEF FNmin(a, b)
  45643.  
  45644.       IF a>b THEN =b ELSE =a
  45645.  
  45646.     = 0
  45647.  
  45648. Better yet, would be to code it “properly”:
  45649.  
  45650.     DEF FNmin(a, b)
  45651.  
  45652.       IF a>b THEN a=b
  45653.  
  45654.     = a
  45655.  
  45656.  
  45657.  
  45658. There is also the problem of programs that prematurely terminate routines inside, say, a case structure.  This happens quite often, because it makes for much shorter code, and so BasCompress recognises this, see §2.9.
  45659.  
  45660. 2.8.4 END and ERROR
  45661.  
  45662. Currently BasCompress does not recognise the fact that a routine may end with the END command, nor an unconditional ERROR.  Since these are examples of bad-programming anyway, these are easily worked around by just adding a redundant ENDPROC or =0 afterwards.
  45663.  
  45664. 2.8.5 LOCAL ERROR
  45665.  
  45666. BasCompress fully recognises local error handlers, and will force the next input line to start a new output line accordingly.
  45667.  
  45668. 2.9 Multi-line structures
  45669.  
  45670. BasCompress keeps track of the current nesting level of all multi-line structures:
  45671.  
  45672.     •    CASE ... ENDCASE
  45673.  
  45674.     •    IF THEN ... ENDIF
  45675.  
  45676.     •    REPEAT ... UNTIL
  45677.  
  45678.     •    WHILE ... ENDWHILE
  45679.  
  45680. It does this primarily to detect conditional exiting from a routine.  For example, if an ENDPROC or = <expr> is detected inside such a structure, then BasCompress knows it isn't the true end of the routine, and so will ignore it.  A very useful side-effect of this is that BasCompress detects programming errors in the use of these constructs, errors that the run time Basic interpreter allows through.  These very often are genuine program mistakes, usually inside error-handling code that is not fully debugged.
  45681.  
  45682. However, there are two caveats to this.  Firstly, in order for BasCompress to do this it must assume that the start of any multi-line structure is not inside a one-line IF construct.  Unfortunately, some programmers put a quick WHILE ... ENDWHILE loop in a one-line IF.  BasCompress does not handle this correctly and this line needs to be split into a true multi-line IF.
  45683.  
  45684. Secondly, and just as less seriously, BasicV is rather lax in it's attitude towards multi-line structures.  For example:
  45685.  
  45686.     REPEAT
  45687.  
  45688.       i += 1
  45689.  
  45690.       CASE x(i) OF
  45691.  
  45692.       WHEN 1:
  45693.  
  45694.         IF do_it THEN
  45695.  
  45696.           UNTIL FALSE:ENDPROC
  45697.  
  45698.         ENDIF
  45699.  
  45700.         ...
  45701.  
  45702.       ...
  45703.  
  45704.       ENDCASE
  45705.  
  45706.     UNTIL i>max_i
  45707.  
  45708. Here, BasicV will rather carelessly execute the UNTIL, even though it isn't at the same nesting level as the matching REPEAT.  BasCompress is not so lenient and it will refuse point blank to handle such code.  It is another example of bad programming being used, and should be re-coded in another way.
  45709.  
  45710. 2.10 Libraries
  45711.  
  45712. The use of the LIBRARY call is recognised.  It causes the appropriate file to be appended to the queue of files to be parsed, and the entire LIBRARY statement to be removed from the output.
  45713.  
  45714. For this to work, BasCompress assumes a simple string constant follows the LIBRARY.  If this is not the case and it uses a variable/routine parameter then you will need to set up a Special file.  This will tell BasCompress what to expect the variable to be so it can load the correct file.  Please refer to the §6.
  45715.  
  45716. All LIBRARY files are only ever scanned once, even if it is included many times.
  45717.  
  45718. 2.10.1 Multiply-defined routines in libraries
  45719.  
  45720. Note that the loading of libraries, as performed by BasCompress is not exactly the same as the order that BasicV would have loaded them in.  This could only cause a problem if multiply-defined routines exist, and further more these multiple definitions are themselves in library files, not the main file.  If this situation does arise, then the kludge is: include the library containing the preferred definition twice, once before and once after the LIBRARY containing the unwanted definition.  This will work because BasCompress will use the first loaded, and the uncompressed program would use the second!
  45721.  
  45722. Of course, the loading of libraries will mean that the current directory and/or some system variables (e.g. App$Dir) may need to be set up - otherwise BasCompress will not be able to locate the library file.
  45723.  
  45724. 2.11 Label reduction
  45725.  
  45726. A lot of the time that BasicV takes to interpret a program is spent looking up variable names.  BasCompress will attempt to reduce the long labels down to size, often producing dramatic space and speed improvements.  The algorithm used ensures that the most used variables are chosen for the shortest variable names, and the names themselves are chosen so as to spread evenly across the name-space.
  45727.  
  45728. Did you note the word attempt in the above paragraph.  This is because basic is an interpreted language and provides the powerful commands EVAL and DATA, allowing expressions to be evaluated in the current context.  For instance EVAL("zappa%") would yield the value of the variable zappa%.  But, if BasCompress had reduced this variable down to, say, A% in the rest of the program (because  it analysed the program in a different context) then what happens at run-time is you get a variable not found error.
  45729.  
  45730. There are two solutions to this very common problem.  The first is to disable label reduction on all variables of the type that are used in EVAL or DATA statements.  This is extremely wasteful, but the only option available in other squashers.  With BasCompress there is a much more elegant solution - you can specify all the labels that must not be reduced.  Further more, these variables can be implied from the parameters passed to a routine!
  45731.  
  45732. For example, many Wimp-based programs will have a menu-construction suite of routines.  These will be passed a string that describes the menu.  Inside this string will be references to variables that at run-time will point to more information (sub-menus or windows usually).  With BasCompress, you can get it to analyse all these strings, extract the variables, and then reduce all other variables apart from those.  This is a very powerful feature.  See the §6 for more info.
  45733.  
  45734. Note that BasCompress goes to the trouble of making sure that it never produces one of the “built-in” register labels used by the assembler (R0-R15, pc).  On other basic squashers this can lead to VERY obscure bugs.
  45735.  
  45736. Also worth mentioning is that any labels accessed inside deleted routines are automatically removed from the list of labels to reduce.  This produces better results than just reducing all labels found.
  45737.  
  45738. BasCompress can handle any number of labels, well as many as could fit into 16Mb of RAM :-)
  45739.  
  45740. 2.12 Line numbers
  45741.  
  45742. Normally line numbers are an anathema but there does exist a valid reason for using them in BasicV, and so line number handling has been included in BasCompress.  The reason why line numbers may be needed is if a program claims more memory though the use of the END=<expr> construct.  This has the unfortunate side-effect of removing all routine level info, so you have to GOTO the main program loop).
  45743.  
  45744. Obviously, line numbers found in any library files are faulted as there is no valid reason for them being there.
  45745.  
  45746. Note that in short programs it is just possible that there will be a GOTO to a destination outside both the main program and all other routines.  Currently BasCompress does not handle this (rather rare) case.  As a kludge, surround the offending code in a dummy routine.
  45747.  
  45748. 2.12.1 Output line numbers
  45749.  
  45750. If no line numbers were found then line numbering is easy.  For single-file programs the line numbers keep to their original values, even if multi-line compaction is enabled.  For multi-file programs the output file starts from 1 and increases in steps of 1.
  45751.  
  45752. If line numbers were found then the line numbers in the original program are used for the original program part, and thereafter line numbers increment in steps of one for any further libraries.
  45753.  
  45754. Unfortunately BasicV only allows line numbers up to around 65000 odd.  This could possibly be a problem if the original program has line numbers up to, say, 64000, and includes quite a few library files.  This is one of the few possible errors that are not checked for, as the possibility of it occurring are just so remote.
  45755.  
  45756. 2.13 Multi-line output
  45757.  
  45758. Normally as many statements are compressed onto one output line as will fit.  This produces the smallest files as the overhead that Basic imposes on each line is reduced by quite a bit.
  45759.  
  45760. However, it can produce code that runs slower.  This is because it appears BasicV only notes the statement number of an implicit jump (e.g. after a FOR, WHILE, or REPEAT).  And so if this is on statement 56 of a line, say, then it has to scan all along the line to find where to continue execution.  This situation may be recognised in a future upgrade by forcing the statement after one of these cases to start on a new line.
  45761.  
  45762. 2.14 DATA
  45763.  
  45764. BasCompress recognises the possibility that DATA may not reside inside a routine.  All “unlinked” DATA statements will still be included in the output file, but only if there is some code left that will READ it.
  45765.  
  45766. Please note that variables used as DATA will require the use of Special files.
  45767.  
  45768. 2.15 Re-compressing
  45769.  
  45770. Although at first sight the notion of compressing an already compressed file may seem a waste of time, in actual fact it is not.
  45771.  
  45772. This is because BasCompress compresses a whole line at a time, and then merges together two or more lines.  This isn't done quite as optimally as possible, and sometimes extra colons are inserted.
  45773.  
  45774. If the output is fed back into BasCompress these extra colons will be removed, as it will be obvious that they are truly redundant.
  45775.  
  45776. This is best achieved by first compressing with reduction of function and procedure names only (thus ensuring ‘special’ routines only parsed once), and then a second time with full reduction of variable names.
  45777.  
  45778.  
  45779.  
  45780. 3 Cross-referencing
  45781.  
  45782. 3.1 Overview
  45783.  
  45784. The cross-referencing of a large program can provide many useful insights, providing you can organise the output so as not to swamp you with “useless” information.  To this end you can control what gets include, the level of detail, and the ordering (with many types of ordering available).
  45785.  
  45786. Note that the cross-referencing of variables and routines is completely independent.
  45787.  
  45788. 3.1.1 What's cross-referenced
  45789.  
  45790. The cross-reference contains only the routines and variables that will be included in the output file.  Since dead code is usually removed, you have to tell BasCompress to keep in all would-be deleted stuff if you need a complete cross-reference.
  45791.  
  45792. You can also control exactly what types of labels are included.  Usually you'd keep the default (everything), but sometimes you don't care about all the real variables, say, and this is easily catered for.
  45793.  
  45794. 3.1.2 What's output
  45795.  
  45796. The result of the cross-referencing is sent to the cross-reference file, or the screen if none is specified.  Since this is a lot of data, you will almost certainly want to use a file.  The front end application has the ability to automatically load this into the resident text editor.
  45797.  
  45798. 3.1.3 Messages
  45799.  
  45800. The formatting of the cross-reference is defined using the external Messages file.  By altering the following messages you can tailor the output of the program dramatically (see appendix A for description of format of messages):-
  45801.  
  45802.     Name    Show label and its' qualifying string (“%s%s”)
  45803.  
  45804.     Comma    Separates distinct references (“, ”)
  45805.  
  45806.     SemiColon    Separates similar references (“; ”)
  45807.  
  45808. They are currently set up to produce “one-line-per entry”.  However, it is possible to change these three so that every distinct reference appears on each separate line, vis-a-vis:
  45809.  
  45810.     Name:    \n\t%s%s
  45811.  
  45812.     Comma:    \n\t
  45813.  
  45814.     SemiColon:    ,% 
  45815.  
  45816. But note, you will probably need to alter all the titles used so that they start rather than end with a newline.  (The \t expands to a tab character, this is usually better than many spaces, since cross-reference files are large enough as it is)
  45817.  
  45818. 3.2 Level of detail
  45819.  
  45820. There are four levels of detail supported by BasCompress:
  45821.  
  45822.     None    suppresses output, obvious really
  45823.  
  45824.     Existence    useful to just list the name of all the labels used
  45825.  
  45826.     Global    gives the additional information of a count of the label usage
  45827.  
  45828.     Routine    reports only each separate routine where a reference was made, this is probably the most useful option
  45829.  
  45830.     Line    details the exact statement for every reference
  45831.  
  45832. For the last two, each label has separate lists.  For routines there is: defined, calls, called by; and for variables there is: declared, assigned, and referenced.
  45833.  
  45834. Note that the main program itself is treated internally as a procedure, and so appears in the routine cross-reference.
  45835.  
  45836. 3.2.1 Routine definition
  45837.  
  45838. This gives the file and line numbers of the start and end of the routine.
  45839.  
  45840. 3.2.2 Routine calls
  45841.  
  45842. Lists the names of the routines called by this routine, and the line number of the call.
  45843.  
  45844. 3.2.3 Routine called by
  45845.  
  45846. Lists the names of the routines that calls this routine, and the line number of the call.
  45847.  
  45848. If the list is empty then BasCompress knows that this routine is not needed in the output program, and so will not include it.
  45849.  
  45850. 3.2.4 Variable declaration
  45851.  
  45852. Where a label was “declared”.  By this BasCompress means it is a formal parameter of a routine, or explicitly declared as LOCAL.
  45853.  
  45854. 3.2.5 Variable assignment
  45855.  
  45856. When ever a variable appears at the start of a statement.  This includes assembler statements.
  45857.  
  45858. Note that BasCompress sometimes thinks variable assignments are references.  This happens in the following cases:
  45859.  
  45860.     •    variable is passed to a routine with RETURN parameters
  45861.  
  45862.     •    assignment after a one-line IF that is without a THEN
  45863.  
  45864. Here's an example of the later:
  45865.  
  45866.     IF x<y x=y
  45867.  
  45868. Because Bascompress doesn't try to understand the conditional, it doesn't know that a new statement has started and so can't categorise the second reference to x as an assignment.  See §8.2.
  45869.  
  45870. 3.2.6 Variable reference
  45871.  
  45872. Any other instance of a variable other than the above two is taken to be a reference.
  45873.  
  45874. BasCompress will not recognise the fact that x += 1 is actually both an assignment and a reference.
  45875.  
  45876. BasCompress will also fail to recognise that var!0 = 1 only references var and does not assign to it.
  45877.  
  45878. 3.3 Order
  45879.  
  45880. There are many uses you can put to a list of labels, provided you can order them in the way you need.  BasCompress allows you to specify as many levels of sorting as you would need, with all the types of ordering that are relevant to the labels!
  45881.  
  45882. You can sort in either direction - top to bottom, or the more usual bottom to top.
  45883.  
  45884. These are the following sort types currently supported:
  45885.  
  45886.     Name    in Ascii order
  45887.  
  45888.     Type    for routines: function, procedure
  45889.  
  45890.             for variables: integer, real, string, integer array, real array, string array
  45891.  
  45892.     Dictionary    by name, but as it would appear in a dictionary
  45893.  
  45894.     Location    the location of the reference
  45895.  
  45896.     Usage    for routines: number of times it is called
  45897.  
  45898.             for variables: sum of the assignments and the references
  45899.  
  45900. Note the needed for multi-level sorting.  You would normally sort labels by name, and type; and references by name, type, and location.
  45901.  
  45902. Trying to sort labels by location has no meaning, and will result in a seemingly random order.  So it is not possible to list routines in the order they were defined in.
  45903.  
  45904.  
  45905.  
  45906. 4 The front end
  45907.  
  45908. This describes the Wimp front end application.  This allows the user to set up the parameters for the back end program in a friendly way.
  45909.  
  45910. 4.1 Starting
  45911.  
  45912. A standard Archimedes application, just double-click the Filer icon to install the application onto the icon bar.
  45913.  
  45914. For foreign users, see the appendix A describing the Message file .
  45915.  
  45916. 4.2 Overview
  45917.  
  45918. Because the back end works on, and produces, a number of whole files the format of this application is slightly unorthodox.
  45919.  
  45920. Basically you use the standard Risc-Os method of dragging file icons to Filer windows (to define the output files), and then drag a basic file onto the application to invoke the back end application to compress it.  This generates the new log, cross-reference, and output files.
  45921.  
  45922. Not all of the output files need to be defined.  Usually there is no need for a cross-reference.  But, you will almost certainly want the log file defined, as otherwise you would not know what errors occurred, or anything else.
  45923.  
  45924. It is almost a pre-requisite to have Edit running alongside this front end in order for you to view the log that the back end application produces.  The loading of this log will normally be automatic.
  45925.  
  45926. 4.2.1 Icon bar icon
  45927.  
  45928. The icon bar icon shows some messages while the back end is active.  This gives a visual reference to what is going on.
  45929.  
  45930. Clicking SELECT on the icon bar icon brings the control window to the front of the window stack.
  45931.  
  45932. Clicking ADJUST in the icon bar icon re-loads the last input file, using the new options.  This is extremely handy.
  45933.  
  45934. 4.3 Control window
  45935.  
  45936.  
  45937.  
  45938.  
  45939.  
  45940. This is automatically opened to the center of the screen when the application starts.  It allows you to quickly set up all the files to be used, and as a side effect it gives you the chance to open a menu somewhere other than in the bottom right of the screen :-).  The left-most three icon groups act just like the save as dialogue boxes to be found on the menu.
  45941.  
  45942. The special file is defined by dragging a Text file onto this window.  More special files can be defined by editing the text field, appending a comma separated list of file names.
  45943.  
  45944. 4.4 Main menu
  45945.  
  45946.  
  45947.  
  45948.  
  45949.  
  45950. There is only one menu.
  45951.  
  45952. Because the sub-menus are rather on the large side, it is recommended that you bring the menu up over the control window.  This was the main reason for having a control window, as a convenient anchor for the menu.
  45953.  
  45954. 4.5 Input
  45955.  
  45956.  
  45957.  
  45958.  
  45959.  
  45960. This sub-menu defines various parameters affecting BasCompress's analysis of the input file.
  45961.  
  45962. Allow multiply-defined routines
  45963.  
  45964. It is better to leave this option un-ticked, so that if a routine is defined more than once an error is generated.  This is the default.
  45965.  
  45966. Ticking this option allows a routine to be defined more than once, with only warnings being given.  See §2.10.1.
  45967.  
  45968. Report multiple exits from a routine
  45969.  
  45970. BasCompress needs to know when each and every routine ends.  If it finds more than one exit it will report it.  For large programs this can produce many warnings, and so these warnings can be disabled.  See §2.8.3.
  45971.  
  45972. Parse numbers
  45973.  
  45974. This toggles whether BasCompress will try to reduce a string of decimal digits.  Hexadecimal and binary numbers are always compressed.  See §2.4.
  45975.  
  45976. Convert SWIs to numbers
  45977.  
  45978. There doesn't appear to be any reason to disable this.  See §2.5.
  45979.  
  45980. Force malformed SWI's to generate error
  45981.  
  45982. Malformed SWI's are those that aren't simple strings, e.g. "X"+ "Wimp_Poll".  With this enabled these generate an error, otherwise just a warning.  See §2.5.
  45983.  
  45984. Report unknown SWI's
  45985.  
  45986. In order for BasCompress to convert a SWI string to a number the Module must be resident at the time of compression.  If the module is not resident, then this warning will be given.  This toggles the appearance of such warnings, and is usually left enabled.  See §2.5.
  45987.  
  45988. Process as a library file
  45989.  
  45990. This option allows the input file to be treated as a library file.  This means that no main program is expected, and any undefined variables and routines do not generate an error.  Of course, using this option is usually pointless without also disabling all label reductions.
  45991.  
  45992. 4.6 Output
  45993.  
  45994.  
  45995.  
  45996.  
  45997.  
  45998. This sub-menu allows you to tailor how much compression is applied to the output programs.  Redundant spaces and comments are always removed, since there seems little point in using baScompress without doing this.
  45999.  
  46000. By default all compression is on.
  46001.  
  46002. Save as
  46003.  
  46004. This leads to a standard dialogue box, used to define the basic file that will be produced if the input is analysed without error.
  46005.  
  46006. Concatenate lines
  46007.  
  46008. Forces as many statements as possible onto each output line.  This is usually very desirable as it produces quite substantially shorter code, but at the possible loss of a bit of execution speed.  See §2.13.
  46009.  
  46010. Remove unused routines
  46011.  
  46012. Because BasCompress can work out exactly which routines are, and are not needed in the final program, then it can remove unused routines.  This is the default, and there is little point in disabling it, other than creating a full cross-reference.
  46013.  
  46014. List
  46015.  
  46016. This leads to a simple sub-menu where you can specify the screen mode to use.  When enabled, as BasCompress produces the output file it will switch to that screen mode and scroll the source and output in two separate columns.  Although "pretty", it is also pretty useless, as this takes at least an order of magnitude longer to do, what with all that screen scrolling and printing.
  46017.  
  46018. Reduce variable names
  46019.  
  46020.  
  46021.  
  46022.  
  46023.  
  46024. By default, all variable types are reduced.  The only conceivable use for disabling the reduction of these would be to circumvent the use of EVAL or DATA variables, although BasCompress provides a much better method, via the use of Special files.  See §2.11.
  46025.  
  46026. The final option, ‘E’ suppression is used to stop BasCompress shortening any variables to a name beginning with an ‘E’.  For the reason why this might be desirable, see §8.12.
  46027.  
  46028. Reduce routine names
  46029.  
  46030.  
  46031.  
  46032.  
  46033.  
  46034. By default, all procedure and function names are reduced.  The only conceivable use for disabling the reduction of these would be to circumvent the use of function names used inside an EVAL construct, although BasCompress provides a much better method to handle this, via the use of Special files.
  46035.  
  46036. 4.7 Log
  46037.  
  46038.  
  46039.  
  46040.  
  46041.  
  46042. The log sub-menu controls what additional information may be inserted into the log file, along with the name of all files scanned and any warnings and errors.
  46043.  
  46044. Save as
  46045.  
  46046. This leads to a standard save as dialogue box, used to define the file to which the log will be dumped.  This will be a standard Text file.
  46047.  
  46048.  
  46049.  
  46050. Statistics
  46051.  
  46052. This shows how many of each type of variable and routine there is altogether in the program.  This includes all deleted labels.
  46053.  
  46054.  
  46055.  
  46056. EVAL keyword
  46057.  
  46058. DATA keyword
  46059.  
  46060. READ keyword
  46061.  
  46062. These will list out every line that contains such a keyword, indicating where BasCompress may introduce errors because of its' reduction of labels.  Note that only the use of these keywords outside special routines is reported, as it is assumed the use of the keyword was fully handled by the Special file.  Further note that DATA found outside any routine is just reported as unlinked.
  46063.  
  46064. List input
  46065.  
  46066. With this option ticked, the input basic is also listed inside the log file.  This produces humongous files, as this is plain text Basic not tokenised Basic.
  46067.  
  46068. 4.8 Special files
  46069.  
  46070.  
  46071.  
  46072.  
  46073.  
  46074. Special files are used to help BasCompress to handle the EVALuation of variables.  A special file consisting of a list of routines that are expected to contain this keyword, and/or a secondary list of any particular labels that must not be reduced.
  46075.  
  46076. The writable menu item allows you to type in a full pathname.  It is easier just to drag the file onto the control window, though.
  46077.  
  46078. Warn undefined
  46079.  
  46080. Normally it wouldn't matter that you have told BasCompress about special routines that aren't used in the input file.  However there is still this option that will report superfluous definitions found in Special files.
  46081.  
  46082. Show expansion
  46083.  
  46084. With this item ticked, every special label constructed will generate a warning message into the log file.  This can be useful for showing what you think should appear, and what BasCompress thinks should appear.
  46085.  
  46086. 4.9 Cross-reference
  46087.  
  46088.  
  46089.  
  46090.  
  46091.  
  46092. From here you define all aspects of the (rather large) cross-referencing sub-system.
  46093.  
  46094. Save as
  46095.  
  46096. This leads to a standard save as dialogue box, used to define the file to which the cross-reference will be dumped.  This will be a standard Text file.
  46097.  
  46098. Include deleted
  46099.  
  46100. When ticked, this will force all the superfluous routines and variables to be included in the cross-reference.  This is usually not such a good idea, as the process of deletion removes all the reference information.  For a full cross-reference, also disable the removal of unused routines (see Output), which leaves this information in tact.
  46101.  
  46102. Reference order
  46103.  
  46104. This leads to an order dialogue box (see below) used to set the sorting criteria for the references.  This is probably best left as the default: Name, Type, Location.
  46105.  
  46106. Variables
  46107.  
  46108. Routines
  46109.  
  46110.  
  46111.  
  46112.  
  46113.  
  46114. These two items lead into identical sub-menus.  They allow the cross-referencing to be defined for both independently.
  46115.  
  46116. Verbosity
  46117.  
  46118. This leads to a sub-menu where you can define the level of detail of the cross-referencing information.  See §3.2.
  46119.  
  46120. Types
  46121.  
  46122. Used to define what types of variables or routines are included in the cross-reference.  Usually this would be all types, but sometimes you might only want to know about the integers, say.  Just de-tick all the others.
  46123.  
  46124. Order
  46125.  
  46126.  
  46127.  
  46128.  
  46129.  
  46130. This dialogue box is quite complicated.  Basically, you are trying to define several layers of ordering.  First of all everything is sorted according to the left hand column.  Now BasCompress goes through these sorted items looking for a sequence of items that are the same, according to this ordering.  Now, for each sequence found it will sort them again using whatever you have defined in column two.  This recurses on each smaller and smaller sub-sequence to the columns on the right.
  46131.  
  46132. Obviously, it isn't much use having two columns sorting by the same criteria, so BasCompress will not allow you to select it.
  46133.  
  46134. You can delete a column by ADJUST clicking on the ordering already used.  This will cause all columns to the right to shuffle one column to the left (this is quite a pleasing graphical effect :-)
  46135.  
  46136. It isn't possible to have a “blank” column.  If you attempt to create a blank column then your new column will be shifted to the left (yet another pleasing graphical effect :-)
  46137.  
  46138. It is possible to delete all columns.  This will cause the output to appear in a seemingly random order.  Not much use, apart from seeing how good the hashing function is!
  46139.  
  46140. Ordering by location is only meaningful for references.  Using this option for variables or routines will result in a (seemingly) random order.
  46141.  
  46142. The Dict. standards for dictionary, and is similar to Name, except instead of ordering by ASCII, order as it would appear in a... (guess).
  46143.  
  46144. 4.10 Choices Dialogue Box
  46145.  
  46146.  
  46147.  
  46148.  
  46149.  
  46150. This dialogue bog controls aspects of the front end application itself, not the back end.  It grabs the input focus so that some keyboard short cuts can be used, must notably RETURN and ESCAPE.  Also the bottom row of buttons can be pressed using F2, F3, etc..
  46151.  
  46152. Set
  46153.  
  46154. This accepts the above values for the current session of BasCompress.  For the effects to be permanent use either Save or Save full.  Also see the note below about using outline fonts in dialogue boxes.
  46155.  
  46156. Cancel
  46157.  
  46158. This disregards any edits you have made to the above options.
  46159.  
  46160. Save full
  46161.  
  46162. Along with all the expected switches and sort ordering, also saved with the choices are the default names of the log, cross-reference and output files.  This option saves the full pathname of each of these files, and would be used while developing a project, to save dragging the log and output files each session.
  46163.  
  46164.  
  46165.  
  46166. Save
  46167.  
  46168. As Save full but only the leaf names of the log, cross-reference and output files are saved.  This is handy for more generic environments.  For instance, if you always call your Wimp programs Wimp, then to make a standard application from this, the output file would be !RunImage, and this would be a better default to have than Output.
  46169.  
  46170. Default
  46171.  
  46172. This sets up everything to a default state, for when you've made a complete mess of the options.  This default state can also be achieved by deleting the Choices file inside !BC.!fe, and restarting the application.
  46173.  
  46174. Run BasCompressed file
  46175.  
  46176. With this option ticked whenever an output file is specified it is immediately executed after being generated.  This is useful while constructing a Special file, so the program can proceed and report the missing variables found :-)
  46177.  
  46178. Load log file
  46179.  
  46180. If a log file was specified then this is “opened” immediately after it is generated.  On a properly set up system this would cause Edit to be loaded up automatically if necessary, and replace any version currently held if Edit is already resident.  Multi-tasking at its best.  Note that if you edit the “old” log file, then this smoothness is ruined, because Edit will open up a new window containing the new version.  C'est la vie.
  46181.  
  46182. Load cross-reference file
  46183.  
  46184. Same as the above option, but loads the cross-reference file generated, if any.
  46185.  
  46186. Name output as <Main>
  46187.  
  46188. This is a kludge to reduce the size of both cross-reference and log files.  As any Wimp application must use the full pathname of every file, this is what is passed to the back end application.  However this causes the full pathname to be printed in every error message and reference.  As a stop gap, this front end can be told to set the environment variable <Main> to the full pathname, and pass this to the back end application.  It does mean you don't see the actual name of the file being processed, but that usually isn't a problem as you know that anyway.
  46189.  
  46190. Output file leaf name same as input
  46191.  
  46192. This option is useful when compressing lots of files from one directory to another, for example having compressed versions of all your library files.  Having defined the output directory, the full pathname is constructed from this directory and the leaf name of the input file, saving quite a bit of typing.
  46193.  
  46194. Use outline fonts in dialogue boxes
  46195.  
  46196. BasCompress comes with two versions of all its’ windows − with and without outline fonts.  Users of low-resolution monitors may prefer to use the system font versions.  Also, RiscPC users may have to use the “System font” windows for two reasons: first because the fontified windows use fonts at a different size (slightly larger for low resolution users) which looks ugly but more importantly because of a bug in the Window Manager that causes clicks on (genuine) font icons to cause the Wimp to “forget” the text font :(
  46197.  
  46198. Note that for historical reasons changes to this option are not updated immediately but only take effect the next time BasCompress is run.
  46199.  
  46200.  
  46201.  
  46202. 5 The back end
  46203.  
  46204. This chapter describes the underlying CLI program, and how to use it effectively.
  46205.  
  46206. By default all text output is to the screen.  This can be redirected to separate log and cross-reference files, as required.
  46207.  
  46208. 5.1 Invoking
  46209.  
  46210. Double-clicking on the application directory from a Filer window will automatically start up the Wimp front end application.  This is because no parameters were passed to the !Run file.
  46211.  
  46212. If any parameters are passed to the application, i.e. you activated it from a command shell then the back end application is called direct.
  46213.  
  46214. This application requires the floating point emulator module to be resident.  This is automatically loaded from the current system resources.  (Floating point arithmetic is only used to analyse and output decimal numbers, this can be disabled and so there will be no need to load the floating point emulator - this is not a recommended procedure, though).
  46215.  
  46216. Also required to be resident is the authors' own library module: CAssembler.
  46217.  
  46218. These modules are automatically loaded if not resident.
  46219.  
  46220. 5.2 Installing
  46221.  
  46222. There are two methods of installing BasCompress for easy use from a shell.  One is to just install the application onto your Run$Path, and use it by *!BC file.
  46223.  
  46224. This has the disadvantage in that you must remember the !.  The much better alternative is to use the Alias$BasCompress that is set up for you in the !Boot file.  Thus it is only required to run this !Boot file in your boot-up sequence, and then call BasCompress by *BasCompress file.
  46225.  
  46226. In both the above it is essential that the !Run file gets executed, as this ensures auxiliary modules are resident and checks that there will be enough memory to start the application.
  46227.  
  46228. 5.3 Environment variables
  46229.  
  46230. Because the CLI limits command lines to (a paltry) 256 bytes, several tricks were used in order to make the front end application work effectively with the back end program (with full pathnames).  These can be put to great advantage for CLI users.  In all cases an unset, or empty variable is ignored.
  46231.  
  46232. BasCompress$Options
  46233.  
  46234.         This should be a string of the same format as a normal parameter set, except missing the name of the input file (of course).  With this you can override any of the built-in default values with your own preferred set.
  46235.  
  46236. BasCompress$Output
  46237.  
  46238.         The name of the tokenised basic file produced.
  46239.  
  46240. BasCompress$Log
  46241.  
  46242.         The name of the log file produced.
  46243.  
  46244. BasCompress$XRef
  46245.  
  46246.         The name of the cross-reference file produced.
  46247.  
  46248. BasCompress$Special
  46249.  
  46250.         The name of the special file(s) input (a comma separated list).
  46251.  
  46252. BasCompress$Path
  46253.  
  46254.         A comma separated list of directories used to find Special files
  46255.  
  46256. It should be noted that the front end application resets all of these variables (except the Path), so keep this in mind.
  46257.  
  46258. 5.4 The CLI parameters
  46259.  
  46260. The ordering of the parameters has been carefully set up so there is usually no need to name any parameters.
  46261.  
  46262.     BasCompress [-In] <file>
  46263.  
  46264.          [[-Out <file>]
  46265.  
  46266.          [[-Special] <files>]
  46267.  
  46268.          [[-Log] <file>]
  46269.  
  46270.          [[-XRefFile] <file>]
  46271.  
  46272.          [[-XRef] <n>]
  46273.  
  46274.          ...
  46275.  
  46276. So for normal work you would have set up BasCompress$Options and you'd just do BasCompress @.MyProg @.Result @.Special @.Log "" 0.
  46277.  
  46278. There is a -Help option to display a brief description of the available options.
  46279.  
  46280. As with all all native Archimedes applications, switches toggle the previous state (OS_ReadArgs does not allow -f and +f).
  46281.  
  46282. 5.4.1 Input
  46283.  
  46284.  
  46285.  
  46286. -In <file>    this must always be given
  46287.  
  46288. -Library    ignore undefined routines & main program (OFF) §2.8.1
  46289.  
  46290. -MultiDEF    allow multiple definitions of the same routine (OFF) §2.10.1
  46291.  
  46292. -Number    analyse decimal numbers (needs FPEmulator) (ON) § 2.4
  46293.  
  46294. -SWI        convert SWI strings to numbers (ON) §2.5
  46295.  
  46296. -SWIBad    fault malformed SWI names (OFF) §2.5
  46297.  
  46298. -SWIExist    report unknown SWI strings (ON) §2.5
  46299.  
  46300. -WEndRtn    report conditional exits (ON) §2.8.3
  46301.  
  46302. 5.4.2 Output
  46303.  
  46304.  
  46305.  
  46306. -ListOut <n>    echo output in screen mode <n> (OFF)
  46307.  
  46308. -Out <file>    output file (see BasCompress$Output)
  46309.  
  46310. -ReduceVar <type>
  46311.  
  46312. -ReduceRtn <type>
  46313.  
  46314. -Reduce <type>    reduce these types of labels (irsIRSpf) §2.11
  46315.  
  46316. -Single    no concatenation of output lines (OFF) §2.13
  46317.  
  46318. -Unused    delete unused routines and variables (ON) §2.8
  46319.  
  46320.  
  46321.  
  46322. <type> is a string of these letters:
  46323.  
  46324.     p    procedure
  46325.  
  46326.     f    function
  46327.  
  46328.     r    real variable
  46329.  
  46330.     i    integer variable
  46331.  
  46332.     s    string variable
  46333.  
  46334.     R    real array variable
  46335.  
  46336.     I    integer array variable
  46337.  
  46338.     S    string array variable
  46339.  
  46340. 5.4.2.1 Output listing
  46341.  
  46342. First the mode is selected (-1 would select the current mode), and an appropriate warning or error generated if that mode is not available.  Next a blue-on-white colour scheme is selected.  Then the display is split into two columns, with the left column about 61% of the screen wide (80 columns in mode 16).  The source listing is scrolled here.  On the right column the output is scrolled.
  46343.  
  46344. The source listing does not include any deleted routines, but does include all inter-routine junk.  The output listing is as per the output file, in its' entirety.  The right column is only updated each time a whole line has been amassed, which could take a while if maximum compression is selected.
  46345.  
  46346. There isn't really much use for this option, as the time taken to scroll the screen takes far too long.
  46347.  
  46348. 5.4.3 Log
  46349.  
  46350.  
  46351.  
  46352. -DATA        log lines containing DATA (ON)
  46353.  
  46354. -EVAL        log lines containing EVAL (ON)
  46355.  
  46356. -Goto        log lines containing line numbers (ON)
  46357.  
  46358. -List        echo input to log (OFF)
  46359.  
  46360. -Log <file>    output file (see BasCompress$Log)
  46361.  
  46362. -READ        log lines containing READ (ON)
  46363.  
  46364. -Stats        log program statistics (ON)
  46365.  
  46366. 5.4.4 Special
  46367.  
  46368.  
  46369.  
  46370. -Special <files>    use comma list of <file> to resolve implicit usages (see BasCompress$Special and BasCompress$Path)
  46371.  
  46372. -UnusedS    report undefined special routines (OFF)
  46373.  
  46374. -WSpLabel    report label expansion results (OFF)
  46375.  
  46376. 5.4.5 Cross-reference
  46377.  
  46378.  
  46379.  
  46380. -XRefFile <file>    output file (see BasCompress$XRef)
  46381.  
  46382. 5.4.5.1 What
  46383.  
  46384.  
  46385.  
  46386. -Deleted    xref includes deleted variables and routines (OFF)
  46387.  
  46388. -XIncVar <type>
  46389.  
  46390. -XIncRtn <type>
  46391.  
  46392. -XInc <type>    xref these types of labels (irsIRSpf) §3.1.1
  46393.  
  46394.  
  46395.  
  46396. <type> is a string of these letters:
  46397.  
  46398.     p    procedure
  46399.  
  46400.     f    function
  46401.  
  46402.     r    real variable
  46403.  
  46404.     i    integer variable
  46405.  
  46406.     s    string variable
  46407.  
  46408.     R    real array variable
  46409.  
  46410.     I    integer array variable
  46411.  
  46412.     S    string array variable
  46413.  
  46414. 5.4.5.2 How much
  46415.  
  46416.  
  46417.  
  46418. -XRef <n>    level of xref detail for both routines and variables §3.2
  46419.  
  46420. -XRtn <n>    level of xref detail for routines (0)
  46421.  
  46422. -XVar <n>    level of xref detail for variables (0)
  46423.  
  46424.  
  46425.  
  46426. <n> evaluates to a number from 0 to 4:
  46427.  
  46428.     0    None
  46429.  
  46430.     1    Existence - name
  46431.  
  46432.     2    Global - name / count
  46433.  
  46434.     3    Routine - reference to routine level
  46435.  
  46436.     4    Line - reference to line level
  46437.  
  46438. 5.4.5.3 Order
  46439.  
  46440.  
  46441.  
  46442. -Sort <sort>    order of all variable, routine, and reference sorting §3.3
  46443.  
  46444. -SRef <sort>    order of cross–references (NTP)
  46445.  
  46446. -SRtn <sort>    order of routines (TN)
  46447.  
  46448. -SVar <sort>    order of variables (TN)
  46449.  
  46450.  
  46451.  
  46452. <sort> is a string of these letters:
  46453.  
  46454.     N    sort by name
  46455.  
  46456.     T    sort by type
  46457.  
  46458.     D    sort by name (in dictionary sense)
  46459.  
  46460.     P    sort by position in source
  46461.  
  46462.     U    sort by usage
  46463.  
  46464. e.g. to sort by usage, name, then type = “UNT”.
  46465.  
  46466. Lower case letters order top to bottom.
  46467.  
  46468. 5.5 Error handling
  46469.  
  46470. By errors, it is meant system errors (i.e. those generated by calls to the operating system).
  46471.  
  46472. Admittedly, error handling is quite primitive in BasCompress.  All calls to the operating system are tested for error condition, and if set this is immediately propagated all the way back to the user, with an appropriate message dumped in the log file.
  46473.  
  46474. Errors occurring before the log file is opened are reported to the screen.
  46475.  
  46476. In any case, an error safely closes all files opened by this application.
  46477.  
  46478. 5.6 Escape handling
  46479.  
  46480. As with error handling, this is fairly primitive.
  46481.  
  46482. BasCompress can be aborted at any time, terminating immediately after closing all open files.
  46483.  
  46484. Note that during the middle of program output the Basic file will be Type'd to Data, as a safeguard against loading it into BasicV.  (This does not handle zero-length files very well - it hangs the machine).
  46485.  
  46486. 5.7 Hourglass
  46487.  
  46488. The hourglass is used to indicate BasCompress's progress.
  46489.  
  46490. During parsing, the percentage shows how much has already been analysed.  Note that because BasCompress can not know the total length of input beforehand, the percentage may actually go backwards as LIBRARY statements are parsed.
  46491.  
  46492. During cross referencing, there is no percentage, but the bottom L.E.D. is on.
  46493.  
  46494. Finally, during program output an accurate percentage is displayed, with the top L.E.D. on.
  46495.  
  46496.  
  46497.  
  46498. 6 Special files
  46499.  
  46500. This chapter explains the format of the Special files.  These are auxiliary Text files used to give BasCompress some more information to help it compress better.  See also the examples supplied on disc.
  46501.  
  46502. 6.1 Why
  46503.  
  46504. Special files are used to tell BasCompress how to cope with the following types of situation:
  46505.  
  46506.     •    EVAL("Variable")
  46507.  
  46508.     •    DATA Variable
  46509.  
  46510.     •    LIBRARY "%."+ RoutineParameter$
  46511.  
  46512.     •    EVAL("FN_"+ RoutineParameter$)
  46513.  
  46514. Because BasCompress reduces labels (see §2.11) using a global context, at run-time when BasicV tries to find these labels in the current context, it fails.  Special files tell BasCompress which labels not to compress, either explicitly as in the first two cases or above, or implicitly (from routine parameters) as in the later two.
  46515.  
  46516. 6.2 Files
  46517.  
  46518. Special files are just plain Text files, in the format specified below.  BasCompress allows more than one Special file to be defined (using a comma separated list), but it is far easier to use the #include directive inside a Special file, as shown below.
  46519.  
  46520. Special files are found using the environment variable BasCompress$Path.  By default this is not set up, but you may like to create a sub-directory BAscompress in your library and set this variable to ",%.BAscompress." in your boot-up sequence (note the trailing dot, as with all path variables).  Here you would keep the one or two special files that handle your particular set of library files, and BasCompress will find them for you without you having to type in a full pathname every time.
  46521.  
  46522. 6.3 Format
  46523.  
  46524. The format of a Special file is fairly simple.
  46525.  
  46526. Basically, (for variables) all you're trying to tell BasCompress is:
  46527.  
  46528.     •    routine X has a string in parameter Y
  46529.  
  46530.     •    inside routine X there is an EVAL
  46531.  
  46532.     •    this constructs a new label Z from Y
  46533.  
  46534.     •    don't reduce this label Z
  46535.  
  46536. So all you do is give the name and expected parameters of a routine and tell BasCompress how to construct label Z.
  46537.  
  46538. 6.3.1 Routines
  46539.  
  46540. You give the name of a routine by:
  46541.  
  46542.     procedure foo(1)
  46543.  
  46544. or,
  46545.  
  46546.     function bar(,1)
  46547.  
  46548. The brackets are necessary if a routine doesn't have any parameters.
  46549.  
  46550. The procedure definition above tells BasCompress to expect a (simple) string expression to be passed to the procedure foo at every call, as the sole parameter.  The function definition says the first parameter is not important, but the second parameter will be a simple string.
  46551.  
  46552. These prototypes are checked against what is actually found in the program proper, and an appropriate error generated if they don't match.
  46553.  
  46554. There can be up to ten distinct string parameters [0-9], but you'll probably only ever need just one.
  46555.  
  46556. 6.3.2 Globals
  46557.  
  46558. Sometimes the EVAL isn't in any particular routine (or is used inside a nested routine structure not amenable to the above simplification), so you'd like to give the name of the labels not to reduce just once.  This is easy because at the start of each Special file, BasCompress puts an implicit declaration of the main program as a routine, with no parameters.  So you'd just start defining the global labels as normal routine labels.
  46559.  
  46560. 6.3.3 Labels
  46561.  
  46562. First of all an example:
  46563.  
  46564.     PROC_List(a, "Zappa", "Good")
  46565.  
  46566.     ...
  46567.  
  46568.     :
  46569.  
  46570.     DEF PROC_List(RETURN x, y$, z$)
  46571.  
  46572.       IF EVAL("Frank_"+ y$)<>0 THEN
  46573.  
  46574.           x += EVAL("FN_"+ z$+ "_Name(Cy%)")
  46575.  
  46576.       ENDIF
  46577.  
  46578.     ENDPROC
  46579.  
  46580. this would be implemented as:
  46581.  
  46582.     procedure _List(, 1, 2)
  46583.  
  46584.       real Frank_\1
  46585.  
  46586.       function _\2_Name
  46587.  
  46588.       integer Cy%
  46589.  
  46590. Note the spaces to the left of the implicit declarations, and the case of the keywords as both of these are important.  Also note the need to declare Cy% as another variable that must not be shortened.
  46591.  
  46592. There is no attempt to verify that the <n> used was declared in the parameter list, but all undeclared <n> are reset to the empty string.  Also there is only rudimentary checking done on the expansion template, so be sensible.
  46593.  
  46594. The following table shows the exact words to use - note they must be lower case:
  46595.  
  46596.     real    a real variable e.g. pi_by_2
  46597.  
  46598.     integer    an integer variable, e.g. count%
  46599.  
  46600.     string    a string variable, e.g name$
  46601.  
  46602.     real_array    a real array variable, e.g. times()
  46603.  
  46604.     integer_array    an integer variable, e.g. books%()
  46605.  
  46606.     string_array    a string variable, e.g. titles$()
  46607.  
  46608.     procedure    a procedure, e.g. PROC_total
  46609.  
  46610.     function    a function, e.g. FNmin
  46611.  
  46612.     library    load library file, e.g. %.Wimp
  46613.  
  46614. BasCompress can currently interpret the simple string in a number of ways.  These template expansion types are:
  46615.  
  46616. 6.3.3.1 Verbatim
  46617.  
  46618. \<n>    causes the formal parameter <n> to be substituted verbatim.
  46619.  
  46620. 6.3.3.2 Comma separated
  46621.  
  46622. ,<n>    treats parameter <n> as a comma separated list of strings to substitute, with optional spaces after each comma.
  46623.  
  46624. Each value is extracted from the string in turn.  Note that the string is expected to contain real variables only, i.e. no %, $, or (.
  46625.  
  46626. For example:
  46627.  
  46628.     PROC_Music("Zappa,Varese,Stravinsky,Belew)
  46629.  
  46630.     ...
  46631.  
  46632.     :
  46633.  
  46634.     DEF PROC_Music(p$)
  46635.  
  46636.     LOCAL i, dummy
  46637.  
  46638.       i = INSTR(p$, ",")
  46639.  
  46640.       WHILE i>0
  46641.  
  46642.         dummy = EVAL("FN_"+ LEFT$(p$, i-1))
  46643.  
  46644.         p$ = MID$(p$, i+1)
  46645.  
  46646.         i = INSTR(p$, ",")
  46647.  
  46648.       ENDWHILE
  46649.  
  46650.     ENDPROC
  46651.  
  46652. could get coded as:
  46653.  
  46654.     procedure _Music(1)
  46655.  
  46656.       function _,1
  46657.  
  46658. 6.3.3.3 Full pathname
  46659.  
  46660. @<n>    parameter <n> is considered as a full pathname, and just the leaf name is substituted.
  46661.  
  46662. For an example see §6.3.4 below.
  46663.  
  46664. 6.3.3.4 Wimp menu
  46665.  
  46666. »<n>    <n> is taken to be a Wimp menu string.  This means that after ">" and ":" a variable name is expected, terminated by a comma or the EOS.
  46667.  
  46668. It is assumed that the implicit variables are all of the same type.  If not just define several rules, one for each type.
  46669.  
  46670. For example
  46671.  
  46672.     PROC_menu("Prog,Info>Info%,dSave as>SaveAs,Quit")
  46673.  
  46674. may get coded as follows:
  46675.  
  46676.     procedure _menu(1)
  46677.  
  46678.       integer »1
  46679.  
  46680.       real »1
  46681.  
  46682. 6.3.4 Variables as regular expressions
  46683.  
  46684. As well as the above special meta-characters BasCompress will now allow you to specify special variables (not routines or libraries) as a regular expression (a fancy wildcard expression).  This means that instead of specifying one variable, you specify any variables that match a pattern.
  46685.  
  46686. Special variables so specified can not contain any parameter substitution commands.  They also behave in a slightly different manner.
  46687.  
  46688. To process special variables defined as regular expressions BasCompress must use a separate pass, between parsing and output.  This scans every variable (of the particular type) to see if it matches the specified pattern.  If so, then the variable is flagged as being un-renamable − as expected.
  46689.  
  46690. So what is a regular expression, and why would you want to use it?  For a full description of regular expressions please see Appendix B, but all the useful features (two of them!) will be shown in the examples below.
  46691.  
  46692. You would want to use regular expressions to specify a range of variables with the same sort of name − instead of specifying every single one individually.  Eg say you have defined many constants such as 'Wimp_Initialise', 'Wimp_CloseDown', 'Wimp_GetRectangle', etc. and then used these constants in some DATA statements.  Instead of having a (long) list of these variable names in the special file you would recognise that all of the variables begin with the pattern 'Wimp_' and tell BasCompress to mark all such variables as unrenamable.
  46693.  
  46694. 6.3.4.1 Example patterns
  46695.  
  46696. Here's how you would write the above example in a special file:
  46697.  
  46698.     procedure dummy()
  46699.  
  46700.         real Wimp_.*
  46701.  
  46702. the important bit being the ".*".  This should be read as "any character", "repeated 0 or more times".  Ie as long as a variable starts with the five characters "Wimp_" the pattern is matched.
  46703.  
  46704. Another frequent case is when variables have the same postfix - eg the pattern:
  46705.  
  46706.     integer .*CMOS\>
  46707.  
  46708. would match all integers that end ("\>" means "match end of variable") in the letters CMOS, ie MosROMFrugalCMOS%, FontMaxCMOS%, etc...  The specification that CMOS be at the end stops, say, MyCMOSvar% being matched by the pattern, as it otherwise would if this were not included.
  46709.  
  46710. 6.3.4.2 Limitations
  46711.  
  46712. Although a regular expression may be defined dependent on a special routine being called, this fact is currently ignored − all special variables specified using a regular expression are used during the pass.  For this reason it is probably worthwhile to place all wild-card specifications as global − ie in the main program section of the special file.  This limitation will not last long.
  46713.  
  46714. Currently a variable that is recognised as matching a pattern is flagged as being referenced from the main program (in the cross reference) and not inside the special routine that specified the wildcard − but this will change in a later version.
  46715.  
  46716. 6.3.5 Libraries
  46717.  
  46718. As well as labels, libraries may be implicit.  For example, here's a simple library handler:
  46719.  
  46720.     PROC_Load_Library("<Basic$Lib>.Wimp", 2)
  46721.  
  46722.     ...
  46723.  
  46724.     :
  46725.  
  46726.     DEF PROC_Load_Library(f$, v)
  46727.  
  46728.     LOCAL x
  46729.  
  46730.       LIBRARY file$
  46731.  
  46732.       x = EVAL("FN_Init_"+ FNleaf(f$))
  46733.  
  46734.       IF EVAL("Version_"+ FNleaf(f$))<v THEN
  46735.  
  46736.         ERROR 1, "Library too old"
  46737.  
  46738.       ENDIF
  46739.  
  46740.     ENDPROC
  46741.  
  46742. Well, in real life you'd set up error handlers and note which libraries have already been loaded, but you get the idea.  This could be coded as follows:
  46743.  
  46744.     procedure _Load_Library(1,)
  46745.  
  46746.       library \1
  46747.  
  46748.       function _Init_@1
  46749.  
  46750.       real Version_@1
  46751.  
  46752. Note the use of @<n> to extract the leaf name.
  46753.  
  46754. In the output program the entire statement containing the LIBRARY is removed.
  46755.  
  46756. Note that because BasCompress analyses the program in a linear fashion, the order of library routines may well be different from that used in the uncompressed program, (see §2.10).
  46757.  
  46758. 6.3.6 Include files
  46759.  
  46760. It is possible for special files to include other special files.  Thus you will probably set up BasCompress$Path and a special file to handle your own set of standard libraries, and then...
  46761.  
  46762.     #include mylibs
  46763.  
  46764. somewhere in the special file for each particular program.  (Note that there are no spaces to the left of the #include, and don't put any quotes on the name either).
  46765.  
  46766. Nesting level is not limited, and you can recurse.  This will result in an infinite loop, with the only resort being to press escape to quit, and then examine the log file.
  46767.  
  46768. 6.4 Limitations
  46769.  
  46770. There can only be 250 odd total Special routines defined.  If any one actually reaches this limit, then contact the author, it's easy to alter - at the expense of a slight increase in memory usage.
  46771.  
  46772. There is of course one major limitation in that you have to specify the name of all the special files before processing the program.  It would be nice to set up a system whereby if the program (maybe implicitly) loads in library X, then load up special file Y.  However this would require re-finding all calls to the (new) Special routines - something that seems quite hard to do :-(
  46773.  
  46774. Finally, you'd like to be able to take into account the scope of the variables so only the use of variables in scope are not reduced.  But since BasicV only has one scope, this is not possible to implement safely, without some explicit help from the programmer by marking the scope of variables in some way.
  46775.  
  46776.  
  46777.  
  46778. 7 Errors
  46779.  
  46780. 7.1 Overview
  46781.  
  46782. Errors and warnings can be generated at various stages of the game.  They all look the same and are all sent to the current log (file / screen).  The format is:
  46783.  
  46784.     file 1234 warning 3: message
  46785.  
  46786. If there is no filename, then it indicates the error is global  in scope, for example the “undefined routine” error generated when all files have been parsed.
  46787.  
  46788. Warnings report non-fatal deficiencies.  Errors report a major problem, and will stop any output file being generated.
  46789.  
  46790. As with all text used by BasCompress, these error texts are held in the Messages file.
  46791.  
  46792. It is worth pointing out that many warnings and errors may be generated after the seemingly innocent warnings 9 and 10.  This means that BasCompress may have lost touch with what routine is being defined, and starts interpreting the junk inbetween routines as genuine code.  So do check the log file from the start.
  46793.  
  46794. 7.2 Warnings
  46795.  
  46796. Most of the warnings are self explanatory.
  46797.  
  46798.  
  46799.  
  46800.     1    Expecting PROC or FN after DEF
  46801.  
  46802. In standard Basic, these are the only valid things after a DEF.  This warning has never been encountered in debugged source!
  46803.  
  46804.  
  46805.  
  46806.     2    DEF inside a routine
  46807.  
  46808. This is generated because an earlier routine did not exit cleanly, and the program believes you are still in this routine.  You need to fix the errant routine by terminating it properly, or simply appending a dummy routine end (ENDPROC or = <expr>).
  46809.  
  46810.  
  46811.  
  46812.     3    Unexpected period ‘.’
  46813.  
  46814. A period on it's own is treated as the start of a number (e.g. “.7”).  This warning is generated if a statement starts with a period and it is not in the assembler.
  46815.  
  46816.  
  46817.  
  46818.     4    Mismatched quotes ‘"’
  46819.  
  46820. Every line should have matching quotes.
  46821.  
  46822.  
  46823.  
  46824.     5    Malformed hexadecimal number
  46825.  
  46826. It is expected that a digit or a letter [0-9a-fA-F] comes after an &.
  46827.  
  46828.  
  46829.  
  46830.     6    Malformed binary number
  46831.  
  46832. It is expected that a 0 or 1 comes after a %.
  46833.  
  46834.  
  46835.  
  46836.     7    Line number reference found
  46837.  
  46838. This is given if line numbers are found in any libraries, since there is no valid reason for them being there.
  46839.  
  46840.  
  46841.  
  46842.     8    Expecting routine name after PROC or FN
  46843.  
  46844. A non-label character was found after one of these tokens.  This very unlikely.
  46845.  
  46846.  
  46847.  
  46848.     9    ENDPROC not at end of procedure
  46849.  
  46850. This is generated if ENDPROC is found on a line containing an IF, i.e. it is ambiguous as to whether this is the genuine end of the procedure.  Most of the time this causes no problems, but for short routines where this is the only way it exits then BasCompress will get confused as to the exact end of the routine.  In this case you must either re-code the routine (recommended) or insert a dummy routine terminator (ENDPROC or = <expr>).
  46851.  
  46852.  
  46853.  
  46854.     10    = not at end of function
  46855.  
  46856. This is generated if an “= <expr>” is found on a line containing an IF, i.e. it is ambiguous as to whether this is the genuine end of the function.  Most of the time this causes no problems, but for short routines where this is the only way it exits then BasCompress will get confused as to the exact end of the routine.  In this case you must either re-code the routine (recommended) or insert a dummy routine terminator (ENDPROC or = <expr>).
  46857.  
  46858.  
  46859.  
  46860.     11    Code found on last line of function
  46861.  
  46862. There were more statements on the same line as the terminating “= <expr>” statement.  Since these will never be executed by Basic then they should be removed.  This warning could well turn up quite often if BasCompress is fed the output of other squashers.
  46863.  
  46864.  
  46865.  
  46866.     12    Expecting a string after LIBRARY/INSTALL
  46867.  
  46868. In order to be able to load in libraries BasCompress expects a simple constant string expression to follow these keywords.  If this is not the case then you will need to set up a Special file to handle this situation.  This warning is suppressed if inside a Special routine.
  46869.  
  46870.  
  46871.  
  46872.     13    OVERLAY file(s) not scanned
  46873.  
  46874. The OVERLAY keyword is not supported by BasCompress.
  46875.  
  46876.  
  46877.  
  46878.     14    Unexpected ‘[’
  46879.  
  46880. A running total of square brackets is kept.  This indicates that something like “LDR R0, [[R1...]” was found.
  46881.  
  46882.  
  46883.  
  46884.     15    Unexpected ‘]’
  46885.  
  46886. A running total of square brackets is kept.  This indicates that something like “LDR R0, [R1...]]” was found.
  46887.  
  46888.  
  46889.  
  46890.     16    ENDPROC inside a %s structure
  46891.  
  46892. Found a conditional exit from a procedure - this indicates a bad programming style.
  46893.  
  46894.  
  46895.  
  46896.     17    = inside a %s structure
  46897.  
  46898. Found a conditional exit from a function - this indicates a bad programming style.
  46899.  
  46900.  
  46901.  
  46902.     18    Conditional %%s
  46903.  
  46904. Found a conditional termination of a multi-line structure - this indicates a bad programming style.
  46905.  
  46906. This may occur on lines like the following:
  46907.  
  46908.     IF x>0 THEN WHILE x>0:y+=FNy(x):x-=1:ENDWHILE
  46909.  
  46910. Unfortunately BasCompress does not like this because it expects all multi-line constructs to start unconditionally.  To cure this split the one-line IF into a multi-line IF.
  46911.  
  46912.  
  46913.  
  46914.     19    Too many ‘(’ found
  46915.  
  46916. A running total of ellipsis is kept.  This indicates something like “(1+2)(” was found.
  46917.  
  46918.  
  46919.  
  46920.     20    Unexpected ‘)’ found
  46921.  
  46922. A running total of ellipsis is kept.  This indicates something like “(1+2))” was found.
  46923.  
  46924.  
  46925.  
  46926.     21    Routine %s already defined at %s
  46927.  
  46928. This warns about multiply-defined routines.  Since there are sometimes very good reasons for doing this this warning can be suppressed.
  46929.  
  46930.  
  46931.  
  46932.     22    Malformed decimal number
  46933.  
  46934. A bad decimal number was found.  A decimal number is something beginning with a digit or a period and continuing as expected.  The form of the number is always checked, but the compression may be turned off.
  46935.  
  46936.  
  46937.  
  46938.     23    The (global) special routine %s is not defined anywhere
  46939.  
  46940. This speaks for itself.  It is only generated if the user has asked for it, as it is not usually relevant.
  46941.  
  46942.  
  46943.  
  46944.     24    SWI name missing, or not simple
  46945.  
  46946. It is normal to just have a string, variable, or number immediately after a SYS (SWI).  This indicates that found something else - which may indicate a syntax error.
  46947.  
  46948.  
  46949.  
  46950.     25    SWI ‘%s’ is unknown
  46951.  
  46952. The operating system has no record of what this SWI means.  This indicates that either the module is not loaded at the time of compression, or it is misspelt.  BasCompress will leave it as it is, producing longer and slower code.
  46953.  
  46954.  
  46955.  
  46956.     26    Can't change to screen mode %d
  46957.  
  46958. If the listing Mode could not be found, but a suitable alternative was possible.
  46959.  
  46960.  
  46961.  
  46962.     27    Special variable %s has been used
  46963.  
  46964.     28    Special routine %s has been used
  46965.  
  46966.     29    Special library %s has been used
  46967.  
  46968. These warnings are generated if the user has turned them on.  They show the results of label expansion done at the instance of a call to a Special routine.
  46969.  
  46970.  
  46971.  
  46972. 7.3 Errors
  46973.  
  46974. Any errors encountered will stop the final output phase, but the program will soldier on parsing, so you can rectify all the errors in one hit.
  46975.  
  46976.  
  46977.  
  46978.     2    ENDPROC found in a function
  46979.  
  46980. This invariably follows warning 2, about DEF found inside a routine, which itself follows a warning 10, because the previous function did not terminate cleanly.
  46981.  
  46982.  
  46983.  
  46984.     3    = found in a procedure
  46985.  
  46986. This invariably follows  warning 2, about DEF found inside a routine, which itself follows a warning 9, because the previous procedure did not terminate cleanly.
  46987.  
  46988.  
  46989.  
  46990.     4    Routine %s already defined at %s
  46991.  
  46992. It's either an error or a warning (21), and this is the error.
  46993.  
  46994.  
  46995.  
  46996.     5    File error: %s
  46997.  
  46998. Since there is minimal file accessing done (files are loaded in one hit), this usually just reports not being able to find a particular file/invalid file name - it is dependent on the underlying filing system.
  46999.  
  47000.  
  47001.  
  47002.     6    End of file in middle of routine
  47003.  
  47004. It is invalid for a routine to span across a file boundary.
  47005.  
  47006.  
  47007.  
  47008.     7    Too many files (>254)
  47009.  
  47010. I can't foresee anyone getting this error message!  It is unlikely that this limitation would be lifted, either.
  47011.  
  47012.     8    Undefined routine: %s (used %s)
  47013.  
  47014. Generated after all files have been parsed, it warns of routines used but never defined.  These are usually obscure routines only called in error handlers.  If you know for sure that this routine will never be called, just put an empty version in your main file to suppress this error.
  47015.  
  47016.  
  47017.  
  47018.     9    Undefined variable: %s (used %s)
  47019.  
  47020. Not generated.
  47021.  
  47022.  
  47023.  
  47024.     10    FOR not at start of statement
  47025.  
  47026. This may be of some use - not much, but what the hey?  (Maybe be on a one-line IF)?
  47027.  
  47028.  
  47029.  
  47030.     11    Escape pressed, parsing aborted
  47031.  
  47032. Not generated.  Escapes just terminate program immediately in the current version.
  47033.  
  47034.  
  47035.  
  47036.     12    File %s does not have a Basic file type
  47037.  
  47038. This program only accepts tokenised Basic files - maybe the file is just not Type'd correctly.  (Could be that it was saved under the CFS or some such, and you only gave the SCSIFS?)
  47039.  
  47040.  
  47041.  
  47042.     13    File %s is too small to be a Basic type
  47043.  
  47044. A rudimentary check on each Basic file is done - this is generated if it fails.
  47045.  
  47046.  
  47047.  
  47048.     14    File is corrupted/not basic
  47049.  
  47050. Each line of tokenised Basic has a header.  As the file is parsed each header is checked and if invalid this error is generated and parsing of the file is aborted.
  47051.  
  47052.  
  47053.  
  47054.     15    Escape pressed, xref aborted
  47055.  
  47056. Not generated.  Escapes just terminate program immediately in the current version.
  47057.  
  47058.  
  47059.  
  47060.     16    Escape pressed, compression aborted
  47061.  
  47062. Not generated.  Escapes just terminate program immediately in the current version.
  47063.  
  47064.  
  47065.  
  47066.     17    Unexpected %s in a %s structure
  47067.  
  47068. This detects any foul-ups in multi-lined structures.  The Basic interpreter allows some of these through without reporting an error.  These errors allow you to fix the (very probably) mistakes.  See warning 18.
  47069.  
  47070.  
  47071.  
  47072.     18    Unexpected %s
  47073.  
  47074. As error 17 above, but obviously outside any surrounding structure.
  47075.  
  47076.  
  47077.  
  47078.     19    End of file in middle of assembler
  47079.  
  47080. A special case of error 6, i.e. a routine did not end before the end of a file was found.
  47081.  
  47082.  
  47083.  
  47084.     20    OTHERWISE not at start of line
  47085.  
  47086. A simple error for a simple mistake.
  47087.  
  47088.  
  47089.  
  47090.     21    WHEN not at start of line
  47091.  
  47092. A simple error for a simple mistake.
  47093.  
  47094.     22    Computed GOTO/GOSUB found
  47095.  
  47096. Now, I ask you, is this how to program?  BasCompress will refuse to work with such things, and who can blame it?
  47097.  
  47098.  
  47099.  
  47100.     23    INSTALL/LIBRARY not at start of line
  47101.  
  47102. This indicates a syntax error, probably.  Or maybe an IF without a THEN, who knows?
  47103.  
  47104.  
  47105.  
  47106.     24    INSTALL/LIBRARY can not be on a conditional line
  47107.  
  47108. If you must, then split into a multi-line IF and try again.
  47109.  
  47110.  
  47111.  
  47112.     25    The special routine ‘%s’ was declared as having different parameters from those found here
  47113.  
  47114. The number of parameters do not match - probably a wrong number of commas in the Special file.
  47115.  
  47116.  
  47117.  
  47118.     26    The special routine ‘%s’ wants a string constant for one of its' parameters
  47119.  
  47120. This program only handles very simple constant string expressions, and this error indicates that the expression was not simple enough.
  47121.  
  47122.  
  47123.  
  47124.     27    Line too long (max 256)
  47125.  
  47126. This seems a reasonable upper limit on the line length of a Special file.
  47127.  
  47128.  
  47129.  
  47130.     28    Line ‘%s’ is not of a recognised form
  47131.  
  47132. Syntax error for the Special file line.  Note that if you specified a Text file full of control codes and such, then you may only get to read the last few words of this message.
  47133.  
  47134.     29    Label ‘%s’ is invalid
  47135.  
  47136. In Special files, the label probably starts with a digit, or some such.
  47137.  
  47138.  
  47139.  
  47140.     30    Parameter list ‘%s’ is invalid
  47141.  
  47142. In Special files: what more needs to be said?
  47143.  
  47144.  
  47145.  
  47146.     31    Parameter list ‘%s’ contains a duplicate
  47147.  
  47148. In Special files: it is not exactly meaningful to have two or more parameters assigned to the same expansion number is it?
  47149.  
  47150.  
  47151.  
  47152.     32    Implicit label substitution overflowed
  47153.  
  47154. When a call to a Special routine is found, the label templates get expanded using the actual parameters passed.  This error shows BasCompress checks for overflow in its' internal buffers!
  47155.  
  47156.  
  47157.  
  47158.     33    Too many special routines (max 255)
  47159.  
  47160. A perfectly reasonable limit it seems.  This could easily be extended, though.
  47161.  
  47162.  
  47163.  
  47164.     34    Unable to load special file (not Text?)
  47165.  
  47166. Or maybe it wasn't found.  Only Text files are accepted.
  47167.  
  47168.  
  47169.  
  47170.     35    SWI name missing, or not simple
  47171.  
  47172. It is normal to just have a string, variable, or number immediately after a SYS (SWI).  This indicates that found something else - which may indicate an error.
  47173.  
  47174.  
  47175.  
  47176.     36    Illegal screen mode
  47177.  
  47178. If the listing mode could not be found, and no suitable alternative was possible, then this error is generated.
  47179.  
  47180.  
  47181.  
  47182.     37    Bad main program, unterminated %s structure
  47183.  
  47184. This is a special case, if the first routine found (DEF PROC, or DEF FN) was inside a multi-line structure.  This indicates an error in the main program.
  47185.  
  47186.  
  47187.  
  47188.     38    Can't find closing ellipsis in special routine parameter
  47189.  
  47190. During label expansion, BasCompress found a label ending in (, which it took to mean the start of an array index.  No closing ) was found before the end of the string.
  47191.  
  47192.  
  47193.  
  47194.     39    Bad char `%c' following > or : in special routine parameter
  47195.  
  47196. During label expansion, BasCompress expects the label to be terminated by a comma or the EOS.  This indicates that this condition was not satisfied.
  47197.  
  47198.  
  47199.  
  47200. 7.4 Run-time errors
  47201.  
  47202. Here is some help with possible errors that BasCompress may introduce to the compressed Basic output.
  47203.  
  47204. 7.4.1 Unknown or missing variable
  47205.  
  47206. The quick and easy method to solve this problem is to turn of all label reduction.  This is not recommend, as it makes the use of BasCompress almost worthless.
  47207.  
  47208. This error has been generated because you have not told BasCompress about the side effects of an EVAL or DATA statements.  See §2.11 for why this produces the error, and §6 for how to cure it.
  47209.  
  47210. In essence you have to go through the program, locate the EVAL's and possibly the DATA statements as well, (look in the log file for exactly where to find these), and then build a Special file to tell BasCompress how to handle these.
  47211.  
  47212. Usually this entails defining some “global” labels that will never be reduced, although sometimes it is possible to build a more sophisticated parameter-based rule.
  47213.  
  47214. It may just be possible that this error is generated inside assembler.  If so, then this indicates an error on BasCompress' part.  Examples of such should be sent to the author for inclusion in upgrades.  This possibility is extremely remote as BasCompress has been tested with a wide range of sources, but most cases where it has failed in the past has been in this area.
  47215.  
  47216. 7.4.2 No such function/procedure
  47217.  
  47218. This occurs for exactly the same reasons as detailed in §7.4.1 above.
  47219.  
  47220. 7.4.3 Missing ENDIF
  47221.  
  47222. These errors are generated very rarely, but they are just possible.  Consider the following code:
  47223.  
  47224.     IF FN_SaveFile THEN :::REM comment
  47225.  
  47226. What BasCompress could produce, although it does tries not to, is:
  47227.  
  47228.     IFFNxTHEN
  47229.  
  47230. Obviously this is wrong, wrong, wrong.  From a simple one-line conditional (that does nothing), BasCompress has produced a multi-line conditional construct where there shouldn't be any, and without the ENDIF.
  47231.  
  47232. Since this situation is fairly rare, and BasCompress does handle it most of the time, it is not likely to be remedied - unless enough people request it.
  47233.  
  47234. The work around is to not to ignore the return value from the function, which is probably an error status (indicating a very lazy programmer!), but to assign it to a variable, and then act on it accordingly.
  47235.  
  47236. 7.4.4 Logical errors
  47237.  
  47238. By this it is meant that a program doesn't generate any overt errors, it's just that it doesn't do the same as it did before compression.
  47239.  
  47240. BasCompress has been tested quite thoroughly with a wide source of Basic programs, and it is hoped that all of these exceptional cases have been noted and duly handled.  However if you do get this type of error, it is still probably because of EVAL and DATA being used with undeclared (and probably short, e.g. A%, x, etc.) variables.  These variables may have been “renamed” by BasCompress, or even re-mapped to different variables, and hence contain an invalid value.
  47241.  
  47242. If it is not because of this, then the author would appreciate it if an example of the incorrectly compressed source was sent in, so BasCompress could be updated to handle that case.
  47243.  
  47244. 7.5 Internal errors
  47245.  
  47246. These are “system” errors generated by BasCompress itself.  These messages are hard-coded into the executable, and use the error number chunk &DCBC0 to &DCBFF:
  47247.  
  47248.         Error(s) during parsing
  47249.  
  47250. This should never appear, as it is an internal error used to indicate an erroneous parsing stage.
  47251.  
  47252.  
  47253.  
  47254.         Invalid sort character '%c'
  47255.  
  47256.         Sort string too long
  47257.  
  47258.         Invalid type character `%c'
  47259.  
  47260. These indicate rudimentary errors on the parameters passed on the CLI.
  47261.  
  47262.  
  47263.  
  47264.         Invalid option in system variable BasCompress$Options
  47265.  
  47266. Indicates an invalid system variable.  Unfortunately it is not possible to show exactly what was wrong with it, just that some part of it was wrong.
  47267.  
  47268.  
  47269.  
  47270.         1.1
  47271.  
  47272.         ...
  47273.  
  47274.         10.1
  47275.  
  47276. These errors should never be generated.  They indicate where BasCompress has found some inconsistencies in its' own internal data structures.  Any occurrences of such should be sent, along with the source that produced them, to the author for correcting in future upgrades.
  47277.  
  47278.  
  47279.  
  47280. 8 Loose ends
  47281.  
  47282. The fact that this chapter exists shows that I'm no good at documentation :-)  It mainly describes features that may (or may not) get implemented in future upgrades.
  47283.  
  47284. 8.1 Memory usage
  47285.  
  47286. Let's face it boys and girls, this program eats RAM like nobody's business.  It's really just a fact of life for 32-bit/RISC machines.
  47287.  
  47288. This is compounded by the need for some oomph (technical term) in the program execution stakes.  To this end most things are kept on two separate lists - e.g. if a routine X calls Y then this is recorded both in X's calls list, and Y's called by list.  This bit of redundancy probably doubles the speed of cross referencing, so it was felt worth it.
  47289.  
  47290. Also all the source is kept in RAM, and all the output.
  47291.  
  47292. There is some consideration to low-memory users in that the hash table sizes grow on request, but then again they start pretty big anyway :-)
  47293.  
  47294. If enough people request it then BasCompress may be upgraded to include the option of smaller initial hash-tables and demand-loading the source - a simple hack & slap.
  47295.  
  47296. 8.2 Missing THEN
  47297.  
  47298. Basic allows the programmer to omit a THEN statement when used on a single-line IF compound.  However, this can cause problems.  Because BasCompress removes all spaces, if the condition ended with a digit, and the statement after the (missing) THEN starts with an ‘E’ then Basic gets confused – thinking a real number (in exponent format) has been given.  Eg the BasCompress produced line:
  47299.  
  47300.     IF x<>0E%=1
  47301.  
  47302. is wrong.  There should be a space after the 0.  This is very rare.  A temporary cure is to stop BasCompress shortening any variables to names starting with an ‘E’.  Although this will solve most problems, there is still the unresolved problem of the un-shortened variables.  The only cure is to make sure the THEN is always used.
  47303.  
  47304. A similar problem is the following BasCompress produced line:
  47305.  
  47306.     WHILE x<>0E%=2
  47307.  
  47308. The cure for this is to always separate the expression from the first statement of a WHILE compound by a colon.
  47309.  
  47310.  
  47311.  
  47312. While testing this program, it became evident that the missing THEN was part of a general problem - skipping a Basic expression.  This is harder than at first seems, because there is no point at where you can say “yes, here is the end”, as you can in a procedural call, say (e.g. you've found a comma, close ellipse and the bracket and quote count is zero).  E.g. how would you handle this:
  47313.  
  47314.     IF a=b=c THEN P."hello"
  47315.  
  47316. Intuition get's it wrong.  Basic treats this as:
  47317.  
  47318.     IF (a=b) THEN =c ...
  47319.  
  47320. Which means you have to build a tree/stack.  But, once you can do this then this program could become quite interesting.  It could evaluate constant sub-expressions.  This could produce some very compact stuff, as you'd also be able to substitute constant variables with their values, and even eliminate dead code.  I.e. debugging stuff that would never be executed because it is known that, say, Debug is always FALSE.
  47321.  
  47322. But, tie that in with a bit more knowledge of the structure of the Basic, and it is almost easy to generate not tokenised Basic, but code.  Well, I'm sure if enough people register, it will give this author the incentive to develop BasCompress into the fastest (and cheapest) Basic compiler.
  47323.  
  47324. 8.3 Cross-reference
  47325.  
  47326. It would be nice to have a toggle between multi-line and single-line (the current) output.  This is fairly easy to do, but it'll require some experimentation :-)
  47327.  
  47328. Also handy could be some ordering based on label length, or even the (approximate) size of a routine.
  47329.  
  47330. Some rationalisation of the messages used is in order, too.  Currently the program outputs some line feeds of its' own accord, which is decidedly against the grain.
  47331.  
  47332. How about not listing the file that a routine is in?  Or just the leaf of the filename.  This would reduce the size of the output by quite a lot.  The former would require the user to cross-reference (the cross-reference!) to find the file of the reference, though.
  47333.  
  47334. 8.4 Statistics
  47335.  
  47336. There are loads more statistics that could be done;
  47337.  
  47338.     •    libraries that aren't needed
  47339.  
  47340.     •    variables only ever declared (e.g. LOCALised but never used)
  47341.  
  47342.     •    variables only ever assigned to once (constants)
  47343.  
  47344.     •    lines where the memory indirection operators ?, | and ! are used
  47345.  
  47346.     •    don't log all the deleted routines and variables, just count them
  47347.  
  47348.     •    give a percentage of the code that is unused
  47349.  
  47350.     •    percentage compression achieved on the used code
  47351.  
  47352.     •    lines containing any user-defined basic token (e.g. PRINT)
  47353.  
  47354.     •    time taken to load, parse, cross-reference, compress, write
  47355.  
  47356. 8.5 Uncompressed output
  47357.  
  47358. It would have been nice if there was an option to just remove the unused routines and merge all the libraries into one big file.  This would give a nice listable program containing only the routines used.  However this is currently unpossible, as BasCompress was never intended to produce anything but compressed code.  (There are many places where “skip until hit non-space” is hard-coded, and it would take a rather long time to rationalise these so you could toggle it on/off.)  Oh well.
  47359.  
  47360. 8.6 Label reduction
  47361.  
  47362. The reduction of labels isn't always as good as it could be.  Currently BasCompress only judges the fitness of a label to be reduced on its' global usage.  A better algorithm would take into consideration the nesting level of each usage, and use this to bias the reduction of labels towards those used inside loops.
  47363.  
  47364. 8.7 Executable
  47365.  
  47366. The current situation, with two separate applications is far from ideal.  A better situation would be to have the back end program inside a module.  This would have the added bonus of not needing to load in the Messages file every time it is run.
  47367.  
  47368. Better yet would be to have the whole thing as one big Wimp application.  Here many extras are possible because there would be direct access to the cross-reference database.  For example it could create graphs of variable name distribution, provide the cross-reference in it's own window, where you could filter it given user criteria (such as name matching a regexp AND usage>3).  But I don't think so, do you?
  47369.  
  47370.  
  47371.  
  47372. Appendix A: Messages
  47373.  
  47374. A.1 Internationalism united
  47375.  
  47376. For users of a foreign extractment, the Messages directory contains the country-specific text files.  Copy Default, to (say) Iceland and edit the messages, and if that is the configured country of the machine, then those messages will be loaded.  Note it is sensible to keep a Default file as this will be loaded if no file of the configured country could be found.
  47377.  
  47378. If you do make a translated messages file, the author would appreciate it greatly if you could send it in so every one can benefit.
  47379.  
  47380. A.2 Format
  47381.  
  47382. The message format is fairly obvious - just look at them to see what can and can't be done, but here's a quick summary.
  47383.  
  47384.     •    Comments start with a #
  47385.  
  47386.     •    Messages names start on a new line, and end in a colon
  47387.  
  47388.     •    Messages start at the first non-space after the colon, and finish at the end of the line
  47389.  
  47390.     •    Spaces can be done as “% ”
  47391.  
  47392.     •    Percents can be included using “%%”
  47393.  
  47394.     •    The “parameter”s %s and %d are supplied by BasCompress, these are standard C printf() strings
  47395.  
  47396.     •    The standard C escape sequences \b, \t, \n, \r, \xXX, \000, etc. can be used to insert those characters inside the messages
  47397.  
  47398.     •    A message may be a selection: starts with a “%?” and consists of a comma separated list of alternatives
  47399.  
  47400.  
  47401.  
  47402.  
  47403.  
  47404.  
  47405.  
  47406. Appendix B: Regular expressions
  47407.  
  47408. B.1 Definition
  47409.  
  47410. A regular expression (RE) is a fancy wild-carding system – i.e.  you don’t need exact matches.  A regular expression is really a mini–programming language with the following “commands”:
  47411.  
  47412.         .     any character
  47413.  
  47414.         ^     start of line
  47415.  
  47416.         $     end of line
  47417.  
  47418.         [...] set of characters*
  47419.  
  47420. Any other character matches itself
  47421.  
  47422. There are also modifiers:
  47423.  
  47424.         |    or, “re1|re2” match either RE1 or RE2
  47425.  
  47426.         ~    not, “~c” matches anything but the next character
  47427.  
  47428.         +    many, “re+” matches RE repeated one or more times
  47429.  
  47430.         *    repeat, “re+” matches RE repeated zero or more times
  47431.  
  47432.         ?    optional, “re?” matches RE repeated zero or one times
  47433.  
  47434. Parenthesis () can be used to group REs
  47435.  
  47436. Finally, there are memories:
  47437.  
  47438.         \{   start recording
  47439.  
  47440.         \}   end recording, and place in next memory (starts with 1)
  47441.  
  47442.         \<n> \1, ... \9 will then match the corresponding memory
  47443.  
  47444. * character sets:
  47445.  
  47446. Character sets are used to match one of a group of characters.  All characters are taken literally except “–”, “]”, and “\”.  The “–” indicates a range, unless it is the first or last character, or the first character after a previous range.  The “\” can be used to include a “]” or a “–” in the set.
  47447.  
  47448. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDReeeeeeeeeeeee#G433333333333#pG$"""""""""""pG$"""""""""""pG$"""UU%"""""pG$"RuÿÿUU%""pG$"÷•⇦⇦⇦⇦⇦x%"pG$"÷÷ÿÿÿÿÿÿ"pG$"÷⇦⇦⇦⇦⇦⇦x"pG$"÷÷ÿÿÿÿÿÿ"pG$"÷÷ÿÿÿÿÿÿ"pG$"RUUUUUUUU"pG$"""""""""""pGpBDDDDDDDDDDDDD&tool_load,, BCDDDDDDDDDDDD$c1sqw1sqw1sqw1sDDDtwGDDD1swwwwwwwww1sDDDtwGDDD1sqw1sqw1sqw1s1s3333333333333cBUVVVVVVVVVVVF$ptool_load,, Reee