{VERSION 6 1 "Windows XP" "6.1" } {USTYLETAB {PSTYLE "Warning" -1 7 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 0 0 0 2 2 1 0 0 0 1 }1 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "Dash Item" -1 16 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }1 1 0 -1 3 3 1 0 1 0 2 2 -1 3 }{PSTYLE "Heading 4" -1 20 1 {CSTYLE "" -1 -1 "MS Serif" 1 12 0 0 0 0 1 0 0 2 2 2 0 0 0 1 }1 1 0 -1 0 0 1 0 1 0 2 2 -1 1 }{PSTYLE "Heading 3" -1 5 1 {CSTYLE "" -1 -1 " MS Serif" 1 14 0 0 0 0 1 1 0 2 2 2 0 0 0 1 }1 1 0 -1 0 0 1 0 1 0 2 2 -1 1 }{PSTYLE "Error" -1 8 1 {CSTYLE "" -1 -1 "Courier" 1 12 255 0 255 1 0 0 0 2 2 1 0 0 0 1 }1 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "A uthor" -1 19 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }3 1 0 -1 8 8 1 0 1 0 2 2 -1 1 }{PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "MS Serif" 1 16 0 0 0 0 0 1 0 2 2 2 0 0 0 1 }1 1 0 -1 8 2 1 0 1 0 2 2 -1 1 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 0 0 0 2 2 1 0 0 0 1 }1 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "MS Serif" 1 18 0 0 0 0 0 1 0 2 2 2 0 0 0 1 }1 1 0 -1 8 4 1 0 1 0 2 2 -1 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Maple Plot" -1 13 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "Line Printed Output" -1 6 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 0 0 0 2 2 1 0 0 0 1 }1 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 0 0 1 1 2 2 2 0 0 0 1 }3 1 0 -1 12 12 1 0 1 0 2 2 -1 1 }{PSTYLE "Map le Output" -1 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{PSTYLE "List Item" -1 14 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }1 1 0 -1 3 3 1 0 1 0 2 2 -1 5 }{PSTYLE "Bullet Item" -1 15 1 {CSTYLE "" -1 -1 "Ti mes" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }1 1 0 -1 3 3 1 0 1 0 2 2 -1 2 } {CSTYLE "Maple Input" -1 0 "Courier" 1 12 255 0 0 1 0 1 0 2 1 2 0 0 0 1 }{CSTYLE "2D Input" -1 19 "Times" 1 12 255 0 0 1 0 0 0 2 1 2 0 0 0 1 }{CSTYLE "Hyperlink" -1 17 "MS Serif" 1 12 0 128 128 1 0 0 1 2 2 2 0 0 0 1 }{CSTYLE "Text" -1 200 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 1 12 0 0 0 1 0 0 0 2 2 2 0 0 0 1 } {CSTYLE "Dictionary Hyperlink" -1 45 "MS Serif" 1 12 147 0 15 1 0 0 1 2 2 2 0 0 0 1 }{CSTYLE "Maple Input Placeholder" -1 201 "Courier" 1 12 200 0 200 1 0 1 0 2 1 2 0 0 0 1 }{CSTYLE "2D Output" -1 20 "Times" 1 12 0 0 255 1 0 0 0 2 2 1 0 0 0 1 }{CSTYLE "Page Number" -1 33 "Times " 1 10 0 0 0 0 0 0 2 2 2 2 0 0 0 1 }{PSTYLE "_pstyle1" -1 200 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{CSTYLE "_cstyle1" -1 202 "Times" 1 16 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle2" -1 203 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{PSTYLE "_pstyle2" -1 201 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }0 0 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{CSTYLE "_cstyle3" -1 204 "Times" 1 14 0 0 0 1 2 1 1 2 2 2 0 0 0 1 }{CSTYLE "_ cstyle4" -1 205 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cs tyle5" -1 206 "Times" 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyl e6" -1 207 "Times" 0 1 0 0 0 0 1 0 0 2 2 2 0 0 0 1 }{CSTYLE "_cstyle7" -1 208 "Times" 0 1 0 0 0 0 2 0 0 2 2 2 0 0 0 1 }{PSTYLE "_pstyle3" -1 202 1 {CSTYLE "" -1 -1 "Courier" 1 12 255 0 0 1 0 1 0 2 1 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{CSTYLE "_cstyle8" -1 209 "Courier" 1 12 255 0 0 1 0 1 0 2 1 2 0 0 0 1 }{PSTYLE "_pstyle4" -1 203 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 255 1 0 0 0 2 2 1 0 0 0 1 }3 3 0 -1 -1 -1 1 0 1 0 2 2 -1 1 }{CSTYLE "_cstyle9" -1 210 "Times" 1 12 0 0 255 1 0 0 0 2 2 2 0 0 0 1 }{PSTYLE "_pstyle5" -1 204 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{CSTYLE "_cstyle10" -1 211 "Times" 1 14 0 0 0 1 2 1 1 2 2 2 0 0 0 1 }{CSTYLE "_cstyle11" -1 212 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle12" -1 213 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle13" -1 214 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle14" -1 215 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "_cstyle15" -1 216 "Times" 0 1 0 0 0 0 0 1 0 2 2 2 0 0 0 1 }} {SECT 0 {EXCHG {PARA 200 "" 0 "" {TEXT 202 29 "Math 365D Lab Six - Fal l 2005" }{TEXT 203 0 "" }}}{PARA 201 "" 0 "" {TEXT 204 18 "PASSING PAR AMETERS" }{TEXT 205 0 "" }{TEXT 205 609 "\nWhen we called one procedur e from within another procedure in the last lab, the nested procedure \+ did not require any arguments. However, it is sometimes necessary to s end some information to the nested procedure; we call this \"passing p arameters.\" Maple will not allow us to modify any of these parameters within the nested procedure, so if such modification is necessary, th e parameters must instead be declared as global variables, in which ca se there is no need to pass them to the inner procedure. However, it i s not considered good programming style to use global variables when l ocal ones will suffice." }{TEXT 206 0 "" }{TEXT 206 1 "\n" }{TEXT 206 99 "\nBelow we use the dot product procedure from Lab Four's Exercises to perform matrix multiplication." }{TEXT 206 0 "" }{TEXT 206 1 "\n" }{TEXT 206 30 "\nNote that since the variable " }{TEXT 207 1 "i" } {TEXT 208 148 " is declared local to both procedures, it can be used s imultaneously in each and its value in one procedure has no effect on \+ its value in the other." }{TEXT 206 0 "" }{TEXT 206 1 "\n" }{TEXT 206 124 "\nAlso notice that the names of the parameters used in the inner \+ procedure may be the same as the ones it is passed (as with " }{TEXT 207 9 "rowvector" }{TEXT 208 5 " and " }{TEXT 207 12 "columnvector" } {TEXT 208 31 ") or may be different (as with " }{TEXT 207 8 "numcolsA" }{TEXT 208 8 " versus " }{TEXT 207 12 "vectorlength" }{TEXT 208 2 "). " }{TEXT 206 0 "" }{TEXT 206 1 "\n" }}{EXCHG {PARA 202 "> " 0 "" {MPLTEXT 1 209 39 "matrixproduct:=proc(A::array, B::array)" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 53 "\ndescription \"returns the matrix prod uct of A and B\";" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 172 "\nlocal i ::integer, j::integer, k::integer, numrowsAB::integer, numcolsAB::inte ger, numcolsA::integer, rowvector::array, columnvector::array, AB::arr ay, dotproduct::numeric;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 1 "\n" }{MPLTEXT 1 209 79 "\ndotproduct:=proc(rowvector::array, columnvector: :array, vectorlength::integer)" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 54 "\ndescription \"returns the dot product of two vectors\";" } {MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 34 "\nlocal i::integer, total::num eric;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 10 "\ntotal:=0;" } {MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 32 "\nfor i from 1 to vectorlength do" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 50 "\n total:=total+r owvector[i]*columnvector[i]" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 8 " \nend do;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 10 "\nend proc:" } {MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 1 "\n" }{MPLTEXT 1 209 49 "\nnumro wsAB:=op(2,op(2,eval(A))[1]); # rows in AB " }{MPLTEXT 1 209 0 "" } {MPLTEXT 1 209 51 "\nnumcolsAB:=op(2,op(2,eval(B))[2]); # columns in A B" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 61 "\nnumcolsA:=op(2,op(2,eval (A))[2]); # columns in A = rows in B" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 57 "\n # see Lab Four for explanation of this use of op" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 42 "\nif numcolsA<>op(2,op(2,eval (B))[1]) then " }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 86 "\n pri nt(\"Error: Number of columns of A must equal number of rows of B.\"): return" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 57 "\n # we can't \+ do matrix multiplication in this case" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 8 "\nend if;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 1 "\n" } {MPLTEXT 1 209 69 "\nAB:=array(1..numrowsAB,1..numcolsAB); # initializ e our output matrix" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 59 "\nrowvec tor:=array(1..numcolsA); # initialize the row vector" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 65 "\ncolumnvector:=array(1..numcolsA); # initial ize the column vector" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 1 "\n" } {MPLTEXT 1 209 58 "\nfor i from 1 to numrowsAB do # do this for each r ow of AB" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 62 "\n for j fro m 1 to numcolsA do # build current rowvector" }{MPLTEXT 1 209 0 "" } {MPLTEXT 1 209 37 "\n rowvector[j]:=A[i,j]" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 16 "\n end do;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 69 "\n for j from 1 to numcolsAB do # do this \+ for each column of AB" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 74 "\n \+ for k from 1 to numcolsA do # build current column vector" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 48 "\n co lumnvector[k]:=B[k,j]" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 24 "\n \+ end do;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 71 "\n \+ AB[i,j]:=dotproduct(rowvector,columnvector,numcolsA); " } {MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 51 "\n # co mpute this entry of AB" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 16 "\n \+ end do;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 9 "\nend do; " } {MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 11 "\nprint(AB);" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 10 "\nend proc:" }{MPLTEXT 1 209 0 "" }}}{EXCHG {PARA 202 "> " 0 "" {MPLTEXT 1 209 85 "C:=array([[1,2,3,4],[5,6,7,8]]) ;E:=array([[9,10,0],[0,11,12],[13,0,14], [-1,-2,-3]]);" }{MPLTEXT 1 209 0 "" }}{PARA 203 "" 1 "" {XPPMATH 20 "6#>I\"CG6\"-I'matrixGF%6#7$7 &\"\"\"\"\"#\"\"$\"\"%7&\"\"&\"\"'\"\"(\"\")" }{TEXT 210 0 "" }}{PARA 203 "" 1 "" {XPPMATH 20 "6#>I\"EG6\"-I'matrixGF%6#7&7%\"\"*\"#5\"\"!7% F-\"#6\"#77%\"#8F-\"#97%!\"\"!\"#!\"$" }{TEXT 210 0 "" }}}{EXCHG {PARA 202 "> " 0 "" {MPLTEXT 1 209 19 "matrixproduct(C,E);" }{MPLTEXT 1 209 0 "" }}{PARA 203 "" 1 "" {XPPMATH 20 "6#-I'matrixG6\"6#7$7%\"#W \"#C\"#a7%\"$G\"\"$+\"\"$Y\"" }{TEXT 210 0 "" }}}{EXCHG {PARA 204 "" 0 "" {TEXT 211 9 "RECURSION" }{TEXT 203 0 "" }{TEXT 203 3 "\nA " } {TEXT 212 9 "recursive" }{TEXT 203 254 " procedure is one that is writ ten so cleverly and elegantly that it calls itself. A famous saying in computer science due to L. Peter Deutch is \"To iterate is human, to \+ recurse, divine.\" (To iterate means simply to repeat, as our loops so far have done.)" }{TEXT 203 0 "" }{TEXT 203 1 "\n" }{TEXT 203 193 "\n Recall that the Fibonacci numbers, which you saw in Math s21, are 1, 1 , 2, 3, 5, 8, 13, 21, ... The first two are 1 by definition and any la ter Fibonacci number is the sum of the previous two." }{TEXT 203 0 "" }{TEXT 203 1 "\n" }}{PARA 202 "> " 0 "" {MPLTEXT 1 209 36 "Fibonacci:= proc(n::posint)::integer;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 49 "\n description \"computes the nth Fibonacci number\";" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 14 "\nif n < 3 then" }{MPLTEXT 1 209 0 "" } {MPLTEXT 1 209 57 "\n 1 # the first two Fibonacci number s are 1" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 6 "\nelse " }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 63 "\n Fibonacci(n-1) + Fibonacci(n-2) # recursive definition" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 8 "\nend if;" }{MPLTEXT 1 209 0 "" }{MPLTEXT 1 209 10 "\nend proc:" }{MPLTEXT 1 209 0 "" }}}{EXCHG {PARA 202 "> " 0 "" {MPLTEXT 1 209 13 "Fibonacci( 8);" }{MPLTEXT 1 209 0 "" }}{PARA 203 "" 1 "" {XPPMATH 20 "6#\"#@" } {TEXT 210 0 "" }}}{PARA 201 "" 0 "" {TEXT 204 0 "" }{TEXT 204 7 "\nOUT PUT" }{TEXT 205 0 "" }{TEXT 205 172 "\nWhen writing procedures that re turn large data structures, we sometimes find that Maple will not disp lay the full output. In this case, it is usually necessary to use the \+ " }{TEXT 213 10 "interface " }{TEXT 205 70 "command to increase the si ze of the allowable displays. For instance, " }{TEXT 213 25 "interface (rtablesize=99) " }{TEXT 205 91 "will let us display tables up to 99 r ows or columns in size. See Help for more information." }{TEXT 206 0 " " }}{PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 204 9 " DEBUGGING" }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 205 141 "We may o n rare occasions write a procedure that doesn't work as we hoped. In t hat case, we need to \"debug\" it. One way to do so is to insert " } {TEXT 213 5 "print" }{MPLTEXT 1 214 1 " " }{TEXT 205 170 "statements a t strategic points in the code so that we can see what values certain \+ variables hold at those points or learn when a given loop has been ent ered, for example." }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 205 0 "" }{TEXT 205 301 "\nMaple also has a built-in debugger that allows us t o do such things as stop execution of a procedure at a chosen breakpoi nt or when a certain variable achieves a chosen value, trace the value of a variable as the procedure executes, and other useful actions. Fo r more details, see Debugging in Help. " }{TEXT 204 0 "" }{TEXT 204 1 "\n" }{TEXT 204 10 "\nEXERCISES" }{TEXT 205 0 "" }{TEXT 205 27 "\n1. W rite a procedure that " }{TEXT 205 15 "takes two sets " }{TEXT 215 2 " A " }{TEXT 205 4 "and " }{TEXT 215 1 "B" }{TEXT 205 69 " as arguments \+ and then displays one of the following as appropriate: " }{TEXT 215 1 "A" }{TEXT 205 16 " is a subset of " }{TEXT 215 1 "B" }{TEXT 205 2 ", \+ " }{TEXT 215 1 "B" }{TEXT 205 16 " is a subset of " }{TEXT 215 1 "A" } {TEXT 205 2 ", " }{TEXT 215 1 "A" }{TEXT 205 3 " = " }{TEXT 215 1 "B" }{TEXT 205 150 ", or none of the above. Do this by nesting the subset \+ procedure you wrote in Lab Four inside this new procedure and passing \+ parameters as appropriate." }{TEXT 205 0 "" }{TEXT 205 78 "\n2. Write \+ a procedure that takes three arrays as its arguments and then calls " }{TEXT 213 14 "matrixproduct " }{TEXT 205 147 "to display their matrix product. Make sure that your procedure checks that the dimensions of \+ the three arrays will allow for matrix multiplication." }{TEXT 206 0 " " }{TEXT 206 134 "\n3. Write a procedure that takes two 1-dimensional \+ arrays as its arguments and indicates if they are identical. Use a loo p to do this." }{TEXT 206 0 "" }{TEXT 206 181 "\n4. Write a procedure \+ that takes a 2-dimensional array as its argument and indicates if any \+ two of its colums are identical. Do this by passing parameters to the \+ previous procedure." }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 206 "5. Write a procedure that takes a graph and two vertices as its a rguments and indicates if the vertices have identical neighbors. Do th is by passing parameters to the subset procedure you wrote in Lab Four ." }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 187 "6. Write a proce dure that takes a graph as its argument and indicates if any two of it s vertices have identical sets of neighbors. Do this by passing parame ters to the previous procedure." }{TEXT 206 0 "" }{TEXT 206 83 "\n7. W rite a recursive procedure that takes a nonnegative integer (type decl aration " }{TEXT 216 9 "nonnegint" }{TEXT 206 2 ") " }{TEXT 207 1 "n" }{TEXT 208 1 " " }{TEXT 206 28 "as its argument and returns " }{TEXT 207 2 "n!" }{TEXT 208 18 " Recall that 0!=1." }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 220 "8. The Lucas numbers are a variation on the Fibonacci numbers. The first such number is 1, the second is 3, and e ach later number is the sum of the previous two. Write a recursive pro cedure that takes a positive integer " }{TEXT 207 1 "n" }{TEXT 208 33 " as its argument and returns the " }{TEXT 207 1 "n" }{TEXT 208 16 "th Lucas number." }{TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT 206 0 "" }} {PARA 201 "" 0 "" {TEXT 206 0 "" }}{PARA 201 "" 0 "" {TEXT -1 0 "" }}} {MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }