Evidlo / remarkable_printer

Native printing to reMarkable.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Failing to install on macOS

yiyao625 opened this issue · comments

commented

when I used make install_config host=10.11.99.1, it showed make: *** No rule to make target install_config'. Stop.`
But when I tried to install manually, I failed to print. Nothing appears on my remarkable and the debug shows

`Jun 11 10:38:30 reMarkable systemd[1]: printer.service: Main process exited, code=exited, status=1/FAILURE
Jun 11 10:38:30 reMarkable systemd[1]: printer.service: Failed with result 'exit-code'.
Jun 11 10:38:30 reMarkable systemd[1]: printer.service: Scheduled restart job, restart counter is at 1.
Jun 11 10:38:30 reMarkable systemd[1]: Stopped Native printing to reMarkable.
Jun 11 10:38:30 reMarkable systemd[1]: Started Native printing to reMarkable.
Jun 11 10:38:30 reMarkable printer.arm[420]: Debugging enabled
Jun 11 10:38:30 reMarkable printer.arm[420]: Listening on 0.0.0.0:9100
printer.service
sudo lpadmin -p reMarkable -E -o printer-error-policy=abort-job -v socket://10.11.99.1:9100 -P remarkable.ppd

`

I read some of issues posted on Issues section and tried to solve it on my own but I couldn't understand what they were talking about due to lack of professional knowledge......

Can you paste the full terminal output from the line you paste the command all the way to the error message?

As for the debug output, it looks like your Mac isn't connecting to the tablet at all.

Similar (I think) problem here.

Install on the reMarkable went fine.

On my Mac, when trying to use the makefile, I get:

% make install_config host=10.11.99.1       
lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
cp: /usr/lib/cups/filter: No such file or directory
make: *** [install_config] Error 1

So, I installed the IP printer manually. Host is 10.11.99.1, protocol is HP Jetdirect - Socket, and driver (the field is labeled "Use:") is Generic Postscript Printer.

Log from the reMarkable:

Sep 23 20:11:19 reMarkable systemd-journald[132]: Suppressed 14439 messages from printer.service
Sep 23 20:11:19 reMarkable printer.arm[14531]: Saving PDF to: /home/root/.local/share/remarkable/xochitl/9d888be9-cdd4-4c25-87fe-ba655d42edfe.pdf
Sep 23 20:11:19 reMarkable printer.arm[14531]: %!PS-Adobe-3.0
Sep 23 20:11:19 reMarkable printer.arm[14531]: %APL_DSC_Encoding: UTF8
Sep 23 20:11:19 reMarkable printer.arm[14531]: %APLProducer: (Version 11.5.2 (Build 20G95) Quartz PS Context)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Title: (RCU User Manual.pdf)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Creator: (Preview: cgpdftops CUPS filter)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%CreationDate: (Thursday, September 23 2021 20:11:15 PDT)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%For: (System Administrator)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%DocumentData: Clean7Bit
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%LanguageLevel: 2
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%PageOrder: Ascend
Sep 23 20:11:19 reMarkable printer.arm[14531]: %RBINumCopies: 1
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Pages: (atend)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BoundingBox: (atend)
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndComments
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict/dscInfo 5 dict dup begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Title(RCU User Manual.pdf)def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Creator(Preview: cgpdftops CUPS filter)def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /CreationDate(Thursday, September 23 2021 20:11:15 PDT)def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /For(System Administrator)def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Pages 1 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: end put
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginProlog
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginFile: lw8_errorhandler-2.0
Sep 23 20:11:19 reMarkable printer.arm[14531]: /currentpacking where
Sep 23 20:11:19 reMarkable printer.arm[14531]:         { pop /oldpack currentpacking def /setpacking where
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         pop false setpacking
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: /$brkpage 64 dict def $brkpage begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: /prnt
Sep 23 20:11:19 reMarkable printer.arm[14531]:  {dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def
Sep 23 20:11:19 reMarkable printer.arm[14531]:   currentpoint/toy exch def/tox exch def 1 setgray newpath
Sep 23 20:11:19 reMarkable printer.arm[14531]:   tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:   closepath fill tox toy moveto 0 setgray show}bind def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /=={/cp 0 def typeprint nl}def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /typeprint{dup type exec}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /lmargin 72 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /rmargin 72 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /tprint
Sep 23 20:11:19 reMarkable printer.arm[14531]:    {dup length cp add rmargin gt{nl/cp 0 def}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:     dup length cp add/cp exch def prnt}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cvsprint{=string cvs tprint( )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /integertype{cvsprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /realtype{cvsprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /booleantype{cvsprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /operatortype{(--)tprint =string cvs tprint(-- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /marktype{pop(-mark- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /dicttype{pop(-dictionary- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /nulltype{pop(-null- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /filetype{pop(-filestream- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /savetype{pop(-savelevel- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /fonttype{pop(-fontid- )tprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /stringtype
Sep 23 20:11:19 reMarkable printer.arm[14531]:  {dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  }readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /arraytype
Sep 23 20:11:19 reMarkable printer.arm[14531]:  {dup rcheck{dup xcheck
Sep 23 20:11:19 reMarkable printer.arm[14531]:   {({)tprint{typeprint}forall(})tprint}
Sep 23 20:11:19 reMarkable printer.arm[14531]:   {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  }readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /packedarraytype
Sep 23 20:11:19 reMarkable printer.arm[14531]:  {dup rcheck{dup xcheck
Sep 23 20:11:19 reMarkable printer.arm[14531]:   {({)tprint{typeprint}forall(})tprint}
Sep 23 20:11:19 reMarkable printer.arm[14531]:   {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  }readonly def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /courier/Courier findfont 10 scalefont def
Sep 23 20:11:19 reMarkable printer.arm[14531]: end %$brkpage
Sep 23 20:11:19 reMarkable printer.arm[14531]: errordict/handleerror
Sep 23 20:11:19 reMarkable printer.arm[14531]:  {systemdict begin $error begin $brkpage begin newerror
Sep 23 20:11:19 reMarkable printer.arm[14531]:    {/newerror false store
Sep 23 20:11:19 reMarkable printer.arm[14531]:     vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont
Sep 23 20:11:19 reMarkable printer.arm[14531]:     lmargin 720 moveto(ERROR: )prnt errorname prnt
Sep 23 20:11:19 reMarkable printer.arm[14531]:     nl(OFFENDING COMMAND: )prnt/command load prnt
Sep 23 20:11:19 reMarkable printer.arm[14531]:          $error/ostack known{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         $error/ostack get type dup/arraytype eq exch /packedarraytype eq or
Sep 23 20:11:19 reMarkable printer.arm[14531]:    {nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:     systemdict/showpage get exec(%%[ Error: )print
Sep 23 20:11:19 reMarkable printer.arm[14531]:     errorname =print(; OffendingCommand: )print/command
Sep 23 20:11:19 reMarkable printer.arm[14531]:     load =print( ]%%)= flush}if end end end}
Sep 23 20:11:19 reMarkable printer.arm[14531]: dup 0 systemdict put dup 4 $brkpage put bind readonly put
Sep 23 20:11:19 reMarkable printer.arm[14531]: /currentpacking where
Sep 23 20:11:19 reMarkable printer.arm[14531]:         { pop  /setpacking where
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         pop oldpack setpacking
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndFile
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginFile: cg-pdf.ps
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Copyright: Copyright 2000-2004 Apple Computer Incorporated.
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Copyright: All Rights Reserved.
Sep 23 20:11:19 reMarkable printer.arm[14531]: currentpacking true setpacking
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cg_md 141 dict def
Sep 23 20:11:19 reMarkable printer.arm[14531]: cg_md begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: /L3? languagelevel 3 ge def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /bd{bind def}bind def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ld{load def}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xs{exch store}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xd{exch def}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cmmtx matrix def
Sep 23 20:11:19 reMarkable printer.arm[14531]: mark
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sc/setcolor
Sep 23 20:11:19 reMarkable printer.arm[14531]: /scs/setcolorspace
Sep 23 20:11:19 reMarkable printer.arm[14531]: /dr/defineresource
Sep 23 20:11:19 reMarkable printer.arm[14531]: /fr/findresource
Sep 23 20:11:19 reMarkable printer.arm[14531]: /T/true
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F/false
Sep 23 20:11:19 reMarkable printer.arm[14531]: /d/setdash
Sep 23 20:11:19 reMarkable printer.arm[14531]: /w/setlinewidth
Sep 23 20:11:19 reMarkable printer.arm[14531]: /J/setlinecap
Sep 23 20:11:19 reMarkable printer.arm[14531]: /j/setlinejoin
Sep 23 20:11:19 reMarkable printer.arm[14531]: /M/setmiterlimit
Sep 23 20:11:19 reMarkable printer.arm[14531]: /i/setflat
Sep 23 20:11:19 reMarkable printer.arm[14531]: /rc/rectclip
Sep 23 20:11:19 reMarkable printer.arm[14531]: /rf/rectfill
Sep 23 20:11:19 reMarkable printer.arm[14531]: /rs/rectstroke
Sep 23 20:11:19 reMarkable printer.arm[14531]: /f/fill
Sep 23 20:11:19 reMarkable printer.arm[14531]: /f*/eofill
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sf/selectfont
Sep 23 20:11:19 reMarkable printer.arm[14531]: /s/show
Sep 23 20:11:19 reMarkable printer.arm[14531]: %/as/ashow
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xS/xshow
Sep 23 20:11:19 reMarkable printer.arm[14531]: /yS/yshow
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xyS/xyshow
Sep 23 20:11:19 reMarkable printer.arm[14531]: /S/stroke
Sep 23 20:11:19 reMarkable printer.arm[14531]: /m/moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]: /l/lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]: /c/curveto
Sep 23 20:11:19 reMarkable printer.arm[14531]: /h/closepath
Sep 23 20:11:19 reMarkable printer.arm[14531]: /n/newpath
Sep 23 20:11:19 reMarkable printer.arm[14531]: /q/gsave
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Q/grestore
Sep 23 20:11:19 reMarkable printer.arm[14531]: counttomark 2 idiv
Sep 23 20:11:19 reMarkable printer.arm[14531]: %dup (number of ld's = )print == flush        % *** how many
Sep 23 20:11:19 reMarkable printer.arm[14531]: {ld}repeat pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: /SC{        % CSname
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /ColorSpace fr scs
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld
Sep 23 20:11:19 reMarkable printer.arm[14531]: /soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cgmtx matrix def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sdmtx{cgmtx currentmatrix pop}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /CM {cgmtx setmatrix}bd                % pop the ctm: our gstate ctm on host is now identity
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cm {cmmtx astore CM concat}bd        % reset the matrix and then concat
Sep 23 20:11:19 reMarkable printer.arm[14531]: /W{clip newpath}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /W*{eoclip newpath}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: statusdict begin product end dup (HP) anchorsearch{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     pop pop pop        % pop off the search results
Sep 23 20:11:19 reMarkable printer.arm[14531]:     true
Sep 23 20:11:19 reMarkable printer.arm[14531]: }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     pop        % previous search result
Sep 23 20:11:19 reMarkable printer.arm[14531]:    (hp) anchorsearch{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         pop pop true
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         pop false
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % HP is the product: we use this method of stroking because of a bug in their clone printers with certain T3 fonts
Sep 23 20:11:19 reMarkable printer.arm[14531]:     {
Sep 23 20:11:19 reMarkable printer.arm[14531]:         { % charCode Wx Wy
Sep 23 20:11:19 reMarkable printer.arm[14531]:             pop pop % charCode
Sep 23 20:11:19 reMarkable printer.arm[14531]:             (0)dup 0 4 -1 roll put
Sep 23 20:11:19 reMarkable printer.arm[14531]:             F charpath
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }cshow
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }
Sep 23 20:11:19 reMarkable printer.arm[14531]: }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     {F charpath}
Sep 23 20:11:19 reMarkable printer.arm[14531]: }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cply exch bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cps {cply stroke}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /pgsave 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /bp{/pgsave save store}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ep{pgsave restore showpage}def                % dont' bind
Sep 23 20:11:19 reMarkable printer.arm[14531]: /re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /scrdict 10 dict def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /scrmtx matrix def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /patarray 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /createpat{patarray 3 1 roll put}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /makepat{
Sep 23 20:11:19 reMarkable printer.arm[14531]: scrmtx astore pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: gsave
Sep 23 20:11:19 reMarkable printer.arm[14531]: initgraphics
Sep 23 20:11:19 reMarkable printer.arm[14531]: CM
Sep 23 20:11:19 reMarkable printer.arm[14531]: patarray exch get
Sep 23 20:11:19 reMarkable printer.arm[14531]: scrmtx
Sep 23 20:11:19 reMarkable printer.arm[14531]: makepattern
Sep 23 20:11:19 reMarkable printer.arm[14531]: grestore
Sep 23 20:11:19 reMarkable printer.arm[14531]: setpattern
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cg_BeginEPSF{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     userdict save/cg_b4_Inc_state exch put
Sep 23 20:11:19 reMarkable printer.arm[14531]:     userdict/cg_endepsf/cg_EndEPSF load put
Sep 23 20:11:19 reMarkable printer.arm[14531]:     count userdict/cg_op_count 3 -1 roll put
Sep 23 20:11:19 reMarkable printer.arm[14531]:     countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put
Sep 23 20:11:19 reMarkable printer.arm[14531]:     3 sub{end}repeat
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /showpage {} def
Sep 23 20:11:19 reMarkable printer.arm[14531]:     0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
Sep 23 20:11:19 reMarkable printer.arm[14531]:     10 setmiterlimit [] 0 setdash newpath
Sep 23 20:11:19 reMarkable printer.arm[14531]:     false setstrokeadjust false setoverprint        % don't use F
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cg_EndEPSF{
Sep 23 20:11:19 reMarkable printer.arm[14531]:   countdictstack 3 sub { end } repeat
Sep 23 20:11:19 reMarkable printer.arm[14531]:   cg_dict_array 3 1 index length 3 sub getinterval
Sep 23 20:11:19 reMarkable printer.arm[14531]:   {begin}forall
Sep 23 20:11:19 reMarkable printer.arm[14531]:   count userdict/cg_op_count get sub{pop}repeat
Sep 23 20:11:19 reMarkable printer.arm[14531]:   userdict/cg_b4_Inc_state get restore
Sep 23 20:11:19 reMarkable printer.arm[14531]:   F setpacking
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cg_biproc{currentfile/RunLengthDecode filter}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ImageDataSource 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: L3?{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /ImageBandMask 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /ImageBandData 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /cg_mibiproc{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         string/ImageBandMask xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         string/ImageBandData xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /cg_miaiproc{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         string/ImageBandMask xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         string/ImageBandData xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter
Sep 23 20:11:19 reMarkable printer.arm[14531]:             dup ImageBandMask/readstring cvx
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: /imsave 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /BI{save/imsave xd mark}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /EI{imsave restore}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ID{
Sep 23 20:11:19 reMarkable printer.arm[14531]: counttomark 2 idiv
Sep 23 20:11:19 reMarkable printer.arm[14531]: dup 2 add        % leave room for imagetype and imagematrix
Sep 23 20:11:19 reMarkable printer.arm[14531]: dict begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: {def} repeat
Sep 23 20:11:19 reMarkable printer.arm[14531]: pop                % remove mark
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ImageType 1 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ImageMatrix[Width 0 0 Height neg 0 Height]def
Sep 23 20:11:19 reMarkable printer.arm[14531]: currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
Sep 23 20:11:19 reMarkable printer.arm[14531]: % currentdict on stack
Sep 23 20:11:19 reMarkable printer.arm[14531]: L3?{
Sep 23 20:11:19 reMarkable printer.arm[14531]:     dup/MaskedImage known
Sep 23 20:11:19 reMarkable printer.arm[14531]:     {
Sep 23 20:11:19 reMarkable printer.arm[14531]:         pop
Sep 23 20:11:19 reMarkable printer.arm[14531]:         <<
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /ImageType 3
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /InterleaveType 2
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /DataDict currentdict
Sep 23 20:11:19 reMarkable printer.arm[14531]:             /MaskDict
Sep 23 20:11:19 reMarkable printer.arm[14531]:             <<  /ImageType 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Width Width
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Height Height
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /ImageMatrix ImageMatrix
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /BitsPerComponent 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Decode [0 1]
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 currentdict/Interpolate known
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {/Interpolate Interpolate}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:             >>
Sep 23 20:11:19 reMarkable printer.arm[14531]:         >>
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: exch
Sep 23 20:11:19 reMarkable printer.arm[14531]: {imagemask}{image}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: end        % pop imagedict from dict stack
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cguidfix{statusdict begin mark version end
Sep 23 20:11:19 reMarkable printer.arm[14531]: {cvr}stopped{cleartomark 0}{exch pop}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2012 lt{dup findfont dup length dict begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: {1 index/FID ne 2 index/UniqueID ne and
Sep 23 20:11:19 reMarkable printer.arm[14531]: {def} {pop pop} ifelse}forall
Sep 23 20:11:19 reMarkable printer.arm[14531]: currentdict end definefont pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: }{pop}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /t_array 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /t_i 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /t_c 1 string def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /x_proc{ % x y
Sep 23 20:11:19 reMarkable printer.arm[14531]:     exch t_array t_i get add exch moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /t_i t_i 1 add store
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /y_proc{ % x y
Sep 23 20:11:19 reMarkable printer.arm[14531]:     t_array t_i get add moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /t_i t_i 1 add store
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xy_proc{
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % x y
Sep 23 20:11:19 reMarkable printer.arm[14531]:         t_array t_i 2 copy 1 add get 3 1 roll get
Sep 23 20:11:19 reMarkable printer.arm[14531]:         4 -1 roll add 3 1 roll add moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /t_i t_i 2 add store
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sop 0 def                % don't bind sop
Sep 23 20:11:19 reMarkable printer.arm[14531]: /cp_proc/x_proc ld         % default moveto proc is for xwidths only
Sep 23 20:11:19 reMarkable printer.arm[14531]: /base_charpath                % string array
Sep 23 20:11:19 reMarkable printer.arm[14531]: {
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /t_array xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /t_i 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]:     { % char
Sep 23 20:11:19 reMarkable printer.arm[14531]:         t_c 0 3 -1 roll put
Sep 23 20:11:19 reMarkable printer.arm[14531]:         currentpoint
Sep 23 20:11:19 reMarkable printer.arm[14531]:         t_c cply sop
Sep 23 20:11:19 reMarkable printer.arm[14531]:         cp_proc
Sep 23 20:11:19 reMarkable printer.arm[14531]:     }forall
Sep 23 20:11:19 reMarkable printer.arm[14531]:     /t_array 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sop/stroke ld                % default sop is stroke. Done here so we don't bind in /base_charpath
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: % default sop is stroke
Sep 23 20:11:19 reMarkable printer.arm[14531]: /nop{}def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xsp/base_charpath ld
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /refnt{ % newname encoding fontname
Sep 23 20:11:19 reMarkable printer.arm[14531]: findfont dup length dict copy dup
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Encoding 4 -1 roll put
Sep 23 20:11:19 reMarkable printer.arm[14531]: definefont pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /renmfont{ % newname fontname
Sep 23 20:11:19 reMarkable printer.arm[14531]: findfont dup length dict copy definefont pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: L3? dup dup{save exch}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: % languagelevel2 ONLY code goes here
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Range 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /DataSource 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /val 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /nRange 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /mulRange 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /d0 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /r0 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /di 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ri 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /a0 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /a1 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /r1 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /r2 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /dx 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Nsteps 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sh3tp 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ymax 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /ymin 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xmax 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /xmin 0 def
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /setupFunEval % funDict --         % this calculates and sets up a function dict for evaulation.
Sep 23 20:11:19 reMarkable printer.arm[14531]: {
Sep 23 20:11:19 reMarkable printer.arm[14531]:     begin
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /nRange Range length 2 idiv store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /mulRange   % precompute the range data needed to map a sample value from the table to a range value
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     % this data looks like [ range0mul range0min range1mul range1min ... rangeN-1mul rangeN-1min ]
Sep 23 20:11:19 reMarkable printer.arm[14531]:         [
Sep 23 20:11:19 reMarkable printer.arm[14531]:             0 1 nRange 1 sub
Sep 23 20:11:19 reMarkable printer.arm[14531]:             { % index
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     2 mul/nDim2 xd                % 2*dimension# we are dealing with
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     Range nDim2 get                % ymin
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     Range nDim2 1 add get        % ymin ymax
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     1 index sub                        % ymin (ymax-ymin)
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % xmin = 0, xmax = 255 (2^bitspersample - 1)
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     255 div                        % ymin (ymax-ymin)/(xmax - xmin)
Sep 23 20:11:19 reMarkable printer.arm[14531]:                     exch                        % (ymax-ymin)/(xmax - xmin) ymin
Sep 23 20:11:19 reMarkable printer.arm[14531]:             }for
Sep 23 20:11:19 reMarkable printer.arm[14531]:         ]store
Sep 23 20:11:19 reMarkable printer.arm[14531]:     end
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /FunEval % val1 fundict -> comp1 comp2 ... compN
Sep 23 20:11:19 reMarkable printer.arm[14531]: {
Sep 23 20:11:19 reMarkable printer.arm[14531]:     begin
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % the value passed in is the base index into the table
Sep 23 20:11:19 reMarkable printer.arm[14531]:         nRange mul /val xd        % compute the actual index to the table
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 % since there are nRange entries per base index
Sep 23 20:11:19 reMarkable printer.arm[14531]:         0 1 nRange 1 sub
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:             dup 2 mul/nDim2 xd % dim
Sep 23 20:11:19 reMarkable printer.arm[14531]:             val        % base value to use to do our lookup
Sep 23 20:11:19 reMarkable printer.arm[14531]:             add DataSource exch get %  lookedupval
Sep 23 20:11:19 reMarkable printer.arm[14531]:             mulRange nDim2 get mul         % lookedupval*(ymax-ymin)/(xmax-xmin)
Sep 23 20:11:19 reMarkable printer.arm[14531]:             mulRange nDim2 1 add get % lookedupval*(ymax-ymin)/(xmax-xmin) ymin
Sep 23 20:11:19 reMarkable printer.arm[14531]:             add % interpolated result
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }for        % comp1 comp2 ... compN
Sep 23 20:11:19 reMarkable printer.arm[14531]:     end
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /max % a b -> max(a, b)
Sep 23 20:11:19 reMarkable printer.arm[14531]: {
Sep 23 20:11:19 reMarkable printer.arm[14531]:         2 copy lt
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {exch pop}{pop}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sh2
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % emulation of shading type 2. Assumes shading dictionary is top dictionary on the dict stack
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Coords load aload pop         % x0 y0 x1 y1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         3 index 3 index translate        % origin is now at beginning point of shading
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % x0 y0 x1 y1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         3 -1 roll sub        % x0 x1 y1-y0
Sep 23 20:11:19 reMarkable printer.arm[14531]:         3 1 roll exch         % y1-y0 x1 x0
Sep 23 20:11:19 reMarkable printer.arm[14531]:         sub                                % y1-y0 x1-x0
Sep 23 20:11:19 reMarkable printer.arm[14531]:         2 copy
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup mul exch dup mul add sqrt        % length of segment between two points
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup
Sep 23 20:11:19 reMarkable printer.arm[14531]:         scale
Sep 23 20:11:19 reMarkable printer.arm[14531]:         atan        % atan (dy/dx)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         %dup (rotation angle = )print ==
Sep 23 20:11:19 reMarkable printer.arm[14531]:         rotate                % now line between 0,0 and 1,0 is the line perpendicular to which the axial lines are drawn
Sep 23 20:11:19 reMarkable printer.arm[14531]:          
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Function load setupFunEval        % may need to setup function dictionary by calling setupFunEval
Sep 23 20:11:19 reMarkable printer.arm[14531]:          
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % this is now specific to axial shadings. Compute the maximum bounds to fill
Sep 23 20:11:19 reMarkable printer.arm[14531]:         clippath {pathbbox}stopped {0 0 0 0}if newpath         % x0 y0 x1 y1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ymax xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /xmax xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ymin xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /xmin xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         currentdict/Extend known
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Extend load 0 get
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         0/Function load FunEval sc        % evaluate the function to get a color and set it
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         xmin ymin xmin abs ymax ymin sub rectfill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % paint the rects. The sampling frequency is that of our table
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Nsteps/Function load/Size get 0 get 1 sub store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /dx 1 Nsteps div store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         gsave
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /di ymax ymin sub store
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Function load
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % loop Nsteps + 1 times, incrementing the index by 1 each time
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0 1 Nsteps
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         1 index FunEval sc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         0 ymin dx di rectfill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         dx 0 translate
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }for
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop        % pop our function
Sep 23 20:11:19 reMarkable printer.arm[14531]:         grestore        % origin is back to start point
Sep 23 20:11:19 reMarkable printer.arm[14531]:         currentdict/Extend known
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Extend load 1 get
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         Nsteps/Function load FunEval sc        % last element
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         1 ymin xmax 1 sub abs ymax ymin sub rectfill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /shp        % this paints our shape for shading type 3
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % x1 r1 x0 r0 -
Sep 23 20:11:19 reMarkable printer.arm[14531]:         4 copy
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % fill interior arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup 0 gt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0 exch a1 a0 arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop 0 moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup 0 gt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0 exch a0 a1 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop 0 lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:          
Sep 23 20:11:19 reMarkable printer.arm[14531]:         fill
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % fill exterior arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup 0 gt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0 exch a0 a1 arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop 0 moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup 0 gt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0 exch a1 a0 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop 0 lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:          
Sep 23 20:11:19 reMarkable printer.arm[14531]:         fill
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /calcmaxs
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % calculate maximum distance vector from origin to corner points
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % of bbox
Sep 23 20:11:19 reMarkable printer.arm[14531]:         xmin dup mul ymin dup mul add sqrt                % (xmin2 + ymin2)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         xmax dup mul ymin dup mul add sqrt                % (xmax2 + ymin2)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         xmin dup mul ymax dup mul add sqrt                % (xmin2 + ymax2)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         xmax dup mul ymax dup mul add sqrt                % (xmax2 + ymax2)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         max max max                                                                % maximum value
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sh3
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % emulation of shading type 3. Assumes shading dictionary is top dictionary on the dict stack
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Coords load aload pop         % x0 y0 r1 x1 y1 r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:         5 index 5 index translate        % origin is now at first circle origin
Sep 23 20:11:19 reMarkable printer.arm[14531]:         3 -1 roll 6 -1 roll sub                % y0 r1 y1 r2 dx
Sep 23 20:11:19 reMarkable printer.arm[14531]:         3 -1 roll 5 -1 roll sub                % r1 r2 dx dy
Sep 23 20:11:19 reMarkable printer.arm[14531]:         2 copy dup mul exch dup mul add sqrt
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /dx xs                                                % r1 r2 dx dy
Sep 23 20:11:19 reMarkable printer.arm[14531]:         2 copy 0 ne exch 0 ne or
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % r1 r2 dx dy
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 exch atan rotate        % we are now rotated so dy is zero and positive values of dx move us as expected
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop pop
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % r1 r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /r2 xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /r1 xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Function load
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dup/Size get 0 get 1 sub        % this is the size of our table minus 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Nsteps xs                % at some point we should optimize this better so NSteps is based on needed steps for the device
Sep 23 20:11:19 reMarkable printer.arm[14531]:         setupFunEval                % may need to setup function dictionary by calling setupFunEval
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % determine the case:
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % case 0: circle1 inside circle2
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % case 1: circle 2 inside circle 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % case 2: r1 = r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % case 3: r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dx r2 add r1 lt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % circle 2 inside of circle 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 dx r1 add r2 le
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 { % circle 1 inside of circle 2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }{ % circles don't contain each other
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         r1 r2 eq
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         {        % equal
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         }{ % r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 3
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /sh3tp xs                % sh3tp has the number of our different cases
Sep 23 20:11:19 reMarkable printer.arm[14531]:         clippath {pathbbox}stopped {0 0 0 0}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         newpath         % x0 y0 x1 y1
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ymax xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /xmax xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ymin xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /xmin xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % Arc angle atan( sqrt((dx*dx + dy*dy) - dr*dr), dr)
Sep 23 20:11:19 reMarkable printer.arm[14531]:         dx dup mul r2 r1 sub dup mul sub dup 0 gt
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 sqrt r2 r1 sub atan
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /a0 exch 180 exch sub store
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /a1 a0 neg store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 pop
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /a0 0 store
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /a1 360 store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         currentdict/Extend known
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Extend load 0 get r1 0 gt and        % no need to extend if the radius of the first end is 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         0/Function load FunEval sc        % evaluate the function to get a color and set it
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 0: circle1 inside circle2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 1: circle 2 inside circle 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 2: circles don't contain each other and r1 == r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 3: circles don't contain each other and r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % case 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         dx 0 r1 360 0 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymin moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmax ymin lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmax ymax lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymax lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymin lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         eofill                % for the bigger radius we fill everything except our circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % case 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         r1 0 gt{0 0 r1 0 360 arc fill}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % case 2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % r1 == r2, extend 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % r3 = r, x3 = -(abs(minx) + r), x1 = 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                  
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         0 r1 xmin abs r1 add neg r1 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % case 3
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % no containment, r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                  
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         r2 r1 gt{        % the endpoint we are drawing is that with a circle of zero radius
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 0 r1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 r1 neg r2 r1 sub div dx mul        % this is point of beginning circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 0        % point of ending circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 shp        % takes x(i+1) r(i+1) x(i) r(i)
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         }{        % the first circle is the bigger of the two
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % we find a circle on our line which is outside the bbox in the
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % negative direction
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 0 r1 calcmaxs        % 0 r1 maxs
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 dup
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % calculating xs: (-(maxs+r2)*x2)/(x2-(r1-r2))
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 r2 add dx mul dx r1 r2 sub sub div
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 neg                                % maxs xs'
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 exch 1 index        % xs' maxs xs'
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 abs exch sub
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         }sh3tp get exec        % execute the extend at beginning proc for our shading type
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % now do the shading
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /d0 0 store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /r0 r1 store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /di dx Nsteps div store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /ri r2 r1 sub Nsteps div store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         /Function load
Sep 23 20:11:19 reMarkable printer.arm[14531]:         0 1 Nsteps
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {        % function t(i)
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 1 index FunEval sc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 d0 di add r0 ri add d0 r0 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % fill interior arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 d0 0 r0 a1 a0 arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 d0 di add 0 r0 ri add a0 a1 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 fill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                  
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % fill exterior arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 d0 0 r0 a0 a1 arc
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 d0 di add 0 r0 ri add a1 a0 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 fill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }pop
Sep 23 20:11:19 reMarkable printer.arm[14531]:                  
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 % advance to next
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /d0 d0 di add store
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /r0 r0 ri add store
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }for
Sep 23 20:11:19 reMarkable printer.arm[14531]:         pop        % pop our function dict
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]:         % handle Extend
Sep 23 20:11:19 reMarkable printer.arm[14531]:         currentdict/Extend known
Sep 23 20:11:19 reMarkable printer.arm[14531]:         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /Extend load 1 get r2 0 gt and        % no need to extend if the radius of the last end is 0
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         Nsteps/Function load FunEval sc        % last element
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 0: circle1 inside circle2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 1: circle 2 inside circle 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 2: circles don't contain each other and r1 == r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % case 3: circles don't contain each other and r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         dx 0 r2 0 360 arc fill
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         dx 0 r2 360 0 arcn
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymin moveto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmax ymin lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmax ymax lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymax lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmin ymin lineto
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         eofill                % for the bigger radius we fill everything except our circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % r1 == r2, extend 1
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % r3 = r, x3 = (abs(xmax) + r), x1 = dx
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         xmax abs r1 add r1 dx r1 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {        % no containment, r1 != r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                          
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         r2 r1 gt{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % we find a circle on our line which is outside the bbox in the
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % positive direction
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 calcmaxs dup        % maxs maxs
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % calculating xs: ((maxs+r1)*x2)/(x2-(r2-r1))
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 r1 add dx mul dx r2 r1 sub sub div        % maxs xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 exch 1 index        % xs maxs xs
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 exch sub
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 dx r2
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         }{        % the endpoint we are drawing is that with a circle of zero radius
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 % x(i+1) r(i+1) x(i) r(i) shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 r1 neg r2 r1 sub div dx mul        % this is point of ending circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 0                % radius of ending circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 dx                 % point of starting circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 r2                % radius of starting circle
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                                 shp
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         }
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         sh3tp get exec        % execute the extend at end proc for our shading type
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]: /sh                % emulation of shfill operator for type 2 and type 3 shadings based on type 0 functions
Sep 23 20:11:19 reMarkable printer.arm[14531]: {        % shadingDict --
Sep 23 20:11:19 reMarkable printer.arm[14531]:         begin
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /ShadingType load dup dup 2 eq exch 3 eq or
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 {        % shadingtype
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         gsave
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 newpath
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 /ColorSpace load scs
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 currentdict/BBox known
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         /BBox load aload pop        % llx lly urx ury
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         2 index sub                                % llx lly urx ury-lly
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         3 index                                        % llx lly urx ury-lly llx
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         3 -1 roll exch sub
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                         exch rectclip
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 }if
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 2 eq
Sep 23 20:11:19 reMarkable printer.arm[14531]:                                 {sh2}{sh3}ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         grestore
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }{
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         % shadingtype
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         pop
Sep 23 20:11:19 reMarkable printer.arm[14531]:                         (DEBUG: shading type unimplemented\n)print flush
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 }ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:         end
Sep 23 20:11:19 reMarkable printer.arm[14531]: }bd
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: % end of language level 2 ONLY code
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: {restore}if not dup{save exch}if
Sep 23 20:11:19 reMarkable printer.arm[14531]: % languagelevel3 ONLY code goes here
Sep 23 20:11:19 reMarkable printer.arm[14531]:         L3?{        % we do these loads conditionally or else they will fail on a level 2 printer
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /sh/shfill ld
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /csq/clipsave ld
Sep 23 20:11:19 reMarkable printer.arm[14531]:                 /csQ/cliprestore ld
Sep 23 20:11:19 reMarkable printer.arm[14531]:         }if
Sep 23 20:11:19 reMarkable printer.arm[14531]: {restore}if
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: %currentdict dup maxlength exch length sub (number of extra slots in md = )print == flush        % *** how many entries are free
Sep 23 20:11:19 reMarkable printer.arm[14531]: end
Sep 23 20:11:19 reMarkable printer.arm[14531]: setpacking
Sep 23 20:11:19 reMarkable printer.arm[14531]: % count 0 ne { pstack(***extras on stack during prolog execution***\n)print flush}if        % *** BARK if anything is left on stack
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndFile
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndProlog
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginSetup
Sep 23 20:11:19 reMarkable printer.arm[14531]: % Disable CTRL-D as an end-of-file marker...
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict dup(\004)cvn{}put (\004\004)cvn{}put
Sep 23 20:11:19 reMarkable printer.arm[14531]: [{
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginFeature: *APOptionalDuplexer False
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndFeature
Sep 23 20:11:19 reMarkable printer.arm[14531]: } stopped cleartomark
Sep 23 20:11:19 reMarkable printer.arm[14531]: [{
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginFeature: *Duplex None
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1 dict dup /Duplex false put setpagedevice
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndFeature
Sep 23 20:11:19 reMarkable printer.arm[14531]: } stopped cleartomark
Sep 23 20:11:19 reMarkable printer.arm[14531]: [{
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginFeature: *PageSize Letter
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2 dict dup /PageSize [612 792] put dup /ImagingBBox null put setpagedevice
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndFeature
Sep 23 20:11:19 reMarkable printer.arm[14531]: } stopped cleartomark
Sep 23 20:11:19 reMarkable printer.arm[14531]: % x y w h ESPrc - Clip to a rectangle.
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict/ESPrc/rectclip where{pop/rectclip load}
Sep 23 20:11:19 reMarkable printer.arm[14531]: {{newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
Sep 23 20:11:19 reMarkable printer.arm[14531]: neg 0 rlineto closepath clip newpath}bind}ifelse put
Sep 23 20:11:19 reMarkable printer.arm[14531]: % x y w h ESPrf - Fill a rectangle.
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict/ESPrf/rectfill where{pop/rectfill load}
Sep 23 20:11:19 reMarkable printer.arm[14531]: {{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
Sep 23 20:11:19 reMarkable printer.arm[14531]: neg 0 rlineto closepath fill grestore}bind}ifelse put
Sep 23 20:11:19 reMarkable printer.arm[14531]: % x y w h ESPrs - Stroke a rectangle.
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict/ESPrs/rectstroke where{pop/rectstroke load}
Sep 23 20:11:19 reMarkable printer.arm[14531]: {{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
Sep 23 20:11:19 reMarkable printer.arm[14531]: neg 0 rlineto closepath stroke grestore}bind}ifelse put
Sep 23 20:11:19 reMarkable printer.arm[14531]: userdict/ESPwl{}bind put
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndSetup
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Page: 1 1
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%PageBoundingBox: 0 0 612 792
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BeginPageSetup
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndPageSetup
Sep 23 20:11:19 reMarkable printer.arm[14531]: cg_md begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: bp
Sep 23 20:11:19 reMarkable printer.arm[14531]: sdmtx
Sep 23 20:11:19 reMarkable printer.arm[14531]: %RBIBeginFontSubset: XUPADE+URWPalladioL-Roma
Sep 23 20:11:19 reMarkable printer.arm[14531]: [23.0K blob data]
Sep 23 20:11:19 reMarkable printer.arm[14531]: /XUPADE+URWPalladioL-Roma cguidfix
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F1.1/XUPADE+URWPalladioL-Roma renmfont
Sep 23 20:11:19 reMarkable printer.arm[14531]: %RBIBeginFontSubset: YATQXH+URWPalladioL-Ital
Sep 23 20:11:19 reMarkable printer.arm[14531]: [18.6K blob data]
Sep 23 20:11:19 reMarkable printer.arm[14531]: /YATQXH+URWPalladioL-Ital cguidfix
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F2.1/YATQXH+URWPalladioL-Ital renmfont
Sep 23 20:11:19 reMarkable printer.arm[14531]: [ /CIEBasedABC 4 dict dup begin
Sep 23 20:11:19 reMarkable printer.arm[14531]: /WhitePoint [ 0.9505 1.0000 1.0891 ] def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /DecodeABC [
Sep 23 20:11:19 reMarkable printer.arm[14531]: { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  1 index 1 index ge { exch pop } { pop } ifelse <
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000000000000000000000000000000
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000001010101010101010101010101
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0101010101010101010101010101010101010101010101020202020202020202
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0202020202020202020202020202020202030303030303030303030303030303
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0303030303030304040404040404040404040404040404040404050505050505
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0505050505050505050506060606060606060606060606060607070707070707
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0707070707070708080808080808080808080808090909090909090909090909
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1010101010111111111111111112121212121212121313131313131313141414
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1414141414151515151515151616161616161616171717171717171818181818
Sep 23 20:11:19 reMarkable printer.arm[14531]: 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2323232323242424242425252525252526262626262727272727282828282829
Sep 23 20:11:19 reMarkable printer.arm[14531]: 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2f2f303030303131313131323232323333333333343434343535353535363636
Sep 23 20:11:19 reMarkable printer.arm[14531]: 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4f50505051515151525252535353535454545555555656565657575758585859
Sep 23 20:11:19 reMarkable printer.arm[14531]: 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
Sep 23 20:11:19 reMarkable printer.arm[14531]: 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 6e6e6f6f6f707070717171727273737374747475757576767677777878787979
Sep 23 20:11:19 reMarkable printer.arm[14531]: 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
Sep 23 20:11:19 reMarkable printer.arm[14531]: 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
Sep 23 20:11:19 reMarkable printer.arm[14531]: 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
Sep 23 20:11:19 reMarkable printer.arm[14531]: a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
Sep 23 20:11:19 reMarkable printer.arm[14531]: aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
Sep 23 20:11:19 reMarkable printer.arm[14531]: bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
Sep 23 20:11:19 reMarkable printer.arm[14531]: cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
Sep 23 20:11:19 reMarkable printer.arm[14531]: dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
Sep 23 20:11:19 reMarkable printer.arm[14531]: eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
Sep 23 20:11:19 reMarkable printer.arm[14531]: >  dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
Sep 23 20:11:19 reMarkable printer.arm[14531]:  cvi 3 index exch get 4 -1 roll 3 -1 roll get
Sep 23 20:11:19 reMarkable printer.arm[14531]:  dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  1 index 1 index ge { exch pop } { pop } ifelse <
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000000000000000000000000000000
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000001010101010101010101010101
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0101010101010101010101010101010101010101010101020202020202020202
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0202020202020202020202020202020202030303030303030303030303030303
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0303030303030304040404040404040404040404040404040404050505050505
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0505050505050505050506060606060606060606060606060607070707070707
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0707070707070708080808080808080808080808090909090909090909090909
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1010101010111111111111111112121212121212121313131313131313141414
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1414141414151515151515151616161616161616171717171717171818181818
Sep 23 20:11:19 reMarkable printer.arm[14531]: 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2323232323242424242425252525252526262626262727272727282828282829
Sep 23 20:11:19 reMarkable printer.arm[14531]: 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2f2f303030303131313131323232323333333333343434343535353535363636
Sep 23 20:11:19 reMarkable printer.arm[14531]: 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4f50505051515151525252535353535454545555555656565657575758585859
Sep 23 20:11:19 reMarkable printer.arm[14531]: 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
Sep 23 20:11:19 reMarkable printer.arm[14531]: 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 6e6e6f6f6f707070717171727273737374747475757576767677777878787979
Sep 23 20:11:19 reMarkable printer.arm[14531]: 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
Sep 23 20:11:19 reMarkable printer.arm[14531]: 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
Sep 23 20:11:19 reMarkable printer.arm[14531]: 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
Sep 23 20:11:19 reMarkable printer.arm[14531]: a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
Sep 23 20:11:19 reMarkable printer.arm[14531]: aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
Sep 23 20:11:19 reMarkable printer.arm[14531]: bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
Sep 23 20:11:19 reMarkable printer.arm[14531]: cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
Sep 23 20:11:19 reMarkable printer.arm[14531]: dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
Sep 23 20:11:19 reMarkable printer.arm[14531]: eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
Sep 23 20:11:19 reMarkable printer.arm[14531]: >  dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
Sep 23 20:11:19 reMarkable printer.arm[14531]:  cvi 3 index exch get 4 -1 roll 3 -1 roll get
Sep 23 20:11:19 reMarkable printer.arm[14531]:  dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
Sep 23 20:11:19 reMarkable printer.arm[14531]:  
Sep 23 20:11:19 reMarkable printer.arm[14531]: { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
Sep 23 20:11:19 reMarkable printer.arm[14531]:  1 index 1 index ge { exch pop } { pop } ifelse <
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000000000000000000000000000000
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0000000000000000000000000000000000000001010101010101010101010101
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0101010101010101010101010101010101010101010101020202020202020202
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0202020202020202020202020202020202030303030303030303030303030303
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0303030303030304040404040404040404040404040404040404050505050505
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0505050505050505050506060606060606060606060606060607070707070707
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0707070707070708080808080808080808080808090909090909090909090909
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1010101010111111111111111112121212121212121313131313131313141414
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1414141414151515151515151616161616161616171717171717171818181818
Sep 23 20:11:19 reMarkable printer.arm[14531]: 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
Sep 23 20:11:19 reMarkable printer.arm[14531]: 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2323232323242424242425252525252526262626262727272727282828282829
Sep 23 20:11:19 reMarkable printer.arm[14531]: 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 2f2f303030303131313131323232323333333333343434343535353535363636
Sep 23 20:11:19 reMarkable printer.arm[14531]: 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
Sep 23 20:11:19 reMarkable printer.arm[14531]: 4f50505051515151525252535353535454545555555656565657575758585859
Sep 23 20:11:19 reMarkable printer.arm[14531]: 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
Sep 23 20:11:19 reMarkable printer.arm[14531]: 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
Sep 23 20:11:19 reMarkable printer.arm[14531]: 6e6e6f6f6f707070717171727273737374747475757576767677777878787979
Sep 23 20:11:19 reMarkable printer.arm[14531]: 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
Sep 23 20:11:19 reMarkable printer.arm[14531]: 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
Sep 23 20:11:19 reMarkable printer.arm[14531]: 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
Sep 23 20:11:19 reMarkable printer.arm[14531]: a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
Sep 23 20:11:19 reMarkable printer.arm[14531]: aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
Sep 23 20:11:19 reMarkable printer.arm[14531]: bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
Sep 23 20:11:19 reMarkable printer.arm[14531]: cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
Sep 23 20:11:19 reMarkable printer.arm[14531]: dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
Sep 23 20:11:19 reMarkable printer.arm[14531]: eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
Sep 23 20:11:19 reMarkable printer.arm[14531]: >  dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
Sep 23 20:11:19 reMarkable printer.arm[14531]:  cvi 3 index exch get 4 -1 roll 3 -1 roll get
Sep 23 20:11:19 reMarkable printer.arm[14531]:  dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
Sep 23 20:11:19 reMarkable printer.arm[14531]: ] def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def
Sep 23 20:11:19 reMarkable printer.arm[14531]: /RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def
Sep 23 20:11:19 reMarkable printer.arm[14531]: end ] /Cs1 exch/ColorSpace dr pop
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EndPageSetup
Sep 23 20:11:19 reMarkable printer.arm[14531]: /Cs1 SC
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0 0 0 sc
Sep 23 20:11:19 reMarkable printer.arm[14531]: q
Sep 23 20:11:19 reMarkable printer.arm[14531]: 16.6 18.599979 578.79999 754.79999 rc
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F1.1[ 11.9552 0 0 11.9552 0 0]sf
Sep 23 20:11:19 reMarkable printer.arm[14531]: 371.035 634.25403 m
Sep 23 20:11:19 reMarkable printer.arm[14531]: (!"#$%&'\(\('\))[ 9.253325 5.977600 6.754688 3.478963 8.057805 7.986074 5.726541 10.556442 10.556442 5.726541 0.000000 ] xS
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0.64700001 0.12899999 0.149 sc
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F2.1[ 20.6625 0 0 20.6625 0 0]sf
Sep 23 20:11:19 reMarkable printer.arm[14531]: 191.075 526.56097 m
Sep 23 20:11:19 reMarkable printer.arm[14531]: (!"#$!%$&'"\(\)**"+,-\)*.,-'-,/)[ 7.665787 8.037712 19.505400 9.174150 8.037712 9.174150 9.174150 9.566737 5.744175 13.203337 13.781888 9.174150 11.488350 11.488350 8.037712 8.409638 6.880612 5.744175 9.174150 16.653975 16.075425 6.880612 5.744175 5.744175 5.744175 6.880613 0.000000 ] xS
Sep 23 20:11:19 reMarkable printer.arm[14531]: 0 0 0 sc
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F1.1[ 8.9664001 0 0 8.9664001 0 0]sf
Sep 23 20:11:19 reMarkable printer.arm[14531]: 301.62201 501.42001 m
Sep 23 20:11:19 reMarkable printer.arm[14531]: (*\)\)+$,+-,'./0"\)1"2\)'34","5'\(',3)[ 6.975859 2.609222 2.609222 2.985811 2.609222 5.218445 2.985811 7.047590 5.218445 6.536506 5.478470 4.895654 3.981082 4.483200 4.850822 4.671494 4.483200 4.958419 2.609222 4.294906 5.164646 8.482214 4.483200 5.218445 4.483200 4.985318 4.294906 7.917331 4.294906 5.218445 0.000000 ] xS
Sep 23 20:11:19 reMarkable printer.arm[14531]: /F1.1[ 11.9552 0 0 11.9552 0 0]sf
Sep 23 20:11:19 reMarkable printer.arm[14531]: 379.87 156.304 m
Sep 23 20:11:19 reMarkable printer.arm[14531]: (6%'74",8"\))[ 9.301146 5.069005 5.726541 7.711104 11.309619 5.977600 6.957926 7.208986 5.977600 0.000000 ] xS
Sep 23 20:11:19 reMarkable printer.arm[14531]: ep
Sep 23 20:11:19 reMarkable printer.arm[14531]: end
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Trailer
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%Pages: 1
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%BoundingBox: 0 0 612 792
Sep 23 20:11:19 reMarkable printer.arm[14531]: %%EOF
Sep 23 20:11:19 reMarkable printer.arm[14531]: [1B blob data]
Sep 23 20:11:19 reMarkable printer.arm[14531]: Couldn't find PDF start
Sep 23 20:11:19 reMarkable systemd[1]: printer.service: Main process exited, code=exited, status=1/FAILURE
Sep 23 20:11:19 reMarkable systemd[1]: printer.service: Failed with result 'exit-code'.
Sep 23 20:11:20 reMarkable systemd[1]: printer.service: Scheduled restart job, restart counter is at 5.
Sep 23 20:11:20 reMarkable systemd[1]: Stopped Native printing to reMarkable.
Sep 23 20:11:20 reMarkable systemd[1]: Started Native printing to reMarkable.
Sep 23 20:11:20 reMarkable printer.arm[14537]: Debugging enabled
Sep 23 20:11:20 reMarkable printer.arm[14537]: Listening on 0.0.0.0:9100

So it looks like the tablet is getting ps when it wants pdf?

@IvoryTinplate Yes that seems to be the problem. Is there a PDF driver option available?

No, there isn't. MacOS selected that driver and it's the only non-manufacturer-specific one available.

So, I started up the web interface to CUPS and installed a new printer (reMarkable2) as in PR #18. Since there isn't a PDF driver, I used the remarkable.ppd. Attempting to print to reMarkable2 pops up an error message: "Some of the software for the printer is missing."

In the CUPS web interface, I could see that both printers (reMarkable and reMarkable2) have more specifics as part of their status: Idle - "File “/usr/libexec/cups/filter/rmfilter” not available: No such file or directory. Ok, so I copied rmfilter into that folder.

Now the CUPS printers say Idle - "File “/usr/libexec/cups/filter/rmfilter” has insecure permissions (0100755/uid=501/gid=20)." and Idle - "File “/usr/libexec/cups/filter/rmfilter” has insecure permissions (0100644/uid=501/gid=0)." Attempts to print to either printer no longer reach the tablet.

How do I fix the perms? Does it seem like that'll suffice?

Ah! Go back to the CLI, duh. sudo cp rmfilter /usr/libexec/cups/filter/ fixed it, both printer instances are printing like a charm now. Very cool!

Looks like the CUPS stuff can be skipped, just need that different path in the makefile.

Thank you so much, Evan!

I also managed to get toltec installed today, thank you for that as well. I'm a medical provider, so having a cloud-free eInk device is huge for me.

I've updated the Makefile to try to copy rmfilter to both /usr/lib/cups/filter/ and /usr/libexec/cups/filter/.