diff options
Diffstat (limited to 'doc/lua.ps')
-rw-r--r-- | doc/lua.ps | 1774 |
1 files changed, 1774 insertions, 0 deletions
diff --git a/doc/lua.ps b/doc/lua.ps new file mode 100644 index 00000000..373b082a --- /dev/null +++ b/doc/lua.ps @@ -0,0 +1,1774 @@ +%!PS-Adobe-2.0 +%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software +%%Title: lua.dvi +%%Pages: 11 1 +%%BoundingBox: 0 0 612 792 +%%EndComments +%%BeginProcSet: tex.pro +/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch +load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ +isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{ +/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N +}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict +/manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0 +]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0 +]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N +/FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N +/Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[ +}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype +ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B +/ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 +sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data +dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2 +index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff +ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height +true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{ +/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S +ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr +ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI +save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook +known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if +/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 +string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N +/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley +scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{ +dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{ +-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p +-4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t +{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B +/eos{clear SS restore}B end +%%EndProcSet +TeXDict begin 1200 300 300 @start /Fa 8 58 df<00000C00001C00001C00003800003800 +00700000700000700000E00000E00001C00001C0000380000380000380000700000700000E0000 +0E00000E00001C00001C0000380000380000700000700000700000E00000E00001C00001C00001 +C0000380000380000700000700000700000E00000E00001C00001C000038000038000038000070 +0000700000E00000E00000C0000016317DA41D>47 D<00380000780003F800FFF800FDF80001F8 +0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 +0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFF07FFF +F014207C9F1D>49 D<03FC000FFF803C0FE07007F07C03F8FE01F8FE01FCFE01FCFE01FC7C01FC +3801FC0001FC0001F80003F80003F00007E0000FC0000F80001E00003C0000780000E00C01C00C +03801C0300180600180FFFF81FFFF83FFFF87FFFF0FFFFF0FFFFF016207D9F1D>I<00FF0007FF +C00F03F01E01F83F01F83F01FC3F81FC3F01FC1F01FC0C01F80001F80003F00003E0000FC000FF +0000FF000003E00001F80001FC0000FE0000FE0000FF7C00FF7C00FFFE00FFFE00FFFE00FE7C01 +FC7801FC3C03F00FFFE001FF0018207E9F1D>I<0000E00001E00003E00003E00007E0000FE000 +1FE0001BE00033E00073E000E3E001C3E00183E00303E00703E00E03E00C03E01803E03803E070 +03E0E003E0FFFFFFFFFFFF0007E00007E00007E00007E00007E00007E00007E001FFFF01FFFF18 +207E9F1D>I<1000301E00F01FFFE01FFFE01FFFC01FFF001FFE001FF800180000180000180000 +18000019FE001FFF801E07E01C03F01801F00001F80001F80001FC0001FC7801FCFC01FCFC01FC +FC01FCFC01F8F801F86003F03003E01C0FC00FFF0003FC0016207D9F1D>I<001FC000FFF001F0 +3807C0780F80FC1F00FC1F00FC3F00FC7E00787E00007E0000FE0000FE3FC0FE7FF0FE80F8FF80 +7CFF007EFF007EFE007FFE007FFE007FFE007F7E007F7E007F7E007F3E007E3E007E1F007C0F00 +F807C1F003FFE000FF0018207E9F1D>I<00FF0007FFC00F83E01F00F03E00F87E007C7E007CFE +007EFE007EFE007EFE007FFE007FFE007FFE007F7E00FF7E00FF3E01FF1F017F0FFE7F03FC7F00 +007F00007E00007E1E007E3F00FC3F00FC3F00F83F01F01E03E01C0FC00FFF0003F80018207E9F +1D>57 D E /Fb 1 16 df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FF +FFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012147D9519>15 +D E /Fc 21 115 df<00030003000700060006000E000C001C0018001800380030003000700060 +00E000C000C001C001800180038003000300070006000E000C000C001C00180018003800300070 +0060006000E000C000C00010287E9D15>47 D<07E00FF01FF83C3C781E700E700EE007E007E007 +E007E007E007E007E007E007E007E007E007700E700E781E3C3C1FF80FF007E0101A7E9915>I< +008003803F80FF80C3800380038003800380038003800380038003800380038003800380038003 +8003800380038003807FFC7FFC0E1A7D9915>I<0FE01FF0387C701EE00EE00F400F4007000700 +0F000F000E001E001C0038007000E001C0038007000E001C0038007000FFFFFFFF101A7E9915> +I<07E03FF8783CE01E601E400E001E001E003C007C07F807E007F8003C001E001E000F000F000F +800F800FC01E601E383C1FF807E0101A7E9915>I<00780000F80000B80001B80001B800033800 +0338000738000638000E38001E38001C38003C3800383800783800703800F03800FFFFC0FFFFC0 +003800003800003800003800003800003800003800121A7F9915>I<7FFC7FFC70007000700070 +00700070007000700073E07FF87FFC7C3E781E000F000F000F000F000F400FC01E601C38781FF0 +0FC0101A7E9915>I<00F803FC0F041C0018003800700070007000E1F0E7F8EFFCFC1EF00EF00F +E007E007E007600770077007300E380C1C3C0FF003E0101A7E9915>I<FFFFFFFF0007000E001C +003C00380078007000F000E001E001C003C003C0038007800780078007800F000F000F000F000F +000F00101A7E9915>I<07E01FF8381C700EE007E007E007E007700E781E3FFC0FF00FF03E7C78 +1E700EE007E007E007E007E007700E700E3C3C1FF807E0101A7E9915>I<07E00FF01C38381C70 +0CE00EE00EE007E007E007E007F00F700F783F3FF71FE70F870006000E000E001C001C203870F0 +3FE00F80101A7E9915>I<001C0000003E0000003E0000002E0000006700000067000000E78000 +00C7800000C3800001C3C0000183C0000381E0000381E0000301E0000700F0000700F0000600F0 +000E0078000FFFF8001FFFFC001C003C0018003C0038001E0038001E0030001E0070000F007000 +0F00E0000780191C7F9B1C>65 D<003FC001FFF003C0F00700300E00001E00003C000038000078 +0000780000F00000F00000F00000F00000F00000F00000F00000F000007800007800003800003C +00001E00000E000807001803C07801FFF0003F80151C7D9B1B>67 D<FFFC00FFFF80F007C0F001 +F0F000F8F00078F0003CF0001CF0001EF0001EF0000FF0000FF0000FF0000FF0000FF0000FF000 +0FF0000FF0000EF0001EF0001EF0003CF00078F00078F001F0F007E0FFFF80FFFE00181C7C9B1F +>I<003F8001FFF003C0F80700380E00181C00003C0000380000780000780000F00000F00000F0 +0000F00000F00000F007F8F007F8F000387800387800383800383C00381C00380E003807003803 +C0F801FFF0003F80151C7D9B1C>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0041C7C9B0C>73 D<FFFFFFFFFFFF003C00003C00003C00003C00003C00003C00003C +00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C +00003C00003C00003C00003C00003C00003C00181C7E9B1D>84 D<0FC03FF07FF87038401C001C +001C001C07FC3FFC7C1CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 +D<07C01FF03FF83C3C700C700EFFFEFFFEFFFEE000E000E000700070003C061FFE0FFE07F80F12 +7E9113>101 D<00FC03FC07FC07000E000E000E000E000E000E00FFE0FFE00E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E1C809B0D>I<E380E780EF80FC00 +F800F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>114 +D E /Fd 24 122 df<00001FE0000070380000E01C0001C03C0001803C00038038000380000007 +000000070000000700000007000000070000000E0000000E000000FFFFE000FFFFE0000E00E000 +1E01C0001C01C0001C01C0001C01C0001C0380001C038000380380003803800038070000380700 +003807080070070C00700E1800700E1800700E180070063000E0062000E003C000E0000000E000 +0001C0000001C0000001C0000071800000F3800000F3000000620000003C0000001E2D82A21C> +12 D<0000FC060007FF0C001F839C003E00DC0078007C00F0007801E0007803C0007807800038 +0F8000301F0000301E0000303E0000303E0000607C0000007C0000007C000000F8000000F80000 +00F8000000F8000000F8000000F0000000F0000180F0000180F0000300F0000300F0000600F800 +060078000C00780018003C0030001E0060000F81C00007FF000001FC00001F2478A224>67 +D<00F180038B80070F800E07001E07001C07003C0700380E00780E00780E00780E00F01C00F01C +00F01C20F01C30F03860F0386070786070D8C03198801E0F0014157B9419>97 +D<03C03F803F800380038007000700070007000E000E000E000E001C001CF81D8C1E0E3C063C07 +3807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F0010237BA217>I< +007C01C2030307070E0F1C0F3C003800780078007800F000F000F000F000F00170037006301C18 +380FC010157B9417>I<0000780007F00007F00000700000700000E00000E00000E00000E00001 +C00001C00001C00001C000038000F380038B80070F800E07001E07001C07003C0700380E00780E +00780E00780E00F01C00F01C00F01C20F01C30F03860F0386070786070D8C03198801E0F001523 +7BA219>I<00F803840E061C063C063806780CF038FFE0F000F000E000E000E000E000E002E006 +600C703830700F800F157A9417>I<00007C0000CE00019E00039E00038C000300000700000700 +000700000700000E00000E00000E00000E0001FFF001FFF0001C00001C00001C00001C00001C00 +00380000380000380000380000380000700000700000700000700000700000E00000E00000E000 +00E00001C00001C00001C00001C000038000738000F30000F300006600003C0000172D82A20F> +I<001F180031B800E0F801C0F001C0700380700780700700E00F00E00F00E00F00E01E01C01E01 +C01E01C01E01C01E03800E03800E0780060F80061F0001E700000700000700000E00000E00000E +00701C00F01800F0300060E0003F8000151F7E9417>I<00F0000FE0000FE00000E00000E00001 +C00001C00001C00001C000038000038000038000038000070000071E0007638007C1800F81C00F +01C00E01C00E01C01C03801C03801C03801C0380380700380700380E08380E0C700E18701C1870 +1C30700C20E00C6060078016237DA219>I<00E000E001E000C000000000000000000000000000 +00000000001E00330063806380C380C700C70007000E000E000E001C001C001C40386038C070C0 +7080318031001E000C227CA10F>I<0001C00003C00003C0000180000000000000000000000000 +000000000000000000000000000000003C00004600008700018700030700030700030700000E00 +000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000007000 +00700000700000E00000E00000E00071C000F18000F380006600003C0000122C82A10F>I<00F0 +000FE0000FE00000E00000E00001C00001C00001C00001C0000380000380000380000380000700 +000701E00706300708700E10F00E20F00E20600E40001D80001E00001FC0001CE0003870003830 +003838203838307070607070607070407030C0E01880600F0014237DA217>I<01E01FC01FC001 +C001C0038003800380038007000700070007000E000E000E000E001C001C001C001C0038003800 +380038007000700071007180E300E300E300620066003C000B237CA20D>I<1E07C07C00331861 +860063B033030063E03E0380C3C03C0380C3C03C0380C380380380078078070007007007000700 +70070007007007000E00E00E000E00E00E000E00E01C100E00E01C181C01C01C301C01C038301C +01C038601C01C0184038038018C01801800F0026157C9429>I<1E0780003318E00063B0600063 +E07000C3C07000C3807000C38070000700E0000700E0000700E0000700E0000E01C0000E01C000 +0E0382000E0383001C0386001C0706001C070C001C030800380318001801E00019157C941C>I< +007C0001C6000303000603800E03C01C03C03C03C03803C07803C07803C07803C0F00780F00780 +F00780F00F00F00E00701E00701C003038001860000F800012157B9419>I<03C1E00666300C7C +380C781818781C18701C18701C00E03C00E03C00E03C00E03C01C07801C07801C07801C0700380 +E003C0E003C1C003C380076700073C000700000700000E00000E00000E00000E00001C00001C00 +00FFC000FFC000161F7F9419>I<1E1F0033318063E1C063C3C0C3C3C0C38180C3800007000007 +00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000018000013 +157C9415>114 D<007801840306020E061E061E0608070007F007F803FC007C001E000E700EF0 +0CF00CE008601030601F800F157D9414>I<006000E000E000E000E001C001C001C001C00380FF +F8FFF8038007000700070007000E000E000E000E001C001C001C101C18383038303860186018C0 +0F000D1F7C9E11>I<0F003011807021C07061C0E0C1C0E0C380E0C380E00381C00701C00701C0 +0701C00E03800E03800E03840E03860E070C0C070C0E070C0E0B1806131003E1E018157C941B> +I<0F01C01183C021C3E061C1E0C1C0E0C380E0C380E00380C00700C00700C00700C00E01800E01 +800E01800E03000E03000E02000E04000E0C0006180001E00014157C9417>I<0F003011807021 +C07061C0E0C1C0E0C380E0C380E00381C00701C00701C00701C00E03800E03800E03800E03800E +07000C07000E07000E0F00061E0003EE00000E00000E00001C00301C0078380078300070600060 +C0002180001E0000151F7C9418>121 D E /Fe 33 122 df<00003C007E3C00FE3C01FE3C03C0 +00038000078000078000078000078000078000078000078000078000FFFE3CFFFE3CFFFE3C0780 +3C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C0780 +3C07803C07803C07803C07803C07803C162480A31B>12 D<787878781830306060E0050A7CA20E +>39 D<000F0000001F8000001F8000001B8000003BC0000039C0000079E0000071E0000070E000 +00F0F00000F0F00000E0F00001E0780001E0780001C0780003C03C0003C03C0003803C0007801E +0007801E0007001E000F000F000FFFFF001FFFFF801FFFFF801E0007803C0003C03C0003C03800 +03C0780001E0780001E0700001E0F00000F0F00000F0E00000F01D237EA221>65 +D<FFFF0000FFFFC000FFFFF000F001F800F0007C00F0003E00F0001F00F0000F00F0000780F000 +0780F00003C0F00003C0F00003C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0 +0001E0F00001E0F00001E0F00001C0F00003C0F00003C0F00007C0F0000780F0000F80F0001F00 +F0003E00F0007C00F001F800FFFFF000FFFFE000FFFF00001B237BA224>68 +D<FFFFF8FFFFF8FFFFF8F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000FFFFFCFFFFFCFFFFFC16237BA21E>I<F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237BA20E>73 +D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013237BA21B>76 +D<FFFE00FFFFC0FFFFE0F003F0F00078F0003CF0003CF0001EF0001EF0001EF0001EF0001EF000 +1EF0003CF0003CF00078F003F0FFFFE0FFFFC0FFFE00F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00000F0000017237BA220>80 +D<00FF0003FFE007FFF00F81F01E00703C00003C00007800007800007800007800007800007C00 +003E00003F00001FE0000FFC0007FF8001FFC0003FE00003F00000F800007800007C00003C0000 +3C00003C00003C00003C00003CC00078E00078F800F07F03E01FFFC00FFF8001FE0016257EA31C +>83 D<FFFFFFF8FFFFFFF8FFFFFFF8000780000007800000078000000780000007800000078000 +000780000007800000078000000780000007800000078000000780000007800000078000000780 +000007800000078000000780000007800000078000000780000007800000078000000780000007 +80000007800000078000000780000007800000078000000780001D237EA222>I<03F0001FFC00 +3FFE00381F00200F00000780000780000780000780000F8003FF801FFF803F0780780780F00780 +F00780F00780F007807C1F807FFF803FF7801F878011167E9518>97 D<F00000F00000F00000F0 +0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0F800F3FE00FFFF00FE +1F80F80780F003C0F003C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F003E0F003C0F0 +07C0F80780FC1F00FFFE00F7FC00F1F00013237CA21A>I<01FC0007FF000FFF801F03803C0180 +780000780000780000F00000F00000F00000F00000F00000F000007800007800007800003C0040 +1F03C00FFFC007FF8001FC0012167E9516>I<0001E00001E00001E00001E00001E00001E00001 +E00001E00001E00001E00001E00001E00001E003F1E007FDE00FFFE01F07E03C03E07C01E07801 +E0F801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07801E07803E03C03E03F0FE01FFD +E00FF9E003E1E013237EA21A>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FF +FFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF0001 +F80012167E9516>I<003F00FF01FF03C0038007800780078007800780078007800780FFF8FFF8 +FFF807800780078007800780078007800780078007800780078007800780078007800780078007 +80102380A20F>I<01F07C07FFFC0FFFFC1F1F001E0F003C07803C07803C07803C07803C07801E +0F001F1F000FFE001FFC0019F0003800003800003C00001FFF001FFFE01FFFF03FFFF87C01F878 +007CF0003CF0003CF0003CF8007C7C00F83F03F01FFFE00FFFC001FE0016217F9519>I<F00000 +F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0F800 +F3FE00F7FF00FE1F00FC0F80F80780F80780F00780F00780F00780F00780F00780F00780F00780 +F00780F00780F00780F00780F00780F00780F00780F0078011237CA21A>I<F0F0F0F000000000 +0000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00780F00F +00F01E00F03C00F07800F0F000F1E000F3C000F7C000FFC000FFE000FFE000FDF000F8F800F078 +00F07C00F03E00F01E00F01F00F00F00F00F80F007C012237CA218>107 +D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237D +A20B>I<F0FC03F0F3FF0FFCF7FF9FFEFE0FB83EFC07F01FF803E00FF803E00FF003C00FF003C0 +0FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003 +C00FF003C00FF003C00FF003C00F20167C9529>I<F0F800F3FE00F7FF00FE1F00FC0F80F80780 +F80780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780 +F00780F00780F0078011167C951A>I<00FC0007FF800FFFC01F03E03E01F03C00F07800787000 +38F0003CF0003CF0003CF0003CF0003CF0003C7800787800787C00F83E01F01F03E00FFFC007FF +8000FC0016167F9519>I<F0F800F3FE00FFFF00FE1F80F80780F007C0F003C0F003E0F001E0F0 +01E0F001E0F001E0F001E0F001E0F003E0F003C0F007C0F80F80FC1F00FFFE00F7FC00F1F000F0 +0000F00000F00000F00000F00000F00000F00000F00000F00000F0000013207C951A>I<F0E0F3 +E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000 +F0000B167C9511>114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F +000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8 +FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803 +E00E1C7F9B12>I<F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F0 +0780F00780F00780F00780F00780F00780F00780F00F80F83F807FFF807FE7801F878011167C95 +1A>I<F000F0F000F07801E07801E07801E03C03C03C03C03C03C01E07801E07800E07000F0F00 +0F0F00070E00079E00079E00039C00039C0003DC0001D80001F80001F80014167F9517>I<F007 +C01EF00FC01EF00EE01E780EE03C781CE03C781CF03C381CF0383C1C70783C3870783C3878781C +3878701E3838F01E3038F01E7038F00E703CE00E701CE00F601DE007601DC007600DC007400DC0 +07C00FC003C00F801F167F9522>I<7800F83C00F03E01E01E03C00F07C007878003CF0001FE00 +01FC0000FC0000780000F80000FC0001DE0003CF000787800F03800F03C01E01E03C00F07800F8 +F8007C1616809517>I<F000F0F800F07801E07801E03C01E03C03C03E03C01E03801E07800F07 +800F0700070F00078F00078E00038E00039C0001DC0001DC0001D80000D80000F8000070000070 +0000E00000E00000E00001C00001C0000380007F80007F00007E000014207F9517>I +E /Ff 81 127 df<001FC1F00070270C00C07E1E0180FC3E0380FC3E0700F81C07007800070038 +00070038000700380007003800070038000700380007003800FFFFFFE0FFFFFFE0070038000700 +380007003800070038000700380007003800070038000700380007003800070038000700380007 +00380007003800070038000700380007003800070038007FE1FFC07FE1FFC01F2380A21D>11 +D<000FC0000078300000E0080001803C0003807C0007007C0007007C0007003800070000000700 +000007000000070000000700000007000000FFFFFC00FFFFFC0007003C0007001C0007001C0007 +001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C00 +07001C0007001C0007001C0007001C007FF1FFC07FF1FFC01A2380A21C>I<000FEC0000701C00 +00E07C0001807C0003807C0007003C0007001C0007001C0007001C0007001C0007001C0007001C +0007001C0007001C00FFFFFC00FFFFFC0007001C0007001C0007001C0007001C0007001C000700 +1C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007 +001C0007001C007FF1FFC07FF1FFC01A2380A21C>I<000FC03F00007031E0C000E00B80200180 +3E00F003807E01F007007C01F007007C01F007003C00E007001C000007001C000007001C000007 +001C000007001C000007001C0000FFFFFFFFF0FFFFFFFFF007001C00F007001C007007001C0070 +07001C007007001C007007001C007007001C007007001C007007001C007007001C007007001C00 +7007001C007007001C007007001C007007001C007007001C007007001C00707FF1FFC7FF7FF1FF +C7FF282380A22A>I<07070F0E1C383060C0080976A219>19 D<0E000F8001C000E0007000E000 +E07FC080000C097A7E16>24 D<701CF83EFC3FFC3F741D04010401040104010802080210041004 +20084010100F7EA219>34 D<0000C00C000000C00C000000C00C000001C01C0000018018000001 +801800000180180000038038000003003000000300300000030030000007007000000600600000 +060060000006006000000E00E000000C00C000FFFFFFFFE0FFFFFFFFE000180180000018018000 +001801800000380380000030030000003003000000300300000030030000FFFFFFFFE0FFFFFFFF +E0006006000000E00E000000C00C000000C00C000000C00C000001C01C00000180180000018018 +000001801800000380380000030030000003003000000300300000070070000006006000000600 +600000232D7DA22A>I<70F8FCFC7404040404080810102040060F7CA20E>39 +D<001000200040008001000300060004000C001800180018003000300030007000600060006000 +E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030003000300018 +00180018000C00040006000300010000800040002000100C327DA413>I<800040002000100008 +000C0006000200030001800180018000C000C000C000E000600060006000700070007000700070 +007000700070007000700070007000600060006000E000C000C000C00180018001800300020006 +000C00080010002000400080000C327DA413>I<70F8FCFC7404040404080810102040060F7C84 +0E>44 D<FFF0FFF00C027F8B11>I<70F8F8F87005057C840E>I<01F800070E000E07001C038038 +01C03801C07801E07000E07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0 +00F0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E07000E07801E03801C03801C01C +03800E0700070E0001F80014227EA019>48 D<004001C007C0FFC0F9C001C001C001C001C001C0 +01C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001 +C001C07FFF7FFF10217CA019>I<03F8000FFE00181F802007C04003C04001E0F801E0FC01F0FC +00F0FC00F07800F03001F00001E00001E00003E00003C0000780000700000E00001C0000380000 +700000E0000080000100000200100400100800101000302000207FFFE0FFFFE0FFFFE014217EA0 +19>I<01F8000FFE001C0F803003C03803C07C03E07C01E07C01E03C03E01803E00003C0000380 +000780000E00001C0003F800000E000007800003C00003E00001E00001F00001F03001F07801F0 +FC01F0FC01F0FC01E0F803E04003C02007801C0F000FFE0003F80014227EA019>I<0003000003 +00000700000F00000F0000170000370000270000470000C7000087000107000307000207000407 +000C0700080700100700300700200700400700C00700FFFFFCFFFFFC0007000007000007000007 +0000070000070000070000FFF800FFF816217FA019>I<1800401E03801FFF801FFF001FFC0013 +F00010000010000010000010000010000010000010FC001306001403801801801001C00000E000 +00E00000F00000F00000F07000F0F800F0F800F0F800F0F800E0C001E04001C06003C03003801C +0F000FFE0003F00014227EA019>I<003E0000FF8003C0C00700E00E01E01C03E01C03E03801C0 +380000780000700000700000F0F800F30600F40300F40180F801C0F800E0F000E0F000F0F000F0 +F000F0F000F0F000F07000F07000F07800E03800E03801E01C01C01C03800F070003FE0001F800 +14227EA019>I<4000006000007FFFF07FFFF07FFFE0400020C000408000808001008001000002 +0000040000040000080000180000100000300000300000700000700000E00000E00000E00001E0 +0001E00001E00001E00003E00003E00003E00003E00003E00003E00003E00001C00014237DA119 +>I<01F80007FE000E07801801C03000C02000606000606000606000607000607800C03E00801F +81001FC60007FC0003F80001FE00067F000C1F80100FC03003E06001E0600070C00070C00030C0 +0030C00030C000306000607000403800C01E07800FFE0001F80014227EA019>I<01F80007FE00 +0E0F001C03803803807801C07001C07001E0F000E0F000E0F000F0F000F0F000F0F000F0F000F0 +7000F07001F03801F01802F00C02F0060CF001F0F00000E00000E00001E00001C03801C07C0380 +7C0380780700300E00303C001FF80007E00014227EA019>I<70F8F8F870000000000000000000 +000070F8F8F87005157C940E>I<70F8F8F870000000000000000000000070F8F8F87808080808 +101010204040051F7C940E>I<0001800000018000000180000003C0000003C0000003C0000005 +E0000005E0000005E0000008F0000008F0000008F00000107800001078000010780000203C0000 +203C0000603E0000401E0000401E0000C01F0000800F0000FFFF0001FFFF800100078001000780 +020003C0020003C0020003C0040001E0040001E00C0001E01E0001F0FFC01FFFFFC01FFF20237E +A225>65 D<FFFFF800FFFFFE0007800F80078007C0078003E0078001E0078001F0078001F00780 +01F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE000780078007 +8003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8 +078001F0078003F0078007E007800FC0FFFFFF00FFFFFC001D227EA123>I<0007F008003FFC18 +00FC061801F0013803C000F8078000780F0000381E0000381E0000183C0000183C0000187C0000 +087C00000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 +0000780000007C0000087C0000083C0000083C0000081E0000101E0000100F0000200780002003 +C0004001F0018000FC0700003FFC000007F0001D247DA224>I<FFFFF800FFFFFE0007800F8007 +8003C0078001E0078000F007800078078000780780003C0780003C0780001E0780001E0780001E +0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F078000 +1E0780001E0780003E0780003C0780003C07800078078000F0078001E0078003C007800F80FFFF +FF00FFFFF80020227EA126>I<FFFFFFE0FFFFFFE0078003E0078000E007800060078000200780 +0030078000300780001007802010078020100780201007802000078060000780E00007FFE00007 +FFE0000780E0000780600007802000078020000780200407802004078000040780000807800008 +0780000807800018078000180780003807800078078001F0FFFFFFF0FFFFFFF01E227EA122>I< +FFFFFFE0FFFFFFE0078003E0078000E00780006007800020078000300780003007800010078000 +1007802010078020100780200007802000078060000780E00007FFE00007FFE0000780E0000780 +600007802000078020000780200007802000078000000780000007800000078000000780000007 +8000000780000007800000FFFE0000FFFE00001C227EA121>I<0007F008003FFC1800FC061801 +F0013803C000F8078000780F0000381E0000381E0000183C0000183C0000187C0000087C000008 +78000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8001FFF78001F +FF7C0000787C0000783C0000783C0000781E0000781F0000780F0000780780007803C000B801F0 +01B800FC0718003FFC080007F00020247DA227>I<FFFC3FFFFFFC3FFF078001E0078001E00780 +01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007 +8001E007FFFFE007FFFFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0 +078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0FFFC3FFFFFFC3F +FF20227EA125>I<FFFCFFFC078007800780078007800780078007800780078007800780078007 +800780078007800780078007800780078007800780078007800780078007800780FFFCFFFC0E22 +7EA112>I<07FFF007FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F0000 +0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 +0F00300F00780F00FC0F00FC0F00FC0E00F81E00401C0020380018700007C00014237EA11A>I< +FFFC01FF80FFFC01FF800780007800078000600007800040000780008000078001000007800200 +00078004000007800800000780100000078020000007804000000780C000000781C000000783E0 +00000784F000000788F00000079078000007A03C000007C03C000007801E000007800F00000780 +0F00000780078000078003C000078003C000078001E000078000F000078000F000078000780007 +8000FC00FFFC03FFC0FFFC03FFC022227EA127>I<FFFE0000FFFE000007800000078000000780 +000007800000078000000780000007800000078000000780000007800000078000000780000007 +800000078000000780000007800000078000000780000007800000078000400780004007800040 +07800040078000C0078000C00780008007800180078003800780078007801F80FFFFFF80FFFFFF +801A227EA11F>I<FF800001FF80FF800001FF8007800001F00005C00002F00005C00002F00004 +E00004F00004E00004F00004E00004F00004700008F00004700008F00004380010F00004380010 +F00004380010F000041C0020F000041C0020F000041C0020F000040E0040F000040E0040F00004 +070080F00004070080F00004070080F00004038100F00004038100F00004038100F0000401C200 +F0000401C200F0000400E400F0000400E400F0000400E400F00004007800F00004007800F0001F +003000F000FFE0301FFF80FFE0301FFF8029227EA12E>I<FF8007FFFFC007FF07C000F805E000 +2004F0002004F0002004780020047C0020043C0020041E0020041E0020040F0020040780200407 +80200403C0200401E0200401E0200400F0200400F8200400782004003C2004003C2004001E2004 +000F2004000F20040007A0040003E0040003E0040001E0040001E0040000E01F000060FFE00060 +FFE0002020227EA125>I<000FF00000381C0000E0070001C00380078001E0070000E00E000070 +1E0000783C00003C3C00003C7C00003E7C00003E7800001E7800001EF800001FF800001FF80000 +1FF800001FF800001FF800001FF800001FF800001FF800001F7C00003E7C00003E7C00003E3C00 +003C3E00007C1E0000780F0000F00F0000F0078001E003C003C000E0070000381C00000FF00020 +247DA227>I<FFFFF800FFFFFE0007801F00078007C0078003C0078001E0078001E0078001F007 +8001F0078001F0078001F0078001F0078001E0078003E0078003C00780078007801F0007FFFC00 +078000000780000007800000078000000780000007800000078000000780000007800000078000 +0007800000078000000780000007800000FFFC0000FFFC00001C227EA122>I<FFFFE00000FFFF +FC000007801F00000780078000078003C000078003E000078001E000078001F000078001F00007 +8001F000078001F000078001E000078003E000078003C000078007000007803E000007FFF00000 +078038000007801C000007800E000007800F000007800700000780078000078007800007800780 +000780078000078007C000078007C000078007C000078007C040078007E040078003E040FFFC01 +E080FFFC00F1000000003E0022237EA125>82 D<03F8100FFE301E07303801F07000F0700070E0 +0030E00030E00010E00010E00010F00000F000007C00007F00003FF0001FFE000FFF8003FFC000 +3FE00003F00000F0000070000078000038800038800038800038800038C00030C00070E00060F8 +00E0CF03C0C7FF0080FE0015247DA21C>I<7FFFFFFC7FFFFFFC7803C03C6003C00C4003C00440 +03C004C003C006C003C0068003C0028003C0028003C0028003C0020003C0000003C0000003C000 +0003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0 +000003C0000003C0000003C0000003C0000003C0000003C0000003C00001FFFF8001FFFF801F22 +7EA124>I<FFFC07FFFFFC07FF078000F807800020078000200780002007800020078000200780 +002007800020078000200780002007800020078000200780002007800020078000200780002007 +800020078000200780002007800020078000200780002007800020078000200380004003C00040 +03C0004001C0008000E0018000700300003C0E00001FF8000003F00020237EA125>I<FFF800FF +C0FFF800FFC00F80001E000780000800078000080003C000100003C000100003C000100001E000 +200001E000200001F000200000F000400000F0004000007800800000780080000078008000003C +010000003C010000003C010000001E020000001E020000001F060000000F040000000F04000000 +07880000000788000000078800000003D000000003D000000003F000000001E000000001E00000 +0000C000000000C000000000C0000022237FA125>I<FFF83FFE03FFFFF83FFE03FF0F8003E000 +780F0001E00030078001E00020078001E00020078001F0002003C001F0004003C001F0004003C0 +0278004001E00278008001E00278008001E0043C008000F0043C010000F0043C010000F0081E01 +0000F8081E03000078081E02000078181F02000078100F0200003C100F0400003C100F0400003C +20078400001E20078800001E20078800001E4003C800000F4003D000000F4003D000000F8001F0 +0000078001E00000078001E00000070000E00000070000E00000030000C0000002000040003023 +7FA133>I<7FFC0FFF007FFC0FFF0003E001F00003E000C00001F000800000F001000000F80200 +000078020000003C040000003E080000001E080000000F100000000FB000000007A000000003C0 +00000003E000000001E000000001F000000003F80000000278000000047C0000000C3C00000008 +1E000000101F000000300F00000020078000004007C00000C003C000008001E000010001F00003 +0000F0000F8001F800FFE007FFC0FFE007FFC022227FA125>I<FFF8007FC0FFF8007FC00F8000 +1E0007C000180003C000100003E000100001E000200001F000600000F00040000078008000007C +008000003C010000003E030000001E020000000F040000000F84000000078800000007D8000000 +03D000000003E000000001E000000001E000000001E000000001E000000001E000000001E00000 +0001E000000001E000000001E000000001E000000001E000000001E00000003FFF0000003FFF00 +0022227FA125>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA40E>91 D<08021004200820084010401080 +20802080208020B82EFC3FFC3F7C1F380E100F7AA219>I<FEFE06060606060606060606060606 +0606060606060606060606060606060606060606060606060606060606060606FEFE07317FA40E +>I<1FF000381C007C06007C07007C0380380380000380000380007F8007C3801E03803C038078 +0380780380F00384F00384F00384F00784780B843C11C80FE0F016157E9419>97 +D<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 +000E00000E1F800E60E00E80300F00380E001C0E001E0E000E0E000F0E000F0E000F0E000F0E00 +0F0E000F0E000F0E000E0E001E0E001C0F00380C80700C60E0081F8018237FA21C>I<01FE0007 +07000C0F801C0F80380F80780700700000F00000F00000F00000F00000F00000F00000F0000070 +00007800403800401C00800C010007060001F80012157E9416>I<0000700007F00007F00000F0 +00007000007000007000007000007000007000007000007000007000007001F8700706700E0170 +1C00F0380070780070700070F00070F00070F00070F00070F00070F00070F00070700070780070 +3800701C00F00C017807067F01F87F18237EA21C>I<01FC000707000C03801C01C03801C07800 +E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E00 +8007030000FC0013157F9416>I<003E0000E30001C780038F80030F8007070007000007000007 +0000070000070000070000070000070000FFF800FFF80007000007000007000007000007000007 +00000700000700000700000700000700000700000700000700000700000700000700007FF8007F +F800112380A20F>I<00007801F08C071D1C0E0E1C1C07001C07003C07803C07803C07803C0780 +1C07001C07000E0E000F1C0019F0001000001000001800001C00001FFF000FFFE00FFFF03800F8 +60001840001CC0000CC0000CC0000C6000186000183800700E01C001FE0016217F9519>I<0E00 +0000FE000000FE0000001E0000000E0000000E0000000E0000000E0000000E0000000E0000000E +0000000E0000000E0000000E0000000E1F80000E60E0000E8070000F0038000F0038000E003800 +0E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038 +000E0038000E0038000E003800FFE3FF80FFE3FF8019237FA21C>I<1C003E003E003E001C0000 +0000000000000000000000000000000E00FE00FE001E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E000E00FFC0FFC00A227FA10E>I<00E001F001F001F000E000000000 +00000000000000000000000000F007F007F000F000700070007000700070007000700070007000 +70007000700070007000700070007000700070007000707070F870F8E0F8C071801F000C2C82A1 +0F>I<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E03FC0E03FC0E01E00E01800E02000E04000E08000E10000E38000EF8000F1C00 +0E1E000E0E000E07000E07800E03C00E01C00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00 +FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E1FC0 +7F00FE60E18380FE807201C01F003C00E00F003C00E00E003800E00E003800E00E003800E00E00 +3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E +003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E1F8000FE60E000 +FE8070001F0038000F0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038 +000E0038000E0038000E0038000E0038000E0038000E0038000E003800FFE3FF80FFE3FF801915 +7F941C>I<00FC000703800E01C01C00E0380070780078700038F0003CF0003CF0003CF0003CF0 +003CF0003CF0003C7000387800783800701C00E00E01C007038000FC0016157F9419>I<0E1F80 +FE60E0FE80700F00380E001C0E001E0E001E0E000F0E000F0E000F0E000F0E000F0E000F0E000F +0E001E0E001E0E001C0F00380E80700E60E00E1F800E00000E00000E00000E00000E00000E0000 +0E00000E0000FFE000FFE000181F7F941C>I<01F8200704600E02601C01603801E07800E07800 +E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070C +E001F0E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE171F7E941A +>I<0E1E00FE6300FE87801E87800F03000F00000E00000E00000E00000E00000E00000E00000E +00000E00000E00000E00000E00000E00000E0000FFF000FFF00011157F9414>I<0FC4303C600C +C00CC004C004E004F0007F803FF00FF800FC001E800E8006C006C006C004E00CD81887E00F157E +9414>I<020002000200020002000600060006000E001E003FF8FFF80E000E000E000E000E000E +000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E003800FE +03F800FE03F8001E0078000E0038000E0038000E0038000E0038000E0038000E0038000E003800 +0E0038000E0038000E0038000E0038000E0038000E0078000E0078000700BC0003833F8000FC3F +8019157F941C>I<FFC1FEFFC1FE1E00700E00200E002007004007004003808003808003808001 +C10001C10000E20000E20000E20000740000740000380000380000380000100017157F941A>I< +FF8FF87F80FF8FF87F801E01C01E000E00C00C000E00E008000E01E00800070160100007017010 +0007023030000382382000038238200001C418400001C41C400001C41C400000E80C800000E80E +800000E80E8000007007000000700700000070070000002002000021157F9424>I<FF83FEFF83 +FE0F01E007008003810003830001C20000E400007800007000003800003C00004E00008E000187 +000103800201C00601C01E00E0FF03FEFF03FE17157F941A>I<FFC1FEFFC1FE1E00700E00200E +002007004007004003808003808003808001C10001C10000E20000E20000E20000740000740000 +3800003800003800001000001000002000002000002000F84000F84000F88000B980006300003E +0000171F7F941A>I<3FFFC0380380300780200700600E00401C00403C0040380000700000E000 +01E00001C0000380400700400F00400E00C01C0080380080780180700780FFFF8012157F9416> +I<FFFFFF1801808C19>I<0E011F02318C40F8807010057CA019>126 D E +/Fg 25 121 df<F8F8F8F8F805057B8410>46 D<0003F000000003F000000007F800000007F800 +000007780000000F3C0000000F3C0000000F3C0000001E3E0000001E1E0000001E1E0000003E1F +0000003C1F0000007C0F8000007C0F800000780F800000F807C00000F807C00000F007C00001F0 +03E00001F003E00001E003E00003E001F00003E001F00003C001F00007C000F80007FFFFF80007 +FFFFF8000FFFFFFC000F80007C000F00007C001F00003E001F00003E001E00003E003E00001F00 +3E00001F003C00001F007C00000F807C00000F80F800000FC0F8000007C0F8000007C0222A7EA9 +27>65 D<0003FE00000FFFC0003FFFF000FFFFF001FE03F003F8006007E0002007C000000F8000 +001F8000001F0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F800 +0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000007C +0000007C0000007C0000003E0000003E0000001F0000001F8000000F80000007C0000007E00008 +03F8003801FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C7CAA25>67 +D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000F8000000F8000000F8000000F800 +0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF00FF +FFFF00FFFFFF00FFFFFF00F8000000F8000000F8000000F8000000F8000000F8000000F8000000 +F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF +E0FFFFFFE0FFFFFFE0FFFFFFE01B2A7BA923>69 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7BA910>73 +D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 +00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 +00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000FFFF +FFFFFFFFFFFFFFFFFFFF182A7BA920>76 D<FFFFE000FFFFFC00FFFFFF00F8003F80F8000FC0F8 +0003E0F80001F0F80001F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80001F0 +F80001F0F80003E0F8000FE0F8003FC0FFFFFF80FFFFFE00FFFFF800FFFFE000F801F000F801F0 +00F800F800F800F800F8007C00F8003C00F8003E00F8001E00F8001F00F8000F80F8000F80F800 +07C0F80007C0F80003E0F80001E0F80001F0F80000F8F80000F8F800007C1E2A7BA926>82 +D<01FC000FFF003FFF803FFFC03C07E03003E00001F00001F00001F00001F00001F00003F001FF +F007FFF01FFFF03FC1F07E01F0FC01F0F801F0F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9 +F00FE1F0141B7E9A1C>97 D<F80000F80000F80000F80000F80000F80000F80000F80000F80000 +F80000F80000F80000F80000F80000F80000F87E00F9FF80FFFFC0FFFFE0FF07E0FC03F0F801F8 +F800F8F800F8F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F800F8 +F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00162A7BA91E>I<007F8001FFE007FFF80FFF +F81FC0783F00103E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800 +007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FFE0007F80151B7E9A1A>I<00 +007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00 +007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C7C007C7C007CFC007CF8007CF8 +007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C7E00FC3F00FC1F83FC1FFFFC0F +FF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFFC01F87E03F01E03E00F07C00F0 +7C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C00007C00003E0000 +3F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<001FC0007FC000FFC001FFC003F0 +0003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0 +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912 +>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E0003E03E0007C01F0007C01F0007C +01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF80003BFE000038F80000 +78000000780000007C0000003FFF80003FFFF0001FFFF8001FFFFC003FFFFE007C00FE007C003F +00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F81FC001FFFF8000FFFF00007FF +E00000FF000019287E9A1D>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>105 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108 +D<F83F007E00F9FF83FF00FBFFC7FF80FFFFEFFFC0FF07FE0FC0FE03FC07E0FC01F803E0FC01F8 +03E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801 +F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8 +01F003E0F801F003E0F801F003E0F801F003E0231B7B9A2E>I<F87E00F9FF00FBFF80FFFFC0FF +0FC0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8 +03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0131B7B9A1E>I<007E00 +01FF8007FFE00FFFF01F81F83F00FC3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001F +F8001FF8001FF8001F7C003E7C003E7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00 +181B7E9A1D>I<F87E00F9FF80FFFFC0FFFFE0FF0FE0FC03F0F801F8F800F8F800F8F800FCF800 +7CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F801F8F801F0FC03F0FE0FE0FFFF +C0FFFF80FBFF00F8FC00F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 +00F80000F8000016277B9A1E>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F8 +00F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114 +D<07F8001FFF003FFF807FFF807C0780F80100F80000F80000F80000FC00007F00007FF0003FFC +001FFE0007FF0000FF80001FC0000FC00007C00007C04007C0E007C0FC1F80FFFF807FFF001FFE +0007F800121B7E9A16>I<07C00007C00007C00007C00007C00007C00007C000FFFF80FFFF80FF +FF8007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007 +C00007C00007C00007C00007C00007C00007C08007E38003FFC003FFC001FF0000FC0012227FA1 +15>I<F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0 +F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE0 +3FF3E01F83E0131B7B9A1E>I<7C001F803E003F003F003E001F807C000F80FC0007C0F80007E1 +F00003F3E00001F7E00000FFC000007F8000007F0000003E0000003E0000003F0000007F800000 +FFC00001F3E00003E1E00003E1F00007C0F8000F807C001F807C001F003E003E001F007C001F80 +FC000FC01A1B809A1B>120 D E /Fh 69 126 df<701CF01EF01EF01EF01EF01EF01EF01EF01E +701C701C701C701C600C0F0E7B9D1A>34 D<01818003C3C003C3C003C3C003C3C003C3C003C3C0 +7FFFF0FFFFF8FFFFF8FFFFF80787800787800787800F8F800F0F000F0F000F0F000F0F00FFFFF8 +FFFFF8FFFFF87FFFF01E1E001E1E001E1E001E1E001E1E001E1E000C0C00151E7E9D1A>I<1C3E +3E3F1F070707070E0E1C3C78F0600810789D1A>39 D<0038007800F001E003C007800F000E001C +001C0038003800700070007000E000E000E000E000E000E000E000E000E000E000700070007000 +380038001C001C000E000F00078003C001E000F8007800380D2878A21A>I<6000F00078003C00 +1E000F000780038001C001C000E000E00070007000700038003800380038003800380038003800 +38003800700070007000E000E001C001C0038007800F001E003C007800F00060000D287CA21A> +I<00E00000E00000E00000E00040E040F0E1E0F8E3E07EEFC01FFF0007FC0003F80007FC001FFF +007EEFC0F8E3E0F0E1E040E04000E00000E00000E00000E00013157D991A>I<00300000780000 +78000078000078000078000078000078000078007FFFF0FFFFF8FFFFF87FFFF000780000780000 +780000780000780000780000780000780000300015167E991A>I<183E7E7F3F1F070E0E1CFCF8 +E0080D77851A>I<7FFFC0FFFFE0FFFFE07FFFC013047D901A>I<3078FCFC7830060676851A>I< +0000C00001E00001E00003E00003C00007C0000780000F80000F00000F00001F00001E00003E00 +003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C000078000 +0F80000F00001F00001E00001E00003E00003C00007C0000780000F80000F00000F00000600000 +13277DA21A>I<01F00007FC000FFE001F1F001C07003803803803807001C07001C07001C0E000 +E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803 +803C07801C07001F1F000FFE0007FC0001F000131E7D9D1A>I<00C001C001C003C007C00FC07F +C0FDC071C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0 +01C07FFFFFFF7FFF101E7B9D1A>I<03F0000FFC001FFF003C0F807803C07001C0E000E0F000E0 +F000E06000E00000E00000E00001C00001C0000380000780000F00000E00003C00007C0000F000 +01E00003C0000780000F00001E00E03C00E07FFFE0FFFFE07FFFE0131E7D9D1A>I<01FC0007FF +001FFF801E03C03C01C03C00E03C00E00000E00000E00001C00003C000078001FF0001FF0001FF +C00003E00000F0000070000038000038000038600038F00038F00038E000707000F07E03E03FFF +C00FFF0001FC00151E7E9D1A>I<000F80001F80003F80003B80007B8000F38000E38001E38003 +C3800383800783800F03800E03801E03803C0380380380780380F00380FFFFFEFFFFFEFFFFFE00 +0380000380000380000380000380000380007FFC007FFC007FFC171E7F9D1A>I<3078FCFC7830 +0000000000000000003078FCFC7830061576941A>58 D<183C7E7E3C1800000000000000000018 +3C7E7E3E1E0E0E1C3CF8F0C0071C77941A>I<7FFFF0FFFFF8FFFFF87FFFF00000000000000000 +000000007FFFF0FFFFF8FFFFF87FFFF0150C7E941A>61 D<003E0001FF0003FF8007C3C00F01C0 +1E0EE03C3FE0387FE07071F070E0F070E0F0E1C070E1C070E1C070E1C070E1C070E1C070E1C070 +E1C07070E0E070E0E07071C0387FC03C3F801E0E000F007007C1F003FFE001FFC0003F00141E7E +9D1A>64 D<003800007C00007C00006C0000EE0000EE0000EE0000EE0000C60001C70001C70001 +C70001C7000383800383800383800383800783C00701C007FFC007FFC007FFC00E00E00E00E00E +00E00E00E01C00707F83FCFF83FE7F83FC171E7F9D1A>I<FFFE00FFFF80FFFFC01C03E01C00E0 +1C00F01C00701C00701C00701C00701C00E01C01E01C07C01FFF801FFF801FFFC01C01E01C00F0 +1C00701C00381C00381C00381C00381C00381C00781C00F01C01F0FFFFE0FFFFC0FFFF00151E7E +9D1A>I<007C3801FF3807FFF80F83F81E00F81C0078380078380038700038700038700000E000 +00E00000E00000E00000E00000E00000E00000E000007000007000387000383800383800381C00 +701E00F00F83E007FFC001FF80007C00151E7E9D1A>I<FFFE00FFFF00FFFF801C07C01C01E01C +00F01C00701C00781C00381C00381C003C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C +001C1C003C1C00381C00381C00781C00701C00F01C01E01C07C0FFFFC0FFFF00FFFE00161E7F9D +1A>I<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E07000E0700 +0E07000FFF000FFF000FFF000E07000E07000E07000E00000E00000E00000E000E0E000E0E000E +0E000E0E000E7FFFFEFFFFFE7FFFFE171E7F9D1A>I<7FFFFCFFFFFC7FFFFC0E001C0E001C0E00 +1C0E001C0E001C0E00000E00000E07000E07000E07000FFF000FFF000FFF000E07000E07000E07 +000E00000E00000E00000E00000E00000E00000E00000E00007FE000FFF0007FE000161E7F9D1A +>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E07000E0E00000E00000E0 +0000E00000E00000E00000E00FF8E00FF8E00FF8E000E07000E07000E07001E03801E03C03E01E +03E00F07E007FFE003FEE000F8E0151E7E9D1A>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C0 +1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0FF8FF8FF8FF8FF8FF8151E7E9D1A> +I<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C000FFFF80FFFF80FFFF80111E7C9D1A>I<03FFC003FFE003FFC0000E00000E00000E0000 +0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E00000E00600E00F00E00F01E00F03C007FF8003FF0000FC000131E7C9D1A>I< +FF83F8FF87FCFF83F81C01E01C03C01C03801C07001C0F001C1E001C1C001C38001C78001CF000 +1CF8001DF8001FDC001F9C001F0E001E0F001E07001C07801C03801C01C01C01C01C00E01C00E0 +1C0070FF81FCFF81FEFF81FC171E7F9D1A>I<7FE000FFF0007FE0000E00000E00000E00000E00 +000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 +000E00000E00000E00380E00380E00380E00380E00387FFFF8FFFFF87FFFF8151E7E9D1A>I<7E +003F00FF007F807F007F001D80DC001D80DC001D80DC001DC1DC001DC1DC001CC19C001CC19C00 +1CE39C001CE39C001C631C001C771C001C771C001C361C001C361C001C3E1C001C1C1C001C1C1C +001C001C001C001C001C001C001C001C001C001C001C001C001C001C007F007F00FF80FF807F00 +7F00191E809D1A>I<FE0FF8FF0FF8FF0FF81D81C01D81C01D81C01D81C01DC1C01CC1C01CC1C0 +1CE1C01CE1C01C61C01C61C01C71C01C71C01C31C01C31C01C39C01C39C01C19C01C19C01C1DC0 +1C0DC01C0DC01C0DC01C0DC0FF87C0FF87C0FF83C0151E7E9D1A>I<0FFE003FFF807FFFC07C07 +C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000 +E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF800FFE +00131E7D9D1A>I<7FFF00FFFFC07FFFE00E01F00E00780E00380E003C0E001C0E001C0E001C0E +001C0E003C0E00380E00780E01F00FFFE00FFFC00FFF000E00000E00000E00000E00000E00000E +00000E00000E00000E00007FC000FFE0007FC000161E7F9D1A>I<FFF000FFFC00FFFF001C0F80 +1C07801C03C01C01C01C01C01C01C01C01C01C03C01C07801C0F801FFF001FFC001FFE001C0F00 +1C07001C03801C03801C03801C03801C03801C03841C038E1C038E1C038EFF81FCFF81FCFF8070 +171E7E9D1A>82 D<03F1C00FFDC03FFFC07C0FC07003C0E003C0E001C0E001C0E001C0E0000070 +00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E0 +00E0E001C0F001C0FC0780FFFF80EFFE00E3F800131E7D9D1A>I<7FFFFEFFFFFEFFFFFEE0380E +E0380EE0380EE0380EE0380E003800003800003800003800003800003800003800003800003800 +00380000380000380000380000380000380000380000380000380000380003FF8007FFC003FF80 +171E7F9D1A>I<7FC1FF00FFE3FF807FC1FF000E0038000E0038000E0038000E0038000E003800 +0E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038 +000E0038000E0038000E0038000E0038000E00380007007000070070000380E00003C1E00001FF +C00000FF8000003E0000191E809D1A>I<3FFFF87FFFF87FFFF87000707000E07001E07001C070 +0380000780000700000E00001E00001C0000380000780000F00000E00001C00003C00003800007 +00000F00380E00381C00383C0038380038700038FFFFF8FFFFF8FFFFF8151E7E9D1A>90 +D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 +E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FF +F80D2776A21A>I<FFF8FFF8FFF800380038003800380038003800380038003800380038003800 +380038003800380038003800380038003800380038003800380038003800380038003800380038 +0038FFF8FFF8FFF80D277EA21A>93 D<7FFFC0FFFFE0FFFFE07FFFC013047D7E1A>95 +D<1FF0003FFC007FFE00780F00300700000380000380007F8007FF801FFF803F83807803807003 +80E00380E00380E00380700780780F803FFFFC1FFDFC07F0FC16157D941A>97 +D<FE0000FE0000FE00000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FC1 +F00F80700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80 +F00FC1E00FFFC00EFF80063E00161E7F9D1A>I<00FF8003FFC00FFFE01F01E03C00C078000070 +0000700000E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003 +FFC000FE0014157D941A>I<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C0 +01F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0 +E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<01F80007FF000FFF +801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000007800 +703C00701F01F00FFFE003FFC000FE0014157D941A>I<0007E0001FF0003FF800787800F03000 +E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000E00000E00000E00000 +E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC07FFFC07FFFC0151E7F9D +1A>I<00F87C03FFFE07FFFE0F078C0E03801C01C01C01C01C01C01C01C01C01C00E03800F0780 +0FFF000FFE001CF8001C00001C00000E00000FFF800FFFE03FFFF87C007C70001CE0000EE0000E +E0000EE0000E70001C78003C3E00F81FFFF007FFC001FF0017217F941A>I<FE0000FE0000FE00 +000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00 +E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3 +FEFFE3FE171E7F9D1A>I<01C00003E00003E00003E00001C00000000000000000000000000000 +00007FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 +E00000E00000E00000E00000E00000E000FFFFC0FFFFC0FFFFC0121F7C9E1A>I<001C003E003E +003E001C000000000000000000000FFE0FFE0FFE000E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E000E001C601CF038FFF87FF01FC0 +0F2A7E9E1A>I<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E0 +0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 +0000E00000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<7CE0E000FFFBF8007FFFF8 +001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C +1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FF9F9F807F1F1F00191580941A +>I<FE3E00FEFF80FFFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E +00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3FEFFE3FE17157F941A>I<01F00007FC00 +1FFF003E0F803C07807803C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C0 +7803C03C07803E0F801FFF0007FC0001F00013157D941A>I<FE3E00FEFF80FFFFE00FC1F00F80 +700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1 +E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0 +00FFE00016207F941A>I<FF83F0FF8FF8FFBFFC03FC3C03F01803E00003C00003C00003800003 +8000038000038000038000038000038000038000038000038000FFFF00FFFF80FFFF0016157E94 +1A>114 D<07FB801FFF807FFF80780780E00380E00380E003807800007FC0003FFC0007FF0000 +3F800003806001C0E001C0E001C0F003C0FC0780FFFF00EFFE00E3F80012157C941A>I<00C000 +01C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001C00001C00001C00001C000 +01C00001C00001C00001C00001C00001C00001C07001C07001C07001C07000E0E000FFE0007FC0 +001F00141C7F9B1A>I<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00E00E00E00E00E00E00 +E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFE03FFFE00FCFE17157F941A +>I<7FC7FCFFC7FE7FC7FC0E00E00E00E00F01E00701C00701C00783C003838003838003838001 +C70001C70001C70000EE0000EE0000EE00007C00007C0000380017157F941A>I<FF83FEFFC7FE +FF83FE3800381C00701C00701C00701C00701C38701C7C700C7C600E6CE00E6CE00EEEE00EEEE0 +0EEEE006C6C006C6C007C7C007C7C003838017157F941A>I<7FC7F87FCFFC7FC7F80703C00387 +8003C70001EE0000FE00007C00007800003800007C0000EE0001EE0001C7000383800783C00701 +C07FC7FCFFC7FE7FC7FC17157F941A>I<7FC7FCFFC7FE7FC7FC0E00E00F00E00701E00701C007 +81C00381C003838001C38001C38001C70000E70000E70000E600006600006E00003C00003C0000 +3C00003C0000380000380000780000700030700078E00079E0007FC0003F80001E000017207F94 +1A>I<0007E0001FE0003FE000780000F00000E00000E00000E00000E00000E00000E00000E000 +00E00000E00000E00000E00001E00003C000FF8000FF0000FF800003C00001E00000E00000E000 +00E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007800003FE0001FE0 +0007E013277DA21A>123 D<7C0000FF0000FF800003C00001E00000E00000E00000E00000E000 +00E00000E00000E00000E00000E00000E00000E00000F000007800003FE0001FE0003FE0007800 +00F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E000 +03C000FF8000FF00007C000013277DA21A>125 D E /Fi 62 127 df<0000FE0000038100000E +0080001C03C0003807C0007007C0007007800070030000E0000000E0000000E0000000E0000000 +E0000000E000003FFFFF003FFFFF0001C00F0001C0070001C0070001C0070003800E0003800E00 +03800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007001C +000F003C00FFE3FF80FFE3FF801A237FA21C>12 D<0380078007000E001C003800700040008000 +0A0971A219>19 D<0700078001E000F0007000E001E0FF800C087B7E16>24 +D<0001E000000003100000000C080000000C080000001808000000380800000038080000003008 +00000030100000007010000000702000000070400000007080000000710000000072000000003C +003FF00038003FF00038000F800038000600007C000800009C000800011C001000061E0020000C +0E004000180F004000380700800078078100007003820000F003C40000F001C80000F001F00080 +F800F00180F800F001007801B803003E0F1E0E001FFC0FFC0007E003F00024257DA327>38 +D<1C3E7E7E3A02020404080810204080070F78A20E>I<1C3E7E7E3A0202040408081020408007 +0F7D840E>44 D<FFF0FFF00C027D8B11>I<3078F8787005057C840E>I<001F0000E1C001C06003 +80700700300E00380E00381E00381C00381C00383C00383C003838007878007878007878007878 +0078780078F000F0F000F0F000F0F000F0F000E0F001E0F001E0F001C0F001C0F0038070038070 +0700700600380C001C380007E00015227CA019>48 D<000FC0007FF000E0FC01003E02001E0400 +1F07800F0FC00F0FC00F0FC00F0F801F03001E00001E00003C00003C0000780000F00001E00003 +C0000700000E00001C0000300000600000C0000180080200080400080800103000107FFFF0FFFF +E0FFFFE018217EA019>50 D<001FC0007FE001C0F803007C07803C07C03C0FC03C0FC03C07803C +03007C0000780000F00000E00001C000070000FE000003800001C00001E00000F00000F00000F0 +0000F81000F87C01F0FC01F0FC01F0FC01E0F803E0C007C0600780381F001FFC0007F00016227D +A019>I<0000200000600000E00001E00001E00002E00005C00009C00011C00031C00061C00041 +C00083800103800203800403800C0380080380100700200700400700800700FFFFFCFFFFFC000E +00000E00000E00000E00000E00000E00001E0003FFE003FFE016217DA019>I<00800400E03C01 +FFF801FFF001FFC0017F00010000010000020000020000020000020000023F0002C1C00500E006 +00600400700000700000780000780000780000783800787C0078FC00F0F800F0F800E08001E040 +01C0400380200700381E000FFC0007E00016227DA019>I<001FC0007FE000E07801801802000C +06000C04000C0C000C0C000C0E000C0F00180F803007E06003F0C001FF0000FE00007F00019FC0 +060FE00C03E01801F03000F0600070600030C00030C00030C00030C00020E000606000C0300180 +3C0F000FFC0003F00016227DA019>56 D<003F0000FFC001E0E00380700700700E00381E00381C +00383C00383C00383C00383C00787800787800787800783800F83800F83801781C01F00C02F006 +0CF001F0E00001E00001E00001C00003C0700380F80700F80600F00E00803C00E070007FE0001F +800015227CA019>I<060F1F1F0E00000000000000000000003078F8787008157C940E>I<000004 +0000000006000000000E000000000E000000001E000000001E000000003F000000006F00000000 +4F00000000CF000000008F000000018F000000010F800000020780000002078000000407800000 +040780000008078000000803C000001003C000001003C000002003C000003FFFC000007FFFC000 +004001E000008001E000008001E000010001E000010001E000020001F000020000F000060000F0 +001F0001F000FFC01FFF80FFC01FFF0021237EA225>65 D<07FFFFE007FFFFF8003C007C003C00 +3E003C001F003C001F003C000F0078000F0078000F0078001F0078001F0078003E0078003C00F0 +007800F001F000F007C000FFFFC000F001F000F000F801E0007C01E0007C01E0003C01E0003E01 +E0003E01E0003E03C0003C03C0007C03C0007C03C000F803C001F003C003E007C00FC0FFFFFF80 +FFFFFC0020227EA123>I<0000FE010007FF83001F81C6007C006E00F0003E01E0001E03C0001E +0780000E0F00000C1F00000C1E0000043E0000043C0000047C0000047C000000F8000000F80000 +00F8000000F8000000F8000000F8000000F0000000F0000000F0000010F8000010F8000020F800 +0020780000207C0000403C0000801E0001800F0003000780060003E0380001FFF000003F800020 +247AA224>I<07FFFFE00007FFFFF800003C007C00003C001E00003C000F00003C000780003C00 +078000780003C000780003C000780003E000780003E000780003E000780003E000F00003E000F0 +0003E000F00003E000F00003E000F00003E000F00003E001E00003C001E00007C001E00007C001 +E000078001E0000F8001E0000F0003C0001F0003C0001E0003C0003C0003C000780003C000F000 +03C003E00007C00FC000FFFFFF0000FFFFF8000023227EA126>I<07FFFFFF8007FFFFFF80003C +001F00003C000700003C000300003C000300003C00010000780001000078000100007802010000 +780201000078020100007806000000F004000000F01C000000FFFC000000FFFC000000F01C0000 +00F00C000001E008000001E008000001E008010001E008010001E000020001E000020003C00002 +0003C000040003C000040003C0000C0003C000180003C000380007C001F800FFFFFFF000FFFFFF +F00021227EA122>I<0000FE010007FF83001F81C6007C006E00F0003E01E0001E03C0001E0780 +000E0F00000C1F00000C1E0000043E0000043C0000047C0000047C000000F8000000F8000000F8 +000000F8000000F8000000F8000000F0003FFFF0003FFFF00000F0F80000F0F80000F0F80001E0 +780001E07C0001E03C0001E01E0003E00F0003E0078004C003F038C001FFF040003F800020247A +A227>71 D<07FFF007FFF0003E00003C00003C00003C00003C0000780000780000780000780000 +780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001 +E00003C00003C00003C00003C00003C00003C00007C000FFFE00FFFC0014227EA112>73 +D<003FFF003FFF0000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001 +E00003C00003C00003C00003C00003C00003C0000780000780000780000780000780000780300F +007C0F00FC0F00FC0F00FC1E00F81E00803C0040380030E0000F800018237DA11A>I<07FFF00F +FE07FFF00FFC003E0003E0003C000300003C000200003C000400003C0018000078002000007800 +4000007800800000780100000078020000007808000000F018000000F03C000000F07C000000F0 +9E000000F31E000000F40F000001E80F000001F00F800001E007800001E007C00001E003C00001 +E003E00003C001E00003C001F00003C000F00003C000F80003C000780003C0007C0007C0007E00 +FFFC03FFC0FFFC03FFC027227EA127>I<07FFF80007FFF800003E0000003C0000003C0000003C +0000003C000000780000007800000078000000780000007800000078000000F0000000F0000000 +F0000000F0000000F0000000F0000001E0000001E0000001E0001001E0001001E0003001E00020 +03C0002003C0006003C0006003C000C003C001C003C003C007C00FC0FFFFFF80FFFFFF801C227E +A11F>I<07FC000007FE07FC00000FFE002E00000FC0002E00001780002E00001780002E000027 +80002700002780004700004F00004700008F00004700008F00004700010F00004380010F000043 +80020F00008380021E00008380041E000081C0041E000081C0081E000081C0081E000081C0101E +000101C0203C000100E0203C000100E0403C000100E0403C000100E0803C000100E0803C000200 +7100780002007100780002007200780002007200780002003C0078000600380078000F003800F8 +00FFE0301FFF80FFE0301FFF802F227EA12E>I<07FFFFC007FFFFF0003C00FC003C003E003C00 +1E003C001F003C001F0078001F0078001F0078001F0078001F0078001E0078003E00F0003C00F0 +007800F000F000F003E000FFFF8000F0000001E0000001E0000001E0000001E0000001E0000001 +E0000003C0000003C0000003C0000003C0000003C0000003C0000007C00000FFFC0000FFFC0000 +20227EA122>80 D<07FFFF800007FFFFF000003C00F800003C003C00003C001E00003C001F0000 +3C001F000078001F000078001F000078001F000078001F000078003E000078003C0000F0007800 +00F000F00000F007C00000FFFE000000F00E000000F003000001E003800001E001C00001E001C0 +0001E001E00001E001E00001E001E00003C003E00003C003E00003C003E00003C003E00003C003 +E02003C003E04007C003E040FFFC01F080FFFC00F1800000003E0023237EA125>82 +D<000FC040003FF0C000F0398001C00F80018003800300038007000180070001800E0001000E00 +01000E0001000F0000000F0000000F80000007E0000007FE000003FFC00001FFF000007FF80000 +07FC0000007C0000003C0000001E0000001E0000001E0020001E0040001C0040001C0060001C00 +600018006000380070007000F800E000EF03C000C7FF800080FE00001A247DA21C>I<1FFFFFFF +3FFFFFFF3C01E01E3001E0062001E0026001E0024001E0024003C0024003C0028003C0028003C0 +028003C0020003C000000780000007800000078000000780000007800000078000000F0000000F +0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E000000 +1E0000003E00001FFFF8001FFFF80020227AA124>I<FFFE07FF80FFFE07FF8007C00078000780 +0020000780002000078000200007800020000F000040000F000040000F000040000F000040000F +000040000F000040001E000080001E000080001E000080001E000080001E000080001E00008000 +3C000100003C000100003C000100003C000100003C000100003C000200003C000200003C000200 +003C000400003C000C00001C000800001E001000000E006000000781C0000003FF800000007E00 +0000212379A125>I<FFFC007FE0FFF8007FE00F80001E000780000C0007800008000780001000 +03C000100003C000200003C000200003C000400003C000C00001E000800001E001000001E00100 +0001E002000001E002000000F004000000F004000000F008000000F008000000F0100000007810 +00000078200000007860000000784000000078800000003C800000003D000000003D000000003E +000000003E000000001C000000001C0000000018000000001800000023237AA125>I<FFF81FFF +03FF80FFF81FFE03FF800F8003E00078000F8001E0003000078001E0002000078001E000200007 +8001E0004000078003F0004000078002F0008000078004F000800007C004F001000003C008F001 +000003C008F002000003C010F002000003C010F804000003C0307804000003C0207808000001E0 +207808000001E0407810000001E0407810000001E0807830000001E0803C20000001E1003C2000 +0001E1003C40000000F2003C40000000F2003C80000000F4003C80000000F4003D00000000F800 +1F00000000F8001E00000000F0001E0000000070001C0000000060001C00000000600018000000 +0040001800000031237AA133>I<03FFF03FF803FFE03FF8001F800F80000F000600000F000C00 +000780080000078010000007C020000003C040000003E0C0000001E080000001F100000000F200 +000000FC0000000078000000007C000000003C000000003E000000005E000000009F000000018F +000000030F800000020780000004078000000803C000001003C000003003E000002001E0000040 +01F000008000F000018000F80007C000F800FFF007FFC0FFF007FFC025227FA125>I<FFF8007F +E0FFF8007FE007C0001E0007C000180003C000100003C000200003E000200001E000400001F000 +800000F001000000F801000000780200000078040000007C080000003C180000003E100000001E +200000001F400000001FC00000000F800000000F000000000F000000000F000000000F00000000 +0E000000001E000000001E000000001E000000001E000000001E000000001C000000003E000000 +07FFE0000007FFE0000023227AA125>I<0100038007C00CC018603030601080080D0876A219> +94 D<03FC000E07001F01801F01C01E00C00C00E00001C00001C0003FC003E1C00F01C01E01C0 +380380780380F00384F00384F00784F00784F00B887833D01FC1E016157D9419>97 +D<0780003F80003F00000700000700000700000700000700000E00000E00000E00000E00000E00 +000E00001C3F001CC1C01D00601E00701C00381C003838003C38003C38003C38003C38003C3800 +3C7000787000787000707000F07000E06801C0E80380C60E0081F80016237BA21C>I<00FF0003 +83800607C00C07C01C0780380300780000700000F00000F00000F00000F00000F00000E00000F0 +0000F000807001007001003806001C180007E00012157C9416>I<00000F00007F00007E00000E +00000E00000E00000E00000E00001C00001C00001C00001C00001C00001C007E3803C1380700B8 +0E00781C0038380038780070700070F00070F00070F00070F00070E000E0E000E0E000E0F000E0 +7001E07003E03805E01C19FC07E1FC18237CA21C>I<007E000383800701C00C00E01C00E03800 +E07800E07000E0FFFFE0F00000F00000F00000F00000E00000E00000F000407000803000801803 +000E0C0003F00013157D9416>I<0001E0000630001C780018F80038F800707000700000700000 +E00000E00000E00000E00000E00000E0003FFE003FFE0001C00001C00001C00001C00003800003 +80000380000380000380000380000700000700000700000700000700000700000F0000FFF000FF +F00015237FA20F>I<00000380001F8CC00070D1C000E0E1C001C0700003C0700003C070000780 +F0000780F0000780F0000780E0000381E0000181C00002C30000027E0000040000000400000004 +0000000600000007FFC00007FFF00007FFF8001C007C0030000C0060000C0060000C00C0000C00 +C0000C004000180060003000300060000C03800003FE00001A21809519>I<0078000003F80000 +03F00000007000000070000000700000007000000070000000E0000000E0000000E0000000E000 +0000E0000000E0000001C1F80001C60C0001D80E0001E0070001E0070001C0070003C00E000380 +0E0003800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007 +001C000F003C00FFE3FF80FFE3FF8019237FA21C>I<007000F001F000F000E000000000000000 +00000000000000000001C00FC01FC003C001C001C0038003800380038003800380070007000700 +0700070007000F00FFE0FFE00C227FA10E>I<0078000003F8000003F000000070000000700000 +00700000007000000070000000E0000000E0000000E0000000E0000000E0000000E0000001C07F +C001C07FC001C03C0001C0300001C0400001C080000383000003840000038E000003BE000003CF +00000387000007078000070380000701C0000701C0000700E0000700F0000F00F800FFE3FF00FF +E3FE001A237FA21A>107 D<007803F803F00070007000700070007000E000E000E000E000E000 +E001C001C001C001C001C001C00380038003800380038003800700070007000700070007000F00 +FFE0FFE00D237FA20E>I<01C1F807E01FC60C18301FD80E603803E007801C01E007801C01C007 +001C03C00F003803800E003803800E003803800E003803800E003803800E003807001C00700700 +1C007007001C007007001C007007001C007007001C00700F003C00F0FFE3FF8FFEFFE3FF8FFE27 +157F942A>I<01C1F8001FC60C001FD80E0003E0070001E0070001C0070003C00E0003800E0003 +800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007001C00 +0F003C00FFE3FF80FFE3FF8019157F941C>I<007F0001C1C00700E00E00701C00383800387800 +3C70003CF0003CF0003CF0003CF0003CE00078E00078E00070F000F07000E07001C03803800E0E +0003F00016157D9419>I<00E1F8000FE60E000FE8070000F0038000E003C000E001C001C001E0 +01C001E001C001E001C001E001C001E001C001E0038003C0038003C0038007800380078003800F +0003C00E0007403C0007307000070FC0000700000007000000070000000E0000000E0000000E00 +00000E0000000E000000FFC00000FFC000001B1F80941C>I<00FC100382100701300E00F01C00 +F03800F07800E07800E0F000E0F000E0F000E0F000E0F001C0F001C0F001C0F001C07003C07005 +C0380B801C338007C380000380000380000380000700000700000700000700000700007FE0007F +E0141F7C941A>I<01C3E01FC4701FD8F003D0F001E06001C00003C00003800003800003800003 +80000380000700000700000700000700000700000700000F0000FFF000FFF00014157F9414>I< +01FC800603800C01801801801801801800801801001E00001FE0000FFC0003FE00007E00000700 +400700400300400300600200600600F00400C8180087E00011157E9414>I<0080008000800180 +010001000300030007000F001FF8FFF80E000E000E000E001C001C001C001C001C001C00381038 +10381038103810382038201C4007800D1F7C9E13>I<0E0038FE03F8FE03F81E00780E00380E00 +381C00701C00701C00701C00701C00701C00703800E03800E03800E03800E03801E03802E01805 +E01C19FC07E1FC16157C941C>I<FFCFFC3FC0FFCFF87F801E01E01E000E00C008000E00C00800 +0E01E010000E03E010000E02E02000070660200007046040000708704000070870800007107180 +00079031000003A033000003A03A000003C03C000003C03C000003801800000180180000010010 +000022157C9424>119 D<1FF83FC01FF87FC001E03C0000E0100000E020000070400000388000 +00390000001E0000001C0000000E0000001F0000003700000063800000C380000181C0000101C0 +000600E0001E00F000FF03FF00FF03FF001A157F941A>I<0FFC0FE00FFC0FE000E0078000E002 +0000E0040000E00400007008000070080000701000007030000038200000384000003840000038 +8000003C8000001D0000001D0000001E0000001C0000000C000000080000000800000010000000 +1000000020000078400000F8400000F8800000F1000000420000003C0000001B1F80941A>I<FF +FFFF18017E8C19>123 D<0E011F03318440F88070100577A019>126 D E +/Fj 27 123 df<70F8FCFC7404040404080810102040060F7A8410>44 D<0003F802001FFF0600 +7E038601F000CE03E0003E0780001E0F00001E1F00000E1E0000063E0000063C0000067C000002 +7C00000278000002F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000 +00780000007C0000027C0000023C0000023E0000021E0000041F0000040F0000080780001803E0 +003001F00060007E03C0001FFF000003FC001F247CA227>67 D<FFFFFFE0FFFFFFE0078003E007 +8000E0078000600780002007800030078000300780001007800010078020100780201007802000 +07802000078060000780E00007FFE00007FFE0000780E000078060000780200007802000078020 +00078020000780000007800000078000000780000007800000078000000780000007800000FFFE +0000FFFE00001C227CA123>70 D<FFFC1FFF80FFFC1FFF80078000F000078000F000078000F000 +078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 +00078000F000078000F00007FFFFF00007FFFFF000078000F000078000F000078000F000078000 +F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 +00F000078000F000078000F000078000F000FFFC1FFF80FFFC1FFF8021227CA129>72 +D<FFFCFFFC07800780078007800780078007800780078007800780078007800780078007800780 +0780078007800780078007800780078007800780078007800780FFFCFFFC0E227DA114>I<FFFE +0000FFFE0000078000000780000007800000078000000780000007800000078000000780000007 +800000078000000780000007800000078000000780000007800000078000000780000007800000 +0780000007800020078000200780002007800020078000600780006007800040078000C0078001 +C0078003C007800FC0FFFFFFC0FFFFFFC01B227CA122>76 D<FFFFE00000FFFFFC000007801F00 +000780078000078003C000078003E000078001E000078001F000078001F000078001F000078001 +F000078001E000078003E000078003C000078007000007803E000007FFF0000007807800000780 +1C000007800E000007800F00000780070000078007800007800780000780078000078007800007 +8007C000078007C000078007C000078007C020078003E020078003E020FFFC01E040FFFC00F080 +0000003F0023237CA128>82 D<FFF80FFF807FE0FFF80FFF807FE00F8000F8000F000F80007800 +0600078000780004000780007C00040007C000BC000C0003C000BC00080003C000BE00080003E0 +011E00080001E0011E00100001E0011E00100001E0020F00100000F0020F00200000F0020F0020 +0000F00407802000007804078040000078040780400000780803C04000003C0803C08000003C08 +03C08000003C1001E08000001E1001E10000001E1001E10000001E2000F10000000F2000F20000 +000F2000F20000000F40007A00000007C0007C00000007C0007C0000000780003C000000038000 +38000000038000380000000300001800000001000010000033237EA137>87 +D<00040000000E0000000E0000000E0000001F0000001F0000003F800000278000002780000043 +C0000043C0000043C0000081E0000081E0000101F0000100F0000100F00003FFF8000200780006 +007C0004003C0004003C000C001E000C001E003C003F00FF00FFE01B1A7F991F>97 +D<FFFF800F00E00F00700F00380F003C0F003C0F003C0F003C0F003C0F00780F00700F01E00FFF +C00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00F0FFFF +C0171A7E991D>I<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F0 +0000F00000F00000F00000F00000F000007000027000027800023800041C00041C00080E000803 +003001C0C0003F00171A7E991D>I<FFFF80000F01E0000F0070000F0038000F001C000F000E00 +0F000E000F0007000F0007000F0007800F0007800F0007800F0007800F0007800F0007800F0007 +800F0007800F0007000F0007000F000F000F000E000F001C000F0038000F0070000F01E000FFFF +8000191A7E991F>I<FFFFF80F00380F00180F00080F000C0F00040F00040F00040F02000F0200 +0F02000F06000FFE000F06000F02000F02000F02000F00020F00020F00020F00060F00040F0004 +0F000C0F003CFFFFFC171A7E991C>I<003F810001E063000380170006000F000C0007001C0003 +0038000300780001007800010070000100F0000000F0000000F0000000F0000000F0000000F001 +FFE070001F0078000F0078000F0038000F001C000F000C000F0006000F000380170001E0630000 +3F81001B1A7E9920>103 D<FFE3FF800F0078000F0078000F0078000F0078000F0078000F0078 +000F0078000F0078000F0078000F0078000F0078000FFFF8000F0078000F0078000F0078000F00 +78000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800FFE3FF8019 +1A7E991F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F +000F000F000F000F000F000F000F000F00FFF00C1A7F990F>I<FFF0000F80000F00000F00000F +00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F +00100F00100F00100F00300F00200F00600F00600F01E0FFFFE0141A7E991A>108 +D<FF0003FE0F0003E00F0003E00B8005E00B8005E00B8005E009C009E009C009E009C009E008E0 +11E008E011E008E011E0087021E0087021E0083841E0083841E0083841E0081C81E0081C81E008 +1C81E0080F01E0080F01E0080F01E0080601E01C0601E0FF861FFE1F1A7E9925>I<FF00FF800F +801C000F8008000BC0080009E0080009E0080008F0080008F8080008780800083C0800083C0800 +081E0800080F0800080F0800080788000803C8000803C8000801E8000800F8000800F800080078 +000800780008003800080018001C001800FF800800191A7E991F>I<007F800001C0E000070038 +000E001C001C000E003C000F0038000700780007807000038070000380F00003C0F00003C0F000 +03C0F00003C0F00003C0F00003C0F00003C07800078078000780380007003C000F001C000E000E +001C000700380001C0E000007F80001A1A7E9920>I<007F800001C0E000070038000E001C001C +000E003C000F0038000700780007807800078070000380F00003C0F00003C0F00003C0F00003C0 +F00003C0F00003C0F00003C07000038078000780380007003C1E0F001C310E000E209C000720B8 +0001E0E000007FC0400000404000006040000070C000007F8000003F8000003F0000001E001A21 +7E9920>113 D<FFFE00000F03C0000F00E0000F00F0000F0078000F0078000F0078000F007800 +0F0078000F00F0000F00E0000F03C0000FFE00000F0380000F01E0000F00E0000F00F0000F00F0 +000F00F0000F00F0000F00F0000F00F0000F00F0400F0070400F003880FFF01F001A1A7E991E> +I<07E100181B00300700600300600300E00100E00100E00100F00000F800007F80003FF8001FFC +000FFE0000FF00000F00000780000780800380800380800380C00300C00700E00600DC0C0083F0 +00111A7E9917>I<7FFFFF00701E0700601E0100401E0100C01E0180801E0080801E0080801E00 +80001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E +0000001E0000001E0000001E0000001E0000001E0000001E0000003F000003FFF000191A7F991D +>I<FFF0FF800F001C000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F +0008000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F000800 +0F00080007001000078010000380200001C0600000E08000003F0000191A7E991F>I<FFC00FF0 +1F0007801F0003000F8002000780040007C0040003E0080001E0080001F0100000F83000007820 +00007C4000003E4000001E8000001F8000000F0000000F0000000F0000000F0000000F0000000F +0000000F0000000F0000000F0000000F000000FFE0001C1A7F991F>121 +D<7FFFE07803C07003C0600780400780400F00401E00401E00003C00003C0000780000F00000F0 +0001E00001E00003C0000780200780200F00200F00201E00603C00403C00C07801C07803C0FFFF +C0131A7E9919>I E /Fk 19 121 df<FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF000007F00000000007F00000000007F00000000007F000000000 +07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000 +07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000 +07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000 +07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000 +00000007F00000000007F00000000007F00000000007F00000303C7DBB37>84 +D<003FF00001FFFC0007FFFF001FFFFF801FFFFFC01FC01FE01E000FE0180007F0100007F00000 +03F8000003F8000003F8000003F8000003F8000003F8000003F80007FFF8007FFFF801FFFFF807 +FFFFF81FFF03F83FF003F87FC003F87F0003F8FF0003F8FE0003F8FE0003F8FE0003F8FE0003F8 +FF0007F87F800FF87FE07FF83FFFFFF83FFFFFF81FFFFBF807FFE3F803FE03F81D257DA427>97 +D<0007FE00003FFFC000FFFFF001FFFFF803FFFFF807FC03F80FF000701FE000301FC000003F80 +00003F8000007F0000007F0000007F000000FE000000FE000000FE000000FE000000FE000000FE +000000FE000000FE000000FE0000007F0000007F0000007F0000003F8000003F8000001FC00004 +1FE0001C0FF0007C07FC03FC03FFFFFC01FFFFFC00FFFFF0003FFFC00007FC001E257DA424>99 +D<0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000 +007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00 +00007F0000007F0000007F0000007F001FE07F007FF87F01FFFE7F03FFFFFF07FFFFFF0FFE07FF +0FF001FF1FE000FF3FC0007F3F80007F7F80007F7F00007F7F00007F7F00007FFE00007FFE0000 +7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7F00007F7F00007F7F00 +007F7F80007F3F80007F3FC000FF1FE001FF1FF003FF0FFC0FFF07FFFFFF03FFFF7F01FFFC7F00 +7FF87F001FC07F203C7DBB2A>I<0007F800003FFE0000FFFF8001FFFFC003FFFFE007FC1FF00F +F007F01FE003F81FC001F83F8000FC3F8000FC7F0000FC7F00007E7FFFFFFEFFFFFFFEFFFFFFFE +FFFFFFFEFFFFFFFEFE000000FE000000FE000000FE000000FE0000007E0000007F0000007F0000 +003F8000003F8000001FC000041FE0001C0FF8007C07FE03FC03FFFFFC01FFFFF8007FFFE0001F +FF800003FC001F257EA424>I<0000FFC00003FFC00007FFC0001FFFC0003FFFC0003F8040007F +000000FE000000FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC000001 +FC000001FC000001FC000001FC000001FC000001FC000001FC0000FFFFFC00FFFFFC00FFFFFC00 +FFFFFC00FFFFFC0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC +000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 +FC000001FC000001FC000001FC000001FC00001A3C7FBB19>I<001FE007E0007FF83FE001FFFF +FFF003FFFFFFF007FFFFFFF00FF87FE0000FE01FC0001FC00FE0001FC00FE0003F8007F0003F80 +07F0003F8007F0003F8007F0003F8007F0003F8007F0003F8007F0001F8007E0001FC00FE0001F +C00FE0000FE01FC0000FF87FC00007FFFF80000FFFFF00001FFFFE00001E7FF800001E1FE00000 +3E000000003E000000003E000000003F000000001F800000001FFFFF00001FFFFFF0000FFFFFFC +000FFFFFFE000FFFFFFF001FFFFFFF803FFFFFFFC03F8000FFC07E00001FC07E00000FE0FC0000 +07E0FC000007E0FC000007E0FC000007E0FC000007E07E00000FC07F00001FC03FC0007F801FF8 +03FF000FFFFFFE0007FFFFFC0001FFFFF000007FFFC000000FFE000024377EA428>I<FE000000 +FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE03FC00FE0FFF00FE3FFFC0FE7FFFE0FEFFFFE0FFF01FF0FFE00FF0FF +C007F8FF8007F8FF0003F8FF0003F8FF0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8 +FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003 +F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00 +03F81D3C7ABB2A>I<FEFEFEFEFEFEFE0000000000000000000000000000FEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE073A7AB914>I<FEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE073C7ABB14>108 D<FE03FC000FF000FE0FFF003FFC +00FE3FFFC0FFFF00FE7FFFE1FFFF80FEFFFFE3FFFF80FFF01FF7C07FC0FFE00FFF803FC0FFC007 +FF001FE0FF8007FE001FE0FF0003FC000FE0FF0003FC000FE0FF0003FC000FE0FE0003F8000FE0 +FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8 +000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE +0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F800 +0FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE00 +03F8000FE0FE0003F8000FE033257AA440>I<FE03FC00FE0FFF00FE3FFFC0FE7FFFE0FEFFFFE0 +FFF01FF0FFE00FF0FFC007F8FF8007F8FF0003F8FF0003F8FF0003F8FE0003F8FE0003F8FE0003 +F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00 +03F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE +0003F8FE0003F8FE0003F81D257AA42A>I<0007FC0000001FFF0000007FFFC00001FFFFF00003 +FFFFF80007FC07FC000FF001FE001FE000FF001FC0007F003F80003F803F80003F807F00001FC0 +7F00001FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F +E0FE00000FE0FE00000FE0FE00000FE07F00001FC07F00001FC07F00001FC03F80003F803F8000 +3F801FC0007F001FE000FF000FF001FE0007FE0FFC0003FFFFF80001FFFFF000007FFFC000001F +FF00000007FC000023257EA428>I<FE03FC00FE1FFF00FE7FFF80FEFFFFC0FFFFFFE0FFF03FF0 +FFC00FF8FF0007F8FE0003FCFE0001FCFE0001FEFE0000FEFE0000FEFE0000FFFE00007FFE0000 +7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE0000FEFE0000FEFE00 +01FEFE0001FCFE0003FCFF0003FCFF0007F8FF801FF0FFE07FE0FFFFFFC0FEFFFF80FE7FFF00FE +1FFE00FE07F000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000 +FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000020367A +A42A>I<FE00F0FE07F0FE1FF0FE3FF0FE7FF0FEFFF0FFFF00FFF800FFF000FFE000FFC000FF80 +00FF8000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00001425 +7AA41C>114 D<007FC00003FFFC0007FFFF000FFFFF801FFFFF803F803F803F000F007E000300 +7E0000007E0000007E0000007E0000007F0000007FC000003FFC00003FFFC0001FFFF0000FFFFC +0007FFFE0001FFFF00007FFF000007FF8000007F8000001FC000001FC000000FC000000FC04000 +0FC060000FC078001F80FC001F80FF807F80FFFFFF007FFFFE001FFFFC0007FFF000007FC0001A +257EA41F>I<01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 +FC000001FC000001FC0000FFFFFE00FFFFFE00FFFFFE00FFFFFE00FFFFFE0001FC000001FC0000 +01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC +000001FC000001FC000001FC010001FE030001FE0F8000FFFF8000FFFF80007FFE00003FF80000 +1FC00019307FAF1D>I<FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE +0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8 +FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003 +F8FE0007F8FE0007F8FE000FF8FF001FF8FF807FF87FFFFFF87FFFFBF83FFFE3F81FFF83F807FC +03F81D257AA42A>I<7F80003FC03FC0003FC03FC0007F801FE000FF000FF001FE0007F801FC00 +03F803FC0003FC07F80001FE07F00000FF0FE000007F1FE000003FBFC000003FFF8000001FFF00 +00000FFF00000007FE00000007FC00000003F800000003F800000007FC00000007FE0000000FFF +0000001FFF8000003F9F8000003F1FC000007F0FE00000FE07F00001FC07F80003FC03F80003F8 +01FC0007F001FE000FF000FF001FE0007F001FC0003F803FC0003FC07F80001FE0FF00000FF024 +2580A425>120 D E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300 +TeXDict begin @letter /letter where {pop letter} if +%%EndSetup +%%Page: 1 1 +bop -5 173 a Fk(The)27 b(design)f(and)g(implementation)e(of)-5 +255 y(a)j(language)f(fo)n(r)h(extending)e(applications)-5 370 +y Fj(Luiz)18 b(Henrique)e(de)i(Figueiredo,)f(R)o(ober)m(to)f(Ier)o +(usalimschy,)g(W)-6 b(aldemar)17 b(Celes)g(Filho)-5 454 y Fi(T)l(eCGraf{Grup) +q(o)f(de)g(T)l(ecnologia)g(em)g(Computa\030)-22 b(c~)d(ao)16 +b(Gr\023)-25 b(a\014ca,)15 b(ITS,)h(PUC-Rio)-5 514 y(Pr)o(\023)-24 +b(edio)16 b(do)g(ITS,)g(Rua)g(Marqu)o(^)-24 b(es)15 b(de)i(S~)-25 +b(ao)16 b(Vicen)o(te)h(225,)f(22453-900)f(Rio)h(de)h(Janeiro,)e(RJ,)h(Brasil) +-5 574 y Fh({lhf,roberto,celes}@ic)q(ad.puc)q(-rio.br)-5 779 +y Fg(Abstract.)26 b Ff(W)l(e)16 b(describ)q(e)g(the)h(design)e(and)h(the)h +(implemen)o(tation)d(of)j Fe(Lua)p Ff(,)f(a)g(simple,)f(y)o(et)i(p)q(o)o(w)o +(erful,)-5 839 y(language)i(for)g(extending)g(applications.)29 +b(Although)19 b Fe(Lua)g Ff(is)g(a)h(pro)q(cedural)d(language,)i(it)h(has)f +(data)-5 899 y(description)11 b(facilities,)h(and)g(has)f(b)q(een)h(extensiv) +o(ely)g(used)f(in)h(pro)q(duction)f(for)g(sev)o(eral)h(tasks)f(including)-5 +959 y(user)i(con\014guration,)g(general-purp)q(ose)e(data-en)o(try)l(,)i +(description)g(of)h(user)f(in)o(terfaces,)g(description)g(of)-5 +1019 y(application)j(ob)s(jects,)g(and)g(storage)g(of)h(structured)e +(graphical)g(meta\014les.)-5 1133 y Fg(Resumo.)26 b Ff(Descrev)o(emos)11 +b(o)g(pro)s(jeto)h(e)f(a)h(implemen)o(ta\030)-22 b(c~)d(ao)10 +b(de)i Fe(Lua)p Ff(,)g(uma)f(linguagem)f(simples,)h(p)q(or)o(\023)-24 +b(em)-5 1193 y(p)q(o)q(derosa,)17 b(para)f(extens~)-25 b(ao)18 +b(de)f(aplica\030)-22 b(c~)d(oes.)24 b(Em)o(b)q(ora)16 b(pro)q(cedural,)f +Fe(Lua)j Ff(con)o(t)o(\023)-24 b(em)16 b(mecanismos)g(para)-5 +1253 y(descri\030)-22 b(c~)d(ao)20 b(de)g(dados)f(e)i(tem)g(sido)e(largamen)o +(te)g(utilizada)h(em)g(pro)q(du\030)-22 b(c~)d(ao)19 b(para)h +(con\014gura\030)-22 b(c~)d(ao)19 b(p)q(elo)-5 1313 y(usu\023)-25 +b(ario,)24 b(en)o(trada)e(de)i(dados,)g(descri\030)-22 b(c~)d(ao)23 +b(de)h(in)o(terfaces,)g(descri\030)-22 b(c~)d(ao)23 b(de)h(ob)s(jetos)f(da)h +(aplica\030)-22 b(c~)d(ao)23 b(e)-5 1373 y(armazenagem)15 b(de)i +Fd(meta\014les)f Ff(gr\023)-25 b(a\014cos)15 b(estruturados.)-5 +1553 y Fg(Intro)r(duction)-5 1638 y Ff(There)k(is)h(increasing)e(demand)g +(for)i(customizable)e(applications.)30 b(As)20 b(applications)e(b)q(ecame)i +(more)-5 1698 y(complex,)k(customization)e(with)g(simple)g(parameters)f(b)q +(ecame)i(imp)q(ossible:)32 b(users)22 b(no)o(w)f(w)o(an)o(t)h(to)-5 +1758 y(mak)o(e)14 b(con\014guration)e(decisions)g(at)i(execution)g(time;)h +(users)d(also)h(w)o(an)o(t)g(to)i(write)e(macros)g(and)g(scripts)-5 +1817 y(to)18 b(increase)d(pro)q(ductivit)o(y)i(\(Ry)o(an)f(1990\).)24 +b(Therefore,)16 b(no)o(w)o(ada)o(ys,)e(larger)i(applications)f(almost)i(in-) +-5 1877 y(v)m(ariably)j(carry)g(their)h(o)o(wn)f(con\014guration)e(or)i +(scripting)g(languages)f(for)h(end-user)f(programming.)-5 1937 +y(These)g(languages)f(are)h(usually)f(simple,)g(but)h(eac)o(h)g(has)f(its)h +(o)o(wn)g(particular)f(syn)o(tax.)29 b(As)19 b(a)h(conse-)-5 +1997 y(quence,)e(users)f(ha)o(v)o(e)g(to)h(learn)f(\(and)h(dev)o(elop)q(ers)f +(ha)o(v)o(e)g(to)h(design,)f(implemen)o(t)g(and)g(debug\))g(a)h(new)-5 +2056 y(language)e(for)g(eac)o(h)g(application.)-5 2141 y(Our)c(\014rst)g(exp) +q(erience)h(with)g(a)g(proprietary)e(scripting)g(language)h(arose)g(in)g(a)h +(data-en)o(try)f(application,)-5 2201 y(for)23 b(whic)o(h)f(a)h(v)o(ery)g +(simple)f(declarativ)o(e)h(language)f(w)o(as)g(designed)g +(\(Figueiredo{Souza{Gattass{)-5 2261 y(Co)q(elho)h(1992\).)41 +b(\(Data-en)o(try)23 b(is)f(an)h(area)f(where)h(user)f(de\014ned)g(actions)g +(are)g(esp)q(ecially)h(needed)-5 2320 y(b)q(ecause)13 b(pre-co)q(ded)e(v)m +(alidation)i(tests)g(can)f(hardly)g(b)q(e)h(adequate)f(for)h(all)f +(applications.\))20 b(When)12 b(users)-5 2380 y(b)q(egan)i(to)g(demand)f +(increasingly)f(more)h(p)q(o)o(w)o(er)g(in)g(this)g(language,)h(w)o(e)f +(decided)h(that)g(a)g(more)f(general)-5 2440 y(approac)o(h)i(w)o(as)h(needed) +h(and)f(started)g(the)h(design)f(of)h(a)g(general-purp)q(ose)d(em)o(b)q +(edded)i(language.)21 b(A)o(t)-5 2500 y(the)16 b(same)f(time,)g(another)g +(declarativ)o(e)g(language)f(w)o(as)h(b)q(eing)g(added)g(to)h(a)f(di\013eren) +o(t)g(application)f(for)-5 2560 y(data)h(description.)k(Therefore,)14 +b(w)o(e)h(decided)e(to)i(merge)f(the)h(t)o(w)o(o)f(languages)f(in)o(to)h +(one,)g(and)g(designed)-5 2619 y Fe(Lua)19 b Ff(to)g(b)q(e)g(a)g(pro)q +(cedural)f(language)g(with)h(data)f(description)g(facilities.)29 +b Fe(Lua)18 b Ff(has)h(since)f(outgro)o(wn)-5 2679 y(its)f(original)e(ro)q +(ots)h(and)g(is)g(b)q(eing)g(used)g(in)g(sev)o(eral)g(other)g(industrial)f +(pro)s(jects.)-5 2764 y(This)h(pap)q(er)g(describ)q(es)f(the)i(design)f +(decisions)f(and)h(the)g(details)g(of)h(our)f(implemen)o(tation)e(of)j +Fe(Lua)p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(1)p eop +%%Page: 2 2 +bop -5 163 a Fg(Extension)20 b(languages)-5 248 y Ff(The)d(use)g(of)g +(languages)f(for)g(extending)h(applications)f(is)g(no)o(w)h(recognized)f(as)g +(an)h(imp)q(ortan)o(t)f(design)-5 308 y(tec)o(hnique:)k(it)13 +b(allo)o(ws)f(a)h(cleaner)f(design)g(for)h(the)g(application)f(and)g(it)h +(pro)o(vides)f(con\014guration)f(b)o(y)i(the)-5 367 y(user.)26 +b(Because)18 b(most)f(extension)h(languages)f(are)g(simple,)g(sp)q(ecialized) +h(to)g(a)g(task,)h(they)f(ha)o(v)o(e)g(b)q(een)-5 427 y(called)d(\\little)h +(languages")d(\(Ben)o(tley)j(1986;)f(V)l(ald)o(\023)-24 b(es)15 +b(1991\),)g(in)g(con)o(trast)f(to)i(the)f(\\big",)g(mainstream)-5 +487 y(languages,)k(in)h(whic)o(h)e(applications)h(are)g(written.)32 +b(This)19 b(distinction)f(is)i(not)f(so)h(sharp)e(no)o(w)o(ada)o(ys,)-5 +547 y(since)f(a)g(ma)s(jor)f(part)g(of)h(sev)o(eral)g(applications)e(is)i +(actually)g(written)g(using)f(an)g(extension)h(language.)-5 +607 y(Extension)f(languages)g(come)g(in)g(sev)o(eral)g(\015a)o(v)o(ors:)-5 +741 y Fb(\017)25 b Fi(con\014guration)d(languages)r Ff(:)34 +b(for)23 b(selecting)g(preferences,)g(usually)g(implemen)o(ted)e(as)i +(parameter)45 801 y(lists)13 b(in)f(command)g(lines)g(or)g(as)h(v)m +(ariable-v)m(alue)f(pairs)g(read)g(from)g(con\014guration)g(\014les)g +(\(e.g.,)i(DOS's)45 861 y Fh(config.sys)p Ff(,)k(MS-Windo)o(ws')c +Fh(.ini)j Ff(\014les,)f(X11)h(resource)e(\014les,)h(Motif)t('s)g(UIL)h +(\014les\);)-5 930 y Fb(\017)25 b Fi(scripting)19 b(languages)r +Ff(:)29 b(for)20 b(automating)f(tasks,)i(with)g(limited)e(\015o)o(w)h(con)o +(trol,)g(suc)o(h)g(as)g(the)g(ones)45 990 y(used)c(in)g(DOS's)g(batc)o(h)f +(\014les)h(or)g(in)h(the)f(v)m(arious)g(Unix)h(shells;)-5 1060 +y Fb(\017)25 b Fi(macro)15 b(languages)r Ff(:)21 b(also)15 +b(for)h(automating)g(tasks,)g(but)g(usually)f(only)h(as)f(a)i(sequence)f(of)g +(primitiv)o(e)45 1120 y(op)q(erations,)f(with)i(no)f(\015o)o(w)g(con)o(trol;) +-5 1190 y Fb(\017)25 b Fi(em)o(b)q(edded)20 b(languages)r Ff(:)29 +b(for)21 b(extending)f(applications)f(with)i(user)f(de\014ned)g(functions)g +(based)g(on)45 1249 y(primitiv)o(es)h(pro)o(vided)g(b)o(y)h(the)g +(applications.)38 b(These)22 b(languages)f(are)h(usually)g(quite)g(p)q(o)o(w) +o(erful,)45 1309 y(b)q(eing)16 b(simpli\014ed)f(v)m(arian)o(ts)g(of)i +(mainstream)e(programming)e(languages)i(suc)o(h)h(as)g(LISP)g(and)g(C.)-5 +1459 y(What)21 b(mak)o(es)f(em)o(b)q(edded)f(languages)g(di\013eren)o(t)h +(from)g(standalone)f(languages)g(is)h(that)h(em)o(b)q(edded)-5 +1518 y(languages)c(only)i(w)o(ork)e Fd(emb)m(e)m(dde)m(d)k +Ff(in)d(a)h(host)f(clien)o(t,)g(called)g(the)h Fd(emb)m(e)m(dding)h +Ff(program.)26 b(Moreo)o(v)o(er,)-5 1578 y(the)e(host)e(program)f(can)i +(usually)f(pro)o(vide)g(domain-sp)q(eci\014c)f(extensions)h(to)i(the)f(em)o +(b)q(edded)f(lan-)-5 1638 y(guage,)16 b(th)o(us)f(creating)h(a)g(v)o(ersion)f +(of)i(the)f(em)o(b)q(edded)f(language)h(customized)f(for)h(its)g(o)o(wn)g +(purp)q(oses,)-5 1698 y(p)q(ossibly)g(b)o(y)h(pro)o(viding)f(higher)g(lev)o +(el)h(abstractions.)22 b(F)l(or)16 b(this,)h(an)g(em)o(b)q(edded)f(language)g +(has)h(b)q(oth)-5 1758 y(a)h(syn)o(tax)f(for)h(its)f(o)o(wn)g(programs)e(and) +i(an)h(application)e(program)g(in)o(terface)h(\(API\))i(for)e(in)o(terfacing) +-5 1817 y(with)i(hosts.)30 b(Th)o(us,)18 b(unlik)o(e)g(simpler)g(extension)h +(languages,)f(whic)o(h)h(are)f(used)h(to)g(supply)f(parame-)-5 +1877 y(ter)i(v)m(alues)g(and)f(sequences)h(of)g(actions)f(to)i(hosts,)f +(there)f(is)h(a)g(t)o(w)o(o-w)o(a)o(y)e(comm)o(unication)g(b)q(et)o(w)o(een) +-5 1937 y(em)o(b)q(edded)d(languages)f(and)i(host)f(programs.)20 +b(Note)c(that)h(the)f(application)e(programmer)g(in)o(terfaces)-5 +1997 y(with)j(an)g(em)o(b)q(edded)f(language)g(in)h(the)g(mainstream)f +(language)g(used)g(for)h(host)g(programs,)e(whereas)-5 2056 +y(the)i(user)f(in)o(terfaces)f(with)i(the)g(application)e(using)g(solely)i +(the)f(em)o(b)q(edded)g(language.)-5 2141 y(LISP)e(has)f(alw)o(a)o(ys)f(b)q +(een)i(a)g(p)q(opular)e(c)o(hoice)h(for)h(extension)f(languages,)g(for)g(its) +h(simple,)f(easily)g(parsed)-5 2201 y(syn)o(tax)j(and)g(built-in)f +(extensibilit)o(y)h(\(Bec)o(kman)g(1991;)g(Nahab)q(o)q(o\).)22 +b(F)l(or)16 b(instance,)f(a)i(ma)s(jor)e(part)h(of)-5 2261 +y(Emacs)h(is)g(actually)g(written)h(in)f(its)g(o)o(wn)g(v)m(arian)o(t)g(of)h +(LISP;)f(sev)o(eral)f(other)h(text)i(editors)e(follo)o(w)g(the)-5 +2320 y(same)e(path.)22 b(Ho)o(w)o(ev)o(er,)15 b(LISP)h(cannot)f(b)q(e)h +(called)g(user-friendly)e(when)h(it)h(comes)g(to)g(customization.)-5 +2380 y(Neither)f(can)f(C)g(and)g(the)g(shell)g(languages;)f(the)i(latter)f +(ev)o(en)h(ha)o(v)o(e)e(a)i(more)e(complicated,)h(unfamiliar)-5 +2440 y(syn)o(tax.)-5 2525 y(One)g(of)g(the)h(fundamen)o(tal)d(decisions)h +(made)g(in)h(the)g(design)f(of)h Fe(Lua)g Ff(w)o(as)f(that)i(it)f(should)f +(ha)o(v)o(e)g(a)h(clean)-5 2584 y(but)d(familiar)f(syn)o(tax:)20 +b(w)o(e)11 b(quic)o(kly)g(settled)h(for)f(a)g(simpli\014ed)f(P)o(ascal-lik)o +(e)f(syn)o(tax.)20 b(W)l(e)12 b(a)o(v)o(oided)e(a)i(syn-)-5 +2644 y(tax)j(based)f(on)g(LISP)g(or)g(C)h(b)q(ecause)f(it)h(could)f(b)q(e)g +(discouraging)f(to)h(outsiders)f(or)h(non-programmer)o(s.)-5 +2704 y(Th)o(us,)22 b Fe(Lua)f Ff(is)h(primarily)d(a)j(pro)q(cedural)e +(language.)37 b(Nev)o(ertheless,)22 b(as)g(already)f(men)o(tioned,)g +Fe(Lua)-5 2764 y Ff(acquired)16 b(data)h(description)e(facilities)h(to)h +(increase)e(its)i(expression)e(p)q(o)o(w)o(er.)-5 2883 y Fc(T)l(eCGraf/ICAD) +1674 b(2)p eop +%%Page: 3 3 +bop -5 163 a Fg(Lua)19 b(concepts)-5 248 y Fe(Lua)c Ff(is)g(a)g(general)g +(purp)q(ose)f(em)o(b)q(edded)g(programming)e(language)i(designed)h(to)g(supp) +q(ort)f(pro)q(cedural)-5 308 y(programming)k(with)i(data)h(description)e +(facilities.)34 b(Being)21 b(an)f(em)o(b)q(edded)f(language,)i +Fe(Lua)f Ff(has)g(no)-5 367 y(notion)e(of)g(a)h(\\main")e(program;)g(it)h +(only)g(w)o(orks)f(em)o(b)q(edded)g(in)h(a)h(host)e(clien)o(t)h(\()p +Fe(Lua)h Ff(is)f(pro)o(vided)e(as)-5 427 y(a)i(library)e(of)i(C)f(functions)g +(to)h(b)q(e)g(link)o(ed)f(to)h(host)f(applications\).)24 b(The)17 +b(host)h(can)f(in)o(v)o(ok)o(e)g(functions)-5 487 y(to)k(execute)h(a)f(piece) +g(of)g(co)q(de)g(in)g Fe(Lua)p Ff(,)g(can)g(write)f(and)g(read)h +Fe(Lua)f Ff(v)m(ariables,)h(and)f(can)h(register)f(C)-5 547 +y(functions)f(to)h(b)q(e)g(called)g(b)o(y)f Fe(Lua)g Ff(co)q(de.)32 +b(With)20 b(registered)f(C)h(functions,)f Fe(Lua)h Ff(can)f(b)q(e)h(augmen)o +(ted)-5 607 y(to)h(cop)q(e)f(with)g(rather)g(di\013eren)o(t)f(domains,)g(th)o +(us)g(creating)h(customized)f(programming)e(languages)-5 666 +y(sharing)e(a)i(syn)o(tactical)f(framew)o(ork)f(\(Bec)o(kman)i(1991\).)-5 +751 y(This)23 b(section)g(con)o(tains)f(a)h(brief)g(description)f(of)h(the)h +(main)e(concepts)h(in)g Fe(Lua)p Ff(.)42 b(Some)23 b(examples)-5 +811 y(of)e(actual)f(co)q(de)g(are)g(included,)f(to)i(giv)o(e)f(a)g(\015a)o(v) +o(or)f(of)h(the)h(language.)31 b(A)21 b(precise)e(de\014nition)g(of)i(the)-5 +871 y(language)16 b(can)g(b)q(e)h(found)f(in)g(its)g(reference)h(man)o(ual)d +(\(Ierusalimsc)o(h)o(y{Figu)o(eiredo{Celes)f(1994\).)-5 990 +y Fe(Syntax)-5 1075 y Ff(As)g(men)o(tioned)d(b)q(efore,)j(w)o(e)f(explicitly) +h(designed)e Fe(Lua)h Ff(to)g(ha)o(v)o(e)g(a)g(simple,)g(familiar)f(syn)o +(tax.)20 b(As)12 b(a)g(con-)-5 1135 y(sequence,)17 b Fe(Lua)f +Ff(supp)q(orts)g(an)g(almost)g(con)o(v)o(en)o(tional)f(set)i(of)g(statemen)o +(ts,)f(with)h(implicit,)f(but)g(expli-)-5 1194 y(citly)g(terminated,)f(blo)q +(c)o(k)h(structure.)21 b(The)15 b(con)o(v)o(en)o(tional)f(statemen)o(ts)h +(include)g(simple)f(assignmen)o(t;)-5 1254 y(con)o(trol)f(structures)g(suc)o +(h)g(as)h Fh(while-do-end)p Ff(,)i Fh(repeat-until)p Ff(,)g +Fh(if-then-elseif-else-en)q(d)p Ff(;)h(and)-5 1314 y(function)22 +b(calls.)40 b(Non-con)o(v)o(en)o(tional)20 b(statemen)o(ts)i(include)g(m)o +(ultiple)f(assignmen)o(t;)j(lo)q(cal)e(v)m(ariable)-5 1374 +y(declarations,)17 b(whic)o(h)g(can)h(b)q(e)g(placed)f(an)o(ywhere)g(inside)g +(a)h(blo)q(c)o(k;)g(and)f(table)h(constructors,)f(whic)o(h)-5 +1434 y(ma)o(y)f(con)o(tain)g(user)f(de\014ned)h(v)m(alidation)g(functions)g +(\(see)g(b)q(elo)o(w\).)22 b(Moreo)o(v)o(er,)15 b(functions)h(in)g +Fe(Lua)g Ff(can)-5 1493 y(tak)o(e)j(a)g(v)m(ariable)f(n)o(um)o(b)q(er)e(of)j +(parameters)e(and)h(can)g(return)g(man)o(y)f(v)m(alues.)28 +b(This)18 b(a)o(v)o(oids)f(the)i(need)-5 1553 y(for)e(passing)d(parameters)h +(b)o(y)i(reference)f(when)g(more)f(than)i(one)f(result)g(need)g(to)h(b)q(e)g +(returned.)-5 1673 y Fe(Environment)e(and)h(mo)q(dules)-5 1757 +y Ff(All)e(statemen)o(ts)e(in)h Fe(Lua)g Ff(are)g(executed)h(in)f(a)g(global) +g(en)o(vironmen)o(t.)19 b(This)12 b(en)o(vironmen)o(t,)g(whic)o(h)g(k)o(eeps) +-5 1817 y(all)j(global)f(v)m(ariables)g(and)g(functions,)g(is)h(initialized)f +(at)h(the)h(b)q(eginning)d(of)i(the)h(em)o(b)q(edding)d(program)-5 +1877 y(and)k(p)q(ersists)f(un)o(til)g(its)h(end.)23 b(The)17 +b(global)f(en)o(vironmen)o(t)f(can)i(b)q(e)g(manipulated)f(b)o(y)g +Fe(Lua)h Ff(co)q(de)h(or)e(b)o(y)-5 1937 y(the)i(em)o(b)q(edding)e(program,)g +(whic)o(h)g(can)i(read)e(and)h(write)h(global)f(v)m(ariables)f(using)h +(functions)f(in)i(the)-5 1997 y(library)d(that)i(implemen)o(ts)e +Fe(Lua)p Ff(.)-5 2081 y(The)20 b(unit)f(of)h(execution)g(of)g +Fe(Lua)f Ff(is)h(called)f(a)h Fd(mo)m(dule)t Ff(.)31 b(A)20 +b(mo)q(dule)f(ma)o(y)g(con)o(tain)g(statemen)o(ts)g(and)-5 +2141 y(function)f(de\014nitions,)f(and)g(ma)o(y)h(b)q(e)g(in)g(a)g(\014le)g +(or)f(in)h(a)g(string)f(inside)g(the)i(host)e(program.)25 b(When)18 +b(a)-5 2201 y(mo)q(dule)g(is)f(executed,)i(\014rst)f(all)f(its)h(functions)g +(and)f(statemen)o(ts)h(are)g(compiled,)f(and)g(the)i(functions)-5 +2261 y(added)14 b(to)g(the)h(global)f(en)o(vironmen)o(t;)f(then)h(the)g +(statemen)o(ts)g(are)g(executed)h(in)f(sequen)o(tial)g(order.)20 +b(All)-5 2320 y(mo)q(di\014cations)10 b(a)h(mo)q(dule)g(e\013ects)g(on)g(the) +h(global)e(en)o(vironmen)o(t)f(p)q(ersist)i(after)g(its)g(end.)20 +b(Those)11 b(include)-5 2380 y(mo)q(di\014cations)17 b(to)h(global)f(v)m +(ariables)g(and)g(de\014nitions)g(of)h(new)g(functions)f(\(a)h(function)f +(de\014nition)g(is)-5 2440 y(actually)g(an)f(assignmen)o(t)f(to)h(a)h(global) +f(v)m(ariable;)f(see)i(b)q(elo)o(w\).)-5 2560 y Fe(Data)g(t)o(yp)q(es)f(and)g +(va)o(riables)-5 2644 y(Lua)22 b Ff(is)f(a)h(dynamically)f(t)o(yp)q(ed)h +(language:)31 b(v)m(ariables)21 b(do)h(not)f(ha)o(v)o(e)h(t)o(yp)q(es;)i +(only)e(v)m(alues)f(do.)38 b(All)-5 2704 y(v)m(alues)16 b(carry)g(their)g(o)o +(wn)g(t)o(yp)q(e.)22 b(Therefore,)16 b(there)g(are)g(no)g(t)o(yp)q(e)h +(de\014nitions)e(in)h(the)h(language.)k(The)-5 2764 y(absence)d(of)h(v)m +(ariable)f(t)o(yp)q(e)g(declarations,)g(apparen)o(tly)f(a)h(minor)f(p)q(oin)o +(t,)h(is)g(actually)h(an)f(imp)q(ortan)o(t)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 +b(3)p eop +%%Page: 4 4 +bop -5 163 a Ff(factor)20 b(in)f(simplifying)f(the)i(language;)g(it)g(is)f +(frequen)o(tly)h(presen)o(ted)e(as)i(a)f(ma)s(jor)g(feature)g(in)h(man)o(y)-5 +223 y(v)m(arian)o(ts)14 b(of)g(t)o(yp)q(ed)h(languages)e(mo)q(di\014ed)h(to)h +(b)q(e)f(used)g(as)g(extension)g(languages.)20 b(Moreo)o(v)o(er,)13 +b Fe(Lua)h Ff(has)-5 283 y(garbage)g(collection:)20 b(it)15 +b(k)o(eeps)f(trac)o(k)g(of)g(whic)o(h)g(v)m(alues)g(are)g(b)q(eing)g(used)f +(and)h(discards)e(the)j(ones)e(that)-5 343 y(are)k(not.)23 +b(This)17 b(a)o(v)o(oids)e(the)j(need)e(for)h(explicit)g(managing)f(memory)g +(allo)q(cation,)h(a)g(ma)s(jor)e(source)i(of)-5 402 y(programming)d(errors.) +20 b(There)c(are)g(sev)o(en)g(basic)g(data)h(t)o(yp)q(es)f(in)g +Fe(Lua)p Ff(:)-5 492 y Fb(\017)25 b Fi(nil)r Ff(:)c(the)c(t)o(yp)q(e)g(of)g +(a)f(single)g(v)m(alue)h(called)f Fh(nil)p Ff(;)-5 552 y Fb(\017)25 +b Fi(n)o(um)o(b)q(er)t Ff(:)19 b(\015oating)d(p)q(oin)o(t)g(n)o(um)o(b)q +(ers;)-5 612 y Fb(\017)25 b Fi(string)t Ff(:)c(arra)o(ys)15 +b(of)i(c)o(haracters;)-5 671 y Fb(\017)25 b Fi(function)p Ff(:)d(user)15 +b(de\014ned)h(functions;)-5 731 y Fb(\017)25 b Fi(Cfunction)p +Ff(:)d(functions)15 b(pro)o(vided)g(b)o(y)h(the)h(host)f(program;)-5 +791 y Fb(\017)25 b Fi(userdata)p Ff(:)c(p)q(oin)o(ters)15 b(to)i(host)f +(data;)-5 851 y Fb(\017)25 b Fi(table)s Ff(:)d(asso)q(ciativ)o(e)16 +b(arra)o(ys.)-5 966 y Fe(Lua)24 b Ff(pro)o(vides)f(some)g(automatic)h(t)o(yp) +q(e)h(con)o(v)o(ersions.)42 b(A)25 b(string)e(taking)h(part)g(in)g(an)f +(arithmetic)-5 1025 y(op)q(eration)d(is)g(con)o(v)o(erted)g(to)g(a)h(n)o(um)o +(b)q(er,)e(if)h(p)q(ossible.)33 b(Con)o(v)o(ersely)l(,)19 b(whenev)o(er)h(a)g +(n)o(um)o(b)q(er)f(is)h(used)-5 1085 y(when)g(a)g(string)f(is)h(exp)q(ected,) +i(that)e(n)o(um)o(b)q(er)e(is)i(con)o(v)o(erted)f(to)h(a)g(string.)32 +b(This)19 b(co)q(ercion)h(is)g(useful)-5 1145 y(b)q(ecause)d(it)f +(simpli\014es)f(programs)f(and)i(a)o(v)o(oids)f(the)i(need)f(for)g(explicit)h +(con)o(v)o(ersion)e(functions.)-5 1230 y(Global)h(v)m(ariables)f(do)h(not)h +(need)f(declaration;)f(only)h(lo)q(cal)h(v)m(ariables)e(do.)21 +b(An)o(y)c(v)m(ariable)f(is)g(assumed)-5 1289 y(to)24 b(b)q(e)f(global)f +(unless)g(explicitly)h(declared)f(lo)q(cal.)42 b(Lo)q(cal)23 +b(v)m(ariable)g(declarations)e(can)i(b)q(e)g(placed)-5 1349 +y(an)o(ywhere)c(inside)f(a)i(blo)q(c)o(k.)31 b(Therefore,)20 +b(b)q(ecause)f(only)h(lo)q(cal)f(v)m(ariables)g(are)g(declared,)h(and)f +(these)-5 1409 y(declarations)h(can)h(b)q(e)g(made)f(close)h(to)g(the)h(use)e +(of)i(the)f(v)m(ariable,)g(it)g(is)g(usually)f(simple)g(to)h(decide)-5 +1469 y(whether)16 b(a)h(giv)o(en)f(v)m(ariable)g(is)g(lo)q(cal)h(or)f +(global.)-5 1553 y(Before)j(the)g(\014rst)e(assignmen)o(t,)g(the)i(v)m(alue)g +(of)f(a)h(v)m(ariable)f(is)g Fh(nil)p Ff(.)28 b(Therefore,)18 +b(there)g(are)g(no)g(unini-)-5 1613 y(tialized)h(v)m(ariables)g(in)g +Fe(Lua)p Ff(,)g(another)g(ma)s(jor)f(source)g(of)i(programming)c(errors.)28 +b(Nev)o(ertheless,)20 b(the)-5 1673 y(only)f(v)m(alid)f(op)q(erations)g(on)h +Fh(nil)g Ff(are)f(assignmen)o(t)f(and)h(equalit)o(y)h(test)g(\(the)h(main)d +(prop)q(ert)o(y)h(of)h Fh(nil)-5 1733 y Ff(is)f(to)h(b)q(e)g(di\013eren)o(t)e +(from)h(an)o(y)g(other)g(v)m(alue\).)28 b(Therefore,)18 b(using)f(an)h +(\\uninitialized")f(v)m(ariable)h(in)g(a)-5 1792 y(con)o(text)k(where)f(an)g +(\\actual")g(v)m(alue)g(is)g(needed)f(\(e.g.,)j(an)e(arithmetic)f +(expression\))g(results)g(in)h(an)-5 1852 y(execution)h(error,)g(alerting)f +(the)h(programmer)c(that)k(the)g(v)m(ariable)g(w)o(as)e(not)i(prop)q(erly)f +(initialized.)-5 1912 y(Th)o(us,)c(the)g(purp)q(ose)f(of)i(automatically)f +(initializing)g(v)m(ariables)f(with)h Fh(nil)i Ff(is)e(not)g(to)h(encourage)f +(the)-5 1972 y(programmer)h(to)i(a)o(v)o(oid)g(initializing)f(v)m(ariables,)h +(but)g(rather)f(to)i(enable)e Fe(Lua)h Ff(to)h(signal)e(the)i(use)f(of)-5 +2032 y(actually)d(uninitialized)e(v)m(ariables.)-5 2116 y(F)l(unctions)d(are) +i(considered)e(\014rst-class)g(v)m(alues)h(in)h Fe(Lua)p Ff(:)20 +b(they)14 b(can)g(b)q(e)g(stored)f(in)g(v)m(ariables,)h(passed)e(as)-5 +2176 y(argumen)o(ts)k(to)i(other)g(functions)f(and)g(returned)g(as)g +(results.)25 b(When)17 b(a)h(function)g(in)f Fe(Lua)h Ff(is)f(de\014ned,)-5 +2236 y(its)e(b)q(o)q(dy)g(is)f(compiled)f(and)h(stored)g(in)g(a)g(global)g(v) +m(ariable)g(with)g(the)h(giv)o(en)f(name.)20 b Fe(Lua)15 b +Ff(can)f(call)g(\(and)-5 2296 y(manipulate\))i(functions)g(written)g(in)g(b)q +(oth)h Fe(Lua)f Ff(and)g(C;)g(the)h(latter)g(ha)o(v)o(e)f(t)o(yp)q(e)h +Fd(Cfunction)t Ff(.)-5 2380 y(The)j(t)o(yp)q(e)g Fd(user)m(data)h +Ff(is)e(pro)o(vided)f(to)i(allo)o(w)f(arbitrary)f(\()p Fh(void*)p +Ff(\))k(C)d(p)q(oin)o(ters)g(to)h(b)q(e)g(stored)f(in)g Fe(Lua)-5 +2440 y Ff(v)m(ariables;)d(its)g(only)g(v)m(alid)h(op)q(erations)e(in)i +Fe(Lua)f Ff(are)g(assignmen)o(t)e(and)i(equalit)o(y)h(test.)-5 +2525 y(The)d(t)o(yp)q(e)g Fd(table)g Ff(implemen)o(ts)e(asso)q(ciativ)o(e)h +(arra)o(ys,)g(that)h(is,)g(arra)o(ys)e(that)j(can)e(b)q(e)i(indexed)e(with)h +(b)q(oth)-5 2584 y(n)o(um)o(b)q(ers)20 b(and)h(strings.)37 +b(Therefore,)23 b(this)f(t)o(yp)q(e)g(ma)o(y)g(b)q(e)g(used)f(not)i(only)e +(to)i(represen)o(t)d(ordinary)-5 2644 y(arra)o(ys,)j(but)g(also)g(sym)o(b)q +(ol)f(tables,)i(sets,)h(records,)e(etc.)43 b(T)l(o)23 b(represen)o(t)e(a)j +(record,)f Fe(Lua)g Ff(uses)g(the)-5 2704 y(\014eld)15 b(name)g(as)h(an)f +(index.)21 b(The)16 b(language)e(supp)q(orts)h(this)g(represen)o(tation)f(b)o +(y)h(pro)o(viding)f Fh(a.name)i Ff(as)-5 2764 y(syn)o(tactic)h(sugar)e(for)h +Fh(a["name"])p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(4)p +eop +%%Page: 5 5 +bop -5 163 a Ff(Asso)q(ciativ)o(e)21 b(arra)o(ys)e(are)h(a)h(p)q(o)o(w)o +(erful)e(language)h(construct;)i(man)o(y)e(algorithms)f(are)h(simpli\014ed)e +(to)-5 223 y(the)j(p)q(oin)o(t)f(of)h(trivialit)o(y)f(b)q(ecause)g(the)h +(required)e(data)i(structures)e(and)h(algorithms)e(for)j(searc)o(hing)-5 +283 y(them)13 b(are)f(pro)o(vided)f(b)o(y)h(the)h(language)f +(\(Aho{Kerninghan{W)l(ein)o(b)q(erg)o(er)e(1988;)j(Ben)o(tley)g(1988\).)21 +b(F)l(or)-5 343 y(example,)c(the)g(core)f(of)h(a)g(program)e(that)i(coun)o +(ts)f(the)h(o)q(ccurrences)f(of)h(eac)o(h)g(w)o(ord)e(in)i(a)g(text)h(can)f +(b)q(e)-5 402 y(written)195 499 y Fh(table[word])27 b(=)g(table[word])g(+)g +(1)-5 583 y Ff(without)22 b(ha)o(ving)f(to)h(searc)o(h)e(the)i(list)g(of)g(w) +o(ords.)36 b(\(Ho)o(w)o(ev)o(er,)22 b(an)g(alphab)q(etically)f(ordered)f(rep) +q(ort)-5 643 y(requires)c(some)f(real)h(w)o(ork,)g(b)q(ecause)g(the)h +(indices)f(in)g(a)g(table)h(are)f(ordered)f(arbitrarily)g(inside)h +Fe(Lua)p Ff(.\))-5 728 y(T)l(ables)g(can)g(b)q(e)h(created)g(in)f(man)o(y)f +(w)o(a)o(ys.)21 b(The)c(simplest)e(w)o(a)o(y)h(corresp)q(onds)e(to)j +(ordinary)e(arra)o(ys:)195 824 y Fh(t)26 b(=)g(@\(100\))-5 +909 y Ff(Suc)o(h)12 b(an)g(expression)f(results)g(in)h(a)h(new)f(empt)o(y)g +(table.)21 b(The)12 b(dimension)e(\(100)j(in)f(the)h(example)f(ab)q(o)o(v)o +(e\))-5 969 y(is)j(optional)g(and)g(ma)o(y)f(b)q(e)i(giv)o(en)f(as)g(a)g(hin) +o(t)g(to)h(the)f(initial)g(table)g(size.)22 b(Indep)q(enden)o(tly)14 +b(of)i(the)f(initial)-5 1028 y(dimension,)i(all)i(tables)f(in)g +Fe(Lua)h Ff(expand)f(dynamically)f(as)i(needed.)28 b(Th)o(us,)17 +b(it)i(is)f(p)q(erfectly)i(v)m(alid)e(to)-5 1088 y(refer)e(to)h +Fh(t[200])h Ff(or)e(ev)o(en)g(to)h Fh(t["day"])p Ff(.)-5 1173 +y(There)f(are)g(t)o(w)o(o)g(alternativ)o(e)g(syn)o(taxes)g(for)g(creating)g +(tables)g(without)g(explicitly)g(\014lling)f(eac)o(h)h(en)o(try:)-5 +1233 y(one)f(for)h(lists)e(\()p Fh(@[])p Ff(\))j(and)e(one)g(for)g(records)f +(\()p Fh(@{})p Ff(\).)23 b(F)l(or)14 b(instance,)h(it)h(is)f(m)o(uc)o(h)f +(easier)g(to)i(create)g(a)f(list)-5 1293 y(b)o(y)h(pro)o(viding)f(its)h +(elemen)o(ts,)g(as)g(in)195 1389 y Fh(t)26 b(=)g(@["red",)i("green",)f +("blue",)g(3])-5 1474 y Ff(than)17 b(with)f(the)h(equiv)m(alen)o(t)f +(explicit)h(co)q(de)195 1559 y Fh(t)26 b(=)g(@\(\))195 1619 +y(t[1])g(=)h("red")195 1679 y(t[2])f(=)h("green")195 1739 y(t[3])f(=)h +("blue")195 1799 y(t[4])f(=)h(3)-5 1883 y Ff(Moreo)o(v)o(er,)15 +b(it)i(is)f(p)q(ossible)f(to)i(pro)o(vide)e(user)h(functions)g(when)g +(creating)g(lists)g(and)g(records,)f(as)h(in)195 1969 y Fh(t)26 +b(=)g(@colors["red",)i("green",)g("blue",)f("yellow"])195 2029 +y(t)f(=)g(@employee{name="john)j(smith",)f(age=34})-5 2114 +y Ff(Here,)15 b Fh(colors)g Ff(and)f Fh(employee)h Ff(are)f(user)f(functions) +h(that)g(are)g(automatically)g(called)g(after)g(the)h(table)-5 +2173 y(is)i(created.)22 b(Suc)o(h)16 b(functions)g(can)h(b)q(e)g(used)f(to)h +(c)o(hec)o(k)f(\014eld)h(v)m(alues,)f(to)h(create)g(default)g(\014elds,)f(or) +g(for)-5 2233 y(an)o(y)g(other)h(side-e\013ect.)k(Th)o(us,)15 +b(the)i(co)q(de)g(for)f(the)h Fh(employee)h Ff(record)d(is)h(equiv)m(alen)o +(t)h(to:)195 2320 y Fh(t)26 b(=)g(@\(\))195 2380 y(t.name)h(=)f("john)h +(smith")195 2440 y(t.age)53 b(=)26 b(34)195 2500 y(employee\(t\))-5 +2584 y Ff(Note)17 b(that,)g(ev)o(en)f(though)f Fe(Lua)h Ff(do)q(es)g(not)g +(ha)o(v)o(e)f(t)o(yp)q(e)i(declarations,)d(the)j(p)q(ossibilit)o(y)d(of)j(ha) +o(ving)e(user)-5 2644 y(functions)c(called)g(automatically)g(after)g(table)h +(creation)e(actually)i(pro)o(vides)d Fe(Lua)i Ff(with)h(user)e(con)o(trolled) +-5 2704 y Fd(typ)m(e)21 b(c)m(onstructors)p Ff(.)30 b(This)19 +b(non-con)o(v)o(en)o(tional)d(construct)j(is)f(a)h(v)o(ery)g(p)q(o)o(w)o +(erful)f(feature,)h(and)g(is)g(the)-5 2764 y(expression)c(of)i(declarativ)o +(e)f(programming)e(using)h Fe(Lua)p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 +b(5)p eop +%%Page: 6 6 +bop -5 163 a Fe(The)17 b(application)h(p)o(rogram)c(interface)-5 +248 y Ff(The)24 b(library)e(that)i(implemen)o(ts)e Fe(Lua)h +Ff(has)g(an)g(API,)h(i.e.,)h(a)e(set)h(of)g(C)g(functions)f(for)g(in)o +(terfacing)-5 308 y Fe(Lua)h Ff(with)f(host)h(programs)d(\(there)j(are)f +(appro)o(ximately)f(30)i(suc)o(h)e(functions\).)43 b(These)24 +b(functions)-5 367 y(c)o(haracterize)16 b Fe(Lua)h Ff(as)f(an)h(em)o(b)q +(edded)f(language,)f(and)i(handle)f(the)h(follo)o(wing)e(tasks:)23 +b(executing)17 b Fe(Lua)-5 427 y Ff(co)q(de)25 b(con)o(tained)e(in)h(a)g +(\014le)g(or)g(in)g(a)g(string;)j(con)o(v)o(erting)c(v)m(alues)h(b)q(et)o(w)o +(een)g(C)g(and)f Fe(Lua)p Ff(;)28 b(reading)-5 487 y(and)17 +b(writing)g Fe(Lua)h Ff(ob)s(jects)g(con)o(tained)f(in)g(global)g(v)m +(ariables;)g(calling)g Fe(Lua)h Ff(functions;)f(registering)g(C)-5 +547 y(functions)i(to)h(b)q(e)g(called)f(b)o(y)g Fe(Lua)p Ff(,)h(including)e +(error)g(handlers.)29 b(A)20 b(simple)e Fe(Lua)h Ff(in)o(terpreter)f(can)i(b) +q(e)-5 607 y(written)d(as)f(follo)o(ws:)195 668 y Fh(#include)27 +b("lua.h")195 728 y(int)f(main\(void\))195 787 y({)221 847 +y(char)g(s[1000];)221 907 y(while)h(\(gets\(s\)\))273 967 y +(lua_dostring\(s\);)221 1026 y(return)g(0;)195 1086 y(})-5 +1171 y Ff(This)15 b(simple)f(in)o(terpreter)g(can)h(b)q(e)h(augmen)o(ted)e +(with)i(domain)e(sp)q(eci\014c)h(functions)g(written)g(in)g(C)g(and)-5 +1231 y(made)h(a)o(v)m(ailable)g(to)h Fe(Lua)g Ff(with)f(the)h(API)g(function) +f Fh(lua_register)p Ff(.)25 b(Extension)16 b(functions)g(follo)o(w)g(a)-5 +1290 y(proto)q(col)h(to)f(receiv)o(e)h(and)f(return)f(v)m(alues)h(to)h +Fe(Lua)p Ff(.)-5 1402 y Fe(Prede\014ned)f(functions)h(and)f(lib)o(ra)o(ries) +-5 1486 y Ff(The)e(set)g(of)h(prede\014ned)d(functions)h(in)h +Fe(Lua)g Ff(is)f(small)g(but)h(p)q(o)o(w)o(erful.)20 b(Most)13 +b(of)i(them)e(pro)o(vide)g(features)-5 1546 y(that)20 b(allo)o(w)e(some)g +(degree)g(of)h(re\015exivit)o(y)g(in)g(the)g(language.)28 b(Suc)o(h)17 +b(features)i(cannot)f(b)q(e)i(sim)o(ulated)-5 1606 y(with)c(the)h(rest)f(of)g +(the)h(language)e(nor)g(with)h(the)h(standard)d(API.)j(The)f(prede\014ned)e +(functions)i(handle)-5 1666 y(the)j(follo)o(wing)d(tasks:)25 +b(executing)19 b(a)f Fe(Lua)f Ff(mo)q(dule)h(con)o(tained)f(in)g(a)h(\014le)g +(or)f(string;)h(en)o(umerating)e(all)-5 1726 y(\014elds)g(of)h(a)f(table;)g +(en)o(umerating)f(all)h(global)g(v)m(ariables;)f(t)o(yp)q(e)i(querying)f(and) +g(con)o(v)o(ersion.)-5 1810 y(The)j(libraries,)f(on)g(the)i(other)e(hand,)h +(pro)o(vide)f(useful)g(routines)g(whic)o(h)g(are)h(implemen)o(ted)e(directly) +-5 1870 y(through)22 b(the)h(standard)e(API.)h(Therefore,)i(they)f(are)f(not) +h(necessary)e(to)i(the)g(language,)g(and)f(are)-5 1930 y(pro)o(vided)14 +b(as)g(separate)h(C)g(mo)q(dules,)f(whic)o(h)g(can)h(b)q(e)g(link)o(ed)f(to)h +(applications)f(as)h(needed.)20 b(Curren)o(tly)l(,)-5 1990 +y(there)c(are)g(libraries)d(for)j(string)f(manipulation,)f(mathematical)h +(functions,)g(and)g(input)g(and)g(output.)-5 2101 y Fe(P)o(ersistence)-5 +2186 y Ff(The)k(en)o(umeration)e(functions)h(can)g(b)q(e)i(used)e(to)h(pro)o +(vide)e(p)q(ersistency)i(of)g(the)g(global)f(en)o(vironmen)o(t)-5 +2245 y(within)e Fe(Lua)p Ff(,)h(i.e.,)f(it)h(is)f(p)q(ossible)f(to)i(write)g +Fe(Lua)f Ff(co)q(de)h(that)g(writes)f Fe(Lua)g Ff(co)q(de)h(that,)g(when)f +(executed,)-5 2305 y(restores)i(the)h(v)m(alues)g(of)g(all)g(global)f(v)m +(ariables.)28 b(W)l(e)20 b(no)o(w)e(sho)o(w)g(some)g(w)o(a)o(ys)g(to)h(store) +g(and)f(retriev)o(e)-5 2365 y(v)m(alues)k(in)g Fe(Lua)p Ff(,)h(using)e(a)h +(text)h(\014le)f(written)g(in)g(the)g(language)f(itself)i(as)e(the)i(storage) +e(media.)38 b(T)l(o)-5 2425 y(restore)16 b(v)m(alues)g(sa)o(v)o(ed)g(in)g +(this)g(w)o(a)o(y)l(,)g(it)h(is)f(enough)f(to)i(execute)h(the)f(output)f +(\014le.)-5 2509 y(T)l(o)h(store)f(a)g(single)g(v)m(alue)h(with)f(a)h(name,)e +(the)i(follo)o(wing)e(co)q(de)i(is)f(enough:)195 2584 y Fh(function)27 +b(store\(name,)h(value\))247 2644 y(write\(name)g(..)e('='\))247 +2704 y(write_value\(value\))195 2764 y(end)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 +b(6)p eop +%%Page: 7 7 +bop -5 163 a Ff(Here,)15 b(\\)p Fh(..)p Ff(")22 b(is)15 b(the)g(string)e +(concatenation)i(op)q(erator)f(and)g Fh(write)i Ff(is)e(a)h(library)e +(function)i(for)f(output.)-5 223 y(The)j(function)g Fh(write_value)i +Ff(outputs)e(a)g(suitable)f(represen)o(tation)f(of)j(a)f(v)m(alue)g(based)f +(on)h(its)g(t)o(yp)q(e,)-5 283 y(using)f(a)g(string)g(returned)f(b)o(y)h(the) +h(prede\014ned)e(function)h Fh(type)p Ff(:)195 359 y Fh(function)27 +b(write_value\(value\))247 419 y(local)g(t)f(=)g(type\(value\))351 +478 y(if)h(t)f(=)h('nil')105 b(then)27 b(write\('nil'\))247 +538 y(elseif)g(t)f(=)h('number')g(then)g(write\(value\))247 +598 y(elseif)g(t)f(=)h('string')g(then)g(write\('"')g(..)g(value)g(..)f +('"'\))247 658 y(end)195 718 y(end)-5 802 y Ff(Storing)16 b(tables)g(is)g(a)h +(little)g(more)e(complex.)22 b(First,)15 b Fh(write_value)j +Ff(is)e(augmen)o(ted)g(with)247 888 y Fh(elseif)27 b(t)f(=)h('table')g(then)f +(write_record\(value\))-5 972 y Ff(Assuming)13 b(that)h(tables)g(are)f(b)q +(eing)h(used)f(as)h(records)e(\(i.e.,)j(there)f(are)f(no)h(circular)f +(references)g(and)g(all)-5 1032 y(indices)h(are)h(iden)o(ti\014ers\),)f(the)h +(v)m(alue)h(of)f(a)g(table)g(can)g(b)q(e)g(written)g(directly)g(with)g(table) +g(constructors:)195 1110 y Fh(function)27 b(write_record\(t\))247 +1169 y(local)g(i,)f(v)h(=)f(next\(t,)h(nil\))79 b(--)27 b("next")g +(enumerates)g(the)g(fields)g(of)f(t)247 1229 y(write\('@{'\))446 +b(--)27 b(starts)g(constructor)247 1289 y(while)g(i)f(do)299 +1349 y(store\(i,v\))299 1408 y(i,)h(v)f(=)g(next\(t,)h(i\))299 +1468 y(if)g(i)f(then)h(write\(',)g('\))f(end)247 1528 y(end)247 +1588 y(write\('}'\))472 b(--)27 b(closes)g(constructor)195 +1648 y(end)-5 1810 y Fg(Implementation)-5 1894 y Ff(Extension)22 +b(languages)f(are)g(alw)o(a)o(ys)g(in)o(terpreted,)i(in)e(one)h(w)o(a)o(y)g +(or)f(another,)i(b)o(y)f(the)g(application.)-5 1954 y(Simple)e(extension)h +(languages)f(can)h(b)q(e)g(in)o(terpreted)f(directly)h(from)g(source)f(co)q +(de.)36 b(On)21 b(the)g(other)-5 2014 y(hand,)j(em)o(b)q(edded)e(languages)f +(are)i(usually)f(p)q(o)o(w)o(erful)g(programming)e(languages,)j(with)g +(complex)-5 2074 y(syn)o(tax)11 b(and)g(seman)o(tics.)18 b(A)12 +b(more)e(e\016cien)o(t)g(implemen)o(tation)f(tec)o(hnique)i(for)g(em)o(b)q +(edded)f(languages)f(is)-5 2133 y(to)k(design)f(a)h Fd(virtual)h(machine)g +Ff(suited)e(to)i(the)f(needs)f(of)h(the)g(language,)g(compile)f(extension)g +(programs)-5 2193 y(in)o(to)23 b Fd(byte)m(c)m(o)m(des)j Ff(for)d(this)h(mac) +o(hine,)f(and)g(then)h(sim)o(ulate)e(the)i(virtual)f(mac)o(hine)f(b)o(y)h(in) +o(terpreting)-5 2253 y(b)o(yteco)q(des)e(\(Betz)i(1988,)f(1991;)h(F)l(ranks)c +(1991\).)36 b(W)l(e)21 b(ha)o(v)o(e)g(c)o(hosen)f(this)g(h)o(ybrid)g(arc)o +(hitecture)g(for)-5 2313 y(implemen)o(ting)12 b Fe(Lua)p Ff(;)i(it)f(has)g +(the)h(follo)o(wing)e(adv)m(an)o(tages)h(o)o(v)o(er)g(direct)g(in)o +(terpretation)f(of)i(source)f(co)q(de:)-5 2395 y Fb(\017)25 +b Ff(b)q(ecause)19 b(lexical)g(and)g(syn)o(tactical)g(analysis)f(are)h(done)f +(only)h(once,)h(p)q(ossibly)e(using)g(an)h(external)45 2455 +y(parser)j(b)q(efore)i(the)g(actual)g(em)o(b)q(edding,)g(simple)e(errors)g +(are)i(iden)o(ti\014ed)e(early)l(,)j(resulting)d(in)i(a)45 +2515 y(shorter)15 b(dev)o(elopmen)o(t)h(cycle)h(and)f(faster)g(execution;)-5 +2584 y Fb(\017)25 b Ff(if)18 b(an)g(external)g(compiler)f(is)h(used,)f(there) +h(is)g(the)g(p)q(ossibilit)o(y)f(of)h(pro)o(viding)e(extension)i(programs)45 +2644 y(in)f(b)o(yteco)q(de)g(form)f(only)l(,)h(i.e.,)f(pre-compiled,)f +(resulting)h(in)g(faster)h(loading,)f(safer)g(en)o(vironmen)o(ts)45 +2704 y(and)e(smaller)e(run-time)h(supp)q(ort)g(\(ho)o(w)o(ev)o(er,)h(linking) +f(sev)o(eral)g(pre-compiled)f(extension)i(programs)45 2764 +y(can)i(b)q(e)h(a)g(di\016cult)e(task\).)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 +b(7)p eop +%%Page: 8 8 +bop -5 163 a Ff(This)18 b(arc)o(hitecture)g(w)o(as)g(pioneered)g(in)h +(Smalltalk)f(\(Goldb)q(erg{Robson)e(1983;)k(Budd)e(1987\))h(\(from)-5 +223 y(whic)o(h)k(the)h(term)f Fd(byte)m(c)m(o)m(des)j Ff(w)o(as)d(b)q(orro)o +(w)o(ed\))f(and)h(also)g(used)f(in)i(the)g(successful)e(UCSD)i(P)o(ascal)-5 +283 y(system)e(based)g(on)f(P-co)q(de)h(\(Clark{Ko)q(ehler)g(1982\).)39 +b(In)22 b(these)g(systems,)h(b)o(yteco)q(des)f(for)g(virtual)-5 +343 y(mac)o(hines)14 b(w)o(ere)g(used)h(b)q(oth)g(for)g(reducing)e(complexit) +o(y)i(and)g(for)g(increasing)e(p)q(ortabilit)o(y)l(.)21 b(This)14 +b(path)-5 402 y(w)o(as)i(also)g(used)g(in)g(p)q(orting)g(the)g(BCPL)h +(compiler)f(\(Ric)o(hards{Whitb)o(y-S)o(trev)o(ens)d(1980\).)-5 +487 y(Co)q(de)19 b(for)e(compilation)g(of)h(extension)g(programs)e(can)i(b)q +(e)g(built)g(with)g(standard)f(to)q(ols,)h(suc)o(h)f(as)h Fe(lex)-5 +547 y Ff(and)e Fe(y)o(acc)g Ff(\(Levine{Mason{Bro)o(wn)e(1992\).)22 +b(The)16 b(existence)h(of)f(go)q(o)q(d)g(to)q(ols)g(for)g(compiler)f +(construc-)-5 607 y(tion,)25 b(whic)o(h)c(b)q(ecame)i(widely)g(a)o(v)m +(ailable)f(in)h(the)g(late)g(sev)o(en)o(ties,)h(w)o(as)e(the)h(main)f(reason) +g(for)h(the)-5 666 y(sprouting)16 b(of)h(sev)o(eral)f(little)i(languages,)e +(sp)q(ecially)h(in)g(Unix)g(en)o(vironmen)o(ts.)22 b(Our)16 +b(implemen)o(tation)-5 726 y(of)i Fe(Lua)f Ff(uses)g Fe(y)o(acc)h +Ff(for)f(syn)o(tactical)g(analysis.)24 b(Initially)l(,)17 b(w)o(e)g(wrote)h +(the)g(lexical)f(analyzer)h(using)e Fe(lex)p Ff(.)-5 786 y(After)21 +b(p)q(erformance)e(pro\014les)f(with)i(pro)q(duction)f(programs,)g(w)o(e)g +(detected)i(that)g(this)e(mo)q(dule)h(w)o(as)-5 846 y(resp)q(onsible)e(for)h +(almost)g(half)g(of)g(the)h(time)f(required)f(for)h(loading)g(and)f +(executing)i(extension)f(pro-)-5 905 y(grams.)24 b(W)l(e)18 +b(then)g(rewrote)f(this)h(mo)q(dule)f(directly)g(in)h(C;)f(the)h(new)g +(lexical)g(analyzer)f(is)g(more)g(than)-5 965 y(t)o(wice)g(as)f(fast)h(as)f +(the)h(old)f(one.)-5 1135 y Fe(Lua's)g(virtual)j(machine)-5 +1219 y Ff(The)h(virtual)f(mac)o(hine)f(used)h(in)g(our)g(implemen)o(tation)f +(of)i Fe(Lua)f Ff(is)g(a)h Fd(stack)h(machine)p Ff(.)32 b(This)19 +b(means)-5 1279 y(that)e(it)f(do)q(es)g(not)g(ha)o(v)o(e)g(random)e(access)i +(memory:)21 b(all)16 b(temp)q(orary)f(v)m(alues)h(and)g(lo)q(cal)g(v)m +(ariables)f(are)-5 1339 y(k)o(ept)j(in)e(a)i(stac)o(k.)24 b(Moreo)o(v)o(er,) +15 b(it)j(do)q(es)f(not)g(ha)o(v)o(e)g(general)f(purp)q(ose)g(registers,)g +(only)h(sp)q(ecial)g(con)o(trol)-5 1399 y(registers,)f(whic)o(h)g(con)o(trol) +h(the)g(stac)o(k)g(and)g(the)g(execution)h(of)f(programs.)22 +b(These)17 b(registers)f(are)h Fd(b)m(ase)-5 1458 y(of)i(stack)p +Ff(,)d Fd(top)j(of)f(stack)f Ff(and)f Fd(pr)m(o)m(gr)m(am)k(c)m(ounter)p +Ff(.)-5 1543 y(Programs)j(for)h(the)g(virtual)g(mac)o(hine)f(are)h(sequences) +g(of)h(instructions,)f(called)g Fd(byte)m(c)m(o)m(des)p Ff(.)48 +b(The)-5 1603 y(execution)24 b(of)g(programs)d(is)i(ac)o(hiev)o(ed)g(b)o(y)g +(in)o(terpreting)f(b)o(yteco)q(des,)k(eac)o(h)d(corresp)q(onding)e(to)j(an)-5 +1663 y(instruction)16 b(that)g(op)q(erates)h(on)f(the)h(top)f(p)q(ortion)g +(of)h(the)g(stac)o(k.)22 b(F)l(or)15 b(example,)h(the)h(statemen)o(t)195 +1777 y Fh(a)26 b(=)g(b)g(+)h(f\(c\))-5 1862 y Ff(is)16 b(compiled)g(in)o(to) +195 1962 y Fh(PUSHGLOBAL)80 b("b")195 2022 y(PUSHGLOBAL)g("f")195 +2081 y(PUSHMARK)195 2141 y(PUSHGLOBAL)g("c")195 2201 y(CALLFUNC)195 +2261 y(ADJUST)210 b(2)195 2320 y(ADD)195 2380 y(STOREGLOBAL)54 +b("a")-5 2465 y Fe(Lua)p Ff('s)13 b(virtual)f(mac)o(hine)g(has)g(ab)q(out)h +(60)g(instructions;)g(accordingly)l(,)f(it)i(is)e(p)q(ossible)g(to)i(use)e +(8-bit)h(b)o(yte-)-5 2525 y(co)q(des.)22 b(Man)o(y)15 b(instructions)f +(\(e.g.,)h Fh(ADD)p Ff(\))i(do)e(not)h(need)f(additional)g(parameters;)f +(these)h(instructions)-5 2584 y(op)q(erate)d(directly)g(on)f(the)h(stac)o(k)g +(and)f(tak)o(e)h(exactly)h(one)f(b)o(yte)g(in)f(compiled)g(co)q(de.)20 +b(Other)11 b(instructions)-5 2644 y(\(e.g.,)16 b Fh(PUSHGLOBAL)i +Ff(and)d Fh(STOREGLOBAL)p Ff(\))j(need)d(additional)g(parameters,)f(and)h +(tak)o(e)h(more)f(than)h(one)-5 2704 y(b)o(yte.)22 b(Since)16 +b(parameters)e(tak)o(e)i(either)g(one,)f(t)o(w)o(o)h(or)f(four)g(b)o(ytes,)h +(this)g(creates)f(alignmen)o(t)g(problems)-5 2764 y(in)h(some)g(arc)o +(hitectures,)f(whic)o(h)h(are)g(solv)o(ed)g(b)o(y)g(padding)f(with)h +Fh(NOP)p Ff(s)h(to)g(the)g(alignmen)o(t)e(b)q(oundary)l(.)-5 +2883 y Fc(T)l(eCGraf/ICAD)1674 b(8)p eop +%%Page: 9 9 +bop -5 163 a Ff(Man)o(y)15 b(of)i(the)f(instructions)e(exist)i(for)g +(optimization)f(only)l(.)21 b(F)l(or)15 b(instance,)g(there)h(is)g(a)g +Fh(PUSH)g Ff(instruc-)-5 223 y(tion,)f(whic)o(h)g(tak)o(es)g(a)g(n)o(um)o(b)q +(er)e(as)i(a)g(parameter)f(and)g(pushes)g(it)h(on)o(to)g(the)g(stac)o(k,)h +(but)f(there)g(are)f(also)-5 283 y(single-b)o(yte)i(optimized)f(v)o(ersions)g +(for)h(pushing)f(common)g(v)m(alues)h(suc)o(h)f(as)h(zero)h(and)e(one.)22 +b(Th)o(us,)15 b(w)o(e)-5 343 y(ha)o(v)o(e)k Fh(PUSHNIL)p Ff(,)h +Fh(PUSH0)p Ff(,)h Fh(PUSH1)p Ff(,)g Fh(PUSH2)p Ff(.)31 b(Suc)o(h)18 +b(optimizations)g(reduce)h(b)q(oth)g(the)h(space)f(required)-5 +402 y(for)e(compiled)e(b)o(yteco)q(des)h(and)g(the)h(time)g(required)e(for)h +(in)o(terpreting)f(instructions.)-5 487 y(Recall)k(that)h Fe(Lua)f +Ff(supp)q(orts)f(m)o(ultiple)f(assignmen)o(t)h(and)g(m)o(ultiple)g(return)g +(v)m(alues)h(from)g(functions.)-5 547 y(Therefore,)e(sometimes,)g(a)g(list)h +(of)g(v)m(alues)f(m)o(ust)g(b)q(e)g Fd(adjuste)m(d)5 b Ff(,)20 +b(at)e(run)f(time,)g(to)h(a)g(giv)o(en)f(length:)24 b(if)-5 +607 y(there)c(are)g(more)f(v)m(alues)h(than)g(are)f(needed,)h(then)g(the)h +(excess)f(v)m(alues)f(are)h(thro)o(wn)f(a)o(w)o(a)o(y;)i(if)f(more)-5 +666 y(v)m(alues)15 b(are)f(needed)g(than)g(are)g(presen)o(t,)g(then)g(the)h +(list)f(is)g(extended)h(with)f(as)g(man)o(y)g Fh(nil)p Ff('s)g(as)g(needed.) +-5 726 y(Adjustmen)o(t)i(is)g(done)g(on)g(the)h(stac)o(k)g(with)f(the)h +Fh(ADJUST)h Ff(instruction.)-5 811 y(Although)g(m)o(ultiple)f(assignmen)o(t)f +(and)i(returns)e(are)i(a)g(p)q(o)o(w)o(erful)f(feature)i(of)f +Fe(Lua)p Ff(,)g(they)h(are)f(an)g(im-)-5 871 y(p)q(ortan)o(t)g(source)e(of)i +(complexit)o(y)g(in)f(b)q(oth)h(the)g(compiler)e(and)i(the)g(in)o(terpreter.) +24 b(Because)17 b(there)h(are)-5 930 y(no)c(t)o(yp)q(e)h(declarations)e(for)h +(functions,)g(the)h(compiler)d(do)q(es)j(not)f(kno)o(w)g(ho)o(w)f(man)o(y)h +(v)m(alues)g(a)g(function)-5 990 y(will)j(return.)k(Th)o(us,)15 +b(adjustmen)o(t)h(m)o(ust)g(b)q(e)h(done)f(at)h(run)f(time.)22 +b(Similarly)l(,)15 b(the)i(compiler)e(do)q(es)i(not)-5 1050 +y(kno)o(w)f(ho)o(w)g(man)o(y)f(parameters)g(a)h(function)g(tak)o(es.)22 +b(Because)16 b(this)g(n)o(um)o(b)q(er)f(ma)o(y)g(v)m(ary)i(at)g(run)e(time,) +-5 1110 y(the)i(list)f(of)h(parameters)e(is)h(brac)o(k)o(eted)g(b)q(et)o(w)o +(een)g(a)h Fh(PUSHMARK)g Ff(and)f(a)h Fh(CALLFUNC)h Ff(instruction.)-5 +1194 y(One)e(w)o(a)o(y)f(to)h(extend)g Fe(Lua)f Ff(with)h(functions)f(pro)o +(vided)f(b)o(y)h(the)h(host)f(w)o(ould)g(b)q(e)g(to)h(assign)f(a)g(b)o(yteco) +q(de)-5 1254 y(to)j(eac)o(h)f(suc)o(h)g(function)g(\(Betz)i(1988\).)25 +b(Although)17 b(this)g(strategy)h(w)o(ould)e(simplify)h(the)g(in)o +(terpreter,)-5 1314 y(it)k(has)g(the)g(disadv)m(an)o(tage)e(that)i(few)o(er)g +(than)g(200)f(external)h(functions)f(could)g(b)q(e)h(added,)g(b)q(ecause)-5 +1374 y Fe(Lua)e Ff(has)f(8-bit)g(b)o(yteco)q(des)h(and)f(already)g(uses)g(ab) +q(out)g(60)h(of)g(them)f(for)h(its)f(primitiv)o(e)g(instructions.)-5 +1433 y(W)l(e)f(ha)o(v)o(e)f(c)o(hosen)g(to)h(ha)o(v)o(e)f(the)h(host)f +(explicitly)h(register)f(external)h(functions,)f(and)g(handling)f(these)-5 +1493 y(functions)24 b(lik)o(e)g(nativ)o(e)h Fe(Lua)f Ff(functions.)45 +b(Th)o(us,)25 b(there)f(is)h(a)f(single)g Fh(CALLFUNC)h Ff(instruction;)j +(the)-5 1553 y(in)o(terpreter)15 b(decides)h(what)h(to)g(do)f(based)f(on)i +(the)f(t)o(yp)q(e)i(of)e(the)h(function)f(b)q(eing)g(called.)-5 +1638 y(A)21 b(rather)e(di\013eren)o(t)g(strategy)h(w)o(as)f(prop)q(osed)g(b)o +(y)g(F)l(ranks)f(\(1991\):)30 b Fd(al)s(l)19 b Ff(external)h(functions)f(in)h +(the)-5 1697 y(host)f(can)g(b)q(e)h(called)f(b)o(y)g(the)g(em)o(b)q(edded)f +(language;)i(no)f(explicit)g(registration)f(is)h(needed.)30 +b(This)18 b(is)-5 1757 y(done)h(b)o(y)g(reading)f(and)g(in)o(terpreting)g +(the)h(map)g(generated)f(b)o(y)h(the)h(link)o(er.)29 b(This)18 +b(solution)g(is)h(v)o(ery)-5 1817 y(con)o(v)o(enien)o(t)g(for)h(the)g +(application)e(programmer,)g(but)i(is)f(not)h(p)q(ortable,)g(b)q(eing)g(dep)q +(enden)o(t)f(on)h(the)-5 1877 y(format)14 b(of)g(the)h(map)e(\014le)h(and)g +(on)g(the)g(relo)q(cation)g(strategy)h(used)e(b)o(y)h(the)g(op)q(erating)g +(system)g(\(F)l(ranks)-5 1937 y(used)i(a)h(sp)q(eci\014c)f(compiler)f(for)h +(DOS\).)-5 2091 y Fe(Internal)h(data)f(structures)-5 2176 y +Ff(As)22 b(men)o(tioned)e(b)q(efore,)i(v)m(ariables)f(in)f +Fe(Lua)i Ff(are)f(not)g(t)o(yp)q(ed;)j(only)d(v)m(alues)g(are.)36 +b(Th)o(us,)21 b(v)m(alues)g(are)-5 2236 y(implemen)o(ted)15 +b(in)g(a)h Fh(struct)i Ff(with)e(t)o(w)o(o)f(\014elds:)21 b(a)16 +b(t)o(yp)q(e)h(and)e(a)i Fh(union)g Ff(con)o(taining)d(the)j(actual)f(v)m +(alue.)-5 2296 y(These)g Fh(struct)p Ff(s)g(o)q(ccur)g(in)g(the)g(stac)o(k)g +(and)f(in)g(the)h(sym)o(b)q(ol)f(table,)h(whic)o(h)f(holds)g(all)g(global)g +(sym)o(b)q(ols.)-5 2380 y(Num)o(b)q(ers)j(are)h(stored)f(directly)h(in)o(to)g +(the)g Fh(union)p Ff(.)31 b(Strings)18 b(are)g(k)o(ept)i(in)e(a)h(single)g +(arra)o(y;)g(v)m(alues)g(of)-5 2440 y(t)o(yp)q(e)i Fd(string)g +Ff(con)o(tain)e(p)q(oin)o(ters)h(to)g(this)g(arra)o(y)l(.)32 +b(V)l(alues)20 b(of)h(t)o(yp)q(e)g Fd(function)f Ff(con)o(tain)g(p)q(oin)o +(ters)f(to)i(a)-5 2500 y(b)o(yteco)q(de)d(arra)o(y)l(.)23 b(V)l(alues)17 +b(of)g(t)o(yp)q(e)h Fd(Cfunction)f Ff(con)o(tain)g(the)g(actual)g(p)q(oin)o +(ter)g(to)g(the)h(C)f(function,)g(as)-5 2560 y(pro)o(vided)e(b)o(y)h(the)h +(host)f(program;)f(the)i(same)e(happ)q(ens)h(for)g(v)m(alues)g(of)h(t)o(yp)q +(e)g Fd(user)m(data)p Ff(.)-5 2644 y(T)l(ables)g(are)g(implemen)o(ted)f(as)h +(hash)g(tables,)g(with)h(collisions)d(handled)i(b)o(y)g(separate)g(c)o +(haining)f(\(this)-5 2704 y(explains)23 b(wh)o(y)g(indices)g(in)g(a)g(table)h +(are)f(ordered)f(arbitrarily\).)41 b(If)24 b(a)g(dimension)d(is)i(giv)o(en)g +(when)-5 2764 y(a)f(table)g(is)g(created,)h(then)f(this)g(dimension)e(is)i +(used)f(as)h(the)g(size)g(of)g(the)h(hash)e(table.)38 b(Th)o(us,)22 +b(b)o(y)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(9)p eop +%%Page: 10 10 +bop -5 163 a Ff(pro)o(viding)13 b(a)i(dimension)e(appro)o(ximately)h(equal)h +(to)g(the)g(exp)q(ected)h(n)o(um)o(b)q(er)d(of)i(indices)f(in)h(the)g(table,) +-5 223 y(few)i(collisions)d(will)i(o)q(ccur,)g(resulting)e(in)i(v)o(ery)g +(e\016cien)o(t)g(index)f(lo)q(cation.)22 b(Moreo)o(v)o(er,)15 +b(if)h(the)g(table)g(is)-5 283 y(used)g(as)g(an)g(arra)o(y)l(,)e(with)j(n)o +(umeric)d(indices)h(only)l(,)h(then)g(c)o(ho)q(osing)g(the)g(righ)o(t)f +(dimension)g(at)h(creation)-5 343 y(time)h(guaran)o(tees)e(that)i(no)f +(collisions)f(will)h(o)q(ccur.)-5 427 y(All)k(in)o(ternal)e(data)h +(structures)f(in)h Fe(Lua)h Ff(are)f(dynamically)f(allo)q(cated)i(arra)o(ys.) +29 b(When)19 b(there)g(are)g(no)-5 487 y(more)13 b(free)h(slots)g(in)f(one)h +(of)g(these)g(arra)o(ys,)e(garbage)h(collection)h(is)f(automatically)h(p)q +(erformed)e(using)h(a)-5 547 y(standard)i(mark-and-sw)n(eep)e(algorithm.)21 +b(If)16 b(no)f(space)h(is)f(reco)o(v)o(ered)g(\(b)q(ecause)h(all)f(v)m(alues) +h(are)f(b)q(eing)-5 607 y(referenced\),)h(then)h(the)g(arra)o(y)e(is)h +(reallo)q(cated)g(with)h(double)e(its)i(curren)o(t)e(size.)-5 +691 y(Garbage)h(collection)h(is)g(v)o(ery)g(con)o(v)o(enien)o(t)e(for)i(the)g +(programmer)d(b)q(ecause)j(it)g(a)o(v)o(oids)f(explicit)h(mem-)-5 +751 y(ory)d(managemen)o(t.)20 b(When)14 b Fe(Lua)g Ff(is)g(used)g(as)g(a)g +(standalone)f(language)h(\(whic)o(h)f(it)i(frequen)o(tly)f(is\),)h(then)-5 +811 y(garbage)20 b(collection)g(is)g(an)g(asset.)34 b(Ho)o(w)o(ev)o(er,)20 +b(when)g Fe(Lua)g Ff(is)g(used)g(em)o(b)q(edded)f(in)h(a)h(host)f(program)-5 +871 y(\(whic)o(h)13 b(is)g(its)h(main)e(purp)q(ose\),)h(then)h(garbage)e +(collection)h(creates)h(a)f(new)h(w)o(orry)e(for)h(the)h(application)-5 +930 y(programmer)f(who)i(needs)g(to)h(in)o(terface)g(with)f +Fe(Lua)p Ff(:)21 b(care)16 b(should)e(b)q(e)i(tak)o(en)g(not)f(to)h(store)g +Fe(Lua)f Ff(tables)-5 990 y(and)g(strings)f(in)o(to)i(C)f(v)m(ariables,)g(b)q +(ecause)g(these)h(v)m(alues)f(ma)o(y)g(b)q(e)h(reclaimed)f(during)e(garbage)i +(collec-)-5 1050 y(tion,)i(if)g(they)h(do)f(not)g(ha)o(v)o(e)f(an)o(y)h +(further)f(references)h(within)f Fe(Lua)p Ff('s)h(en)o(vironmen)o(t.)k(More)c +(precisely)l(,)-5 1110 y(the)d(programmer)d(m)o(ust)i(explicitly)h(cop)o(y)f +(these)h(v)m(alues)f(in)o(to)g(C)h(v)m(ariables,)f(b)q(efore)h(returning)e +(con)o(trol)-5 1169 y(to)i Fe(Lua)p Ff(.)21 b(Although)12 b(this)h(is)g(a)h +(di\013eren)o(t)e(paradigm,)g(it)h(is)g(not)h(w)o(orse)e(than)h(the)h +(familiar)e Fh(malloc)p Ff(-)p Fh(free)-5 1229 y Ff(proto)q(col)17 +b(for)f(memory)f(managemen)o(t)g(using)h(the)g(standard)f(C)i(library)l(.)-5 +1397 y Fg(Conclusion)-5 1482 y Fe(Lua)g Ff(has)e(b)q(een)i(extensiv)o(ely)g +(used)f(in)g(pro)q(duction)f(since)h(mid)g(93,)g(for)g(the)h(follo)o(wing)e +(tasks:)-5 1560 y Fb(\017)25 b Ff(user)16 b(con\014guration)e(of)j +(application)f(en)o(vironmen)o(t;)-5 1625 y Fb(\017)25 b Ff(general-purp)q +(ose)14 b(data-en)o(try)l(,)h(with)i(user)e(de\014ned)h(dialogs)f(and)h(v)m +(alidation)g(pro)q(cedures;)-5 1690 y Fb(\017)25 b Ff(description)15 +b(of)i(user)e(in)o(terfaces;)-5 1755 y Fb(\017)25 b Ff(programmer)14 +b(description)h(of)i(application)e(ob)s(jects;)-5 1819 y Fb(\017)25 +b Ff(storage)f(of)h(structured)e(graphical)g(meta\014les,)i(used)f(for)g +(comm)o(unication)e(b)q(et)o(w)o(een)i(graphical)45 1879 y(editors)16 +b(and)g(application)f(programs.)-5 1977 y(Moreo)o(v)o(er,)g +Fe(Lua)g Ff(is)h(curren)o(tly)e(b)q(eing)i(considered)e(as)i(the)g(basis)f +(for)g(a)h(visual)f(programming)e(system.)-5 2062 y(The)k(abilit)o(y)g(to)g +(load)f(and)h(execute)h Fe(Lua)f Ff(programs)d(at)k(run-time)d(has)h(pro)o(v) +o(ed)g(to)h(b)q(e)h(a)f(ma)s(jor)f(com-)-5 2122 y(p)q(onen)o(t)g(in)f(making) +g(con\014guration)f(an)i(easy)g(task)g(for)g(b)q(oth)g(users)e(and)i(dev)o +(elop)q(ers.)k(Moreo)o(v)o(er,)15 b(the)-5 2182 y(existence)i(of)g(a)f +(single)g(general)g(purp)q(ose)f(em)o(b)q(edded)g(language)h(discourages)e +(the)j(m)o(ultiplication)e(of)-5 2241 y(incompatible)d(languages)g(and)h +(encourages)f(a)h(b)q(etter)h(design,)f(one)g(that)h(clearly)f(separates)f +(the)i(main)-5 2301 y(tec)o(hnology)i(con)o(tained)g(in)g(an)g(application)g +(from)f(its)i(con\014guration)e(issues.)-5 2386 y(The)21 b(implemen)o(tation) +e(of)i Fe(Lua)f Ff(describ)q(ed)g(in)g(this)h(pap)q(er)f(is)g(a)o(v)m +(ailable)g(b)o(y)h(anon)o(ymous)d Fh(ftp)k Ff(from)-5 2446 +y Fh(ftp.icad.puc-rio.br:/p)q(ub/lua)q(/lua-1.)q(1.tar.Z)q +Ff(.)-5 2560 y Fe(Ackno)o(wledgments)-5 2644 y Ff(W)l(e)f(w)o(ould)d(lik)o(e) +i(to)h(thank)f(the)g(sta\013)g(at)h(ICAD)f(and)g(T)l(eCGraf)f(for)h(using)f +(and)h(testing)g Fe(Lua)p Ff(.)32 b(The)-5 2704 y(industrial)16 +b(applications)g(men)o(tioned)g(in)h(the)h(text)h(are)e(b)q(eing)h(dev)o +(elop)q(ed)f(in)g(patternship)f(with)i(the)-5 2764 y(researc)o(h)d(cen)o +(ters)h(at)h(PETR)o(OBR)674 2751 y(\023)668 2764 y(AS)e(\(CENPES\))i(and)f +(at)h(ELETR)o(OBR)1452 2751 y(\023)1446 2764 y(AS)f(\(CEPEL\).)-5 +2883 y Fc(T)l(eCGraf/ICAD)1652 b(10)p eop +%%Page: 11 11 +bop -5 163 a Fg(References)-5 268 y Ff(M.)14 b(Abrash,)g(D.)g(Illo)o(wsky)l +(,)g(\\Roll)g(y)o(our)f(o)o(wn)h(minilanguages)e(with)j(mini-in)o(terpreters) +o(",)d Fi(Dr.)i(Dobb's)70 328 y(Journal)h Fa(14)h Ff(\(9\))h(\(Sep)f(1989\))h +(52{72.)-5 402 y(A.)27 b(V.)h(Aho,)e(B.)i(W.)f(Kerninghan,)d(P)l(.)j(J.)f(W)l +(ein)o(b)q(erger,)g Fi(The)g(A)-6 b(WK)28 b(programming)c(language)p +Ff(,)70 462 y(Addison-W)l(esley)l(,)15 b(1988.)-5 537 y(B.)i(Bec)o(kman,)f +(\\A)h(Sc)o(heme)f(for)g(little)h(languages)f(in)g(in)o(teractiv)o(e)g +(graphics",)f Fi(Soft)o(w)o(are,)h(practice)g(&)70 597 y(exp)q(erience)h +Fa(21)f Ff(\(1991\))h(187{207.)-5 671 y(J.)c(Ben)o(tley)l(,)f(\\Programming)e +(p)q(earls:)i(little)h(languages",)f Fi(Comm)o(unications)e(of)j(the)g(A)o +(CM)f Fa(29)g Ff(\(1986\))70 731 y(711{721.)-5 806 y(J.)k(Ben)o(tley)l(,)h +Fi(More)f(programming)d(p)q(earls)p Ff(,)j(Addison-W)l(esley)l(,)f(1988.)-5 +881 y(D.)i(Betz,)g(\\Em)o(b)q(edded)e(languages",)g Fi(Byte)j +Fa(13)e Ff(#12)f(\(No)o(v)j(1988\))e(409{416.)-5 955 y(D.)g(Betz,)h(\\Y)l +(our)f(o)o(wn)f(tin)o(y)h(ob)s(ject-orien)o(ted)f(language",)g +Fi(Dr.)h(Dobb's)f(Journal)f Fa(16)i Ff(\(9\))h(\(Sep)f(1991\))70 +1015 y(26{33.)-5 1090 y(T.)h(Budd,)e Fi(A)i(Little)h(Smalltalk)p +Ff(,)d(Addison-W)l(esley)l(,)g(1987.)-5 1164 y(R.)e(Clark,)h(S.)f(Ko)q +(ehler,)g Fi(The)g(UCSD)h(P)o(ascal)f(handb)q(o)q(ok:)g(a)g(reference)g(and)g +(guideb)q(o)q(ok)h(for)f(program-)70 1224 y(mers)p Ff(,)i(Pren)o(tice-Hall,)h +(1982.)-5 1299 y(M.)g(Co)o(wlisha)o(w,)f Fi(The)h(REXX)h(programming)d +(language)p Ff(,)h(Pren)o(tice-Hall,)g(1990.)-5 1374 y(L.)j(H.)f(de)g +(Figueiredo,)f(C.)h(S.)g(de)g(Souza,)g(M.)f(Gattass,)i(L.)f(C.)g(G.)g(Co)q +(elho,)g(\\Gera\030)-22 b(c~)d(ao)17 b(de)h(in)o(terfaces)70 +1433 y(para)k(captura)g(de)h(dados)f(sobre)f(desenhos",)h Fi(Anais)g(do)h +(SIBGRAPI)f(V)i Ff(\(1992\))f(169{175)f([in)70 1493 y(P)o(ortuguese].)-5 +1568 y(N.)e(F)l(ranks,)d(\\Adding)h(an)h(extension)g(language)f(to)i(y)o(our) +e(soft)o(w)o(are",)g Fi(Dr.)g(Dobb's)g(Journal)g Fa(16)g Ff(\(9\))70 +1628 y(\(Sep)e(1991\))h(34{43.)-5 1702 y(A.)24 b(Goldb)q(erg,)f(D.)h(Robson,) +e Fi(Smalltalk-80:)g(the)i(language)f(and)g(its)h(implemen)o(tation)p +Ff(,)d(Addison-)70 1762 y(W)l(esley)l(,)16 b(1983.)-5 1837 +y(R.)g(Ierusalimsc)o(h)o(y)l(,)d(L.)j(H.)g(de)g(Figueiredo,)e(W.)i(Celes)f +(Filho,)g(\\Reference)h(man)o(ual)e(of)i(the)g(program-)70 +1897 y(ming)g(language)f Fe(Lua)p Ff(",)h Fi(Monogra\014as)e(em)j(Ci)o(^)-24 +b(encia)16 b(da)g(Computa\030)-22 b(c~)d(ao)16 b Fa(4/94)p +Ff(,)f(Departamen)o(to)g(de)70 1956 y(Inform\023)-25 b(atica,)15 +b(PUC-Rio,)h(1994.)-5 2031 y(J.)g(R.)g(Levine,)h(T.)f(Mason,)g(D.)g(Bro)o +(wn,)g Fi(Lex)h(&)f(Y)l(acc)p Ff(,)h(O'Reilly)f(and)g(Asso)q(ciates,)g(1992.) +-5 2106 y(C.)h(Nahab)q(o)q(o,)f Fi(A)h(catalog)g(of)g(em)o(b)q(edded)e +(languages)p Ff(,)g(a)o(v)m(ailable)h(from)f Fh(colas@indri.inria.fr)p +Ff(.)-5 2181 y(M.)i(Ric)o(hards,)e(C.)j(Whitb)o(y-Strev)o(ens,)d +Fi(BCPL:)j(the)g(language)e(and)h(its)g(compiler)p Ff(,)f(Cam)o(bridge)f +(Uni-)70 2240 y(v)o(ersit)o(y)h(Press,)f(1980.)-5 2315 y(B.)i(Ry)o(an,)f +(\\Scripts)f(un)o(b)q(ounded",)f Fi(Byte)k Fa(15)e Ff(\(8\))h(\(Aug)g(1990\)) +f(235{240.)-5 2390 y(R.)g(V)l(ald)o(\023)-24 b(es,)16 b(\\Little)h +(languages,)e(big)i(questions",)e Fi(Dr.)h(Dobb's)f(Journal)g +Fa(16)h Ff(\(9\))h(\(Sep)g(1991\))f(16{25.)-5 2883 y Fc(T)l(eCGraf/ICAD)1652 +b(11)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF |