--- /dev/null
+% Postscript header file for version 1.53 of graphs.sty. Frank Drewes, 19.12.2000
+% Small bug in psdirbowoncircle and psdirbowonrectangle removed on 8. Dec. 97
+% (hopefully)
+
+/psloadcolour % [ r g b ] colour array
+{ aload pop setrgbcolor } def
+
+/psrectangle % width, height, interior color, linecolour, linewidth, linedash
+{/filled exch def
+0 setdash
+/lwidth exch def
+/lcolour exch def
+/colour exch def
+/height exch def
+/width exch def
+width lwidth gt
+ {/width width lwidth sub def}
+ {/width 0 def}
+ifelse
+height lwidth gt
+ {/height height lwidth sub def}
+ {/height 0 def}
+ifelse
+newpath
+width 2 div neg height 2 div neg moveto
+width 0 rlineto
+0 height rlineto
+width neg 0 rlineto
+closepath
+filled {
+ colour psloadcolour
+ gsave
+ fill
+ grestore
+} if
+lcolour psloadcolour
+lwidth setlinewidth
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/pscircle % diameter, interior color, line colour, line width, line dash
+{/filled exch def
+0 setdash
+/lwidth exch def
+/lcolour exch def
+/colour exch def
+/diam exch def
+diam lwidth gt
+ {/diam diam lwidth sub def}
+ {/diam 0 def}
+ifelse
+newpath
+diam 2 div 0 moveto
+0 0 diam 2 div 0 360 arc
+closepath
+filled {
+ colour psloadcolour
+ gsave
+ fill
+ grestore
+} if
+lcolour psloadcolour
+lwidth setlinewidth
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/psline % end x, end y, line width, line colour, line dash
+{0 setdash
+psloadcolour
+setlinewidth
+/endy exch def
+/endx exch def
+newpath
+0 0 moveto
+endx endy lineto
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/psloop % from (#1,#2) to (#3,#4), line colour, line width, line dash
+{0 setdash
+setlinewidth
+psloadcolour
+/varw exch def
+/varv exch def
+/vary exch def
+/varx exch def
+newpath 0 0 moveto
+varx vary lineto
+/varxb varx 2 mul def
+/varyb vary 2 mul def
+/varvb varv 2 mul def
+/varwb varw 2 mul def
+varxb varyb varvb varwb varv varw curveto
+closepath
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/psloopbyangle % angle #1, axis (#2,#3), line colour, line width, line dash
+{/axisY exch def
+/axisX exch def
+/alpha exch def
+/len axisX dup mul axisY dup mul add sqrt def
+/betaA axisY axisX atan alpha 2 div sub def
+/betaB betaA alpha add def
+len betaA cos mul len betaA sin mul
+len betaB cos mul len betaB sin mul} def
+
+%-----------------------------------------------------------------------------%
+
+/pslooparrowonrectangle % (#1,#2), (#3,#4), width, height, line colour,
+ % line width, line dash, arrow length, arrow width
+{/atype exch def
+/awid exch def
+/len exch def
+0 setdash
+setlinewidth
+psloadcolour
+/height exch def
+/width exch def
+/varw exch def
+/varv exch def
+/vary exch def
+/varx exch def
+newpath 0 0 moveto
+varx vary lineto
+/varxb varx 2 mul def
+/varyb vary 2 mul def
+/varvb varv 2 mul def
+/varwb varw 2 mul def
+varxb varyb varvb varwb varv varw curveto
+varv varw translate
+/varv varv neg def /varw varw neg def
+varv abs varw abs
+varv abs varw abs gt { exch } if
+div dup mul 1 add width height mul mul sqrt 2 div /dist exch def
+/getlen {
+ /size exch def
+ abs exch abs exch
+ div dup mul 1 add size dup mul mul sqrt 2 div
+} def
+varv 0 eq
+ {/dist height 2 div def}
+ {varw 0 eq
+ {/dist width 2 div def}
+ {
+ /fstdist varv varw height getlen def
+ /snddist varw varv width getlen def
+ fstdist snddist lt
+ {/dist fstdist def} {/dist snddist def} ifelse
+ } ifelse
+ } ifelse
+varw varv atan rotate
+/pos varv dup mul varw dup mul add sqrt dist sub def
+pos len sub 0 lineto
+stroke
+pos len awid atype psdrawarrow
+} def
+
+%-----------------------------------------------------------------------------%
+
+/pslooparrowoncircle % (#1,#2), (#3,#4), diameter, line colour, line width,
+ % line dash, arrow length, arrow width
+{/atype exch def
+/awid exch def
+/len exch def
+0 setdash
+setlinewidth
+psloadcolour
+/diam exch def
+/varw exch def
+/varv exch def
+/vary exch def
+/varx exch def
+newpath 0 0 moveto
+varx vary lineto
+/varxb varx 2 mul def
+/varyb vary 2 mul def
+/varvb varv 2 mul def
+/varwb varw 2 mul def
+varxb varyb varvb varwb varv varw curveto
+varv varw translate
+/varv varv neg def /varw varw neg def
+varw varv atan rotate
+/pos varv dup mul varw dup mul add sqrt diam 2 div sub def
+pos len sub 0 lineto
+stroke
+pos len awid atype psdrawarrow
+} def
+
+%-----------------------------------------------------------------------------%
+
+/psdeletebox % width, height
+{/height exch def
+/width exch def
+newpath
+width 2 div neg height 2 div neg moveto
+width 0 rlineto
+0 height rlineto
+width neg 0 rlineto
+closepath
+1 setgray
+fill} def
+
+%-----------------------------------------------------------------------------%
+
+/psarrowonrectangle % x, y, width, height, arrow length, arrow width,
+ % line colour, line width, dash array
+{0 setdash
+setlinewidth
+psloadcolour
+/atype exch def
+/awid exch def
+/len exch def
+/height exch def
+/width exch def
+/ypos exch def
+/xpos exch def
+/getlen {
+ /size exch def
+ abs exch abs exch
+ div dup mul 1 add size dup mul mul sqrt 2 div
+} def
+xpos 0 eq
+ {/dist height 2 div def}
+ {ypos 0 eq
+ {/dist width 2 div def}
+ {
+ /fstdist xpos ypos height getlen def
+ /snddist ypos xpos width getlen def
+ fstdist snddist lt
+ {/dist fstdist def} {/dist snddist def} ifelse
+ } ifelse
+ } ifelse
+ypos xpos atan rotate
+/pos xpos dup mul ypos dup mul add sqrt dist sub def
+pos len awid atype psdrawarrow
+0 0 moveto
+pos len sub 0 lineto
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/psarrowoncircle
+{0 setdash
+setlinewidth
+psloadcolour
+/atype exch def
+/awid exch def
+/len exch def
+/diam exch def
+/ypos exch def
+/xpos exch def
+ypos xpos atan rotate
+/pos xpos dup mul ypos dup mul add sqrt diam 2 div sub def
+pos len awid atype psdrawarrow
+0 0 moveto
+pos len sub 0 lineto
+stroke} def
+
+%-----------------------------------------------------------------------------%
+
+/pspath
+{/fillyes exch def
+/fillcolour exch def
+0 setdash
+psloadcolour
+setlinewidth
+/curry exch def
+/currx exch def
+/sqr { dup mul } def
+/mtrx matrix currentmatrix def
+newpath currx curry moveto
+counttomark 3 idiv
+{ /displace exch def
+ displace abs 0 gt
+ { currx curry translate
+ dup curry sub /ypos exch def /curry exch def
+ dup currx sub /xpos exch def /currx exch def
+ /len xpos sqr ypos sqr add sqrt def
+ /displace displace len mul def
+ ypos xpos atan rotate
+ /db len 2 div def
+ /rad displace db sqr displace div add 2 div def
+ /radb rad displace sub def
+ /anglea radb db atan def
+ /angleb 180 anglea sub def
+ displace 0 gt
+ { db radb neg rad angleb anglea arcn }
+ { db radb neg rad 360 anglea sub angleb neg arc }
+ ifelse
+ mtrx setmatrix
+ }
+ { /curry exch def
+ /currx exch def
+ currx curry lineto
+ }
+ ifelse
+}
+repeat
+pop
+fillyes {gsave fillcolour psloadcolour fill grestore} if
+0 setlinecap
+0 setlinejoin
+stroke
+} def
+
+%-----------------------------------------------------------------------------%
+
+/pscurve
+{/fillyes exch def
+/fillcolour exch def
+0 setdash
+psloadcolour
+setlinewidth
+/currx exch def
+/curry exch def
+/angle exch def
+/factora exch def
+/factorb exch def
+newpath currx curry moveto
+counttomark 5 idiv
+{ /newx exch def
+ /newy exch def
+ /len newx currx sub dup mul newy curry sub dup mul add sqrt def
+ /firstx len factora mul angle cos mul currx add def
+ /firsty len factora mul angle sin mul curry add def
+ /currx newx def
+ /curry newy def
+ /angle exch def
+ firstx
+ firsty
+ len factorb mul angle cos mul neg currx add
+ len factorb mul angle sin mul neg curry add
+ currx
+ curry
+ curveto
+ /factora exch def
+ /factorb exch def
+}
+repeat
+pop
+fillyes {gsave fillcolour psloadcolour fill grestore} if
+0 setlinecap
+0 setlinejoin
+stroke
+} def
+
+%-----------------------------------------------------------------------------%
+
+/psbubble
+{/fillyes exch def
+/fillcolour exch def
+0 setdash
+psloadcolour
+setlinewidth
+/lenfactor exch def
+/fetch {/arg exch def dup arg exch def counttomark 1 roll} def
+/compangle {
+ /firstangle exch def
+ /scndangle exch def
+ firstangle sin scndangle sin add 2 div
+ firstangle cos scndangle cos add 2 div
+ atan
+} def
+/currax fetch
+/curray fetch
+counttomark 2 idiv
+{
+/currbx exch def
+/currby exch def
+currax currbx ne curray currby ne or
+ {currby currbx /currax fetch /curray fetch}
+if
+}
+repeat
+/lastx fetch
+/lasty fetch
+/currax fetch
+/curray fetch
+/currbx fetch
+/currby fetch
+newpath currax curray moveto
+counttomark 2 idiv
+{ /nextx fetch
+ /nexty fetch
+ /fstangle
+ curray lasty sub currax lastx sub atan
+ currby curray sub currbx currax sub atan
+ compangle
+ def
+ /sndangle
+ currby curray sub currbx currax sub atan
+ nexty currby sub nextx currbx sub atan
+ compangle
+ def
+ /len currax currbx sub dup mul curray currby sub dup mul add sqrt lenfactor mul def
+ fstangle cos len mul currax add
+ fstangle sin len mul curray add
+ currbx sndangle cos len mul sub
+ currby sndangle sin len mul sub
+ currbx currby
+ curveto
+ /lastx currax def
+ /lasty curray def
+ /currax currbx def
+ /curray currby def
+ /currbx nextx def
+ /currby nexty def
+}
+repeat
+pop
+fillyes {gsave fillcolour psloadcolour fill grestore} if
+0 setlinecap
+0 setlinejoin
+stroke
+} def
+
+%-----------------------------------------------------------------------------%
+
+/psdrawarrow
+{gsave
+/type exch def
+/wid exch def
+/len exch def
+0 translate -1 1 scale
+newpath 0 0 moveto
+type 1 eq
+{ len len wid 2 div mul lineto
+ 0 len wid neg mul rlineto}
+{ /mid len 2 div def
+ 0 0
+ mid 0
+ len len wid 2 div mul curveto
+ len len wid -2 div mul lineto
+ mid 0
+ 0 0
+ 0 0 curveto
+} ifelse
+closepath
+fill
+grestore
+} def
+
+%-----------------------------------------------------------------------------%
+
+/psdirbowoncircle
+{0 setdash
+psloadcolour
+setlinewidth
+/atype exch def
+/awid exch def
+/arrowlen exch def
+2 div /targetradius exch def
+/displace exch def
+/othery exch def
+/otherx exch def
+/curry exch def
+/currx exch def
+/sqr { dup mul } def
+
+currx curry translate
+othery curry sub /othery exch def
+otherx currx sub /otherx exch def
+/angle otherx neg othery atan def
+/distance otherx sqr othery sqr add sqrt def
+/displace displace distance mul def
+/radius displace distance 2 div sqr displace div add 2 div def
+/centerx angle cos radius displace sub mul otherx 2 div add def
+/centery angle sin radius displace sub mul othery 2 div add def
+displace 0 gt
+{ /anglea othery centery sub otherx centerx sub atan def
+ /angleb centery neg centerx neg atan def
+ angleb anglea lt
+ { /anglea anglea 360 sub def }
+ if
+}
+{ /anglea centery othery sub centerx otherx sub atan def
+ /angleb centery centerx atan def
+ angleb anglea gt
+ { /anglea anglea 360 add def }
+ if
+}
+ifelse
+
+anglea angleb targetradius pscomputeposoncircle
+/tipy exch def /tipx exch def
+anglea angleb targetradius arrowlen add pscomputeposoncircle
+/taily exch def /tailx exch def
+
+newpath 0 0 moveto
+0 setlinecap
+0 setlinejoin
+displace 0 gt
+{ centerx centery radius angleb taily centery sub tailx centerx sub atan arcn }
+{ centerx centery radius angleb centery taily sub centerx tailx sub atan arc }
+ifelse
+stroke
+
+tailx taily translate
+/tipx tipx tailx sub def
+/tipy tipy taily sub def
+tipy tipx atan rotate
+arrowlen arrowlen awid atype psdrawarrow
+} def
+
+/pscomputeposoncircle
+{/otherr exch def
+/beta exch def
+/alpha exch def
+{
+ /currangle alpha beta add 2 div def
+ /xpos currangle cos radius mul centerx add def
+ /ypos currangle sin radius mul centery add def
+ otherx xpos sub sqr othery ypos sub sqr add sqrt
+ /newdist exch def
+ newdist otherr sub abs .001 le
+ {exit}
+ if
+ newdist otherr le
+ {/alpha currangle def}
+ {/beta currangle def}
+ ifelse
+} loop
+currangle cos radius mul centerx add
+currangle sin radius mul centery add
+} def
+
+
+%-----------------------------------------------------------------------------%
+
+/psdirbowonrectangle
+{0 setdash
+psloadcolour
+setlinewidth
+/atype exch def
+/awid exch def
+/arrowlen exch def
+2 div /sizey exch def
+2 div /sizex exch def
+/displace exch def
+/othery exch def
+/otherx exch def
+/curry exch def
+/currx exch def
+/sqr { dup mul } def
+
+currx curry translate
+othery curry sub /othery exch def
+otherx currx sub /otherx exch def
+/angle otherx neg othery atan def
+/distance otherx sqr othery sqr add sqrt def
+/displace displace distance mul def
+/radius displace distance 2 div sqr displace div add 2 div def
+/centerx angle cos radius displace sub mul otherx 2 div add def
+/centery angle sin radius displace sub mul othery 2 div add def
+displace 0 gt
+{ /anglea othery centery sub otherx centerx sub atan def
+ /angleb centery neg centerx neg atan def
+ angleb anglea lt
+ { /anglea anglea 360 sub def }
+ if
+}
+{ /anglea centery othery sub centerx otherx sub atan def
+ /angleb centery centerx atan def
+ angleb anglea gt
+ { /anglea anglea 360 add def }
+ if
+}
+ifelse
+
+anglea angleb pscomputeposonrectangle /tipy exch def /tipx exch def
+/targetradius otherx tipx sub sqr othery tipy sub sqr add sqrt def
+anglea angleb targetradius arrowlen add pscomputeposoncircle
+/taily exch def /tailx exch def
+
+newpath 0 0 moveto
+0 setlinecap
+0 setlinejoin
+displace 0 gt
+{ centerx centery radius angleb taily centery sub tailx centerx sub atan arcn }
+{ centerx centery radius angleb centery taily sub centerx tailx sub atan arc }
+ifelse
+stroke
+
+tailx taily translate
+/tipx tipx tailx sub def
+/tipy tipy taily sub def
+tipy tipx atan rotate
+arrowlen arrowlen awid atype psdrawarrow
+} def
+
+/pscomputeposonrectangle
+{/beta exch def
+/alpha exch def
+/counter 0 def
+{
+ /currangle alpha beta add 2 div def
+ /xpos currangle cos radius mul centerx add def
+ /ypos currangle sin radius mul centery add def
+ /xdiff xpos otherx sub abs sizex sub def
+ /ydiff ypos othery sub abs sizey sub def
+ xdiff abs .001 le ydiff abs .001 le and
+ xdiff abs .001 le ydiff 0 le and
+ xdiff 0 le ydiff abs .001 le and
+ or
+ {exit}
+ if
+ /counter counter 1 add def
+ xdiff 0 le ydiff 0 le and
+ {/alpha currangle def}
+ {/beta currangle def}
+ ifelse
+} loop
+currangle cos radius mul centerx add
+currangle sin radius mul centery add
+} def