This is METAFONT, Version 2.71828182 (preloaded base=trap 1776.7.4)  4 JUL 1776 12:00
** &trap  trap
(trap.mf
{if}
{known(0)}
{not(true)}
{false}
{known("")}
{true}

/*\`'@#->begingroup.message(SUFFIX1)&str(SUFFIX0)&jobname&char.ASCII'`&s
tr(SUFFIX2)!endgroup
(SUFFIX0)<-/*\
(SUFFIX1)<-`'
(SUFFIX2)<-pass2
{begingroup}
{message}

`'->begingroup'`endgroup
(SUFFIX0)<-
(SUFFIX1)<-`'
{begingroup}

'`->"\*/"
{endgroup}
{("\*/")&("/*\")}
{jobname}
{("\*//*\")&("trap")}

'`->"\*/"
{ASCII("\*/")}
{char(92)}
{("\*//*\trap")&("\")}
{("\*//*\trap\")&("pass2!")}

\*//*\trap\pass2!
{endgroup}
{outer}
{let}
{delimiters}

! Missing symbolic token inserted.
<inserted text>
                INACCESSIBLE
l.21 ...t next=\; delimiters ^~7
                               ! fi
Sorry: You can't redefine a number, string, or expr.
I've inserted an inaccessible symbol so that your
definition will be completed without mixing me up too badly.

! Extra tokens will be flushed.
<to be read again>
                  !
l.21 ... next=\; delimiters ^~7!
                                fi
I've just read as much of that statement as I could fathom,
so a semicolon should have been next. It's very puzzling...
but I'll try to get myself back together, by ignoring
everything up to the next `;'. Please insert a semicolon
now in front of anything that you don't want me to delete.
(See Chapter 27 of The METAFONTbook for an example.)

! Forbidden token found while scanning to the end of the statement.
<inserted text>
               ;
<to be read again>
                  \
l.22 next\
         ; % the second pass will now compute silently; the ...
A previous error seems to have propagated,
causing me to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.

{\}
{batchmode}

! An expression can't begin with `endgroup'.
<inserted text>
               0
<to be read again>
                  endgroup
l.23 batchmode; ^~7,endgroup
                            pausing:=1; exitif p exitif bool...
I'm afraid I need some sort of value in order to continue,
so I've tentatively inserted `0'. You may want to
delete this zero and insert something else;
see Chapter 27 of The METAFONTbook for an example.

! Missing ` INACCESSIBLE' has been inserted.
<to be read again>
                  endgroup
l.23 batchmode; ^~7,endgroup
                            pausing:=1; exitif p exitif bool...
I found no right delimiter to match a left one. So I've
put one in, behind the scenes; this may fix the problem.

! Extra `endgroup'.
<recently read> endgroup

l.23 batchmode; ^~7,endgroup
                            pausing:=1; exitif p exitif bool...
I'm not currently working on a `begingroup',
so I had better not try to end anything.

{pausing:=1}
{exitif}
{exitif}
{pencircle}
{endfor}
! Extra `endfor'.
l.23 ...ean pen pencircle endfor

I'm not currently working on a for loop,
so I had better not try to end anything.

{scantokens}
{begingroup}
{message}
{char(0)}
{("^^@")&("watch this")}
^^@watch this
{-(1)}
{char(-1)}
{("pair p[],';")&("^^ff")}
{endgroup}
{pen(future pen)}
{boolean(true)}
{true}
! No loop is in progress.
<to be read again>
                  pair
<scantokens> pair
                 p[],';^^ff
<to be read again>
                  path
l.25 path
         p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(...
Why say `exitif' when there's nothing to exit from?

>> p
! Undefined condition will be treated as `false'.
<to be read again>
                  pair
<scantokens> pair
                 p[],';^^ff
<to be read again>
                  path
l.25 path
         p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(...
The expression shown above should have had a definite
true-or-false value. I'm changing it to `false'.

{false}
! Missing `;' has been inserted.
<to be read again>
                  pair
<scantokens> pair
                 p[],';^^ff
<to be read again>
                  path
l.25 path
         p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(...
After `exitif <boolean expr>' I expect to see a semicolon.
I shall pretend that one was there.

{pair}
! Text line contains an invalid character.
<scantokens> pair p[],';^^ff

<to be read again>
                  path
l.25 path
         p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(...
A funny symbol that I can't read has just been input.
Continue, and I'll forget that it ever happened.

{path}
{-(2)}
{-(1)}
{turningnumber((xpart ',ypart '))}
Path at line 25, before choices:
(1,-2){curl 1}
..(2,-1)
..(2.5,0.5)
..(1,2)
..{curl 1}(0,2.5)

Path at line 25, after choices:
(1,-2)..controls (1.37755,-1.71404) and (1.71404,-1.37755)
..(2,-1)..controls (2.33353,-0.55965) and (2.59729,-0.04124)
..(2.5,0.5)..controls (2.36812,1.23369) and (1.6712,1.65662)
..(1,2)..controls (0.66821,2.16974) and (0.33485,2.33641)
..(0,2.5)

{(unknown path qw)=(path)}
{numeric}
! Enormous number has been reduced.
l.26 ...[$] ]]=10000000000000000
                               ; "this string constant is in...
I can't handle numbers bigger than about 4095.99998;
so I've changed your constant to that maximum amount.

{(p[[ [-1] ]])=(4095.99998)}
## p[[ [-1] ]]=4095.99998
! Incomplete string token has been flushed.
l.26 ...g constant is incomplete

Strings should finish on the same line as they began.
I've deleted the partial string; you might want to
insert another by typing, e.g., `I"new string"'.

{string}
! Declared variable conflicts with previous vardef.
<to be read again>
                  ,
l.27 string foo[]p,
                  p~if true:[]; p~000=char34&char200&char34;
You can't use, e.g., `numeric foo[]' after `vardef foo'.
Proceed, and I'll ignore the illegal redeclaration.

{if}
{true}
{true}
{char(34)}
{char(200)}
{(""")&("^^c8")}
{char(34)}
{(""^^c8")&(""")}
{(unknown string p~0)=(""^^c8"")}
{boolean}
{fi}
{showvariable}
boolean.boolean=unknown boolean
! OK.
l.28 ...n; showvariable boolean;
                                def\\= =end enddef;

{def}
{picture}
{show}
{scantokens}
{length("^^c8")}
>> 1
! OK.
<recently read> ;

l.29 ...w length scantokens p~0;


{pen}
! Illegal suffix of declared variable will be flushed.
<to be read again>
                  [
<to be read again>
                  "a"
l.30 pen p~[]~,q["a"
                   ,qq; p~1~=q=pencircle scaled mexp(-3016.5...
Variables in declarations must consist entirely of
names and collective subscripts, e.g., `x[]a'.
Are you trying to use a reserved word in a variable name?
I'm going to discard the junk I found here,
up to the next comma or the end of the declaration.

{pencircle}
{-(3016.57654)}
{mexp(-3016.57654)}
{(future pen)scaled(0)}
Pen polygon at line 30 (newly created):
(0.5,0)
.. (0,0.5)
.. (-0.5,0)
.. (0,-0.5)
.. cycle

{(unknown pen q)=(pen)}
{(unknown pen p~1~)=(pen)}
{transform}
! Illegal suffix of declared variable will be flushed.
<to be read again>
                  0
l.31 transform p,pp0
                   ; if p=p:qq=makepen((1,0)..cycle) xscaled...
Variables in declarations must consist entirely of
names and collective subscripts, e.g., `x[]a'.
Explicit subscripts like `x15a' aren't permitted.
I'm going to discard the junk I found here,
up to the next comma or the end of the declaration.

{if}
{((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p))=((xpart p,ypart
p,xxpart p,xypart p,yxpart p,yypart p))}
{true}
Path at line 31, before choices:
(1,0)
..cycle

Path at line 31, after choices:
(1,0)..controls (1,0) and (1,0)
..cycle

{makepen(path)}
{hex("1000")}
! Number too large (4096).
<to be read again>
                  ;
l.31 ...cle) xscaled hex "1000";
                               fi
I have trouble with numbers greater than 4095; watch out.

{(future pen)xscaled(4096)}
! Pen too large.
<to be read again>
                  ;
l.31 ...cle) xscaled hex "1000";
                               fi
The cycle you specified has a coordinate of 4095.5 or more.
So I've replaced it by the trivial path `(0,0)..cycle'.

Pen polygon at line 31 (newly created):
(0,0)
.. cycle

{(unknown pen qq)=(pen)}
{fi}
Path at line 32, before choices:
(0,0)
..(1,0)
..(0,1)
..(0,0)
..(1,0)
..(0,1)
..cycle

Path at line 32, after choices:
(0,0)..controls (0.29056,-0.29056) and (0.75859,-0.30772)
..(1,0)..controls (1.51964,0.66237) and (0.66237,1.51964)
..(0,1)..controls (-0.30772,0.75859) and (-0.29056,0.29056)
..(0,0)..controls (0.29056,-0.29056) and (0.75859,-0.30772)
..(1,0)..controls (1.51964,0.66237) and (0.66237,1.51964)
..(0,1)..controls (-0.30772,0.75859) and (-0.29056,0.29056)
..cycle

{makepen(path)}
! Pen cycle must be convex.
<to be read again>
                  ;
l.32 ...)..(1,0)..(0,1)..cycle);

The cycle you specified either has consecutive equal points
or turns right or turns through more than 360 degrees.
So I've replaced it by the trivial path `(0,0)..cycle'.

Pen polygon at line 32 (newly created):
(0,0)
.. cycle

{qq:=pen}
{vardef}
! Missing parameter type; `expr' will be assumed.
<to be read again>
                  )
l.33 ...ext suffix a,b endtext()
                               )suffix@=show #@; p.a.b() end...
You should've had `expr' or `suffix' or `text' here.

{expandafter}
{\}
{let}

\\->=end
{outer}
{pencircle}
{(future pen)scaled(4.5)}
{(future pen)yscaled(2)}
Pen polygon at line 34 (newly created):
(0.5,-4.5)
.. (1,-4)
.. (2,-2.5)
.. (2.5,0)
.. (2,2.5)
.. (1,4)
.. (0.5,4.5)
.. (-0.5,4.5)
.. (-1,4)
.. (-2,2.5)
.. (-2.5,0)
.. (-2,-2.5)
.. (-1,-4)
.. (-0.5,-4.5)
.. cycle

{qq:=pen}
{((6,12))-((xpart p7,ypart p7))}
{((0,1))transformed((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p
))}
{(x)-(x)}
{(2)/(0)}
>> 2
! Division by zero.
<to be read again>
                  ,
l.35 ...)transformed p=(2/(x-x),
                               3/0)transformed p;
You're trying to divide the quantity shown above the error
message by zero. I'm going to divide it by one instead.

! Division by zero.
l.35 ...ansformed p=(2/(x-x),3/0
                               )transformed p;
I'll pretend that you meant to divide by 1.

{((2,3))transformed((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p
))}
{((linearform,linearform))=((linearform,linearform))}
## yxpart p=-yypart p
## xxpart p=-xypart p
{((-xpart p7+6,-ypart p7+12))=((linearform,linearform))}
## ypart p7=-ypart p-yypart p+12
## xpart p7=-xpart p-xypart p+6
{\}
{if}
{string(unknown string p~[-1])}
{true}
{(p0.1 0.2)-(p0.1 0.2)}
! The token `endtext' is no longer a right delimiter.
l.36 ...1.2-p.1.199999,1 endtext
                                transformed p;
Strange: This token has lost its former meaning!
I'll read it as a right delimiter this time;
but watch out, I'll probably miss it later.

{((0,1))transformed((xpart p,ypart p,-xypart p,xypart p,-yypart p,yypart
p))}
{((linearform,linearform))=((linearform,linearform))}
## ypart p=-yypart p+6
#### ypart p7=6
## xpart p=-xypart p+3
#### xpart p7=3
{(unknown path p1 2p)=((3,6))}
{showstopping:=0}
{showvariable}
p=(-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p)
p[]=pair
p[][]=numeric
p[][]p=unknown path
p[][]p~=macro:(SUFFIX2)(SUFFIX3)(EXPR4)<suffix>->begingroup ETC.
p[]~=unknown boolean
p~=path
p~[]=unknown string
p~[]~=unknown pen
p~[]~[][]=unknown picture
p~[-1]=unknown string p~[-1]
p~0=""^^c8""
p~1~=pen
p[[ [] ]]=numeric
p[[ [-1] ]]=4095.99998
p0.1 0.2=p0.1 0.2
p1 2p=path
p7=(3,6)
{((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))=((-xy
part p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))}
{let}
{let}
{xxpart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))
}
{(-xypart p)+(0.002)}
{yxpart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))
}
{((xpart p2,ypart p2))-((xpart p1,ypart p1))}
{(1)*((linearform,linearform))}
{((xpart p1,ypart p1))+((linearform,linearform))}
{(y)+(0.00002)}
{yypart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))
}
{xypart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))
}
{((5,y))=((yypart p,xypart p))}
## y=xypart p
## yypart p=5
#### ypart p=1
#### yxpart p=-5
{((5,xypart p+0.00002))=((5,xypart p))}
{((xpart p2,ypart p2))=((5,xypart p))}
## ypart p2=xypart p
## xpart p2=5
{((-xypart p+0.002,-5))=((5,xypart p))}
## xypart p=-5
#### ypart p2=-5
#### y=-5
#### xpart p=8
#### xxpart p=5
! Inconsistent equation (off by -0.002).
<to be read again>
                  ;
l.38 ...,y)=(yypart p,xypart p);

The equation I just read contradicts what was said before.
But don't worry; continue and I'll just ignore it.

Path at line 39, before choices:
(0,0)..controls (15,4) and (-15,-12)
..(4,0)
..cycle

Path at line 39, after choices:
(0,0)..controls (15,4) and (-15,-12)
..(4,0)..controls (17.52783,8.54388) and (-15.45978,-4.12262)
..cycle

{reverse(path)}
{(path)transformed((8,1,5,-5,-5,5))}
{(path)=(unknown path p2 3p)}

p1 2p~(SUFFIX2)(SUFFIX3)(EXPR4)<suffix>->begingroup.show(SUFFIX0);p(SUFF
IX2)(SUFFIX3)((EXPR4)endgroup
(SUFFIX0)<-p1 2p
(SUFFIX1)<-~
(SUFFIX2)<-
(SUFFIX3)<-2 3p~
! A primary expression can't begin with `right delimiter that matches ('